# 선형 회귀 와 경사하강법
- 선형회귀 Linear Regression
모든 문제는 선형으로 풀수있다! 라는 가정에서 출발하였다.
데이터에 가장 잘 맞는, 가장 적절한 하나의 최적선을 찾는것이라고 생각하면 된다.
❓ 시험 전 날 마신 커피 잔 수에 따라 시험 점수를 예측할 수 있을까?
커피 잔 수에 따른 누군가의 시험 점수
커피 잔 수 (입력변수/input variable) | 시험 점수 (목표변수/target variable/feature) |
1 | 50 |
2 | 60 |
3 | 70 |
4 | 80 |
위와 같은 표와 데이터가 있고, 그것을 그래프로 표시한다면 다음과 같다.
우리는 이 그래프를 보고 임의의 직선 1개로 이 그래프를 비슷하게 표현할 수 있다는 가설을 세울 수 있다.
이 선형모델은 수식으로 H(x) = Wx + b 라고 표현할 수 있다.
정확한 시험 점수를 예측하기 위해서는 임의의 직선(가설)과 점(정답)의 거리가 가까워지도록 해야 한다.
가설함수 평가법으로 MSE =mean squared error 평균 제곱 오차 가 있다.
MSE가 크면 가설함수가 데이터에 잘 안 맞는것이고,
MSE가 작으면 가설함수가 데이터에 잘 맞는것이다.
가설함수를 평가하기 위한 또 다른 함수로 손실함수 Cost function(=Loss function) 가 있다.
손실함수가 최소가 될 때 가설함수와의 데이터 궁합이 가장 좋다고 할 수 있다.
손실함수가 최소가 되도록 하기위한 전략 중 하나로 "경사하강법" 이라는 것이 있다.
처음에 랜덤으로 한 점에서 시작하여 이후 조금씩, 그리고 한번씩 움직이면서
이전 값보다 작아지는지 관찰을 하는 방법이다.
초기의 한 점이 한번씩 움직이는 단위를 Learning rate 라 하고, 이 점이 그래프의 최소점에 도달하면 학습이 종료된다.
머신러닝 모델이 학습을 잘하기 위해서 적당한 learning rate를 찾아야 하는데, 이는 노가다라 할 수 있다.
learning rate가 작다면 초기 위치에서 최소점까지 찾는데 많은 시간이 걸릴 것인데,
이것은 학습하는데 최소값에 수렴하기까지 많은 시간이 걸린다는 것을 뜻한다.
반대로, learning rate가 크다면 우리가 찾으려는 최소점을 지나치고 최소점 주위에서 진동하다가
최악의 경우 overshooting까지 일어날 수 있다.
복잡한 가설들을 세웠을 경우 직선과 다르게 아래와 같은 그래프가 그려졌다고 생각해 보자.
우리의 목표는 최소점은 Global cost minimum 을 찾는 것이다.
만약 learning rate를 잘못 설정한다면 초기의 점이 local cost minimum 구멍에 빠질수도 있다.
그리고 Cost가 높다는 얘기는 우리가 만든 모델의 정확도가 낮다는 말과 같다.
따라서 우리는 최대한 Global cost minimum을 찾기 위해 좋은 가설과 좋은 손실 함수를 만들어서
기계가 잘 학습할 수 있도록 만들어야 하고, 그것이 바로 머신러닝 엔지니어의 핵심 역할이라 할 수 있다.