이 글은 충남대학교 양희철 교수님의 수업을 듣고 작성한 글입니다
Regression이란 무엇일까?
분류와 마찬가지로 지도학습의 일종이다. 하지만 분류가 이산적인 값을 예측했다면 회귀는 continuous한 값을 예측한다. 예를 들면 강수량, 와인 가격..등등
=> 두 값 사이의 상대적인 관계를 예측하는 것이 회귀이다!
회귀도 여러가지 알고리즘이 존재한다.
1. Linear regression
2. Multivariate Linear regression
3. Lasso and Ridge Linear regression
4. Neural network regression
5. SVM(support vector machine)
6. Decision tree
오늘 우리가 알아 볼 것은 Linear Regression이다!!
1. Linear Regression
그래프를 알 수 있듯이 x와 y의 관계가 선형이다. 즉 Y = b0 + b1x의 형태로 나타낼 수 있다. 결국 b0, b1이 어떤 값을 가지고 있는 가를 model이 학습한다. 아래에 예제를 한번 보자
우리는 feature : 기후, 와인의 가격, 일조량 => X = [x1 x2 x3] 로 나타낼 수 있고 이를 식으로 나타내면 y = b0 + b1x1 + b2x2 + b3x3 (x0=1) 이 된다. 이때 X와 b는 벡터이므로 내적으로 표현하면 y = B의 전치행렬 X 가 된다. 이 형태는 뒤에 식을 유도하고 계산할 때 사용하므로 잘 기억하길 바란다. 이를 통해 결론적으로 x와 y 사이의 관계를 구하는 것이 바로 B의 값을 정하는 것이다!
우리가 사용한 X, Y는 무엇을 의미하는 것일까?
○ X variable : 독립변수
○ Y variable : x 값에 따라 y가 결정되므로 종속 변수
=> 선형회귀는 X와 Y의 관계를 선형으로 가정하고 모델링한 것
만약 feature가 여러개라면 일반적인 폼은 Y = B0 + B1x1 + B2x2 + .... + Bdxd
여기서 B값은 x가 변할 때 y의 변화량을 의미한다. 주어진 데이터에 대해 계수(B)들을 학습힌다.
B 값은 어떻게 찾을 수 있을까?(이런 방법이 있다 정도만 알아두자)
# Least square method(RSS)
우리는 잔차(residual)라는 개념을 이용한다. 잔차는 실제 값 - 예측 값이므로 이 값이 error를 나타낸다고 할 수 있다. 우리는 잔차의 제곱의 합을 최소화하는 B의 값을 찾으면 된다!
이를 식으로 나타내면 위처럼 나타낼 수 있고 앞에서와 마찬가지로 벡터의 내적으로 나타낼 수 있다.
아래에 이 식의 유도 과정을 나타내었다.
# Projection(정사영)
정사영을 통해서 평면에서의 에러의 최솟값을 구해 B를 찾을 수 있다. 식을 보면 알 수 있지만 마지막 결과값은 같다
정리해보면...
○ 장점 : 대중적이고 쓰기 쉬우며 해석하기 쉽다. 해석하기 쉽다는 것은 B가 y에 어떻게 영향을 주는지 설명이 가능하다는 것이다!
○ 단점 : 선형이 아니면 성능이 나쁘다. 그리고 선형으로 못 나타내는 경우도 많으며 y와 무관한 feature를 바로 파악하기 어렵다!
2. Model Evaluation
# Performance measurements
error를 어떻게 정량화할 것인가! 우리가 주로 사용하는 것은 MSE, RMSE 정도이다. 제곱과 절댓값을 씌우는 이유는 음수가 나오는 것을 막기 위해서인데 절댓값을 씌우는 경우 함수가 미분이 불가능하기 때문에 잘 안쓴다.
# 결정 계수
○ SST : sum of square total
○ SSR : regression sum of square
○ SSE : sum of square error
○ SST = SSR + SSE
=> R^2 = SSR/SST = 1 - SSE/SST (1 <= R^2 <= 1)
R^2 = 1 : perfect model
R^2 = 0 : worst model
R^2에 따라 성능이 어떻게 되는지 아래 그래프로 확인해보자
결정 계수는 feature의 개수에 따라 영향을 많이 받는다. 이를 어떻게 보완해줄 수 있을까?
# Adjusted R^2
n = example의 수, p : feature의 수다. 식을 보면 알 수 있겠지만 feature의 수가 많을 수록 모델을 잘 만들기 때문에 페널티를 주는 것이 보인다. 따라서 이를 사용하는 이유는 feature를 적절히 쓰도록 하여 모델을 만들기 위해서이다!
3. Regularized Regression
모델이 만약에 훈련 데이터에 대해서만 성능이 잘 나온다면 이는 잘못된 것이다. 중요한 것은 테스트 데이터에 대한 모델의 성능을 높이는 것이다. 어떻게 이를 막을 수 있을까?
우리가 모델의 학습에서 견제해야 할 것은 overfitting(오버피팅)이다. 오버피팅은 훈련 데이터에 대해 지나치게 학습되어 훈련 데이터에 대해서는 성능이 잘 나오지만 테스트 데이터에 대해서는 나쁜 성능을 보이는 것이다. 우리는 모델이 오버피팅 되는 것을 막기 위해서 regularization(규제)를 사용한다!
근데 norm이 뭐죠?
L1- norm : 각 성분의 절댓값의 합
L2 -norm : 각 성분의 제곱의 합의 제곱근
이 정도로만 알아두어도 이해하는데 지장은 없을 것이다.
두 가지 규제 방법이 있다. L1놈 규제와 L2놈 규제가 있다. 두가지 모두 공통적으로 가중치에 규제를 걸어서 B값에 제한을 준다. 하나씩 알아보도록 하자.
1. L1-norm(Lasso)
○ 가중치 중 일부(안쓰는 feature)가 0이 되어 희소성을 유도한다. 데이터 차원이 클 때 유용하다
2. L2-norm(Ridge)
○ 가중치가 작아지도록 유도, 하지만 0으로 수렴하지 않는다. 모델의 복잡도를 줄이는데 효과적이다!
=> 알파가 클수록 규제의 강도가 높아진다. 여기서 조금 응용해보자면 알파가 크면 과소적합이 일어날 수도 있고 알파가 너무 작다면 과대적합이 일어날 수 있다.
4. Nonlinear regression
SVM, Polynomial fitting, NN, Decision tree, K-nn 등 다양한 방식으로 회귀를 비선형으로 나타낼 수 있다. 간단하게 이정도 종류만 있다는 것을 알고 장단점만 알아보자
○ 장점 : 선형 회귀에 비해 에러가 줄어들 확률이 높다
○ 단점 : 선형 회귀보다 해석이 어려우며 얼마나 복잡한 모델로 해야하는지 정하기가 어렵다
다음 시간에 Logistic Regression에 대해 알아보자
'AI > MachineLearning' 카테고리의 다른 글
[ML] Decision Tree (0) | 2024.11.07 |
---|---|
[ML] Nearest Neighbor Method (0) | 2024.11.06 |
[ML] Logistic Regression (0) | 2024.11.06 |
[ML] Bayesian Classifier (3) | 2024.11.04 |
[ML] About Machine Learning (5) | 2024.10.21 |