๋จธ์ ๋ฌ๋์์์ ํ์ต์ ์ข ๋ฅ๋ ๋ค์๊ณผ ๊ฐ์ด 3๊ฐ์ง์ด๊ณ , ๊ฐ๊ฐ ํด๋นํ๋ ์์ ์ ๋ณผ ์ ์์ต๋๋ค.
์ง๋ ํ์ต ์ค์์ ๋ถ๋ฅ ์์ ๊ณผ ๋ชจ๋ธ์ ๋ํ ์ฑ๋ฅ ์ธก์ ์ ๋ํด ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ์ฌ์ดํท๋ฐ์ ๋ค์ํ ๋ถ๋ฅ๋ชจ๋ธ๋ก ํ์ต์ ์งํํ ์ ์์ต๋๋ค. ๋ถ๋ฅ๋ ํ๊ท๋ณด๋ค ์ฌ์ฉํ ์ ์๋ ์ฑ๋ฅ ์งํ๊ฐ ๋ง์ต๋๋ค.
1. ๊ต์ฐจ๊ฒ์ฆ์ ํ์ฉํ ์ ํ๋ ์ธก์
์ฌ์ดํท๋ฐ์ cross_val_score()๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
ํด๋๊ฐ 3๊ฐ์ธ k-๊ฒน ๊ต์ฐจ ๊ฒ์ฆ์ ์ฌ์ฉํด ๋ชจ๋ธ์ ํ๊ฐํ๋ ์์
from sklearn.model_selection import cross_val_score
cross_val_score(ํ๋ จํ๋ชจ๋ธ,X_train,y_train, cv=3,scoring="accuracy")
๊ทธ๋ฌ๋ ์ ํ๋๋ ๋ถ๋ฅ๊ธฐ ์ฑ๋ฅ ์ธก์ ์งํ๋ก๋ ์ ํธ๋์ง ์์ต๋๋ค. ๋ถ๊ท ํํ ๋ฐ์ดํฐ์ ์ผ์๋ก ๊ทธ๋ ์ต๋๋ค.
2. ์ค์ฐจํ๋ ฌ
๋ ์ข์ ๋ฐฉ๋ฒ์ ์ค์ฐจํ๋ ฌconfusion matrix๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ค์ฐจ ํ๋ ฌ์ ๋ง๋ค๋ ค๋ฉด ์ค์ ํ๊น๊ณผ ๋น๊ตํ ์ ์๋๋ก ์์ธก๊ฐ์ ๋จผ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ํ ์คํธ์ธํธ๋ก ์์ธก๊ฐ์ ๋ง๋ค ์ ์์ง๋ง ์ฌ๊ธฐ์ ์ฌ์ฉํ๋ฉด ์๋ฉ๋๋ค. ๋์ cross_val_predict()ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
from sklean.model_selection import cross_val_predict
y_train_pred = cross_val_predict(ํ๋ จํ ๋ชจ๋ธ,X_train, y_train, cv=3)
cross_val_predict()ํจ์๋ ๊ต์ฐจ๊ฒ์ฆ์ ์ํํ์ง๋ง ํ๊ฐ ์ ์๊ฐ ์๋ ๊ฐ ํ ์คํธ ํด๋์์ ์ป์ ์์ธก์ ๋ฐํํฉ๋๋ค. ์ฆ ํ๋ จ์ ์ ๋ชจ๋ ์ํ์ ๋ํด ๊นจ๊ฟํ(ํ๋ จํ๋๋์ ๋ณด์ง ๋ชปํ ๋ฐ์ดํฐ์ ๋ํ ์์ธก)์์ธก์ ์ป๊ฒ ๋ฉ๋๋ค.
์ด์ confusion_matrix()ํจ์๋ก ์ค์ฐจํ๋ ฌ์ ๋ง๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
from sklearn.metrics import confusion_matrix
confusion_matrix(y_train,y_train_pred)
array[[55555,1111],
[222.444]]
์ค์ฐจํ๋ ฌ์ ํ์ ์ค์ ํด๋์ค, ์ด์ ์์ธกํ ํด๋์ค๋ฅผ ๋ํ๋ ๋๋ค. 55555๊ฐ๋ฅผ ์ ํํ๊ฒ ์ง์ง ์์ฑ์ผ๋ก ๋ถ๋ฅํ๊ณ , ๋๋จธ์ง 1111๊ฐ๋ ์์ฑ์ธ๋ฐ ์์ฑ์ด๋ผ๊ณ ๋ถ๋ฅํ์ต๋๋ค. ๋๋ฒ์งธ ํ์ ์์ฑ ํด๋์ค์ ๋ํด, 222๊ฐ๋ ์์ฑ์ธ๋ฐ ์์ฑ์ผ๋ก ์๋ชป๋ถ๋ฅํ๊ณ , ๋๋จธ์ง 444๊ฐ๋ง ์ ํํ ์ผใ ใ ์ฑ์ธ๋ฐ ์์ฑ์ผ๋ก ๋ถ๋ฅํ์ต๋๋ค. ์๋ฒฝํ ๋ถ๋ฅ๊ธฐ๋ผ๋ฉด ๋๊ฐ์ ์ด 0, 0์ด๋ฉ๋๋ค(์ค๋ฅธ์ชฝ์์์ ์ผ์ชฝ์๋๋ก์ ๋๊ฐ์ )
2.1 ์ ๋ฐ๋์ ์ฌํ์จ์ด ๋ชจ๋ ๋์์ผ ์ข๋ค!
์ค์ฐจํ๋ ฌ๋ณด๋ค๋ ๋ ์์ฝ๋ ์งํ๊ฐ ํ์ํ ๊ฒฝ์ฐ์๋ ์์ฑ์์ธก์ ์ ํ๋ = ์ ๋ฐ๋, ์ฌํ์จ(๋ฏผ๊ฐ๋)๋ฅผ ๋ด ๋๋ค.
์ฌ์ดํท๋ฐ์ ์ด๋ฌํ ์งํ๋ฅผ ๊ณ์ฐํ๋ ํจ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
from sklearn.metrics import precision_score, recall_score
precision_score(y_train,t_train_pred)
recall_score(y_train,t_train_pred)
2.2 ์ ๋ฐ๋์ ์ฌํ์จ์ ํ๋์ ์งํ๋ก = F1 Score
f1์ ์๋ ์ ๋ฐ๋์ ์ฌํ์จ์ ์กฐํ ํ๊ท ์ ๋๋ค. ์ ๋ฐ๋์ ์ฌํ์จ์ด ๋น์ทํ ๋ถ๋ฅ๊ธฐ์์๋ f1์ ์๊ฐ ๋ ๋์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ํญ์ ๋ง๋๊ฒ์ ์๋๋๋ค. ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ, ์๋ฅผ ๋ค์ด ์ด์ธ์ด์๊ฒ ์์ ํ ๋์์์ ํํฐ๋งํ๋ ๋ถ๋ฅ๊ธฐ๋ฅผ ํ๋ จ์ํจ๋ค ํ๋ฉด, ์ฌํ์จ์ด ๋์ผ๋ ์ ๋ง ๋์ ๋์์์ด ์์ ๋ ธ์ถ๋๋ ๊ฒ ๋ณด๋ค๋ ์์ ํ ์์์ด ๋ง์ด ์๋๋ผ๋(๋ฎ์ ์ฌํ์จ) ์์ ํ ๊ฒ๋ง ๋ ธ์ถ์ํค๋(๋์ ์ ๋ฐ๋)๋ถ๋ฅ๊ธฐ๋ฅผ ๋ ์ ํธํ ๊ฒ์ ๋๋ค. ์จ์จํฐ๋น๋ก ๋๋์ ์ก๋ ๋ถ๋ฅ๊ธฐ๋ฅผ ํ๋ จ์ํจ๋ค๊ณ ํ๋ฉด ์ฌํ์จ์ด 99%๋ผ๋ฉด ์ ํ๋๊ฐ ๋ฎ์๋ ๊ด์ฐฎ์์ง๋ ๋ชจ๋ฆ ๋๋ค.
๋๊ฐ์ง๋ฅผ ๋ชจ๋ ์ป์ ์๋ ์์ต๋๋ค. ์ ๋ฐ๋๊ฐ ์ฆ๊ฐํ๋ฉด ์ฌํ์จ์ด ์ค์ด๋ญ๋๋ค. ์ด๋ฅผ ์ ๋ฐ๋/์ฌํ์จ ํธ๋ ์ด๋ ์คํ๋ผ๊ณ ํฉ๋๋ค.
์ข์ ์ ๋ฐ๋/์ฌํ์จ ํธ๋ ์ด๋ ์คํ ์ ํํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌํ์จ์ ๋ํ ์ ๋ฐ๋ ๊ณก์ ์ ๊ทธ๋ฆฝ๋๋ค. ๋ง์ฝ ์ฌํ์จ์ด 70%๊ทผ์ฒ์์ ๊ธ๊ฐํ๋ค๊ณ ํ ๊นจ ํ๊ฐ์ ์ง์ ์ ์ข์ ์ ๋ฐ๋/์ฌํ์จ ํธ๋ ์ด๋์คํ๋ก ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค๋ง ์ฌํ์จ์ด ๋๋ฌด ๋ฎ๋ค๋ฉด ๋์ ์ ๋ฐ๋์ ๋ถ๋ฅ๊ธฐ๋ ์ ํ ์ ์ฉํ์ง ์์ต๋๋ค.
3.ROC๊ณก์
์ด์ง ๋ถ๋ฅ์์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ ๊ฑฐ์ง์์ฑ(FP)๋น์จ์ ๋ํ TPR(์ฌํ์จ)์ ๊ณก์ ์ ๋๋ค. ๊ฑฐ์ง์์ฑ๋น์จ์ ์์ ์ธ๋ฐ ์์ฑ์ผ๋ก ์๋ชป ๋ถ๋ฅ๋ ์ํ์ ๋น์จ์ ๋๋ค. ์ด๋ 1์์ TNR์(ํน์ด๋)๋ฅผ ๋บ ๊ฐ์ ๋๋ค. ์ฆ, ROC๊ณก์ ์ ์ฌํ์จ(๋ฏผ๊ฐ๋)์ ๋ํ 1-ํน์ด๋ ๊ทธ๋ํ์ ๋๋ค.
'๋จธ์ ๋ฌ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
python numpy, pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋, ์ฐจ์ด (0) | 2022.12.08 |
---|---|
๋น์ง๋ํ์ต - ๊ตฐ์ง, k-means, ์ค๋ฃจ์ฃ์ ์ ์ฌ์ดํท๋ฐ (0) | 2022.12.07 |
์ฐจ์ ์ถ์, PCA python ์ฌ์ดํท๋ฐ (0) | 2022.12.05 |
๋ค์ค ๋ก์ง์คํฑ ํ๊ท (์ํํธ๋งฅ์ค ํ๊ท) (0) | 2022.12.05 |
๋ก์ง์คํฑ ํ๊ท sklearn logistic regression iris python (0) | 2022.12.04 |