J's Study log

03. Linear Regression - Intro. 본문

Machine Learning/Supervised Learning(감독학습)

03. Linear Regression - Intro.

정우섭 2023. 6. 26. 20:04

Linear Regression

Linear Regression은 말 그대로 선형모델(ex. y = ax + b)에서 x와 y에 대한 관계를 분석하는 것을 말한다.

 

관계를 분석한다는 얘기는 곧 a와 b의 값을 찾는다는 것인데, 어떻게 이를 수행할까?

 

이를 바로 우리가 알고있는 x와 y에 대한 데이터를 통해서 수행하는 것이다.

 

그리고 이 작업을 Model Fitting이라고 한다.

 

위 사진을 보면 데이터가 Traning data(기호:x)로 주어졌으며, 이 데이터를 통해 최적화(model fitting)된 a와 b의 값을 통해 선형으로 예측된 Current hypothesis가 그려져있다.

 

Model

앞서 우리는 Supervised Learning의 한 유형인 Regression에 대해 알아보았습니다. 이제 이를 실제로 구현하는 방법에 대해 알아보겠습니다. Regression 모델을 만드는 방법은 크게 세 가지 단계로 나눌 수 있습니다.

  1. 가설 설정 (Hypothesis): 예를 들어, 주택의 크기와 가격 사이에 선형 관계가 있는 것으로 보입니다. 이를 수학적으로 표현하면 아래와 같이 표현 할 수 있습니다.
  2. 모델 훈련 (Train the model): 최적의 θ0와 θ1 값을 찾습니다.
  3. 훈련된 모델로 예측하기: hθ(500)와 같이 훈련된 모델을 사용하여 예측을 수행합니다.

Hypothesis 예시 (x=주택의 크기, hθ(x)=가격)

가설 설정 단계에서 변수들의 개수나 관계에 따라 여러 함수(이차함수, 삼차함수 등)를 사용해도 괜찮습니다.

 

Regression 문제에서 중요한 개념인 Error, Cost Function, 그리고 MSE에 대해 알아보겠습니다.

 

Error

위 이미지에서 가장 잘 optimized된 모델은 무엇인가요? 왜 그런가요?

 

정답은 당연히 두번째 입니다.

 

머신러닝 모델을 훈련시키는 과정에서 가장 중요한 것 중 하나는 예측값과 실제값 사이의 차이, 즉 '오차(Error)'를 최소화하는 것입니다.

 

이 오차는 모델이 얼마나 잘 예측하고 있는지를 나타내는 지표로 사용됩니다.

 

오차는 간단히 말해 실제값과 예측값 사이의 차이입니다. 이 오차가 작을수록 모델의 성능이 좋다고 할 수 있습니다.

Cost Function

Cost Function은 모델의 성능을 측정하는 함수입니다.(워딩이 다르지만, Cost == Error 이다.)

 

이는 모든 훈련 데이터에 대한 오차를 계산하고, 이 오차들을 어떤 방식으로든 합친 것, 즉 모델과 데이터의 오차에 대한 값이다.

 

따라서 Cost Function의 값이 작을수록 모델의 성능이 좋다고 할 수 있습니다.

 

일반적으로, Cost Function은 모델의 예측값과 실제값 사이의 차이를 제곱하여 모든 훈련 데이터에 대해 평균을 낸 것입니다.

 

이를 Mean Squared Error(MSE)라고 합니다.

 

Mean Squared Error (MSE)

 

MSE는 Cost Function의 한 종류로, 모든 훈련 데이터에 대한 오차의 제곱의 평균을 나타냅니다.

 

이는 모델의 예측값과 실제값 사이의 차이를 제곱하여 모든 훈련 데이터에 대해평균을 낸 것입니다.

 

이 값이 작을수록 모델의 성능이 좋다고 판단할 수 있습니다.

 

MSE는 J()로 표현하고, 앞선 예시를 수식으로 표현하면 다음과 같다.

여기서 n은 훈련 데이터의 개수, yi는 실제값, hθ(xi)는 모델의 예측값을 나타냅니다.

 

이 수식을 통해 우리는 모든 훈련 데이터에 대한 오차의 제곱의 평균을 계산할 수 있습니다.

 

오차를 계산할 때 왜 단순히 오차의 평균을 사용하지 않고, 오차의 제곱의 평균을 사용하는지 궁금해하실 수 있습니다.

 

이는 Mean Squared Error(MSE)가 가지는 몇 가지 중요한 특성 때문입니다.

  • 음수 오차 제거: 오차는 실제값과 예측값 사이의 차이이기 때문에 양수 또는 음수가 될 수 있습니다. 이를 그대로 평균내면, 양수 오차와 음수 오차가 상쇄되어 실제 오차보다 작게 나타날 수 있습니다. 오차를 제곱하면 이 문제를 해결할 수 있습니다.
  • 큰 오차에 더 큰 가중치 부여: 오차를 제곱하면, 큰 오차는 더 크게, 작은 오차는 더 작게 반영됩니다. 이는 모델이 큰 오차를 가진 데이터 포인트에 더 집중하도록 만들어, 전반적인 모델의 성능을 향상시킵니다.
  • 미분 가능: 머신러닝에서는 종종 경사 하강법 같은 최적화 알고리즘을 사용하여 모델을 훈련시킵니다. 이러한 알고리즘은 Cost Function 미분 가능해야 작동하며, MSE 조건을 만족합니다.

Summerize

Linear Regression은 아래 과정을 통해 학습을 수행한다.

실제 Cost 함수 J의 실제 그래프는 아래와 같다.

 

Cost Function의 그래프

하지만 우리가 실제로 어떤 문제해결을 위해 머신러닝 기법을 활용할 때는 위 사진과 같은 Cost Function의 그래프를 모른다.

 

즉, 실제 그래프를 모르는 상태에서 아래와 같이 Cost Function이 최소가 되는 점을 탐색하는 것이다.

 

 

실제 Cost Function을 알기 위해, J(𝜃1,𝜃2)에 모든 𝜃1과 𝜃2를 대입하는 것은 너무 많은 연산이 필요하다.

 

그래서 여러 수학적 기법을 통해 연산을 최소화하면서, Optimal값(최적값)을 찾는 것이다.

 

그럼 Cost Function을 최소화 하기 위해 어떤 방법을 사용할 수 있을까?

 

바로 Gradient Descent와 Least Square 두가지 접근방법이 있다.

 

다음 글에서 계속..

Comments