Regression (회귀)

2020. 12. 14. 20:23machine learning

728x90

Regression이란 데이터값이 평균과 같은 일정한 값으로 돌아가려는 경향을 이용한 통계학적 기법으로, 여러개의 독립변수와 하나의 종속변수의 상관관계를 알아냅니다.

● Linear Regression( 선형 회귀 )

학습을 통해 회귀선을 구한다. 회귀선이 직선형태인 것이 선형 회귀이다.

Linear regression의 hypothesis H(x) = Wx + b 

학습을 통해 최적의 W와 b를 알아냅니다. 

최적의 W와 b를 알아내는 데에는 Gradient Descent Algorithm을 사용합니다. 

cost는 보통 RSS를 사용합니다.

linear regression의 cost

선형회귀 몇몇 알고리즘을 소개하겠습니다.

선형회귀 알고리즘들

● 회귀모델 평가 지표

 

1. MAE( Mean Absolute Error)

2. MSE( Mean Squared Error)

3. RMSE(Root MSE)

4. R^2

분산기반 예측 평가 : 예측값 variance / 실제값 variance : 1에 가까울수록 정확도가 높다.

5. MSLE(Mean Squared Log Error)

6. RMSLE(Root MSLE)

from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error, mean_squared_log_error

MAE =  mean_absolute_error(origin, pred)

MSE = mean_squared_error(origin, pred)

RMSE = np.sqrt(MSE)

MSLE = mean_squared_log_error(origin, pred)

RMSLE = np.sqrt(mean_squared_log_error(origin, pred))

R2 = r2_score(origin, pred)

● 다항회귀 (polynomial regression)

회귀가 단항식이 아닌 2차 / 3차 방정식 같은 다항식으로 표현되는 것이다.

다항회귀도 선형회귀임을 잊지 말자. 선형회귀의 선형은 회귀계수의 선형관계여부와 관련된 것이지 독립변수의 선형/비선형은 무관하다.

sklearn에서 다항회귀는 명시적으로 제공하지 않으므로 sklearn PolynomialFeatures 클래스를 이용해 feature들을 다항식 피쳐로 변환하여 적용한다.

PolynomialFeatures class

 

다항회귀에서 차수(degree)가 너무 높아지면 overfitting가능성이 높아진다 ( training data에만 너무 적합 )

출처 https://medium.com/@mp32445/understanding-bias-variance-tradeoff-ca59a22e2a83

- Bias-Variance Trade off

이는 회귀에서 극복해야할 중요한 issue이다. 

적절한 variance와 bias지점을 찾아야 한다.

출처 https://medium.com/@mp32445/understanding-bias-variance-tradeoff-ca59a22e2a83, https://www.ncbi.nlm.nih.gov/books/NBK543534/figure/ch8.Fig3/

● Regularized Linear Model : Ridge, Lasso

L1규제와 L2규제에 대해서는 추후 딥러닝 매운맛에서 따로 다루겠습니다.

● 회귀 트리 

회귀 함수가 아닌 트리 기반 회귀 알고리즘 입니다.

분류 트리와의 차이점은 Leaf Node에서 예측결정값을 만드는 과정에 차이가 있습니다.

분류 트리는 특정 클래스의 레이블을 결정하지만, 회귀트리에서는 leaf node에 속한 데이터값의 평균을 구해 회귀예측값을 계산합니다.

분류트리와 회귀트리의 차이

트리생성은 모두 CART기반이므로 앞에서 소개한 모든 트리기반 알고리즘은 회귀도 가능합니다.

 

● Logistic Regression은 분류에서 소개하였습니다  

728x90

'machine learning' 카테고리의 다른 글

Clustering(군집화)  (0) 2020.12.15
차원축소 (Demension Reduction)  (0) 2020.12.14
Classification  (0) 2020.12.14
머신러닝 기초 지식  (0) 2020.12.14