Skip to content
/ -ML Public

파이썬으로 배우는 머신러닝의 교과서 정리

Notifications You must be signed in to change notification settings

Ha-Jungmin/-ML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

5강 지도학습: 회귀

1차원 입력 직선 모델

만약 나이 x에 따라 키 t를 예측하는 모델을 만든다고 하자. 다음과 같은 그래프의 데이터가 주어졌다고 가정하자.

5-1

위의 데이터가 고르지 않기 때문에 나이에 따라 키를 정확하게 맞추는 것은 불가능하다는 것을 알 수 있다. 따라서 어느 정도 오차를 허용하며 주어진 데이터에서 선을 그어 데이터를 구분짓는 것으로 그럴 듯하게 예측할 수 있다.

이 때, 직선의 방정식을 다음과 같이 나타낼 수 있다. y(x) = w_0*x + w_1

이 때, w_0와 w_1을 어떻게 정할지를 결정해야한다. 이걸 결정할 때 오차를 사용하는데 이 책에서는 평균제곱 오차를 사용하여 각 데이터 별로 모델과의 오차를 구하고 오차가 가장 작은 직선을 결정하여 w_0, w_1을 결정할 것이다.

평균 제곱 오차에서 가장 작은 오차에서의 w_0, w_1을 구하는 방법 중 가장 간단한 방벙은 경사 하강법이다. 먼저, 적당한 w_0과 w_1을 결정한 다음 이것을 J지형에 대응시킨 후 이 점에서의 기울기를 확인하고 J가 감소하는 방향의 w_0와 w_1을 진행시킨다. 이걸 여러차례 반복하면 가장 작은 J값을 갖는 w_0와 w_1 값을 구할 수 있다. 진행 방향에대해 구할 때는 J를 w_0와 w_1로 각각 편미분한 벡터의 반대 방향으로 구하면 된다.

그래서 w값의 갱신을 식으로 나타내면 w(t+1) = w(t) - α(-J를 w_0와 w_1로 편미분한 벡터) 여기서 α는 학습률이라고하는 매개변수로 w의 갱신 폭을 조절해준다. 학습률이 크다면 갱신이 커져 학습이 빨리될 수 있지만 수습이 어려워지기 때문에 적당하게 줄여야한다.

다음은 학습이 될 동안 w가 어떻게 갱신되는지를 나타낸 그림이다.

5-2

오른쪽 위의 시작 지점부터 갱신이 되어갈수록 등고선에서 가장 낮은 중앙을 향해 움직이는 것을 볼 수 있다.

이것을 우리가 처음 받았던 데이터에서 절편과 기울기를 이용해 직선을 그어보면 다음과 같이 나타난다.

5-3

위의 직선이 평균제곱오차인 J가 가장 작을 때의 직선이다. 이처럼 경사하강법을 사용한다면 J의 최소값을 구할 수 있다. 그러나 주의해야할 점은 경사하강법을 통해 구하는 해는 어디까지나 극소값이며 전체의 최소값과는 다르다. (local minimum과 global minimum의 차이)

2차원 입력면 모델

1차원의 경우는 x는 나이만을 뜻했다면 이젠 몸무게 정보도 함께 들어갔다고 가정하자. 이 때, 나이를 X1, 몸무게를 X2로 놓고

About

파이썬으로 배우는 머신러닝의 교과서 정리

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published