데이터분석/데이터분석

선형 회귀의 평가 지표

이규승 2022. 5. 4. 20:39
728x90

내용 출처 : https://velog.io/@dlskawns/Linear-Regression-%EC%84%A0%ED%98%95%ED%9A%8C%EA%B7%80%EC%9D%98-%ED%8F%89%EA%B0%80-%EC%A7%80%ED%91%9C-MAE-MSE-RMSE-R-Squared-%EC%A0%95%EB%A6%AC

 

Linear Regression - 선형회귀의 평가 지표, MAE, MSE, RMSE, R Squared 정리

선형회귀의 다양한 평가 지표에 대한 공부했다.실제 데이터 표본과 예측데이터의 차이를 표현해 성능을 검토하기 위한 지표들이다. 풀어서 말하자면 Training 데이터로 학습한 회귀모델에 Test 또

velog.io

# MAE(Mean Absolute of Errors) 평균절대오차
평균절대오차는 예측값 - 관측값들의 제곱이 아닌 절대값을 통해 음수를 처리한 뒤, 이들의 평균을 통해 구할 수 있다. 제곱을 하지 않기 때문에 단위 자체가 기존 데이터와 같아 회귀계수 증감에 따른 오차를 쉽게 파악할 수 있다.

# MSE(Mean Square of Errors) 평균제곱오차
평균제곱오차는 위 식과 같이 잔차제곱합(RSS)을 해당 데이터의 개수로 나누어서 구할 수 있다. 
예측값 - 관측값(데이터값)의 제곱된 값의 평균을 구하는 것이다. 
여기서 잔차의 제곱을 하는 이유는 잔차의 값이 음수가 될 수 있는 것을 방지할 수 있고, 
제곱을 함으로써 오차의 민감도를 높이기 위함이다.

# RMSE(Root Mean Square of Errors) 평균제곱오차제곱근
평균제곱오차MSE에 루트를 씌워주어 비교에 좋도록 한 평가지표이다.

# R2(R Squared Score) 결정계수
결정계수는 실제 관측값의 분산대비 예측값의 분산을 계산하여 데이터 예측의 정확도 성능을 측정하는 지표이다. 
0~1까지 수로 나타내어지며 1에 가까울수록 100%의 설명력을 가진 모델이라고 평가를 하게된다.
관측치에서 예측치를 뺀 값의 제곱합에서 target 평균을 대상으로 하는 관측값의 잔차 제곱합을 나누어준 값을 1에서 빼주면 된다.

from sklearn.metrics import r2_score, explained_variance_score, mean_squared_error
from sklearn.preprocessing import MinMaxScaler # 데이터를 0 ~ 1 사이의 범윌로 표준화

# 표준화 
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x.reshape(-1, 1)) #sklearn에서 학습모델, 독립변수는 매트릭스를 사용한다.

# 성능파악
print('r2_score(결정계수):{}'.format(r2_score(y_true, y_pred)))
print('explained_variance_score(설명분산점수):{}'.format(explained_variance_score(y_true, y_pred)))
print('mean_squared_error(평균제곱근오차):{}'.format(mean_squared_error(y_true, y_pred)))

데이터셋을 분리하기위해 사용

from sklearn.model_selection import train_test_split
train, test = train_test_split(df, test_size = 0.4, random_state = 2) # 6:4

모델학습은 train data를 사용 : 과적합 방지

모델성능파악은 test data를 사용

728x90