supervised machine learning(ML)에서는 모델을 평가하기 위한 평가지표가 존재하는데 이미 한번씩 정리를 했던 내용인지라 오늘은 그래도 일단 복습한다는 느낌으로 개념을 짧게 정리하고 넘어가려고 한다.
참고로 unsupervised ml은 non-target/label로 예전에 내가 배웠었던 k-means clustering(ex. 생김새로 인종 분류하기 등)이 있다.
rmse는 예측값과 실제값의 차이인 오차들의 제곱평균(mse)에 루트를 씌운 값이다.
mae는 실제값과 예측값의 차이인 오차들의 절댓값 평균으로 mse보다 이상치에 덜 민감하다는 특징이 있다.
가설 검정에서 귀무가설을 기각 혹은 채택을 결정할 수 있는 확률을 의미하며 0과 1사이의 값을 가진다. p-value가 높을수록 귀무가설이 참일 확률이 높다고 해석할 수 있다.
0과 1 사이의 값을 가지는 선형 회귀 모델에 대한 적합도 측정값이다.
accuracy는 정확도로 전체 예측 건수에서 정답을 맞힌 건수의 비율을 뜻한다.
recall은 재현율로 실제 true 값 중 올바르게 true로 예측된 비율을 뜻한다.
precision은 정밀도로 true로 예측된 값 중에서 실제 true값의 비율을 뜻한다.
confusion matrix(오차행렬)은 training을 통해 성능을 측정하기 위해서 실제 값과 예측 값을 비교하기 위한 표이다.
f1 score는 precision과 recall의 조화평균 값으로 데이터가 불균형할 때 주로 사용한다.
roc curve와 auc는 다양한 임계값에서 모델의 분류 성능에 대한 측정 그래프이다. auc는 roc curve 아래의 면적을 의미하며 면적이 넓을 수록 학습이 잘 됐다는 것을 뜻한다.
~ 조금 더 정리 후 추가 예정..~
선형 회귀에서는 일반적으로 특성과 target 간에 선형관계를 가정하고, 분포가 정규분포 형태일 때 좋은 성능을 보인다. 타겟 변수의 분포가 skewed한 상태일 경우 예측 성능에 부정적인 영향을 미치므로 분포를 인위적으로 바꿔주는 것이 좋다.
이럴 때 사용하는 것이 바로 로그 변환이다. 위의 그림 중 (c)번의 상태, right-skewed한 상태라면 로그 변환을 사용해서 비대칭한 분포 형태를 정규분포 형태로 변환시켜줄 수 있다.
참고로 로그 변환을 left-skewed한 상태에서 사용한다면 더 심한 left-skewed한 상태가 만들어지니까 사용하기 전에 꼭 데이터의 분포를 살펴보고 사용해줘야 한다.
import numpy as np
df[original] = target
df[transformed_column] = np.log1p(target) # log 변환
df[backToOriginal] = np.expm1(np.log1p(target)) # log 변환했던 값을 원래 값으로 되돌림