본문 바로가기
ETC

[머신러닝 앤드류응] (Week2) 2. 다변량 선형 회귀

by bigpicture 2021. 4. 5.
반응형

앤드류 응 교수님의 코세라 머신러닝 강의를 요약하는 글입니다. Week2 의 상세 목차는 아래와 같습니다.

Week2 목차

1. Environment Setup Instructions (환경 설정)
2. Multivariate Linear Regression (다변량 선형 회귀)
3. Computing Parameters Analytically (해석적으로 파라미터 구하기)
4. Submitting Programming Assignments (프로그래밍 숙제)
5. Octave/Matlab Tutorial (옥타브/매트랩 튜토리얼)


이번 글은 Week2의 2강인 Multivariate Linear Regression 요약입니다.


Week2 

2. Multivariate Linear Regression (다변량 선형 회귀)

1) Multiple Features (여러 독립변수)
2) Gradient Descent for Multiple Variables (다변수 에서의 경사하강법)
3) Gradient Descent in Practice 1- Feature Scaling (경사하강법 실전 - 독립변수 스케일링)
4) Gradient Descent in Practice 2- Learning Rate (경사하강법 실전 - 학습률)
5) Features and Polynomial Regression (독립변수들과 다항함수 회귀)

 

1) Multiple Features (여러 독립변수)

지난 단변량 회귀분석 예제에서는 독립변수가 집 크기 하나였고, 종속 변수가 집값이었습니다. 모델은 아래와 같이 정의했습니다. 

$h_{\theta}=\theta_{0}+\theta_{1}x$

 

이번에는 독립변수(Feature)를 늘려봅시다. 집 크기 뿐만 아니라 침실 개수, 층 수, 연식 이라는 독립변수를 추가하겠습니다. 

표기법을 설명하겠습니다.

$m$ : 각 독립변수의 원소 수(위 그림에서 행의 수)
$n$ : 독립변수의 개수 (위 그림에서 열의 수-1)
$x^{(i)}$ : 독립변수의 i번째 원소 (벡터임)
$x_{j}^{(i)}$ : j번째 독립변수의 i번째 원소

 

예를들어 $x^{(2)}$는 아래와 같습니다. 

 

$x^{(2)}=\begin{bmatrix}
1416 \\ 
3 \\ 
2 \\ 
40
\end{bmatrix}$

 

예를들어 $x_{3}^{(2)}$는 아래와 같습니다. 

 

$x_{3}^{(2)}=2$

 

가설모델은 아래와 같습니다. 

 

$h_{\theta}=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+\theta_{3}x_{3}+\theta_{4}x_{4}$

 

변수가 n개이면 n개로 늘리면 됩니다. 

 

$h_{\theta}=\theta_{0}+\theta_{1}x_{1}+\theta_{2}x_{2}+...+\theta_{n}x_{n}$

 

위 수식을 행렬의 곱셈으로 간단하게 나타내기 위해 $x_{0}$를 1이라고 가정하겠습니다. 먼저 벡터 x를 아래와 같이 정의합시다. 

 

$x=\begin{bmatrix}
x_{0} \\ 
x_{1} \\ 
x_{2} \\ 
... \\ 
x_{n} 
\end{bmatrix}$

 

벡터 쎄타는 아래와 같이 정의합시다.

 

$\theta=\begin{bmatrix}
\theta_{0} \\ 
\theta_{1} \\ 
\theta_{2} \\ 
... \\ 
\theta_{n} 
\end{bmatrix}$

 

위 모델은 아래와 같이 나타낼 수 있습니다. 행렬의 곱셈을 생각하시면 됩니다. 

 

$h_{\theta}=\theta^{T}x$

 

 

2) Gradient Descent for Multiple Variables (다변수 에서의 경사하강법)

n변량 선형회귀에서 가설함수과 비용함수는 아래와 같습니다. 

 

경사하강 알고리즘은 아래와 같습니다. 

 

 

 

3) Gradient Descent in Practice 1- Feature Scaling (경사하강법 실전 - 독립변수 스케일링)

독립변수들 마다 크기 단위가 다릅니다. 따라서 숫자의 크기가 전부 제각각 입니다. 

$x_{1}$ (방의 크기) : 0-2000($feet^{2}$)
$x_{2}$ (침실의 개수) : 1-5(개)

변수 별로 범위가 다르면 비용함수로 등고선을 그려보면 많이 찌그러진 형태의 등고선이 됩니다. 알고리즘이 수렴하는데 오래걸릴 수 있습니다. 

이런 문제를 해결하는 방법은 스케일링을 하는 것입니다. 스케일링의 목적은 모든 피쳐의 범위를 비슷하게 맞추는 것입니다. 보통 -1~1사이로 맞춥니다. 대표적으로 사용되는 스케일링 방법은 평균을 이용한 표준화입니다. 아래와 같은 수식을 사용합니다. 

$x_{i}:=\frac{x_{i}-\mu_{i}}{s_{i}}$

s는 범위가 사용되거나 표준편차가 사용됩니다. 

 

 

4) Gradient Descent in Practice 2- Learning Rate (경사하강법 실전 - 학습률)

경사하강법을 사용할 때, 알고리즘이 제대로 작동하고 있는지를 확인해야 합니다. 알고리즘이 정상적으로 작동하고 있다면 아래와 같이 반복횟수(iteration)가 증가할 수록 비용함수가 감소해야 합니다. 

 

수렴성을 판단하는 방법에는 위와 같이 그래프를 그리는 방법 외에도 자동 수렴성 평가방법이 있습니다. 알고리즘이 한번 돌았는데 비용함수가 줄어든 양이 $10^{-3}$ 보다 작으면 수렴했다고 판단하는 것입니다. 

만약 경사하강법이 제대로 작동하지 않는다면 Learning rate $\alpha$를 줄여보면 된다. 너무 작게 줄일 경우 수렴 속도가 느려질 수 있다. 

앤드류 응은 작은 $\alpha$로 시작해서 세배씩 늘려본다고 한다. 

 

5) Features and Polynomial Regression (독립변수들과 다항함수 회귀)

다항함수를 이용하면 비선형 모델을 만들 수 있습니다. 예를 들면 아래와 같은 보델입니다.

$\theta_{0}+\theta_{1}x+\theta_{2}x^{2}$

또는 아래와 같이 무리식을 사용할 수도 있습니다. 

$\theta_{0}+\theta_{1}x+\theta_{2}\sqrt{x}$

반응형

댓글