느좋 인공지능

[ML Specialization / Andrew Ng] W2 Regression with multiple input variables 본문

ML/코세라 ML Specialization

[ML Specialization / Andrew Ng] W2 Regression with multiple input variables

serenewave 2025. 1. 18. 16:19

1) Multiple linear regression

위와 같이 예측변수$(x)$가 한 개가 아니라 여러 개이라면 어떻게 될까? 이제 이 문제는 단순 선형 회귀(simple linear regression)에서 다중 선형 회귀(multiple linear regression)로 확장된다.

벡터화(vectorization)이라는 개념이 나온다. $x^{2} = [1416, 3, 2, 40]$ 와 같이 표현할 수 있고, $x_{3}^{2} = 2$ 이다.

 

즉, 기존에 $f(x)= wx+b$였던 식이 $ f(x)= w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{3}+...+w_{n}x_{n}+b =\vec{w} \cdot  \vec{x}+b$이며

벡터화를 이용하면

w = np.array([ , , ,]

y = np.dot(w,x)+b  로 표현할 수 있으므로 코드가 간단해진다.

 

gradient descent 부분을 살펴보면,

Repeat until convergence {

...

}이다.

$w_{1}~w_{n}$에 해당하는 파라미터 값들을 경사하강법을 실시할 때마다 계속 수정해 주면 된다.

단순선형회귀에서는 $w$였던 것이 이제는 $w_{j}$가 되었다고 생각하면 되며, 이 또한 벡터화를 이용하면 아래와 같이 간단해진다.

사실, 기존 $x, w$가 $\vec{x}, \vec{w}$가 되었다 말고는 모두 동일하다. (b는 그대로 1개)

 

 

W1에서도 언급했던 'normal equation'이 경사하강법에 대한 대안으로 소개된다. normal equation은 선형 회귀에서만 가능하다. 비선형회귀방정식의 최적 해를 바로 구해내는 것은 해석학적 측면에서 불가능하기 때문이다. $w, b$를 반복 없이 바로 구해낼 수 있다는 장점도 있다. 하지만, 다른 학습 알고리즘에 일반화되지 않는다는 점과, feature의 수가 커지면 계산이 느려진다는 단점이 있다. 그러므로, normal equation이라는 method가 선형 회귀에 적용될 수 있다는 점을 기억하면 되며, 보통은, $w,b$ 파라미터 값을 구할 때에는 경사하강법이 추천된다는 점도 기억하면 된다.

$w = (X^{T}X)^{-1}X^{T}y$ <- normal equation이며, 단순선형회귀에서 이를 이용하여 y=ax+b에서 a, b의 식을 solve 해 내면 아래와 같다.

 

 

2) Gradient descent in practice

다중선형회귀의 이론 설명은 끝났고, 여기서는 경사하강법에 대한 부수적인 여러 support 방법론들을 배운다.

 

(1) Feature Scaling

경사하강법을 빠르게 run 할 수 있는 기술로, 서로 다른 feature들이 비슷한 범위에 있다면 gradient descent가 더 빨리 수렴함을 이용하여, feature들이 너무 다른 범위에 존재할 때 표준화 해주는 기술이다.

 

예를 들어, $x1$이 0~200이고, $x2$가 1~5라면, 좋은 모델은 $w_{1}$의 값은 작고 $w_{2}$의 값은 커서 곱이 비슷하게 될 확률이 높다. 그렇다면, $w_{1}$의 범위가 $w_{2}$의 범위보다 매우 좁아서 찌그러진 타원의 모양을 가진다. 경사하강법을 적용했을 때 global optima를 구하는데 시간이 오래 걸린다.

그러므로, max로 나누거나, range(=max-min)로 나누는 mean normalization이나, 표준편차로 나누는 z-score normalization을 이용하여 $x_{1}$, $x_{2}$을 scaling 해준다면 경사하강법이 빨리 계산될 수 있다.

 

 

(2) learning curve

$min J(w,b)$이 목적인 경사하강법이 잘 진행되고 있는지(수렴되었는지) 파악하기 위해서, $x$축이 # of iterations, $y$ 축이 비용함수인 그래프(learning curve)를 그려볼 수 있다. 만약 비용함수가 증가한다면, 학습률($\eta$)이 잘못(크게) 설정되어 있다는 의미이다. ((그래프가 더 이상 감소하지 않는(수렴하는) 구간을 통해 적절한 반복 횟수 또한 파악할 수 있다.))

혹은, Automatic convergence test를 이용해서 수렴여부를 파악할 수도 있다.

if $J(w,b) decreases by \leq \varepsilon =10^{-3}$ -> convergence

 

또한, learning curve를 이용하여 적절한 학습률도 구해낼 수 있다.

학습률이 크다면 위의 그림처럼, 비용함수가 증가하는 구간이 포함된 그래프가 나올 것이다. 그렇다면 학습률이 너무 크다는 것을 의미한다. 그러므로, 학습률을 0.001과 같이 매우 작은 값으로부터 시작하여 3배씩 늘려가면서 적절한 학습률을 구해낼 수 있다.

 

<>

Q: ML과 DL의 차이는, DATA->FEATURE추출->LEARNING->output의 과정에서 데이터만 주면 feature 추출또한 자동으로 해내는 딥러닝과 달리 머신러닝은 feature 추출은 인간이 해야 한다고 한다. 이것을 회귀로 치면, 데이터가 주어졌을 때 어떠한 feature들을 예측변수로 설정할지에 대한 내용인 것 같다. (??) 그러고 regularization이나 feature scaling이나 등등을 할지 말지도 사람의 선택 영역일 것이다.

<>

 

(3) Feature engineering

'How we choose most appropirate feature for learning algorithm'

직관을 사용하여 새로운 feature을 design 하는 것. by 기존 feature을 변형하거나 결합하여

 

예를 들어, $f(x) = w_{1}x_{1} + w_{2}x_{2} + b$가 있다. 그런데 $x_{1}$이 가로, $x_{2}$가 세로를 의미하여, $x_{1}x_{2}$가 면적으로서 새로운 의미를 지닐 것 같다고 판단했을 때, $f(x) = w_{1}x_{1} + w_{2}x_{2} w_{3}x_{1}x_{2}+ b$로서 새로운 feature을 추가하여 모델을 수정할 수 있다.

 

+) Polynomial regression

이렇게 feature engineering을 적용하여 곡선, 비선형 함수를 데이터에 맞춘 적절한 model을 설정할 수 있다. 제곱근도 가능하다. 그렇다면 범위가 확 달라지므로(2차, 3차) feature scaling이 더 중요해진다.

-> 그렇다면, 어떤 feature을 쓸지는 어떻게 정하나? --> course 2에서 다룬다. {W6 ($J_{train}, J_{cv}$를 이용하여 $d$ 정하는 내용 ? ) 여러 개의 feature 중 자동으로 어떤 feature를 선택할지 알려주는 알고리즘에 대해 배운다. 이 알고리즘은 데이터를 보고 자동으로 2차, 3차 혹은 다른 함수 중 알맞은 것을 선택한다. 여기서는 feature을 직접 설정할 수 있다는 것까지만 알 면 된다.

 

 

<정리>

1) 다중 선형회귀. 사실 스칼라값 x가 벡터 x(=[x1 x2 x3 ... xn])으로 바뀌었으며, w 또한 그렇다는 사실 말고는 동일하다. W1의 연장선.

2) feature scaling이라는 개념 /  learning curve를 이용한 학습률 설정 /  feature engineering이라는 개념 ->그러나 feature engineering을 언제 할지는 나중에 다룬다.