Kaggle 강의 Week3 - Metrics optimization
Coursera 강의인 How to Win a Data Science Competition: Learn from Top Kaggler Week3 Metrics optimization를 듣고 정리한 내용입니다
Metrics optimization
- 왜 Metrics은 많은가?
- Competition에서 왜 Metrics에 관심을 가져야 하는가?
- Loss vs metric
- 가장 중요한 metrics
- 분류와 회귀 Task
- Regression
- MSE, RMSE, R-squared
- MAE
- (R)MSPE, MAPE
- (R)MSLE
- Classification
- Accuracy, Logloss, AUC
- Cohoen’s (Quadratic weighted) Kappa
- metric의 최적화 베이스라인
- metrics의 최적화 테크닉
Metrics
- 각각의 대회가 metric이 다른 이유는 대회를 주최한 회사가 그들의 특정 문제에 가장 적절한 것을 결정하기 때문
- 또한 문제마다 다른 metrics
- Online shop은 effectiveness를 최대화하는 것이 목표
- Effectiveness를 정의
- 웹사이트에 방문한 횟수, 주문수로 나눌 수 있음
- 이런 것을 주최자들이 결정
- 더 나은 점수를 받기 위해 metric을 잘 이해하는 것은 필수
Regression metrics review 1
- MSE
- Mean Sqaured Error
- \[\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})^{2}\]
- MSE는 우리의 예측값의 평균 squared error를 측정
- Target value의 mean
- 참고 자료
- RMSE
- Root mean square error
- \[\sqrt{\frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{y_{i}})^{2}}\]
- MAE
- Mean Absolute Error
- \[\frac{1}{N}\sum_{i=1}^{N}\left|y_{i}-\hat{y_{i}}\right|\]
- MAE는 finance에서 널리 사용됨
- Target value의 median
- Outliear의 영향을 받지 않음(outliear에게 robust)
- MAE vs MSE
- MAE
- 아웃라이어가 있는 경우
- 아웃라이어라고 확신하는 경우
- MSE
- 우리가 신경써야 하는 관측하지 못한 값이라고 생각할 경우
- MAE
- MSE, RMSE, R-squared
- 최적화 관점에서 같음
- MAE
- 아웃라이어에 robust
Regression metrics review 2
- Shop에서 매출을 예측하는 문제
- Shop1 : predicted 9, sold 10, MSE = 1
- Shop2 : predicted 999, sold 1000, MSE = 1
- Shop1이 더 cirtical한데, MAE와 MSE는 동일함
- 그래프도 모든 Target value마다 동일(곡선이거나 V이거나)
- 위 문제점을 해결하기 위해 나온 것이 MSPE, MAPE
- relative error의 합에, 100%/N을 곱함
- MSE와 MAE의 weight 버전이라고 생각할 수도 있음
- MSPE
- MAPE
- RMSLE
- Root Mean Squared Logarithmic Error
- MSPE와 MAPE와 동일한 상황에 사용 (relative error)
- prediction value와 target value가 큰 숫자일 때, 큰 차이를 벌점으로 내고싶지 않을 때 사용
- 과소평가된 항목에 패널티
- Conclusion
- (R)MSPE
- Weighted version of MSE
- MAPE
- Weighted version of MAE
- (R)MSLE
- MSE in log space
- (R)MSPE
Classification metrics review
- Accuracy
- 분류기의 성능을 측정할 때 가장 간단히 사용할 수 있음
- Best constant : predict the most frequent class
- 데이터셋의 라벨 A가 10%, B가 90%일 때 B로만 예측한 분류기는 90%의 accuracy를 가지는데, 이 분류기는 좋은 것일까?
- optimize하기 어려움
- Logarithmic loss(logloss)
- logloss가 잘못된 답변에 대해 더 강하게 패널티 부여
- Area Under Curve (AUC ROC)
- Binary task에서만 사용
- 특정 threshold를 설정
- 예측의 순서에 의존적이며 절대값엔 의존적이지 않음
- 설명 가능
- AUC
- Pairs ordering
- AUC = # correctly ordered paris / total number of paris = 1 - # incorrectly ordered pairs / total number of pairs
- AUC
- Cohen’s Kappa motivation
- Baseline accuracy는 라벨의 개수가 제일 많은 것으로 설정
- Accuracy = 0.9(baseline) -> my_score = 0
- Accuracy = 1 -> my_score = 1
- Mse에서 r squared의 역할과 유사
- 일종의 normalization
- kappa는 baseline을 \(p_{e}\)로 지정(랜덤하게 계산)
- Weighted error
General approaches for metrics optimization
- Loss and metric
- 동의어 : loss, cost, objective
- Target metrics : 우리가 최적화 하고 싶은 것
- 그러나 이걸 효율적으로 올리는 방법을 바로 알긴 어려움
- Optimization loss : 모델을 최적화 하는 것
- Target metrics을 직접 최적화하기 어려울 때 사용
- Target metric 최적화 접근 방법
- 일단 올바른 모델을 실행
- MSE, Logloss
- Train을 전처리하고 다른 metric을 최적화
- MSPE, MAPE, RMSLE
- 후처리로 예측된 metric 최적화
- Accuracy, Kappa
- Custom loss function
- 할 수 있으면 언제나!
- Early stopping을 사용
- 일단 올바른 모델을 실행
Regression metrics optimization
- RMSE, MSE, R-squared
- 대부분의 라이브러리에 loss function으로 구현되어 있음
- L2 loss
- MAE
- L1 loss, Median regression
- MSPE and MAPE
- 둘 다 Weighted version이기 때문에 쉽게 구현 가능
- RMSLE
Classification metrics optimization 1
- Logloss
- Probability calibration(눈금)
- Platt scaling
- 예측값에 Logistic Regression을 fit(마치 stacking처럼)
- Isotonic regression
- 예측값에 Isotonic Regression을 fit(마치 stacking처럼)
- Stacking
- 예측값에 XGBoost나 neuralnet을 fit
- Platt scaling
- Probability calibration(눈금)
- Accuracy
- 이걸 직접적으로 optimize하는 쉬운 방법은 없음
- 다른 metric을 optimize
Classification metrics optimization 2
- AUC
- Pointwise loss
- single object에 대한 loss
- Pairwise loss
- pairwise loss
- Pointwise loss
- Quadratic weighted Kappa
- Optimize MSE and find right thresholds
- Simple!
- Custom smooth loss for GBDT or neural nets
- Harder
- 구현 코드
- Optimize MSE and find right thresholds
Reference
카일스쿨 유튜브 채널을 만들었습니다. 데이터 사이언스, 성장, 리더십, BigQuery 등을 이야기할 예정이니, 관심 있으시면 구독 부탁드립니다 :)
PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다
이 글이 도움이 되셨거나 다양한 의견이 있다면 댓글 부탁드립니다 :)