본문 바로가기

Machine Learning/Coursera

[Machine Learning Specialization by Andrew Ng 강의 노트] Course 1, Week 1, Lesson 3. Linear Regression Model

Andrew Ng 교수님의 Machine Learning 강의를 정리한 내용입니다.

Linear Regression

선형 회귀 모델은 세계에서 가장 널리 사용되는 supervised learning 일 것이고, 데이터에 직선을 하나 그린다고 생각할 수 있습니다. Lesson 2에서 예시로 들었던 집 크기에 따른 집 가격의 분포를 가지고 새로운 집의 가격을 예측하는 모델이 있습니다. 집 사이즈와 금액을 가진 정답 데이터를 기반으로 직선을 그리기 때문에 supervised learning이고, 숫자를 예측하기 때문에 regression입니다. 꼭 직선이 아닌 regression 모델도 있지만, 뒤에서 살펴볼 예정입니다. 또한 Lesson 2에서 배웠는데, regrssion에 반대되는 supervised learning에는 classification 모델이 되겠습니다.

Terminology

Training set=x=input variable=input feature: 모델을 학습하기 위해 정답이라고 볼 수 있는 입력 변수
y=output variable=target variable: 예측하려는 출력 변수
m: training example 갯수
(x, y): 한개의 training example
$$(x^i, y^i)$$: i번째의 training example

 

Learning algorithm에 training set(features, targets)을 넣으면, f를 내놓습니다. f는 hypothesis라고 불리지만, 우리는 간단하게 function으로 부를 것입니다. 새로운 입력변수인 x가 function에 들어가게 되면, 예측된 y를 내놓을텐데 y-hat이라고 부릅니다.

그럼 f는 어떻게 표현할 것인가요? f를 계산하기 위해 어떤 수학 공식을 사용할 것인가요? 일단 직선의 계산식을 사용한다고 고정합시다. 다음과 같이 계산식을 작성할 수 있습니다.
$$f(x) = wx + b$$
위 직선 방정식에서 우리는 f(x)로 나오는 y값을 예측할 것입니다. 직선 방정식을 멋지게 부르면 linear function이 되겠습니다. 물론 곡선, 포물선 함수를 사용할 수 있겠지만, linear function이 간단하고, 사용하기 쉽기 때문에 더 많이 사용하게 됩니다. linear function을 linear regression이라 하고, 1개의 입력변수만 가진다고 하여 Univariate linear regression이라고 멋지게 부른다고 합니다.

Cost Function

위에서 모델을 만들었다면, 그 모델의 성능을 판단하는 cost function을 정의해야 합니다. 성능을 판단해 모델을 개선할 수 있겠죠. 모델을 개선할 수 있는 변수는 위 선형 회귀 방정식에서 w,b 두 가지 파라미터입니다. 파라미터 용어 대신 coefficients, weights라고 불리우기도 합니다. b는 y절편이기도 하죠. w,b 값을 변경함에 따라서 f(x)는 다른 직선방정식을 그리게 되고, y-hat인 예측값도 달라지게 됩니다.
예측값과 실제 값이 얼마나 떨어져있는지 확인하기 위해 y-hat - y 으로 오차를 계산합니다. 오차 계산식을 정리하면, 다음과 같습니다.
$$J(w,b) = 1/2/m*(sum(y-hat - y)^2)$$


$$J(w,b) = 1/2/m*(sum(f(x^i) - y^i)^2)$$
해당 cost function은 선형 회귀에서 가장 많이 사용됩니다. 우리는 cost function을 낮추기 위해 w,b 값을 조정할 것입니다. 그 전에, cost function J 무엇을 계산하며 J가 클 때와 작을 경우의 의미를 파악해야 합니다.

Cost Function 의미 파악하기

f(x)를 기존의 파라미터 두개에서 w 한개로 변경하고, J(w)와의 관계를 살펴보고자 합니다. f(x)는 x 입력변수 값에 따라 달라지게 되고, J(w)는 w 파라미터 값에 따라 값이 변하는 데 두 가지 그래프를 모두 그래프로 띄워 살펴보겠습니다. w값을 변경해보면서 각각 w값에 따른 J(w)를 계산하다보면, w가 음수부에서 큰 값을 가지다가 1에서 0을 찍고, 다시 w가 상승함을 따라 J(w)값도 상승하게 됩니다. 그럼 J(w)=0 일때의 f(x)=wx 가 가장 input 데이터를 잘 표현하는 직선방정식이므로 우리는 J(w)가 가장 최소가 되는 w를 찾으면 되겠구나를 알 수 있습니다.


f(x)의 두 개의 파라미터를 모두 고려해서 J(w)와의 관계를 살펴봐도 비슷하게 J(w)는 수프 그릇 모양을 하고 있고, J(w)가 가장 최소가 되는 w,b 값을 찾으면 됩니다.


3D 그래프를 그려 돌려서 살펴보는 것 보다 2D 등고선도로 표현해서 J(w)를 분석하는 것이 구체적인 포인트를 자세히 살펴보기에 적합합니다.


선형회귀에서 이와 같이 수동으로 cost function J(w)를 그리고 등고선도에서 값을 찾는 작업은 좋은 과정이 아니며, 우리가 복잡한 머신러닝 모델을 갖는 데 도움이 되지 않습니다. 대신 최적의 직선방정식을 그리는 w,b 값을 자동으로 찾아주는 효율적인 알고리즘을 필요로 하게 될 것입니다. J(w)를 최소화하는 알고리즘은 경사하강법(gradient descent)라고 불리웁니다.

다음 강의에서 경사하강법을 공부하게 될텐데, 경사하강법은 선형회귀에서만 쓰이는 것이 아니라 AI에서 복잡한 모델을 train하기 위해서도 쓰입니다.


[기술 용어 정리]

- Landing AI: Andrew Ng 박사가 CEO로 있는 제조 AI 회사입니다.

 

[영어 단어 정리]

- parabola: 포물선
- intercept: 절편
- intuition: 직관

 

[출처]

- 강의: https://www.youtube.com/watch?v=CFN5zHzEuGY&list=PLkDaE6sCZn6FNC6YRfRQc_FbeQrF8BwGI&index=11