본문 바로가기
AI 이론과 개발의 혼재/Theory

선형회귀분석 (Linear Regression)

by ministar 2020. 6. 22.

 

회귀분석은 실 업무에서 정말 많이 쓰이는 분석 방법론 중 하나인 것 같습니다. 

선형회귀분석이라는 것을 한마디로 표현하자고 한다면,

'주어진 데이터를 가장 잘 표현하는 직선 방정식'을 구하는 문제라고 말할 수 있을 것 같아요. 

 

먼저 1차원 data를 보고 설명해볼께요. 

예를 들어, 좌표 상에 이렇게 뿌려진 데이터가 있다고 했을 때 (좌측 그림),

우측의 빨간색 직선과 같이 이 데이터를 가장 잘 표현하는 직선의 방정식을 구하는 문제예요. 

 

직선의 방정식이 아래와 같이 있다고 가정 했을 때,

$$y=ax+b$$

 

- a: 기울기(Gradient), 회귀 계수라고도 불리움

- b: 절편 (intercept), bias 라고도 불리움 

 

주어진 데이터를 가장 잘 표현한 직선은 과연 무엇일까요?

아마, 직선의 방정식에 주어진 데이터 $$x, y$$를 대입했을 때

틀린게 거의 없이 잘 맞아떨어지면, 가장 잘 표현된 직선이 아닐까요 ?

 

직선의 방정식에 데이터를 대입했을 때의 계산 수식을 살짝 바꿔서 다시 설명해볼께요.

$$H(x) = Wx+b$$

- $$H(x) : \hat{y}$$ , Hypothesis

- $$W$$ weight (Gradient)

- $$b$$ bias (intercept)

 

어느정도를 틀렸는지를 측정하는 함수인 cost function은 아래와 같이 정의해볼께요.

여기서의 cost function은 MSE(Mean Squared Error) 입니다. 

$$ cost(W) = \frac{1}{m}\sum_i^m(H(x^{(i)})-y^{(i)})^2 $$

m : 데이터의 총 개수

$$ H(x^{(i)}) $$ : i 번째 x 데이터를 직선 방정식에 대입했을 때, 나오는 H(x)값 (직선의 방정식에 대입한 값)

$$ y^{(i)} $$ : i 번째 y 데이터 값 (실제 정답 값)

 

즉, 예측값($$H(x^{(i)})$$)과 실제값($$y^{(i)} $$)의

차이가 가장 적게 나는 직선의 방정식을 찾는 문제입니다. 

 

$$y = 2x$$ 에 가까운 데이터를 임의로 생성하고, 이를 잘 표현하는 직선을 찾고자 할 때,

w의 값은 2에 가까울 수록 잘 찾은 거라고 얘기할 수 있습니다. 

w값을 요리조리 cost function에 대입하여 나온 결과값을 그래프로 나타내면 다음과 같습니다.

w가 2에 가장 가까울 때, cost function 값이 0에 가까운게 보이시나요?

 

 

 

 

 

어떻게 cost function이 최소가 되는 w를 찾을 수 있을까요?

 

"Gredient Descent"

 

위와 같이 cost function은 제곱을 취함으로써 convex한 형태를 띄웁니다.

따라서 현재의 w에 대해서 직선의 기울기의 반대 방향으로 조금씩 이동하도록 바꿔주면서

서서히 아래의 방향으로 찾아가도록 합니다.  

 

각각의 w에 대한 직선의 기울기의 아래쪽으로 서서히 이동하는 것을 상상해 보실 수 있으세요.

 

 

얼만큼 이동시키는 지를 결정하는 parameter는 위에서의 알파값으로, learning rate라고 부릅니다. 

Learning rate도 중요한 파라메터인데요,

Learning rate가 너무 클 경우에는, 이리저리 옮겨다녀 최적화된 Global minimum 값을 찾기 힘들 수 있습니다. 

따라서 적절한 Learning Rate 값을 주는것이 중요해요 :) 

 

 

 

조금이라도 도움이 되셨다면

아래 하트 꾸욱 부탁드려용!

댓글