계속지나가기
코딩스뮤
계속지나가기
전체 방문자
오늘
어제
  • 코딩스뮤:)
    • Algorithm
      • 백준 문제풀이
      • 프로그래머스 문제풀이
      • 알고리즘 이론
      • 자료구조
      • SW Expert Academy
    • 인공지능(AI)
      • LLMs
      • 자연어처리(NLP)
      • 컴퓨터비전(CV)
      • 딥러닝(DL)
      • 머신러닝(ML)
      • 인공지능기초수학
      • 선형대수학
    • 컴퓨터 세팅
    • Computer Science
      • 유닉스프로그래밍
      • 프로그래밍언어론
      • 디자인패턴
      • 클린코드
      • SW 영어
      • 리눅스
      • 논리회로
    • Server
      • Docker

블로그 메뉴

  • 홈
  • Who Am I(CV)
  • 태그

공지사항

인기 글

태그

  • 비용함수
  • 언어모델
  • 네트워크플로우
  • DigitalImageProcessing
  • 컴퓨터비전
  • 알고리즘
  • 비지도학습
  • 경사하강법
  • 지도학습
  • 디지털이미지처리
  • 선형회귀
  • 기계학습
  • SIFT
  • 손실함수
  • f1-score
  • 머신러닝
  • 군집화
  • 최대유량
  • 패턴인식
  • 에지검출
  • 결정경계
  • NLP
  • DIP
  • ML
  • ComputerVision
  • networkflow
  • 파이썬 클린코드
  • MaximumFlow
  • machinelearning
  • LM

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
계속지나가기

코딩스뮤

[핸즈온 머신러닝] 3장. 다항 선형 회귀
인공지능(AI)/머신러닝(ML)

[핸즈온 머신러닝] 3장. 다항 선형 회귀

2021. 12. 1. 17:19
반응형

3. Linear Regression with multiple variables

목차

3-1. 다항 선형 회귀

1. 다항 선형 회귀란?

2. 2개 이상의 특성

3. 경사하강법

4. 특성과 다항 회귀

 

3-2. 정규 방정식

 

 

3-1. 다항 선형 회귀


1. 다항 선형 회귀란?


단항 선형 회귀(이전 게시글 참고)

https://codingsmu.tistory.com/111

 

[핸즈온 머신러닝] 2장. 단항 선형 회귀

2. Linear Regression with one variable 목차 1. 선형회귀란? 2. 모델설계 3. 비용 함수 4. 경사 하강법 1. 선형회귀란?  회귀(Regression) 연속적인 종속 변수와 한 개 이상의 독립 변수 사이의 관계를 추정하..

codingsmu.tistory.com

 

 

다항 선형 회귀란?

  • Multivariate linear regression
  • 두 개 이상의 특성을 추가하고, 확장된 특성을 포함한 데이터셋에 선형 모델을 훈련시키는 것
  • 단항 선형 회귀($h_\theta(x) = \theta_0 + \theta_1x$) vs. 다항 선형 회귀(아래 식)
    • $h_\theta(x) = \theta_0 + \theta_1x + \theta_2x_2$
    • $h_\theta(x) = \theta_0 + \theta_1x + \theta_2x_1^2$
    • $h_\theta(x) = \theta_0 + \theta_1x + \theta_2x_2 +  \theta_3x_3 + ... $

 

 

2. 두 개 이상의 특성


기호 정리

  • n = 특성의 개수
  • $x^{(i)}$ = i번째 학습 예제의 입력(특성) $1<=i<=m$
  • $x^{(i)}_j$ = i번째 학습 예제의 j번째 특성의 값 $1<=j<=n$
  • 예시
    • 집면적(제곱피트) 방 개수 층 수 연식 매매가(1000달러)
      1500 4 25 1 2500
      2500 8 26 1 3500
    • 특성 개수(n) : 4개 -> x1(집면적), x2(방 개수), x3(층 수), x4(연식)
    • $x^{(2)}$ = $ \begin{bmatrix} 1500 \\ 4 \\ 25 \\ 1 \\ 2500 \end{bmatrix}$​
    • $x^{(2)}_3 =26$

 

 Hypothesis

  • 단항 선형 회귀: $h_\theta(x) = \theta_0 + \theta_1x$
  • 다항 선형 회귀: $h_\theta(x) = \theta_0 + \theta_1x_1 + \theta_2x_2 + \theta_3x_3 + \theta_4x_4$
  • 예시(위의 테이블 참고)
    • $h_\theta(x) = 80 + 0.1x + 0.01x_2 + 3x_3 - 2x_4$

 

행렬과 벡터 곱으로 표현하기

  • $h_\theta(x) = \theta_0 + \theta_1x + \theta_2x_2 + \theta_3x_3 + \theta_4x_4 = \theta^Tx$
    • 즉, $h_\theta(x) = \theta^Tx$
    • 유도과정은 아래 참고
    • 더보기

 

 

3. 경사하강법


다항 선형 회귀에 대한 경사 하강법

  • 가설(Hypothesis): $h_\theta(x) = \theta_0 + \theta_1x +... + \theta_nx_n$
  • 파라미터(Parameter): $\theta_0, \theta_1, ..., \theta_n$
  • 비용함수(Cost function)
    • $J(\theta_0, \theta_1, ..., \theta_n)=\frac{1}{2m} \sum_{i=1}^{m} (h_{\theta}(x^i)-y^i)^2$
    • $J(\theta)$로도 표현
  • 경사하강법(Gradient descent)
    • 수렴할 때까지 아래 식을 반복
    • $\theta_j = \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0, \theta_1, ..., \theta_n)$

 

n=1일 때 경사하강법(단항선형회귀) vs. n>=1일 때 경사하강법(다항)

  • 더보기

 

 

경사하강법에 대한 조언

  • Feature scaling(feature normalization)
    • 여러 특성들을 유사한 크기로 맞추자
    • scaling 전(좌), scaling 후(우)
    • 예1) 모든 특성 값의 범위를 대략 $-1<=x_i<=1$ 범위로 만들자
      • $x_1$: 면적(0~2000$ft^2$) , $x_2$: 방 개수(1~5개)
      • $x_1=\frac{area(ft^2)}{2000}$, $x_2=\frac{rooms}{5}$
    • 예2) Mean Normalization: $x_i$ 대신 $x_i - \mu$로 대체하여, 특성들의 평균을 대략 0으로 만들자
      • 단, $x_0=1$에는 적용하지 않음
      • $x_1=\frac{area-1000}{2000}$, $x_2=\frac{rooms-2}{5}$
      • 단, $\mu_i$는 $x_i$의 평균
      • 따라서 $-0.5<=x_i<=0.5, -0.5<=x_2<=0.5$
  • 경사하강법 디버깅하기
    • 경사하강법 디버깅이란, 경사하강법이 잘 작동하는지 확인하는 것으로 학습율(learning rate)을 결정하는 방법이다
    • $\theta_j = \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta)$

      • $J(\theta)$는 매반복마다 줄어들어야 함
      • 수렴했음을 감지하는 규칙의 예) 1회 반복시 $J(\theta)$의 감소폭이 $10^{-3}$이하면 수렴했다고 봄
    • 경사하강법이 잘 작동하고 있지 않은 경우
        • learning rate $\alpha$가 너무 큰 경우-> 수렴하지 못함 -> 더 작은 $\alpha$를 사용하자
        • 충분히 작은 $\alpha$를 사용하고 있는 경우, $J(\theta)$는 매 반복마다 줄어드는건 확실함
        • 그러나 $\alpha$가 너무 작은 경우, 경사하강법은 너무 느리게 수렴하게 됨
      • $\alpha$에 따른 반복횟수-J의 관계
        • 너무 작은 $\alpha$: 느린 수렴
        • 너무 큰 $\alpha$: $J(\theta)$가 줄어들지 않을 수 있고, 아예 수렴하지 않을 수도 있음
        • 보통 주로 쓰는 $\alpha$는 ..., 0.0001, 0.001, 0.01, 0.1, 1, ... 로 상황에 맞게 적절히 쓰면 된다

 

4. 특성과 다항 회귀


(예)집값 예측

  • $h_\theta(x)= \theta_0+\theta_1*(width)+\theta_2*(depth)$
  • 면적: $x=(width)*(depth)$
  • $h_\theta(x)= \theta_0+\theta_1*x$

 

다항회귀

  • 더 loose한 h(x) : 초록색/ 더 fit한 h(x): 파란색
  • $h_\theta(x)= \theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_3=\theta_0+\theta_1(size)+\theta_2(size)^2+\theta_3(size)^3$
  • 특성 선택하기

 

 

3-2. 정규 방정식


정규방정식(Normal equation)이란?


$\theta$를 구하는 방법은 크게 수치적 방법(Numerical solution)과 해석적 방법(Analytical solution)이 있다. 앞서 배운 경사하강법은 수치적 방법에 해당하며, 지금부터 배울 정규 방정식은 해석적 방법에 해당한다 식은 아래와 같이 쓴다

$$NormalEquation= \theta = (X^TX)^{-1}X^Ty$$

 

예제(m=4)

$x_0$ 집면적
(제곱피트)
방 개수 층 수 연식 매매가(1000달러)
1 1500 4 25 1 2500
1 2500 8 26 1 3500
1 2400 5 10 3 3000
1 1400 3 13 12 1500
  ... ... ... ... ...
  • $y$ = $ \begin{bmatrix} 2500 \\ 3500 \\ 3000 \\ 1500 \\ ... \end{bmatrix}$
  • $X$ = $ \begin{bmatrix} 1 && 1500 && 4 && 25 && 1 \\ 1 && 2500 && 8 && 26 && 1 \\ 1 && 2400 && 5 && 10 && 3 \\ 1 && 1400 && 3 && 13 && 12 \\ 1 && ... && ... && ... && ... \end{bmatrix}$

 

  • $\theta = (X^TX)^{-1}X^Ty$ 유도 과정
    • $X\theta=y$ , 양변에 $X^T$ 곱하기
    • $X^TX\theta=yX^T$, 좌변에 $X^TX$를 없애기 위해 $(X^TX)^{-1}$양변에 곱하기
    • $(X^TX)^{-1}X^TX\theta=yX^T(X^TX)^{-1}$, 이 경우 $(X^TX)^{-1}X^TX = 1$임
    • $\theta = (X^TX)^{-1}X^Ty$

 

m개 학습 데이터, n개 특성인 경우

  • $y$ = $ \begin{bmatrix} y^{(1)} \\ . \\ . \\ . \\ y^{(m)} \end{bmatrix}$
  • $X$ = $ \begin{bmatrix} 1 && x^{(1)}_1 && x^{(1)}_2 && x^{(1)}_3 && ... && x^{(1)}_n \\ ... && ... && ... && ... && ... && ... \\ 1 && x^{(m)}_1 && x^{(m)}_2 && x^{(m)}_3 && ... && x^{(m)}_n \end{bmatrix}$
  • $(X^TX)^{-1}$ 계산 시 시간복잡도 
    • $X^T=((n+1)*m)$이고,  $X=(m*(n+1))$이므로
    • $X^TX = O((n+1)(n+1)) = O(n^2 + 2n +1) = O(n^2)$
    • $(X^TX)^{-1}$  즉, inverse 계산까지 수행 시 총 시간복잡도는 $O(n^3)$가 걸리게 된다

 

경사하강법 vs. 정규방정식(m개 학습 데이터, n개 특성인 경우)

  경사하강법 정규방정식
장점
  • n이 매우 크더라도 잘 수행됨($n=10^6$)
  • $\alpha$(learning rate)를 따로 선택할 필요가 없음
  • 반복 수행이 필요 없음
단점
  • $\alpha$(learning rate)를 따로 선택해주어야 함
  • 수렴할 때까지 반복 수행이 필요함
  • $(X^TX)^{-1}$의 시간복잡도 $O(n^3)$의 큰 연산이 필요
  • n이 클 경우 연산이 느려짐
    (n>10000, n이 4정도면 괜찮음)

 

반응형

'인공지능(AI) > 머신러닝(ML)' 카테고리의 다른 글

[핸즈온 머신러닝] 6장. 서포트 벡터 머신  (0) 2021.12.05
[핸즈온 머신러닝] 4장. 로지스틱 회귀(분류)  (0) 2021.12.03
[핸즈온 머신러닝] 2장. 단항 선형 회귀  (0) 2021.11.18
[핸즈온 머신러닝] 1장. 머신러닝 소개  (0) 2021.11.16
경사하강법과 손실함수  (0) 2021.05.21
    '인공지능(AI)/머신러닝(ML)' 카테고리의 다른 글
    • [핸즈온 머신러닝] 6장. 서포트 벡터 머신
    • [핸즈온 머신러닝] 4장. 로지스틱 회귀(분류)
    • [핸즈온 머신러닝] 2장. 단항 선형 회귀
    • [핸즈온 머신러닝] 1장. 머신러닝 소개
    계속지나가기
    계속지나가기
    NLP Engineer

    티스토리툴바