회귀 모델

즐겁고치열하게·2022년 8월 22일
0

머신 러닝

목록 보기
2/12

회귀모델 평가

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score, mean_absolute_percentage_error

"""
# X에는 변수, Y에는 target 값을 넣는다.
# 판다스로 넣는다면

target = ''
x = df.drop(target, axis=1)
y = df.loc[ : , target ]

# 으로 사용한다.
"""

# X_train, X_test, Y_train, Y_test = train_test_split(x, y, test_size=.3) 

model = LinearRegression()

model.fit(X_train, Y_train)

# 모델링 수치
#print(f'변수명: {x.columns.to_list()}')
print(f'기울기: {model.coef_}')
print(f'Y절편: {model.intercept_}')

# 에측 결과
predict = model.predict(X_test)

R2 = r2_score(Y_test, predict)
MSE = mean_squared_error(Y_test, predict)
RMSE = mean_squared_error(Y_test, predict, squared=False)
MAE = mean_absolute_error(Y_test, predict)

# 원래 개념은 100(%)을 곱해야 한다. 그렇지만 sklearn 함수는 100을 곱하지 않고 결과를 제공한다.
MAPE = mean_absolute_percentage_error(Y_test, predict)

# 회귀 모델의 정확도는
# 1- mean_absolute_percentage_error(Y_test, predict)
# 이렇게 나타낼 수 있다.

평가 종류

  • 평균 모델과 회귀 모델의 오차 평가
    • R^2 Score

      오차의 비율
      설명력
      결정 계수

  • 실제 값과 회귀 모델 예측 값의 평가
    • MSE
    • RMSE
    • MAE
    • MAPE

      오차의 크기
      오차율

yi=실제값y^i=예측값yˉi=평균값\Large \\{y}_i = 실제값 \\ {\hat{y}_i}= 예측값 \\ \bar{y}_i = 평균값

  • SSE (Error Sum of Squares, Sum Squared Error)
    예측 값과 실제 값의 차이
    (yiy^i)2\Large \sum{(y_i - \hat{y}_i)^2}
  • SSR (Regression Sum of Squres)
    예측 값과 평균 값의 차이
    (yˉiy^i)2\Large \sum{(\bar{y}_i - \hat{y}_i)^2}
  • SST (Total Sum of Squares)
    실제 값과 평균 값의 차이 ( SSE + SSR )
    (yiy^i)2\Large \sum{({y}_i - \hat{y}_i)^2}

    결정 계수, 설명력이라고 부르기도함 (요즘엔 그렇게 잘 안부른다고 했다.)

    • 평균 모델의 오차 대비 회귀 모델이 해결한 오차의 비율
    • 회귀모델이 평균 모델의 오차를 해결(설명)했는지를 나타내는 비율

회귀 평가 기준

1. R2 스코어

R2=SSRSST=1SSESST\Large {R^2} = {SSR \over SST} = 1 - {SSE \over SST}

2. MAE (Mean Absolute Error) : 평균 오차

yy^n\Large {\sum{|y - \hat{y}|} \over n}

3. MAPE (Mean Absolute Percentage Error) : 평균 오차율

yy^yn\LARGE {\sum{|y - \hat{y}|} \over y} \over n

4. MSE (Mean SSE) : 오차의 제곱

(yy^)2n\Large {\sum{(y - \hat{y})^2} \over n}

5. RMSE (Root MSE) : 오차의 제곱

(yy^)2n\Large \sqrt {\sum{(y - \hat{y})^2} \over n}
profile
기술을 공부하는 기술자

0개의 댓글