티스토리 뷰

반응형

회귀와 분류

 

분류 - classification 어떤 대상을 정해진 범주에 구분해 넣는 작업.

두 개면 이진분류, 세 개 이상이면 다중분류.

 

회귀 - 변수가 다른 변수에 영향을 미칠 때 사용

영향을 미치는 변수를 독립변수 (independent variable)

영향을 받는 변수를 종속변수(dependent variable)

 

수면의 질과 공장의 재고 수준은 시험 성적, 건강에 영향을 미친다.

 

회귀는 독립변수와 종속변수간 관계를 모델링하는 방법. 회귀와 분류가 다른 점은 종속변수가 범주형 데이터가 아니라는 것. 회귀에서 종속변수는 수치형 데이터다.

 

종속변수는 예시로 Y = Ax+b 라 하는 함수로 나타내어진다. (x라는 독립변수들이 들어가면, Y라는 종속변수가 튀어나옴)

 

회귀 문제에서는 독립변수(피쳐)와 종속변수(타깃값) 사이의 관계를 기반으로 최적의 회귀계수를 찾아내야 함.(a나 b값)

 

 

회귀 평가지표

 

오차를 최소화 하는 것. 그러나 과적합(그래프의 점들을 모두 선으로 잇는 것)이 되지 않도록 주의해야 한다.

Yi = 실제 타깃값, Y= 예측 타깃값

 

MAE ( 평균 절대 오차) - (1/N) * 시그마 |Yi-Y|

MSE ( 평균 제곱 오차) - (1/N) * 시그마 |Yi-Y)^2

RMSE ( 평균 제곱근 오차) - 루트{ (1/N) * 시그마 Yi-Y)^2 }  / 수치해석이 익숙하다면 많이 보았을 것.

MSLE (Mean Squared Log Error) - (1/N) * 시그마 (log(Yi+1) -log(Y+1) )^2 / MSE에서 안쪽에 로그를 씌운 값

RMSLE (Mean Squared Log Error) - 루트 { (1/N) * 시그마 (log(Yi+1) -log(Y+1) )^2 } / MSLE의 제곱근

R^2 - 결정계수. 예측 타깃값의 분산 / 실제 타깃값의 분산 (다른 지표와 다르게 1에 가까울수록 모델 성능이 좋다)

 

로그에서 +1은 음의 무한대 방지 및 x가 0일 때 0이 된다.

 

sklearn.metrics에서 해당 지표들을 불러 올 수 있다.

import numpy as np
# MAE, MSE, MSLE, R2 임포트
from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_squared_log_error, r2_score

true = np.array([1, 2, 3, 2, 3, 5, 4, 6, 5, 6, 7, 8, 8]) # 실젯값
preds = np.array([1, 1, 2, 2, 3, 4, 4, 5, 5, 7, 7, 6, 8]) # 예측값

MAE = mean_absolute_error(true, preds)
MSE = mean_squared_error(true, preds)
RMSE = np.sqrt(MSE)
MSLE = mean_squared_log_error(true, preds)
RMSLE = np.sqrt(mean_squared_log_error(true, preds))
R2 = r2_score(true, preds)

# 출력
print(f'MAE:\t {MAE:.4f}')
print(f'MSE:\t {MSE:.4f}')
print(f'RMSE:\t {RMSE:.4f}')
print(f'MSLE:\t {MSLE:.4f}')
print(f'RMSLE:\t {RMSLE:.4f}')
print(f'R2:\t {R2:.4f}')

MAE:     0.5385
MSE:     0.6923
RMSE:    0.8321
MSLE:    0.0296
RMSLE:   0.1721
R2:      0.8617

 

 

 

상관계수 

두 변수 사이의 상관관계 정도를 수치로 나타낸 값.

보통 r로 표시.

피어슨 상관관계가 음수면 음의 상관관계, 양수면 양의 상관관계.

-1부터 1사이의 값을 가진다.

 

출처 : [Must Have] 머신러닝 딥러닝 문제해결 전략

https://wikidocs.net/book/13313

반응형