๋จธ์ ๋ฌ๋ 7๋จ๊ณ
1.๋ฌธ์ ์ ์
-ํด๊ฒฐํ ๋ฌธ์ ๋ฅผ ์ ์ํ๋ค.
2.๋ฐ์ดํฐ ์์ง
-ํด๊ฒฐํ ๋ฌธ์ ์ ๋ํ ๋ฐ์ดํฐ ์์ง
3.๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
-์์งํ ๋ฐ์ดํฐ๋ฅผ ๋จธ์ ๋ฌ๋ ํ์ต์ ๋ง๋ ํํ๋ก ๋ณํ
4.ํ์์ ๋ฐ์ดํฐ ๋ถ์
-์๊ฐํ, ํต๊ณ์๋ฃ ๋ถ์
5.๋ชจ๋ธ ์ ํ ๋ฐ ํ์ดํผ ํ๋ผ๋ฏธํฐ ํ๋
-๋ฐ์ดํฐ์ ๋ง๋ ๋ชจ๋ธ์ ์ ํํ๊ณ ํ์ต์ ํ๋ค.
6.ํ์ต
-fit()
7.์์ธก
์ผ๋ฐ์ ํฉ, ๊ณผ๋์ ํฉ, ๊ณผ์์ ํฉ
์ผ๋ฐํ-train์ ์
๋ณดํต, test์ ์ : ๋์
-test๊ฐ ์ ๋์์ผ, ๋ค๋ฅธ ๋ชจ๋ธ์์๋ ์ ์ ์ฉํ ์ ์๋ค๋ ๋ป์ด๋ค
๊ณผ๋์ ํฉ(overfitting)
train์ ์ : ๋์, test์ ์ : ๋ณดํต
๊ณผ์์ ํฉ(underfitting)
train์ ์ : ๋ฎ์, test์ ์ : ๋ฎ์
model.fit(X_train, Y_train)
model.score(X_train,Y_train)
model.score(X_test,Y_test)
train_test_split ๋ชจ๋์ ํ์ฉํ์ฌ ํ์ต๊ณผ ํ ์คํธ ์ธํธ ๋ถ๋ฆฌ
์ฌ์ดํท๋ฐ(scikit-learn)์ model_selection ํจํค์ง ์์ train_test_split ๋ชจ๋์ ํ์ฉํ์ฌ ์์ฝ๊ฒ train set(ํ์ต ๋ฐ์ดํฐ ์ )๊ณผ test set(ํ ์คํธ ์ )์ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
train / test ๋ถ๋ฆฌํ๋ ์ด์ ?
๋จผ์ , train / test ๋ฅผ ๋ถ๋ฆฌํ๋ ๋ชฉ์ ์ ์ ํํ ์์์ผํฉ๋๋ค.
์ ํํ ๋งํ๋ฉด, train / test ๊ฐ ์๋ train / validation ์ผ๋ก ๋ณผ ์ ์์ต๋๋ค. (์ด์ฐจํผ ์ฉ์ด์ ์ฐจ์ด๊ธด ํ์ง๋ง์)
๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ train ๋ฐ์ดํฐ๋ฅผ 100% ํ์ต์ํจ ํ test ๋ฐ์ดํฐ์ ๋ชจ๋ธ์ ์ ์ฉํ์ ๋ ์ฑ๋ฅ์ด ์๊ฐ๋ณด๋ค ์ ๋์ค๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค (๊ฑฐ์ 99.999% ๋์)
์ด๋ฌํ ํ์์ ๋ณดํต Overfitting ๋์๋ค๋ผ๊ณ ํฉ๋๋ค.
์ฆ, ๋ชจ๋ธ์ด ๋ด๊ฐ ๊ฐ์ง ํ์ต ๋ฐ์ดํฐ์ ๋๋ฌด ๊ณผ์ ํฉ๋๋๋ก ํ์ตํ ๋๋จธ์ง, ์ด๋ฅผ ์กฐ๊ธ์ด๋ผ๋ ๋ฒ์ด๋ ์ผ์ด์ค์ ๋ํด์๋ ์์ธก์จ์ด ํ์ ํ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ด๋ผ๊ณ ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ Overfitting์ ๋ฐฉ์งํ๋ ๊ฒ์ ์ ์ฒด์ ์ธ ๋ชจ๋ธ ์ฑ๋ฅ์ ๋ฐ์ ธ๋ณด์์ ๋ ๋งค์ฐ ์ค์ํ ํ๋ก์ธ์ค ์ค ํ๋์ ๋๋ค.
Validation Set์ผ๋ก ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์ถ๊ฐํ์ฌ Overfitting ๋ฐฉ์ง
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ธฐ์กด train / test๋ก ๊ตฌ๋ถ ๋์ด ์์๋ ๋ฐ์ดํฐ ์ ์ train์์ train / validation์ผ๋ก ์ผ์ ๋น์จ ์ชผ๊ฐ ๋ค์์ ํ์ต ์์๋ train ์ ์ผ๋ก ํ์ต ํ ์ค๊ฐ์ค๊ฐ validation ์ ์ผ๋ก ๋ด๊ฐ ํ์ตํ ๋ชจ๋ธ ํ๊ฐ๋ฅผ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
๋ง์ฝ, ๋ชจ๋ธ์ด ๊ณผ์ ํฉ๋์๋ค๋ฉด, validation ์ ์ผ๋ก ๊ฒ์ฆ์ ์์ธก์จ์ด๋ ์ค์ฐจ์จ์ด ๋จ์ด์ง๋ ํ์์ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ด๋ฐ ํ์์ด ๋ํ๋๋ฉด ํ์ต์ ์ข ๋ฃํฉ๋๋ค.
์๋ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํ์๋ฉด, iteration์ด 750์ ๋์ด๊ฐ๋ ์๊ฐ๋ถํฐ train ์ ์ ์ค์ฐจ์จ์ ๊ณ์ ํ๊ฐํ๊ณ ์์ผ๋ validation ์ ์ ์ค์ฐจ์จ์ ์ ์ฐจ ์ฆ๊ฐํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๊ทธ๋์ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ์ ํนํ n_estimators์ ๊ฐ์ validation ์ ์ ์ค์ฐจ์จ์ ์ ๊ฒํด ๋๊ฐ๋ฉด์ ํ๋์ ์งํํด์ผ ํ๋ฉฐ, ๋ฅ๋ฌ๋ ๋ชจ๋ธ๋ ๋ง์ฐฌ๊ฐ์ง๋ก validation_data๋ฅผ ์ง์ ํด ์ค์ผ๋ก์จ ๋งค epoch ๋ง๋ค validation์ ์ค์ฐจ์จ์ ํ์ธํ๋ฉด์ ๊ณผ์ ํฉ์ ๋ฐฉ์งํด์ผ ์ข์ ์ฑ๋ฅ์ ๋ชจ๋ธ์ ๋ง๋ค ์ ์์ต๋๋ค.
์ถ๊ฐ๋ก, ๊ฒ์ฆ ๋ฐฉ๋ฒ์ K-Fold ๊ต์ฐจ ๊ฒ์ฆ ๋ฐฉ์์ด ๋ง์ด ์ด์ฉ๋๊ณ ์์ผ๋ฉฐ, ์ด์ ๊ด๋ จ ๋ด์ฉ์ ๋ค๋ฅธ ํฌ์คํ ์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ์ต๋๋ค.
๊ฐํธํ๊ฒ train / test ๋ถ๋ฆฌ
์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋๋ฌด๋๋ ๊ฐ๋จํฉ๋๋ค.
train_test_split ํจ์๋ฅผ ํตํด ๋จ 1์ค๋ก ๊น๋ํ๊ฒ ๋ถ๋ฆฌํ ์ ์์ต๋๋ค.
ํจํค์ง๋ sklearn.model_selection์ ์์ต๋๋ค.
from sklearn.datasets import load_iris # ์ํ ๋ฐ์ดํฐ ๋ก๋ฉ
from sklearn.model_selection import train_test_split
# load sample
dataset = load_iris()
data = dataset['data']
target = dataset['target']
# train_test_split
X_train, X_test, y_train, y_test = train_test_split(
data, target,
test_size=0.2,
shuffle=True,
stratify=target,
random_state=34)
์ ๋ ๊ฒ 1์ค์ ์ฝ๋๋ก train / validation ์ ์ ๋๋์ด ์ฃผ์์ต๋๋ค.
์ต์ ๊ฐ ์ค๋ช
- test_size: ํ ์คํธ ์ ๊ตฌ์ฑ์ ๋น์จ์ ๋ํ๋ ๋๋ค. train_size์ ์ต์ ๊ณผ ๋ฐ๋ ๊ด๊ณ์ ์๋ ์ต์ ๊ฐ์ด๋ฉฐ, ์ฃผ๋ก test_size๋ฅผ ์ง์ ํด ์ค๋๋ค. 0.2๋ ์ ์ฒด ๋ฐ์ดํฐ ์ ์ 20%๋ฅผ test (validation) ์ ์ผ๋ก ์ง์ ํ๊ฒ ๋ค๋ ์๋ฏธ์ ๋๋ค. default ๊ฐ์ 0.25 ์ ๋๋ค. ๋ณดํต 7:3์ผ๋ก ๋๋๋ค.
- shuffle: default=True ์ ๋๋ค. split์ ํด์ฃผ๊ธฐ ์ด์ ์ ์์๊ฑด์ง ์ฌ๋ถ์ ๋๋ค. ๋ณดํต์ default ๊ฐ์ผ๋ก ๋๋ก๋๋ค.
- stratify: default=None ์ ๋๋ค. classification์ ๋ค๋ฃฐ ๋ ๋งค์ฐ ์ค์ํ ์ต์ ๊ฐ์ ๋๋ค. stratify ๊ฐ์ target์ผ๋ก ์ง์ ํด์ฃผ๋ฉด ๊ฐ๊ฐ์ class ๋น์จ(ratio)์ train / validation์ ์ ์งํด ์ค๋๋ค. (ํ ์ชฝ์ ์ ๋ ค์ ๋ถ๋ฐฐ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค) ๋ง์ฝ ์ด ์ต์ ์ ์ง์ ํด ์ฃผ์ง ์๊ณ classification ๋ฌธ์ ๋ฅผ ๋ค๋ฃฌ๋ค๋ฉด, ์ฑ๋ฅ์ ์ฐจ์ด๊ฐ ๋ง์ด ๋ ์ ์์ต๋๋ค.
- random_state: ์ธํธ๋ฅผ ์์ ๋ ํด๋น int ๊ฐ์ ๋ณด๊ณ ์์ผ๋ฉฐ, ํ์ดํผ ํ๋ผ๋ฏธํฐ๋ฅผ ํ๋์ ์ด ๊ฐ์ ๊ณ ์ ํด๋๊ณ ํ๋ํด์ผ ๋งค๋ฒ ๋ฐ์ดํฐ์ ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด์ ๋จธ์ ๋ฌ๋์ด ํ์ตํ๊ธฐ ์ข์ ๋ชจ๋ธ์ ์ฐพ๋ ๊ฒ๋ ์ด ๊ฐ์ ์กฐ์ ํ๋ฉด์ ๊ฒฐ์ ์ด ๋๋ค. ๊ฒฐ๊ณผ๊ฐ์ด ์ข์์ง์ง ๋๋น ์ง์ง๋ ๋๋ค๊ฐ์ด๋ฏ๋ก ๋ฏธ์ง์์ด๋ค.
Classifier
iris์ ๋ ์ด๋ธ์ ์ฐ์๊ฐ์ด ์๋ "setosa" (0.0), "versicolor" (1.0), "virginica" (2.0)์ธ ์ด์ฐ๊ฐ์ด๊ธฐ
๋๋ฌธ์ ๋ถ๋ฅ(classification) ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์ ์ ์์.
๋ถ๋ฅ์ ์ฌ์ฉ๋๋ classifier๋ Logistic (Regression) Classifier, Decision Tree, Support Vector Machine, Naive Bayesian, K Nearest Neighbor, Random Forest, Gradient Boosing, Neural Network ๋ฑ์ด ์๋ค.
์ฐธ๊ณ : https://jfun.tistory.com/65
๊ณผ๋ : ์ผ์ชฝ,
์ผ๋ฐํ : ๊ฐ์ด๋ฐ(๊ฒน์ณ ์๋ ๋ถ๋ถ),
๊ณผ์ : ์ฐ์ธก
https://needjarvis.tistory.com/455
knn
์ดํดํ๊ธฐ ์ฌ์ด ๋ชจ๋ธ
ํ๋ จ ๋ฐ์ดํฐ ์ธํธ๊ฐ ํฌ๋ฉด(ํน์ฑ, ์ํ์ ์) ์์ธก์ด ๋๋ ค์ง๋ค
์๋ฐฑ ๊ฐ ์ด์์ ๋ง์ ํน์ฑ์ ๊ฐ์ง ๋ฐ์ดํฐ ์ธํธ์ ํน์ฑ ๊ฐ ๋๋ถ๋ถ์ด 0์ธ ํฌ์(sparse)ํ ๋ฐ์ดํฐ ์ธํธ์๋ ์ ๋์ํ์ง ์๋๋ค.
๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ scale์ ๊ฐ๋๋ก ์ ๊ทํ ํ์
๊ฐ๋
https://needjarvis.tistory.com/190?category=619253
๋ธ๋ก๊ทธ๊ฐ ์ ์ฒด์ ์ผ๋ก ํต๊ณ๊ด๋ จํด์ ์ ๋ฆฌ๊ฐ ์ ๋์ด ์๋ค.
https://creatorjo.tistory.com/148
๋งจํํ๊ฑฐ๋ฆฌ
https://needjarvis.tistory.com/455?category=619253
'๐WEB & ML & DL ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DCX ๋ ๋ฌด์์ผ๊น (0) | 2021.11.12 |
---|---|
2์ฐจ ํ๋ก์ ํธ : ์ถ์งํ ๋งํ ๋ด์ฉ (To be continue..) (0) | 2021.11.02 |
๋ถ์ ๋ฆฌํฌํธ (0) | 2021.10.23 |
๊ฐ๋ฐ์๋ก์ ํฌํธํด๋ฆฌ์ค ์์ฑํ๋ ๋ฐฉ๋ฒ (0) | 2021.10.22 |
HTML get์ผ๋ก ๋ณด์ฌ์ค์ผํ ๋์ ํ ๋ง์ฃผ ํ์ฌ ์ ๋ณด ์์ (0) | 2021.10.21 |