๊ณผ๋์ ํฉ๊ณผ ๊ณผ์์ ํฉ ๊ทธ๋ฆฌ๊ณ ํด๊ฒฐํ๊ธฐ์ํ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์.
๋ชจ๋ธ์ ์ฉ๋์ด ์์์ ์ค์ฐจ๊ฐ ์ปค์ง๋ ํ์์ ๋งํ๋ค.
ํํํ๊ณ ์ ํ๋ data๋ฅผ ํํํ๋๋ฐ ์์ด์ fitting์ด ์ ๊ฒ ์ด๋ฃจ์ด ์ง ๊ฒฝ์ฐ ์ด๋ฌํ ํ์์ด ๋ํ๋๋ค.
๋ชจ๋ธ์ด ๋๋ฌด๋ ํ์ต ๋ฐ์ดํฐ ์ธํธ์ ๋ง์ถฐ ์ง๊ฒ์ ์๋ฏธํ๋ค.
์ฆ, ์ฌ์ํ ๋
ธ์ด์ฆ ์กฐ์ฐจ๋ ๋ชจ๋ธ์ ํ์ต๋ ๊ฒ์ ๋ปํ๋ค. ๊ณผ๋ํ๊ฒ ์ ํฉ๋ ๋ฐ์ดํฐ ์ธํธ๋ก test data set์ ๋ํด์๋ ํฌ๊ฒ ๋ํ๋๊ฒ ๋๋ค.
ํ์ต์ ์งํํจ์ ์์ด train data์ ๋ํด์๋ ์ค์ฐจ๊ฐ ๊ฐ์ํ๋
validation data์ ๋ํด์๋ ์คํ๋ ค ์ค์ฐจ๊ฐ ์ฆ๊ฐํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
3์ฐจ ํจ์์ ๋๊ฐ ์ ๋นํ๊ฒ ํ์ต๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
0์ฐจ์ 1์ฐจ๋ ๊ณผ์์ ํฉ, 9์ฐจ๋ ๊ณผ๋์ ํฉ์ด ์ด๋ฃจ์ด ์ง ๊ฒ์ด๋ค.
๋ฐ์ด์ด์ค์ ๋ถ์ฐ
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ณผ๋
๐ฏ์ ์ค์(์ ๋ต)์ ๊ฐ๊น์์ง๊ธฐ ์ํด์๋ ๋ ๊ฐ์ด ๋ชจ๋ ๋ฎ์์ผํ๋ค.
ํ์ง๋ง ์ด๋ค์ trade-off๊ด๊ณ๋ก ์ ์ ์ ์ ์ฐพ๋ ๊ฒ์ด ์ค์ํ๋ค.
ํ์ต๋ฐ์ดํฐ, ํ์ต์์ ์ฌ์ฉํ๋ ๊ฒ์ฆ๋ฐ์ดํฐ, ํ์ต์ด ๋๋ ํ ํ
์คํธ๋ฅผ ์ํ ํ
์คํธ ๋ฐ์ดํฐ๋ก ๋๋๋ค.
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X,
Y, test_size=0.3, random_state=seed)
ํ์ต์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ์๊ฐ ์ ์ด๋ ์ ๋นํ๊ฒ ํ์ต์ด ๊ฐ๋ฅํ๋๋ก ํ ์ ์๋ค!
๋ฐ์ดํฐ์ ์ฆ๊ฐ๊ณผ๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ์ ์๊ฐ ์ ์ด๋ ํ์ต์ด ๊ฐ๋ฅํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
1. ๋ฐ์ดํฐ์
์ k๊ฐ๋ก ๋๋ k๋ฒ ๊ฒ์ฆํ๋ ๊ฒ์ธ๋ฐ, ์ด๋ ๋ฐ์ดํฐ ์
์ k-1๊ฐ์ ํ์ต๋ฐ์ดํฐ์ 1๊ฐ์ test๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌํ๋ค.
2. ์ด๋ StratifiedKfold๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ถ๋ฅ์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ํด๋์ค์ ์ข
๋ฅ๊ฐ ํ๋๋ก ํธํฅ๋์ง ์๋๋ก ๊ฐ ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
3. ์ด๋ ๊ฒ k๊ฐ๋ก ๋๋ ์ง ๋ฐ์ดํฐ์
๋ค์ ์ด k๋ฒ์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ test๋ฐ์ดํฐ ์
์ ์ญํ ์ ์ํํ๋ค.
4. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด k๋ฒ์ ํ์ต์ด ์ด๋ฃจ์ด์ง๊ณ Loss์ Accuracy๋ํ k๊ฐ๊ฐ ๋์ค๊ฒ ๋๊ณ ,
์ดํ ์ค์ฐจ์ ํ๊ท ์ ํตํด ์ต์ ์ ๋ชจ๋ธ์ ์ ์ ํ ์ ์๋ค.
from sklearn.model_selection import StratifiedKFold
skf = StratifiedKFold(n_splits=n_fold, shuffle=True,
random_state=seed)
model = Sequential()
model.add(Dense(24, input_dim=60, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoidโ))
model.compile(loss='mean_squared_error',
optimizer='adam',
metrics=['accuracyโ])
for train, test in skf.split(X, Y):
model.fit(X[train], Y[train], epochs=100, batch_size=5)
๋งค์ฐ๋งค์ฐ ์ค์ํ๋ค!
ํ์ต๋๋ ๋ฐ์ดํฐ ์ธํธ๊ฐ ์ ์ผ๋ฉด ํ๋ํ๋์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ธ์ ์
์ฅ์์๋ ์์คํ๋ค.
๋ฐ๋ผ์ ํด๋น ๋ช๋ช ๋ฐ์ดํฐ๋ง์ ๋ณด๊ณ ํ์ตํ๋ ๋ชจ๋ธ์ ํด๋น ๋ฐ์ดํฐ๋ค์๊ฒ ํธํฅ๋ ๋ชจ๋ธ์ด ๋ ์ ๋ฐ์ ์๊ณ , ์ด๋ ๊ณผ์ ํฉ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ๋ง๊ธฐ์ํด ๋ฐ์ดํฐ๋ฅผ ์ฆ๊ฐ ์ํค๋ ๊ฒ์ด๋ค. ๋ฐ์ดํฐ ์ฆ๊ฐ์ ๋ํด์ ์์ธํ ๋ด์ฉ์ ๋ค์ part 19์์ ๋ค๋ฃฌ๋ค.
epoch๋ง๋ค 0~1์ฌ์ด์ ํ๋ฅ ๋ก ๋ด๋ฐ์ด ๊บผ์ง๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฆ, ๊บผ์ง๊ฒ ๋ ํด๋น ๋ด๋ฐ์ ํ์ต์ด ์ผ์ด๋์ง ์๋๋ก ํ๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๋ ์ด์ ๋ ํน์ feature์ ๋ํด์ ๊ณผ๋ํ๊ฒ ํ์ต๋๋ ๊ฒ์ ๋ง๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด ๋ฐฐ, ๋ฐ๋๋, ์ฌ๊ณผ๋ฅผ ๋ถ๋ฅํ๋ ๋ฌธ์ ์์ ์ต์ข
Classfication์ ๋ด๋ฆฌ๋๋ฐ ์์ด์ "ํฌ๊ธฐ" ์ ๋ณด๊ฐ ํฐ ์๊ด ๊ด๊ณ์ ์๋ค๊ณ ๊ฐ์ ํ์.
๊ทธ๋ ๋ค๋ฉด ํ์ต์์ "ํฌ๊ธฐ"์ ๋ณด์ ๋ํด์ ํฐ ๊ฐ์ค์น๊ฐ ์ค์ ๋๊ณ , "ํฌ๊ธฐ"์ ๋ณด๋ฅผ ์ ์ธํ ๋๋จธ์ง Feature๋ค์ ์ ๋๋ก ํ์ต์ด ์ด๋ ต๋ค. ๋ฐ๋ผ์ "ํฌ๊ธฐ"์ ๋ณด๋ฅผ dropoutํ๊ณ ํ์ต์ ์ํจ๋ค๋ฉด "ํฌ๊ธฐ"์ ๋ณด๊ฐ ์๋ ๋๋จธ์ง "๋ฌด๊ฒ", "์ด์ฌ๋ฅ "๋ํ ์ข
ํฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ด๋ค.
๊ฐ feature์ ๊ฐ์ค์น๊ฐ ๊ฐ์ง๋ ํน์ฑ์ ๊ท์ ์ํด์ผ๋ก์จ ํน์ ๋ฐ์ดํฐ๋ค์ ๋ํด์๋ง ์ ํฉํ๋๋ก ํ๋ ๊ฒ์ด ์๋, ๋ชจ๋ธ์ ์ผ๋ฐํ ๋ฅ๋ ฅ์ ํฅ์์ํค๋ ๊ฒ์ด๋ค.
hidden Layer์์ ์ด์ ๋ ์ด์ด์ ํ๋ผ๋ฏธํฐ์ ๋ณํ๋ก ์
๋ ฅ์ ๋ถํฌ๊ฐ ๋ณํํ๋ฉด์ ์
๋ ฅ์ ๋ถํฌ๊ฐ ๋ฌ๋ผ์ง๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์
๋ ฅ์ ๋ถํฌ๊ฐ ๋ฌ๋ผ์ก์ ๋ ์ถ๋ ฅ๊ฐ์ ์ ๊ทํ ํ๋ ์ธต์ ์ถ๊ฐํ์ฌ ๋ฐฐ์น๋ฅผ ์ ๊ทํ ํด์ฃผ๋ ๊ณผ์ ์ ์ํํ๋ค. ๋ฐฐ์น ์ ๊ทํ๋ฅผ ํตํด ํฐ lr๋ฅผ ์ง์ ํ ์ ์์๋ฟ๋๋ฌ, ํ์ตํ๋ ๊ณผ์ ์์ฒด๋ฅผ ์ ์ฒด์ ์ผ๋ก ์์ ํ์์ผ ๊ณผ์ ํฉ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
๋ชจ๋ธ์ด ๊ฒฐ๊ตญ overfitting์ด ๋ฐ์ํ๋ ์ด์ ๊ฐ ๋ฌด์์ผ๊น?
๋ฐ๋ก ํ์ต์ด ๊ณ์ ์งํ๋๋ค๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด๋ค.
Vaildata์ Loss๊ฐ ์ต์๊ฐ ๋๋ ์ง์ ๊น์ง๋ง ํ์ต์ ์งํํ๊ณ Loss๊ฐ ์ฆ๊ฐํ๋ ์๊ฐ ์กฐ๊ธฐ์ ํ์ต์ ์ค๋จ์์ผ, ๊ณผ์ ํฉ์ด ๋ฐ์ํ์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.