AI/딥러닝

1. 선형 회귀(Linear Regression)

갓우태 2019. 7. 8. 01:18

공부를 많이 할수록 시험 점수가 오르거나 운동을 많이 할수록 체중이 빠지듯이, 종속 변수와 설명 변수가 선형성을 띌 때 선형 회귀분석을 한다고 합니다...

 

성적

공부시간

90

44

35

12

48

20

12

4

예를 들어, 공부시간과 성적에 대한 데이터가 있습니다. 딱보면 공부를 많이 할수록 성적이 높아지네요,, 공부를 많이 합시다

이제 우린 몇 시간 공부하면 점수가 얼마나 나올지 예측해볼 겁니다.

그래프 상에선 다음과 같이 표현됩니다. 선형적으로 표현되네요. 일단 그러면 하나의 가정을 해봅시다.

까만 선을 그었습니다. 보이시나요?? 이제 저 가정에 따라 예측해보겠습니다. predict요

저 까만 선을 H(x) = Wx + b 라고 해볼까요! 그림을 보고 W, b를 구해보자면,

W = 9/5, b = 0이 되네요

 

이게 얼마나 잘 맞는 가정인지 확인하기 위해, 실제 데이터와의 오차를 구할 겁니다.

오차는 파란 동그라미와 까만 선의 차이가 되겠지요

실제 데이터의 성적을 y라고 한다면, 

오차의 합 = Σ(H(x) - y)이 되겠군요. 모든 데이터의 실제값과 예측 값의 차이를 제곱한 뒤, 더했습니다.

제곱하는 이유는 차이를 더할 때 어떤 것은 마이너스 혹은 플러스가 돼서 오차가 0이 될 수도 있고, 제곱을 하면 차이가 클수록 그 오차값이 더욱 명확해지기 때문입니다.

이제 이 식을 cost function이라고 부르겠습니다.

 

Hypothesis = Wx + b

Cost function = 1/N * Σ(H(x) - y)


이제 실제로 계산을 해볼까요,

실제 값 90 35 48 12
예측 값 79.2 21.6 36 7.2
오차(차이를 제곱) 104.4 179.56 144 23.04

Cost = 451 / 4 = 112.75

와우,, cost가 어마어마하네요. 그만큼 제가 엉터리로 가정을 짰다는 말입니다.

엉터리 가정을 고치려면, W와 b를 업데이트해야 합니다.

아까의 cost function을 다시 보면, 1/N* Σ(H(x) - y)2  = 1/N * Σ(W·x + b - y)2가 됩니다.

즉, Cost(W)는 W에 대한 2차 함수가 됩니다.

대략 이런 식이 될 겁니다. W가 9/5일 때, 112.75의 cost가 발생합니다.

이제 우리는 cost가 최소가 되도록, 2차원 그래프 상에서 최저점을 찍도록 W를 업데이트할 겁니다. 자동적으로요

반응형