5.model evaluation and improvement
-
Upload
haesun-park -
Category
Software
-
view
820 -
download
3
Transcript of 5.model evaluation and improvement
ContactsHaesun Park
Email : [email protected]
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
๋ชจ๋ธํ๊ฐ
๋น์ง๋ํ์ต์ํ๊ฐ๋์ ์ฑ์ ์ด๋ฏ๋ก์ง๋ํ์ต์๋ฌธ์ ์์ง์ค
train_test_split ร fit ร score
๊ต์ฐจ๊ฒ์ฆ, R2 ์ด์ธ์์งํ๋ฑ์๋ฐฐ์๋๋ค. 5
๊ต์ฐจ๊ฒ์ฆ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
๊ต์ฐจ๊ฒ์ฆ์ํจ์
3-๊ฒน๊ต์ฐจ๊ฒ์ฆ์ผ๊ฒฝ์ฐํ ์คํธ์ธํธ์๋ํ์ข ๋ฅ์๋ถ๊ฝ๋งํฌํจ๋ฉ๋๋ค.
10
KFold(n_splits=3)
๊ณ์ธต๋ณ k-๊ฒน๊ต์ฐจ๊ฒ์ฆStratified k-fold CV
11
๋ถ๋ฅ๋ฌธ์ ์ผ๊ฒฝ์ฐ cross_val_score๋๊ธฐ๋ณธ์ ์ผ๋ก StratifiedKFold()๋ฅผ์ฌ์ฉํฉ๋๋ค. ํ๊ท์์๋ KFold()๋ฅผ์ฌ์ฉํฉ๋๋ค.
๊ต์ฐจ๊ฒ์ฆ๋ถํ ๊ธฐ
๋ถ๋ฅ์ KStratifiedFold() ๋์ ๊ธฐ๋ณธ KFold()๋ฅผ์ ์ฉํ๊ธฐ์ํด cv ๋งค๊ฐ๋ณ์๋ฅผ์ฌ์ฉํฉ๋๋ค.
12
LOOCVleave-one-out cross-validation
k=n ์ธ k-๊ฒน๊ต์ฐจ๊ฒ์ฆ
๋ฐ์ดํฐ์ ์ดํด๋๋์๊ฐ์ด์ค๋๊ฑธ๋ฆฌ์ง๋ง, ์์๋ฐ์ดํฐ์ ์์๋์ด๋ฐ๊ธ์ข์.
14
์์๋ถํ ๊ต์ฐจ๊ฒ์ฆ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
๊ทธ๋ฆฌ๋์์น๊ตฌํ
21
gamma์ C์๋ํ๋ฐ๋ณต๋ฃจํ
36๊ฐ์๋ชจ๋ธ์ด๋ง๋ค์ด์ง
๊ฐ์ฅ์ข์ํ ์คํธ์ ์๋ฅผ๊ธฐ๋ก
๊ฒ์ฆ์ธํธvalidation set
ํ ์คํธ์ธํธ๋ก์ฌ๋ฌ๊ฐ์ง๋งค๊ฐ๋ณ์์กฐํฉ์๋ํดํ๊ฐํ๋ค๋ฉด์ด๋ชจ๋ธ์ด์๋ก์ด๋ฐ์ดํฐ๋๋์ผํ์ฑ๋ฅ์๋ธ๋ค๊ณ ์๊ฐํ๋๊ฒ์๋งค์ฐ๋๊ด์ ์ธ์ถ์ ์ ๋๋ค.
์ต์ข ํ๊ฐ๋ฅผ์ํด์๋๋ ๋ฆฝ๋๋ฐ์ดํฐ์ธํธ๊ฐํ์ํฉ๋๋ค.
๊ฒ์ฆ์ธํธvalidation set ํน์๊ฐ๋ฐ์ธํธdev set
22
๊ฒ์ฆ์ธํธ๊ตฌํ
23
ํ๋ จ๋ฐ์ดํฐร ํ๋ จ๊ฒ์ฆ์ธํธ, ํ ์คํธ์ธํธํ๋ จ๊ฒ์ฆ์ธํธร ํ๋ จ์ธํธ, ๊ฒ์ฆ์ธํธ
๋๊ตฌํ์๊ฒฐ๊ณผ๋น๊ต
๋ชจ๋ธ์๊ฐํ, ํ์์ ๋ถ์, ๋ชจ๋ธ์ ํ์ํ ์คํธ์ธํธ๋ฅผ์ฌ์ฉํ๋ฉด์๋ฉ๋๋ค.
24
GridSearchCV๊ต์ฐจ๊ฒ์ฆ์์ฌ์ฉํ๊ทธ๋ฆฌ๋์์น
๊ฒ์ํ๋ ค๋๋งค๊ฐ๋ณ์๋ฅผํค๋กํ๋๋์ ๋๋ฆฌ๋ฅผ์ฌ์ฉํจ
27
๋ชจ๋ธ, ๋งค๊ฐ๋ณ์๊ทธ๋ฆฌ๋, ํด๋์ํ๊ท:KFold, ๋ถ๋ฅ:StratifiedKFold
fit, predict, score, predict_proba, decision_function ์ ๊ณต
๊ทธ๋ฆฌ๋์์น๋ชจ๋ธํ ์คํธ
GridSearchCV์์ฌ์ฉํ์ง์์ํ ์คํธ์ธํธ๋กํ๊ฐ
28
ํ๋ จ๋ฐ์ดํฐ๋ก๊ต์ฐจ๊ฒ์ฆํ์ ์
๊ฒฐ๊ณผ๋ถ์
๊ฐ๊ฒฉ์๋๊ฒํ์ฌ๊ทธ๋ฆฌ๋์์น๋ฅผ์์ํ๊ณ ๊ฒฐ๊ณผ๋ฅผ๋ถ์ํด๊ฒ์์์์์กฐ์ ํฉ๋๋ค.
RandomizedSearchCV๋๋งค๊ฐ๋ณ์์กฐํฉ์ด๋งค์ฐ๋ง๊ฑฐ๋ C์๊ฐ์ด์ฐ์ํ๊ฐ์์กฐ์ ํ ๋๋ง์ด์ฌ์ฉ๋ฉ๋๋ค.
29
grid_search.cv_results_
๋น๋์นญ๊ทธ๋ฆฌ๋์์น
๋ค๋ฅธ๋งค๊ฐ๋ณ์์์ํด์ ํ์ ์ผ๋ก๊ทธ๋ฆฌ๋์์น๋ฅผ์ํํ ์์์ต๋๋ค.
๋งค๊ฐ๋ณ์๊ทธ๋ฆฌ๋๋ฅผ๋์ ๋๋ฆฌ์๋ฆฌ์คํธ๋ก๋ง๋ญ๋๋ค.
31
linear ์ปค๋์ผ๊ฒฝ์ฐ์๋ gamma ๋งค๊ฐ๋ณ์๋ฅผ์ง์ ํ์ง์์ต๋๋ค.
์ค์ฒฉ๊ต์ฐจ๊ฒ์ฆ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์ธํ๊น๊ฐ
๋๋ฏธ vs ๋ก์ง์คํฑํ๊ท
42
strategy ๊ธฐ๋ณธ๊ฐ: stratifiedํด๋์ค๋น์จ(10%:1, 90%: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์๋โ์ผ๋ก์์ธกํ๊ธฐ๋๋ฌธ์์์ฑํด๋์ค๋ฅผ๋ง์ถ๊ฒ์ด์์
classification_report + pred_dummy, pred_logreg
49
์ด๋คํด๋์ค๋ฅผ์์ฑํด๋์ค๋ก์ ํํ๋์ง๊ฐ์ค์
๋ถํ์ค์ฑ
decision_function()์์ ํํ๋ณ์์ด 0๋ณด๋คํฌ๋ฉด์์ฑ์ผ๋ก,
predict_proba()๋์ ํํ๋ณ์์์๊ทธ๋ชจ์ด๋ํจ์๋ฅผ์ ์ฉํ์ฌ 0.5๋ณด๋คํฌ๋ฉด์์ฑ์ผ๋กํ๋จํฉ๋๋ค.
์ดํจ์๋ค์๋ฐํ๊ฐ์ดํด์๋ก์์ธก์๋ํํ์ ์ด๋๋ค๊ณ ๊ฐ์ฃผํ ์์์ต๋๋ค.
50
decision_function() > 0
51
์ ์ฑ
์ ์ฑ์ด์์ฑํด๋์ค์ผ๊ฒฝ์ฐ๋ชจ๋ ์ ์ฑ์์ก์๋ด๊ธฐ์ํด์ฌํ์จ์๋์ฌ์ผํฉ๋๋ค.
decision_function() > -0.8
52
์ ์ฑ
์ค์ ์์๋ํ ์คํธ์ธํธ๋ฅผ์ฌ์ฉํด์๋์๋ฉ๋๋ค!
model.predict_proba(X_test) > 0.45
์ ๋ฐ๋-์ฌํ์จ๊ณก์
์ ๋ฐ๋์์ฌํ์จ์ํธ๋ ์ด๋์คํ๋ฅผ์กฐ์
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)์๋ํํ๋ฅ ๊ฐ์์ ๋ฌํฉ๋๋ค.
์ฌํ์จ์ด๋์ ๋ฐ๋๊ฐ๊ทน๋จ์ผ๊ฒฝ์ฐ๋๋คํฌ๋ ์คํธ๊ฐ๋๋ซ์ต๋๋ค.
ํ๊ท ์ ๋ฐ๋average precision
์ ๋ฐ๋-์ฌํ์จ๊ณก์ ์์๋ซ๋ถ๋ถ๋ฉด์ ์๋ํ๋ ๋๋ค.
55
ํ๊ท ์ ๋ฐ๋๋๊ฑฐ์๋น์ทํ์์ค
ROC์ AUC์์ ๊ธฐ์กฐ์ํน์ฑ(Receiver operating characteristics)
์ง์ง์์ฑ๋น์จ(TPR, ์ฌํ์จ)์๋ํ๊ฑฐ์ง์์ฑ๋น์จ(FPR)์๊ทธ๋ํ
sklearn.metrics.roc_curve
์ฌํ์จ =๐๐
๐๐ + ๐น๐
๐น๐๐ =๐น๐
๐น๐ + ๐๐
56
roc_curve + SVC
57
์ผ์ชฝ์์๊ฐ๊น์ธ์๋ก์ข์๊ฑฐ์ง์์ฑ(FP)์์ ๊ณ ์ง์ง์์ฑ(TP)์๋๊ฒ
์ ์ ํ์ด์ํฌ์ธํธ
AUCarea under the curve
ROC ๊ณก์ ์๋์๋ฉด์ (like ํ๊ท ์ ๋ฐ๋)
sklearn.metrics.roc_auc_score
59
ํ๊น๋ ์ด๋ธ, ์์ธกํ๋ฅ
AUC ํน์ง
๋ถ๊ท ํํ๋ฐ์ดํฐ์ ์๋์์ ์ ์
์ฌํ์จ =๐๐
๐๐ + ๐น๐
๐น๐๐ =๐น๐
๐น๐ + ๐๐
๋ถ๊ท ํ๋ฐ์ดํฐ์ ์์๋๋ฌด์์๋ก์ ํํ๋ฉดTPR, FPR์ด๋น์ทํด์ง๋ฏ๋ก ROC ๊ณก์ ์ดy=x ๊ฐ๋์ด AUC๋ 0.5์๊ฐ๊น์์ง
60
๊ฐ๊ธฐ๋ค๋ฅธํ์ผ๋ก๊ณ์ฐ๋จ
ํด๋์ค 0
ํด๋์ค 1
๋ค์ค๋ถ๋ฅ์ํ๊ฐ์งํ
์ด์ง๋ถ๋ฅํ๊ฐ์งํ์์์ ๋ํ๊ฒ์ผ๋ก๋ชจ๋ ํด๋์ค์๋ํดํ๊ท ์๋ ๋๋ค.
๋ค์ค๋ถ๋ฅ์์๋๋ถ๊ท ํํ๋ฐ์ดํฐ์ ์์๋์ ํ๋๊ฐ์ข์์งํ๊ฐ์๋๋๋ค.
์๊ธ์จ์ซ์ 10๊ฐ์๋ํ์ค์ฐจํ๋ ฌ
62
๋ค์ค๋ถ๋ฅ์์ค์ฐจํ๋ ฌ
63
์ซ์ 0์๊ฑฐ์ง์์ฑ(FN) ์์
ํด๋์ค 0์๊ฑฐ์ง์์ฑ(FP) ์์
๋ค์ค๋ถ๋ฅ f1-์ ์
๋ค์ค๋ถ๋ฅ์ฉ f1-์ ์๋ํํด๋์ค๋ฅผ์์ฑํด๋์ค๋ก๋๊ณ ๋๋จธ์ง๋ฅผ์์ฑ์ผ๋ก๊ฐ์ฃผํ์ฌ๊ฐํด๋์ค๋ง๋ค f1-์ ์๋ฅผ๊ณ์ฐํฉ๋๋ค.
f1_score(y_test, pred, average=โ...โ)
โข โmacroโ: ๊ฐ์ค์น์์ดํ๊ท ์๋ ๋๋ค.โข โweightedโ: ํด๋์ค๋ณ์ํ์๋ก๊ฐ์ค์น๋ฅผ๋์ดํ๊ท ์๋ ๋๋ค.(๋ถ๋ฅ๋ฆฌํฌํธ)โข โmicroโ: ๋ชจ๋ ํด๋์ค์ FP, FN, TP๋ฅผํฉํ์ฌ f1-์ ์๋ฅผ๊ณ์ฐํฉ๋๋ค.โข โbinaryโ: ์ด์ง๋ถ๋ฅ์ํด๋น, ๊ธฐ๋ณธ๊ฐ.
65
R2
ํ๊ท๋์ฐ์๋๊ฐ์์์ธกํ๋ฏ๋ก R2๋ง์ผ๋ก์ถฉ๋ถํฉ๋๋ค.
๊ฐ๋ํ๊ท ์ ๊ณฑ์๋ฌ๋ํ๊ท ์ ๋๊ฐ์๋ฌ๋ฅผ์ฌ์ฉํ๊ธฐ๋ํฉ๋๋ค.
67
cross_val_scorescoring ๋งค๊ฐ๋ณ์์์ํ๋ํ๊ฐ์งํ๋ฅผ์ง์ ํ ์์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์๋ชจ๋ธ์score() ๋ฉ์๋์ ๋๋ค.
69
roc_auc_score() ํจ์๋ฅผ์๋ฏธ
scoring ์ต์
๋ถ๋ฅ: accuracy(๊ธฐ๋ณธ๊ฐ)roc_auc(ROC ๊ณก์ ์๋๋ฉด์ )average_precision(์ ํ๋-์ฌํ์จ๊ณก์ ์๋๋ฉด์ )f1_macro, f1_micro, f1_weighted
ํ๊ท: r2(R2)mean_square_error(ํ๊ท ์ ๊ณฑ์ค์ฐจ)mean_absolute_error(ํ๊ท ์ ๋๊ฐ์ค์ฐจ)
71
์ค์ํ์ฃผ์์ฌํญ
๊ต์ฐจ๊ฒ์ฆ์ํด์ผํฉ๋๋ค.
ํ๋ จ๋ฐ์ดํฐ: ๋ชจ๋ธํ์ต
๊ฒ์ฆ๋ฐ์ดํฐ: ๋ชจ๋ธ๊ณผ๋งค๊ฐ๋ณ์์ ํ
ํ ์คํธ๋ฐ์ดํฐ: ๋ชจ๋ธํ๊ฐ
๋ชจ๋ธ์ ํ๊ณผํ๊ฐ์์ ์ ํ์งํ๋ฅผ์ฌ์ฉํฉ๋๋ค.
๋์์ ํ๋๋ฅผ๊ฐ์ง๋ชจ๋ธร ๋น์ฆ๋์ค๋ชฉํ์๋ง๋๋ชจ๋ธ
ํ์ค์์๋๋ถ๊ท ํํ๋ฐ์ดํฐ์ ์ด์์ฃผ๋ง์
๊ฑฐ์ง์์ฑ(FP)๊ณผ๊ฑฐ์ง์์ฑ(FN)์ด๋ง์์ํฅ์๋ฏธ์นจ
73