Linear Regression(선형 회귀)의 모든 것을 알아보자.
Linear Regression
(정의) Linear approach to modeling X->Y
: 데이터들을 뭉텅이로 주고 어떤 특정값을 예측하고자 하는데, 선형적으로 예측하겠다는 모델.


이제 여기서 X란, data의 feature을 의미.
Y는 response, 즉 결과값(예측값)을 의미한다.
어떤 특정 data sample이 주어졌을 때, 그 데이터엔 여러 feature이 존재할 것이고, 이 feature들을 미루어 보았을 때 어떤 결과값으로 특정될 수 있는지 확인하는 mechanism.
|X|는 feature의 개수, |X| >= 2이면, multiple linear regression 이라고 한다.
|Y|가 1이면 (예측값이 1개) univariate, 2 이상이면 multivariate linear regression이라고 한다.

위의 위키페디아 예시에선 |X| = 1, |Y| = 1인 가장 간단한 선형 회귀로 볼 수 있다.
multiple linear regression 예시
X : [키, 골격근량] ( |X| = 2인 상태 )
Y : [몸무게] ( |Y| = 1인 상태 )
multivariate linear regression
X : [평수, 위치, 가족수]
Y : [집값, 가구소득]
==> 위 두 예시는 X와 Y가 벡터인 경우로 예상할 수 있다.
Parameter Learning with Gradient Descent for Linear Regression
simple <-> multiple
univariate <-> multivariate
기본적으로 Linear Regression을 사용하는 Machine 안의 식을 바라보면 다음과 같다.

y_hat은 machine의 예측값.
w_0, ... , w_n은 선형식에 붙어있는 가중치.
x_0, ... , x_n은 해당 data의 feature.
! 이때 x_0는 1이고 w_0는 bias라고 표현함. -> 직접적인 Data feature이 아니라는 말이다.
가중치와 피처는 같은 갯수로 이루어져야 식이 성립된다는 것을 알 수 있다.

그리고 나중에 설명하겠지만 앞으로 data를 이렇게 표현할 것인데,
여기서 i는 data sample의 갯수이고, j는 해당 한 sample의 feature 중 몇 번째 feature인지를 나타내는지 사용할 것이다.
이것을 잘 알아놔야 나중에 식이 어렵지 않다. (벡터와 행렬 개념이 들어가면 헷갈리기 때문)
이걸 예를 들어서 잠깐 이해해보자
X : [평수, 위치, 가족수]
Y : [집값, 가구소득]
이거일 때,
x^(1) = [45, 강남구, 4]
y^(1) = [20억, 10억]
x^(2) = [30, 송파구, 3]
y^(2) = [15억, 9억]
data sample은 총 2개.
각 data feature은 총 3개.
결과값은 2개.
그렇다면 weight는? 총 4개가 필요할 것임.
Gradient Descent Algorithm for Multiple Linear Regression
(다시 한번 말하지만 Simple <-> Multiple, Univariate <-> Multivariate)
이제 정답값이 주어지는 Linear Regression에서 우리가 만든 모델이 어떤 값을 예측했다고 하자.
그렇다면 이 모델의 예측값이 얼마나 정확한지 어떻게 비교할 수 있을까?
가장 원시적으로 생각해보면 정답값과의 차이를 보면 될 것이다.
근데 이제 정답값이랑 예측값 사이를 뺐는데, 음수인지 양수인지가 중요할까?
NO. 정답값에서 그냥 얼마나 차이가 많이 나는지만 보면 될 것이기 때문에 부호는 상관없다.
그래서 우리는, 제곱을 생각해보기로 했다.
차이가 많이 나면 -> 제곱했을 때 더 값이 커지는 역할을 수행해주기 때문이다.
이걸 우리는 Mean Square Error, MSE라고 부를 것이다.
식은 다음과 같다.

여기서 쎄타_1은 예측값, 쎄타_2는 정답값이라고 생각하면 된다.
나중에 데이터는 행렬의 형태가 될 것이므로 행렬의 미분도 생각을 해줘야하는데, 공식은 다음과 같음

Gradient Descent는 이 MSE로 나온 식에서 기울기가 최소한이 되는 부분으로 옮겨가는 것이다.
이때 MSE는 제곱식 형태이므로, 데이터의 차원이 얼마이든 어~~떻게든 종모양으로 생기기 마련이다.
따라서, 이 예상한 값의 기울기를 최소화하는 부분으로 weight를 수정해가며 모델을 학습한다.
이걸 바로 Gradient Descent라고 하는 것이다.
Batch Gradient Descent vs Stochastic Gradient Descent
Batch Gradient Descent : 모든 데이터 sample 다 이용 후, gradient를 계산, 수정
Stochastic Gradient Descent : 하나의 데이터 sample을 이용한 후, gradient를 계산, 수정 -> sample 개수만큼 gradient 수정
Mini-batch Gradient Descent : 모든 데이터 sample 중, 일부의 sample들을 선택한 후, gradient를 계산, 수정 -> batch gradient진화된 버전.
'AI' 카테고리의 다른 글
| [딥러닝] Numpy Basic Concepts (0) | 2024.04.16 |
|---|---|
| [딥러닝] 기초 - Learning Curves 이해하기 (0) | 2024.04.13 |
| [딥러닝] Feature Scaling (0) | 2024.04.11 |
| [머신러닝] 3 Kinds of Machine Learning (0) | 2024.04.11 |
| [딥러닝] Machine Learning Basics (1) | 2024.03.15 |