선형 회귀(Linear Regression)

Stop._.bmin·2023년 1월 31일
0

1. 선형 회귀(Linear Regression)

어떤 요인으 수치에 따라서 특정 요인의 수치가 영향을 받 있다.
어떤 변수의 값에 따라서 특정 변수의 값이 영향을 받고 있다.

x에 의해서 종속적으로 y의 값이 변한다
선형 회귀는 1개 이상의 독립 변수 x와 y의 선형 관계를 모델링 한다. 이때 독립변수 x가 1개이면 단순 선형 회귀라고 한다.

1) 단순 선형 회귀 분석(Simple Linear Regression Analysis)


곱해지는 값 w를 머신 러닝에서는 가중치(weight), 별도로 더해지는 값 b를 편향(bias)라고 한다.
직선의 방정식에서는 각각 직선의 기울기와 절편을 의미한다.

2) 다중 선형 회귀 분석(Multiple Linear Regression Analysis)


x가 여러개일 때 사용

2. 가설(Hypothesis) 세우기

알고있는 데이터로부터 x와 y의 관계를 유추하고, 수학적으로 식을 세워보게 되는데 머신러닝에서는 이러한 식을 가설(Hypothesis)이라고 한다.

3. 비용 함수(Cost function): 평균 제곱 오차(MSE)

문제에 대한 규칙을 가장 잘 표현하는 w와 b를 찾는 일이 필요하다. 머신러닝은 이 두가지를 찾기 위해서 실제값과 가설로부터 얻은 예측값의 오차를 계산하는 식을 세우고, 이 식의 값을 최소화하는 최적의 w와 b를 찾아낸다.

이때 실제값과 예측값에 대한 오차에 대한 식을 목적 함수(Objective function)또는 비용 함수(Cost function) 또는 손실 함수(Loss function)라고 한다.

  • 함수의 값을 최소화하거나, 최대화하거나 하는 목적을 가진 함수를 목적 함수(Objective function)
  • 값을 최소화하려고 하면 이를 비용 함수(Cost function) 또는 손실 함수(Loss function)

비용 함수는 단순히 실제값과 예측값에 대한 오차를 표현하면 되는 것이 아니라, 예측값의 오차를 줄이는 일에 최적화 된 식이어야 한다. 회귀 문제의 경우에는 주로 평균 제곱 오차(Mean Squared Error, MSE)가 사용된다.

위의 그래프에서 예측한 값을 각각 실제값으로부터 오차를 계산하여 표로 만들어본다

수식적으로 절대적인 크기를 구해야 하므로 오차를 제곱하여 더하는 방법을 사용한다.

이때 데이터 개수인 n으로 나누면, 오차의 제곱합에 대한 평균을 구할 수 있는데 이를 평균 제곱 오차(Mean Squered Error, MSE)라고 한다.

그렇다면 y = 13x + 1의 예측값과 실제값의 평균 제곱 오차는 52.5다.
평균 제곱 오차를 w와 b에 드는 비용 함수 (Cost function)로 재정의 하면 아래와 같다.

Cost(w,b)를 최소가 되게 만드는 w와 b를 구하면 결과적으로 가장 y와 x의 관계를 가장 잘 나타내는 직선을 그릴 수 있다.

4. 옵티마이저(Optimizer): 경사하강법(Gradient Descent)

비용 함수를 최소화하는 매개변수인 w와 b를 찾기 위한 작업을 수행할 때 사용되는 알고리즘을 옵티마이저(Optimizer) 또는 최적화 알고리즘이라고 부른다.

옵티마이저를 통해 적절한 w와 b를 찾아내는 과정을 머신 러닝에서 훈련 또는 학습이라고 부른다.

옵티마이저

cost와 기울기 w와의 관계를 이해해보아야한다.
w는 머신용어로 가중치라고 부르지만, 직선의 방정식 관점에서는 직선의 기울기를 의미한다.
아래의 그래프를 통해서 w가 지나치게 높거나 낮을 때 어떻게 오차가 커지는지 볼 수 있다.

편향 b없이 단순히 가중치 w만을 사용한 y = wx라는 가설을 가지고 경사하강법을 수행한다.

위의 그래프에서 cost가 가장 작을 때의 w의 값을 찾아야 한다.


기계는 임의의 랜덤값 w값을 정한 뒤에, 맨 아래의 볼록한 부분을 향해 점차 w의 값을 수정해나간다. 이를 가능하게 하는 것이 경사 하강법(Gradient Descent)이다. 이를 이해하기 위해서는 미분을 이해해야 한다.


초록 선은 w가 임의의 값을 가지게 되는 네 가지의 경우에 대해서, 그래프상으로 접선의 기울기를 보여준다.
볼록한 부분으로 갈 수록 접선의 기울기가 작아진다.

즉, cost가 최소화가 되는 지점은 접선의 기울기가 0이 되는 지점이며, 미분값이 0이 되는 지점이다. 경사 하강법의 아이디어는 비용함수(Cost function)를 미분하여 현재 w에서의 접선의 기울기를 구하고, 접선의 기울기가 낮은 방향으로 w의 값을 변경하고 다시 미분하고 이 과정을 접선의 기울기가 0인 곳을 향해 w의 값을 변경하는 작업을 반복하는 것에 있다.

비용함수는 아래와 같다.

비용을 최소화하는 w를 구하기 위해 w를 업데이트하는 식은 다음과 같다.
이를 접선의 기울기가 0이 될 때까지 반복한다.


위의 식은 현재 w에서 접선의 기울기와 a를 곱한 값을 현재 w에서 빼서 새로운 w 의 값으로 한다는 것을 의미한다. a는 여기서 학습률(learning rate)라고 한다.


접선의 기울기가 음수일 때, 0일때, 양수일 때를 보여준다.

접선의 기울기가 음수일 때의 수식은 아래와 같다

  • 기울기가 음수면 '음수를 빼는 것'은 곧 '해당 값을 양수로 바꾸고 더하는 것'과 같다.

접선의 기울기가 양수일 때의 수식은 아래와 같다

  • 기울기가 양수면 w값은 감소하게 되는데 이는 결과적으로 기울기가 0인 방향으로 w의 값이 조정된다.

따라서 결국 아래의 식은 접선의 기울기가 음수거나 양수일 때 모두 접선의 기울기ㅏㄱ 0인 방향으로 w의 값을 조정한다.

그렇다면 학습률(Learning rate)라고 말하는 알파는 무슨 의미를 가질까?
알파는 0~1의 값을 가지며 w를 그래프의 한 점으로 보고 접선의 기울기가 0일 때까지 경사를 따라 내려간다는 관점에서는 얼마나 큰 폭으로 이동할지 정한다.


위의 그림은 학습률 알파가 지나치게 높은 값을 가질 때, 접선의 기울기가 0이 되는 w를 찾아가는 것이 아니라 w의 값이 발산하는 상황을 보여준다. 반대로 알파가 지나치게 낮은 값을 가지면 학습 속도가 느려진다.

profile
원하는 만큼만

0개의 댓글