[PYTHON - 머신러닝_캐글_분류와 회귀]★회귀 평가지표★분류 평가지표★ROC, AUC★RMSE
1. 분류(Classification)
==> 어떤 대상을 정해진 범주에 구분해 넣는 작업
ex) 서점의 IT도서 코너에 IT도서가 있다. 종업원은 IT책을 어느 코너에 꽂아둘까? ==> 책 내용에 IT용어가 많다. ==> IT 코너에 꽂아준다. ==> 책의 내용(피처, feature)을 토대로 IT도서(타깃, target)라고 판단한다.
==> 분류 작업
==> 분류 작업할 타깃값은 범주형 데이터
==> 타깃값이 2개 : 이진분류
==> 타깃값이 3개: 다중분류
2. 분류 평가지표
1> 오차행렬(Confusion matrix) :
실제 타깃값과 예측한 타깃값이 어떻게 매칭되는가
https://knowallworld.tistory.com/377
[[1291 74]
[ 151 110]]
실제값 \ 예측값 | 0 | 1 |
0 | 1291 | 74 |
1 | 151 | 110 |
==> 실제로 매칭이 안되었는데, 실제로 매칭이 안되었다고 예측한 경우 : 1291 건 (참 양성)
==> 실제로 매칭이 되었는데, 실제로 매칭되었다고 예측한경우 : 110 건(참 음성)
==> 실제로 매칭이 안되었는데, 매칭이 되었다고 예측한 경우 : 74 건(제 1종 오류)
==> 실제로 매칭이 되었는데 , 매칭이 안되었다고 예측한 경우 : 151 건 (제 2종 오류)
정밀도(precision)은 1로 예측한 경우 중, 얼마만큼이 실제로 1인지를 나타낸다.
==> 양성을 양성으로 판단 / (양성을 양성으로 판단 + 1종오류) ==> 1 종오류가 중요하면 정밀도에 주목
재현율(recall)은 실제로 1 중에, 얼마만큼을 1로 예측했는지를 나타낸다.
==> 양성을 양성으로 판단/ (양성을 양성으로판단 + 2종오류) ==> 2 종오류가 중요하면 재현도에 주목
F1-점수(F1-score)은 정밀도와 재현율의 조화평균을 의미한다.
==> 2 * (정밀도 * 재현율) / (정밀도 + 재현율) ==> 1 종오류, 2종오류 중요한 오류가 없다면 F1-SCORE 활용
2> 로그손실(logloss) :
분류 문제에서 타깃값을 확률로 예측할 때 기본적으로 사용하는 평가지표이다. ==> 값이 작을 수록 좋다.
3> ROC(Receiver Operating Characteristic)곡선과 AUC(Area Under the Curve) :
==> ROC : 참 양성 비율에 대한 거짓 양성 비율
민감도_참 양성 비율(TPR) = TP(참양성) / (TP(참 양성) + FN(거짓 음성) ) = 재현율
==> 실제 1인 것중 얼마만큼 제대로 1로 예측되었는지 ==> 1에 가까울 수록 좋다.
==> AUC : ROC 곡선 아래 면적
3. 회귀(Regression)
독립변수(Independent variable) : 영향을 미치는 변수
종속변수(dependent variable) : 영향을 받는 변수
==> 독립변수와 종속변수 간 관계를 모델링하는 방법이다.
==> 회귀의 종속변수(타깃값)이 범주형 데이터가 아닌 수치형 데이터이다.
https://knowallworld.tistory.com/371
==> 독립변수 하나(x)와 종속변수 하나(Y) 사이의 관계를 나타낸 모델링 기법
==> 독립변수 여러개와 종속변수 하나(Y) 사이의 관계를 나타낸 모델링 기법
==> 회귀문제에서는 주어진 독립변수(피처) 와 종속변수(타깃값) 사이의 관계를 기반으로 회귀계수(쉐타)를 찾아야한다.
4. 회귀 평가지표
==> 회귀모델을 훈련해 최적의 회귀계수 구하기 위해서는 예측값과 실제값의 차이(오차)를 최소화해야한다.
㉠ MAE : 평균 절대 오차 , 실제 타깃값과 예측 타깃값 차의 절대값 평균
㉡ MSE : 평균 제곱 오차 , 실제값과 예측값 사이의 오차를 제곱한 뒤 이에 대한 평균 계산
㉢ RMSE : 평균 제곱근 오차 , MSE에 제곱근을 취한 값
㉣ MSLE : MSE에서 타깃값에 로그값을 취한 값 ==> y에 1을 더한 이유는 로그값이 음의 무한대가 되는 상황 방지
㉤ RMSLE :MSLE에 제곱근을 취한 값
㉥ R**2 : 결정계수
==> 예측 타깃값의 분산 / 실제 타깃값의 분산 ==> 1에 가까울 수록 모델 성능이 좋다.
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}')
==> 사이킷런 metrics 라이브러리를 활용하여 회귀 평가지표값 구한다.
MAE : 0.5385
MSE : 0.6923
RMSE : 0.8321
MSLE : 0.0296
RMSLE : 0.1721
출처 : 머신러닝·딥러닝 문제해결 전략
(Golden Rabbit , 저자 : 신백균)
※혼자 공부용