Transcript
ContactsHaesun Park
Email : haesunrpark@gmail.com
Meetup: https://www.meetup.com/Hongdae-Machine-Learning-Study/
Facebook : https://facebook.com/haesunrpark
Blog : https://tensorflow.blog
2
Book파이썬라이브러리를활용한머신러닝, 박해선.
(Introduction to Machine Learning with Python, Andreas Muller & Sarah Guido의번역서입니다.)
번역서의 1장과 2장은블로그에서무료로읽을수있습니다.
원서에대한프리뷰를온라인에서볼수있습니다.
Github: https://github.com/rickiepark/introduction_to_ml_with_python/
3
교차검증cross-validation
k-겹교차검증k-fold cross-validation (k=5 or k=10)
1. 훈련데이터를 k개의부분집합(폴드)으로나눕니다.
2. 첫번째폴드를테스트세트로하고나머지폴드로모델을훈련시킵니다.
3. 테스트폴드를바꾸어가며모든폴드가사용될때까지반복합니다.
6
교차검증의장점
train_test_split는무작위로데이터를나누기때문에우연히평가가좋게혹은나쁘게나올수있음à모든폴드가테스트대상이되기때문에공평함
train_test_split는보통 70%~80%를훈련에사용함à 10겹교차검증은 90%를훈련에사용하기때문에정확한평가를얻음
모델이훈련데이터에얼마나민감한지가늠할수있음[1, 0.967, 0.933, 0.9, 1] à 90~100% Accuracy
[단점]: 데이터를한번나누었을때보다 k개의모델을만드므로 k배느림
[주의]: cross_val_score는교차검증동안만든모델을반환하지않습니다!9
계층별 k-겹교차검증Stratified k-fold CV
11
분류문제일경우 cross_val_score는기본적으로 StratifiedKFold()를사용합니다. 회귀에서는 KFold()를사용합니다.
임의분할교차검증shuffle-split CV
훈련세트크기 : train_size, 테스트세트크기 : test_size, 폴드수 : n_splits
ShuffleSplit(train_size=5, test_size=2, n_splits=4)
15
ShuffleSplittest_size, train_size에비율을입력할수있음
test_size + train_size < 1 일경우부분샘플링subsampling이됨
분류에사용할수있는 StratifiedShuffleSplit도있음
16
그룹별교차검증
타깃에따라폴드를나누지않고입력특성에따라폴드를나누어야할경우
예를들어 100장의사진데이터로사람의표정을분류하는문제에서한사람이훈련세트와테스트세트에모두나타날경우분류기의성능을정확히측정할수없습니다.(의료정보나음성인식등에서도)
입력데이터의그룹정보를받을수있는 GroupKFold()를사용합니다.
cross_val_score(model, X, y, groups, cv=GroupKFold(n_splits=3))...cv.split(X, y, groups)...
17
매개변수튜닝
매개변수를튜닝하여모델의일반화성능(교차검증)을증가시킵니다.
Scikit-Learn에는 GridSearchCV와 RandomizedSearchCV가있습니다.
RBF 커널 SVM의여러가지매개변수조합을테스트합니다.
20
검증세트validation set
테스트세트로여러가지매개변수조합에대해평가했다면이모델이새로운데이터도동일한성능을낸다고생각하는것은매우낙관적인추정입니다.
최종평가를위해서는독립된데이터세트가필요합니다.
검증세트validation set 혹은개발세트dev set
22
GridSearchCV교차검증을사용한그리드서치
검색하려는매개변수를키로하는딕셔너리를사용함
27
모델, 매개변수그리드, 폴드수회귀:KFold, 분류:StratifiedKFold
fit, predict, score, predict_proba, decision_function 제공
결과분석
간격을넓게하여그리드서치를시작하고결과를분석해검색영영을조정합니다.
RandomizedSearchCV는매개변수조합이매우많거나 C와같이연속형값을조정할때많이사용됩니다.
29
grid_search.cv_results_
중첩교차검증nested CV
훈련데이터(cross_val_score) à훈련세트(SVC)와테스트세트à평가
훈련데이터à훈련세트(GridSearchCV) à튜닝à모델à테스트세트à평가
훈련데이터(cross_val_score) à훈련세트(GridSearchCV)와테스트세트à평가
33
병렬화
그리드서치는연산에비용이많이들지만매개변수조합마다쉽게병렬화가능
GridSearchCV와 cross_val_score의 n_jobs에사용할 CPU 코어수를지정할수습니다(기본 1, 최대 -1).
하지만 GridSearchCV와 RandomForestClassifier 같은모델이동시에 n_jobs옵션을사용할수없습니다(이중 fork로데몬프로세스가되는것을방지).
마찬가지로 cross_val_score와 GridSearchCV도동시에 n_jobs 옵션을사용할수없습니다.
35
평가지표
일반적으로회귀: R2, 분류: 정확도를사용합니다.
비즈니스임팩트를고려하여목표를설정합니다(교통사고회수, 입원환자수등)
비즈니스지표를얻으려면운영시스템에적용해야알수있는경우가많으므로대리할수있는평가지표를사용합니다(보행자이미지를사용한자율주행테스트)
시스템의목표에따라방문고객이 10% 늘어나는모델을찾을수있지만매출은15% 줄어들수있습니다(경우에따라고객이아니라매출을비즈니스지표로삼아야합니다).
37
에러의종류
양성클래스(관심대상)와음성클래스로나뉩니다.
암진단: 암(양성테스트, 악성), 정상(음성테스트)
양성테스트(암)를양성클래스, 음성테스트(정상)을음성클래스라할때정상을양성클래스로분류(거짓양성false positive): 추가적인검사동반암을음성클래스로분류(거짓음성false negative): 건강을해침
거짓양성을타입 I 에러, 거짓음성을타입 II 에러라고도합니다.
거짓양성과거짓음성이비슷한경우는드물며오류를비용으로환산하여비즈니스적인판단을해야합니다.
39
불균형데이터셋
예) 광고노출수와클릭수: 99 vs 1 (현실에서는 0.1% 미만입니다)
무조건 ‘클릭아님’으로예측하면 99%의정확도를가진분류기가됩니다.
불균형한데이터셋에서는정확도만으로는모델이진짜좋은지모릅니다.
40
숫자 9는 1, 나머지는 0인타깃값
정확도accuracy, 정밀도precision, 재현율recall
정확도 =𝑇𝑃 + 𝑇𝑁
𝑇𝑃 + 𝑇𝑁 + 𝐹𝑃 + 𝐹𝑁
정밀도 =𝑇𝑃
𝑇𝑃 + 𝐹𝑃
재현율 =𝑇𝑃
𝑇𝑃 + 𝐹𝑁
45
양성으로예측된것중진짜양성의비율(양성예측도)ex) 신약의효과측정
진짜양성중양성으로예측된비율(민감도, 적중률, 진짜양성비율-TPR)ex) 암진단
정밀도 <> 재현율
정밀도 =𝑇𝑃
𝑇𝑃 + 𝐹𝑃
재현율 =𝑇𝑃
𝑇𝑃 + 𝐹𝑁
46
모두양성으로예측하면FP가커져정밀도가낮아지고
FN은 0이되어재현율은완벽해집니다.
양성하나만을제대로예측하면FP는 0이어서정밀도는 1이되지만
FN이커져재현율은낮아집니다.
f-점수f-score
f1-점수라고도합니다.정밀도와재현율의조화평균으로불균형데이터셋에좋지만설명하기어렵습니다.
𝐹 = 2×정밀도×재현율
정밀도+재현율
47
f-점수의분모가 0이됨
정확도0.800.92
classification_report + pred_most_frequent
48
진짜타깃값
양성클래스를 ‘9아님’으로바꾸었을때점수
pred_most_frequent는모든데이터를 ‘9아님’으로예측하기때문에양성클래스를맞춘것이없음
불확실성
decision_function()은선형판별식이 0보다크면양성으로,
predict_proba()는선형판별식에시그모이드함수를적용하여 0.5보다크면양성으로판단합니다.
이함수들의반환값이클수록예측에대한확신이높다고간주할수있습니다.
50
정밀도-재현율곡선
정밀도와재현율의트레이드오프를조정
decision_function과 predict_proba 함수를이용하여운영포인트operating point 결정
53
decision_function의각단계
(0.75, 0.4)
(0.52, 0.4)
하나의 f1-점수 오른쪽위에가까울수록좋음
RandomForestClassifier vs SVC
54
predict_proba의결과중양성클래스(배열인덱스 1)에대한확률값을전달합니다.
재현율이나정밀도가극단일경우랜덤포레스트가더낫습니다.
ROC와 AUC수신기조작특성(Receiver operating characteristics)
진짜양성비율(TPR, 재현율)에대한거짓양성비율(FPR)의그래프
sklearn.metrics.roc_curve
재현율 =𝑇𝑃
𝑇𝑃 + 𝐹𝑁
𝐹𝑃𝑅 =𝐹𝑃
𝐹𝑃 + 𝑇𝑁
56
AUC 특징
불균형한데이터셋에도안정적임
재현율 =𝑇𝑃
𝑇𝑃 + 𝐹𝑁
𝐹𝑃𝑅 =𝐹𝑃
𝐹𝑃 + 𝑇𝑁
불균형데이터셋에서도무작위로선택하면TPR, FPR이비슷해지므로 ROC 곡선이y=x 가되어 AUC는 0.5에가까워짐
60
각기다른행으로계산됨
클래스 0
클래스 1
다중분류 f1-점수
다중분류용 f1-점수는한클래스를양성클래스로두고나머지를음성으로간주하여각클래스마다 f1-점수를계산합니다.
f1_score(y_test, pred, average=“...”)
• “macro”: 가중치없이평균을냅니다.• “weighted”: 클래스별샘플수로가중치를두어평균을냅니다.(분류리포트)• “micro”: 모든클래스의 FP, FN, TP를합하여 f1-점수를계산합니다.• “binary”: 이진분류에해당, 기본값.
65
scoring 옵션
분류: accuracy(기본값)roc_auc(ROC 곡선아래면적)average_precision(정확도-재현율곡선아래면적)f1_macro, f1_micro, f1_weighted
회귀: r2(R2)mean_square_error(평균제곱오차)mean_absolute_error(평균절댓값오차)
71
top related