본문 바로가기

카테고리 없음

머신러닝-linear regression (multiple features)

저번 글에서 linear regression에 대해 알아보았다. cost function과 cost function을 작게하는데 사용되는 gradient descent algorithm에 대해 간략히 살펴보았다. 이 글에서는 multiple feature를 갖는 variable에 대해 linear regression을 하는 방법에 대해 알아보겠다.

2022.12.07 - [분류 전체보기] - 머신러닝-linear regression

 

머신러닝-linear regression

이 글에는 supervised learning에서도 linear regression에 대해 정리할 것이다. Linear regression은 머신러닝의 기초가 되는 아주 중요한 내용이기 때문에 꼭 이해하고 넘어가는 것이 좋다. 선형성이란 직선처

songs1.tistory.com

 

저번 글에서는 집의 크기에 대한 집값을 예시로 linear regression을 설명했다. 이 때는 집의 크기가 단 하나의 feature 였다면 이번에는 방의 숫자, 층수, 집의 나이를 추가했을 때 집값이 얼마나 되는지를 예로 들어보겠다. 이 때 이것을 multiple feature라고 한다. feature 하나 하나들을 x1, x2, x3, x4... 로 놓을 수 있다. 아래 그림을 예시로 용어에 대한 설명을 이어가겠다. 하나의 training example에는 x1, x2, x3, x4의 값이 하나씩 들어가 있다. 예를 들어 두 번째 training example에 대한 variable은 다음과 같이 표현할 수 있다. $$\vec{x}^{(2)}= \begin{bmatrix}
1416 & 3 & 2 & 40 \\
\end{bmatrix}$$ 여기서 화살표 모양은 벡터를 의미하며, 벡터는 하나의 행이나 열로 이루어진 데이터 집합을 말한다.  $$x_{3}^{(2)}$$는 2 번째 training example의 3번째 feature의 값을 의미하므로 2가 이에 해당한다.

Multiple feature에서 용어 설명 표 [출처: Andrew Ng, Coursera 강좌: supervised machine learning: regression and classification 에서]

feature가 x 하나일 때의 linear regression model은 $$f_{w,b}(x)= wx +b$$으로 표현되었다. multiple feature에서는 다음과 같이 표현된다. $$f_{w,b}(x)= w_{1}x_{1}+w_{2}x_{2}+...+w_{n}x_{n} +b$$

이 식을 조금 다르게 표현할 수도 있다. $$\vec{w}= \begin{bmatrix}
w_1 & w_2 & ... & w_n  \\
\end{bmatrix} $$

$$\vec{x}= \begin{bmatrix}
x_1 & x_2 & ... & x_n  \\
\end{bmatrix} $$

라고 벡터의 형태로 표현할 수 있고, 다시 linear regression model을 벡터를 사용하여 표현하면

$$f_{\vec{w},b}(\vec{x}) = \vec{w}\cdot \vec{x}+b$$로 쓸 수 있다. 간결한 형태로 표기하기 위해서 벡터의 형태를 가져온 것 뿐이지 위의 식과 정확히 일치한다.

 

위에서 multiple feature를 갖는 linear regression의 식을 알아보았으니 벡터 w와 b 값을 구하는 gradient descent를 어떻게 계산하는지 알아보자. 식은 one feature와 동일하지만 w가 벡터로 바뀌었으니 feature의 갯수만큼 계산이 증가한다. 아래 그림을 보면 쉽게 이해가 갈 듯 하다.

Multiple feature를 갖는 linear regression의 gradient descent algorithm 구하기 [출처: Andrew Ng, Coursera 강좌: supervised machine learning: regression and classification 에서]

Gradient descent algorithm을 계산할 수 있으니 결과가 잘 작동하는지를 체크해야한다. gradient descent가 정상적으로 작동한다면 매 시행마다 cost function $$J(\vec{w},b)$$가 줄어들어야 한다.

Gradient descent의 시행 횟수에 따른 cost function의 변화 추이 [출처: Andrew Ng, Coursera 강좌: supervised machine learning: regression and classification 에서]

Gradient descent가 매 시행마다 줄어들지 않고 증가하거나 증가하다가 감소하다가를 반복한다면 algorithm에 버그가 있거나 아니면 learning rate alpha 값이 너무 크다는 것을 의미한다. 이 때는 learning rate 값을 줄임으로써 문제를 해결할 수 있다. gradient descent algorithm이 정상적으로 작동한다면 매 시행마다 줄어들어야 한다는 것을 명심하자!

Learning rate alpha 값이 너무 클 때 나타나는 증상 [출처: Andrew Ng, Coursera 강좌: supervised machine learning: regression and classification 에서]