Tain Validation Test Data

ÀÏ¹Ý ÀûÀ¸·Î µ¥ÀÌÅͼÂÀº Tain µ¥ÀÌÅÍ, Validation µ¥ÀÌÅÍ,  Test Data ³ª´²¼­ µ¥ÀÌÅÍ·Î ³ª´²¼­ ÇнÀ, °ËÁõ, Å×½ºÆ® ÇÑ´Ù.
Äɶ󽺿¡¼­´Â ÇнÀ(fit) ÇÒ¶§ validation_data·Î ÁöÁ¤ Çϰųª

°¢ µ¥ÀÌÅÍ ¼ÂÀÇ Æ¯Â¡Àº ´ÙÀ½°ú °°´Ù.
  1. Train set: ÇнÀ¿ë µ¥ÀÌÅÍ
  2. Validation set: °ËÁõ µ¥ÀÌÅÍ, ÇнÀ¿¡ »ç¿ë µÇÁø ¾Ê´Â´Ù. ÇнÀÀÌ ³¡³­ µ¥ÀÌÅÍ·Î °¢ ¿¡Æ÷Å© (epochs) ¸¶´Ù ÇнÀÀÇ °ËÁõ, ¼Õ½Ç°ú ¸ðµ¨ÀÇ ÃøÁ¤ Ç׸ñÀ» Æò°¡ÇÒ¶§ ÇÊ¿ä ÇÏ´Ù.
  3. Test set: ÇнÀÀÌ ³¡³­ µ¥ÀÌÅ͸¦ ÃÖÁ¾ Å×½ºÆ® ÇϱâÀ§ÇÑ µ¥ÀÌÅÍ
´ëºÎºÐÀÇ °æ¿ì ´ÙÀ½ÀÇ ºñÀ²·Î ³ª´²¼­ ÇнÀÇÑ´Ù.

Train µ¥ÀÌÅÍ¿Í Test µ¥ÀÌÅ͸¸ »ç¿ë ÇÏ´Â °æ¿ì´Â 8:2ÀÇ ºñÀ²·Î ³ª´«´Ù.
Train µ¥ÀÌÅÍ : Test µ¥ÀÌÅÍ = 8 : 2

Train µ¥ÀÌÅÍ¿Í Test µ¥ÀÌÅÍ,  °ËÁõ¿ë µ¥ÀÌÅ͸¦ »ç¿ëÇϸé 6 : 2 : 2ÀÇ ºñÀ²·Î ³ª´«´Ù.
°ËÁõ¿ë µ¥ÀÌÅ͸¦ »ç¿ëÇϸé Train µ¥ÀÌÅÍ : Validation µ¥ÀÌÅÍ : Test µ¥ÀÌÅÍ = 6 : 2 : 2

validation_data »ç¿ëÇϱâ

validation_data´Â Validation setÀÌ´Ù.
validation_data´Â validation_splitº¸´Ù ¿ì¼± ¼øÀ§¸¦ °¡Áø´Ù.

¸ðµ¨À» ÇнÀ ÇÒ¶§ validation_data¿¡ µ¥ÀÌÅ͸¦ ÁöÁ¤ÇÑ´Ù.

model.fit(x_train, y_train, epochs=100, batch_size=1, validation_data=(x_val, y_val))

from keras.models import Sequential
from keras.layers import Dense
import numpy as np

# µ¥ÀÌÅͼ »ý¼º
x_train = np.arange(1, 101)
y_train = x_train
x_test = np.arange(100, 201)
y_test = x_test
x_val = np.arange(200, 301)
y_val = x_val

# ¸ðµ¨ ±¸¼º
model = Sequential()
model.add(Dense( 10, input_shape=(1, ), activation='relu'))
model.add(Dense( 5))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam', metrics=['mse'])

# ¸ðµ¨ ÇнÀ
model.fit(x_train, y_train, epochs=100, batch_size=1, validation_data=(x_val, y_val))

# ¸ðµ¨ Æò°¡
loss, mse = model.evaluate(x_test, y_test, batch_size=1)
print('loss= %f, mse= %f' % (loss, mse))

validation_split »ç¿ëÇϱâ

validation_splitÀ» »ç¿ëÇÏ¿© ÀÚµ¿À¸·Î ºÐ¸® ÇÒ¼ö ÀÖ´Ù.
validation_split=0.2´Â À¯È¿¼º °Ë»ç¸¦ À§ÇØ 20% µ¥ÀÌÅ͸¦ »ç¿ëÇÏ°í validation_split=0.3Àº À¯È¿¼º °Ë»ç¸¦ À§ÇØ 20% µ¥ÀÌÅ͸¦ »ç¿ëÇÑ´Ù´Â ÀǹÌÀÌ´Ù.

from keras.models import Sequential
from keras.layers import Dense
import numpy as np

# µ¥ÀÌÅͼ »ý¼º
x_train = np.arange(1, 101)
y_train = x_train
x_test = np.arange(100, 201)
y_test = x_test
x_val = np.arange(200, 301)
y_val = x_val

# ¸ðµ¨ ±¸¼º
model = Sequential()
model.add(Dense( 10, input_shape=(1, ), activation='relu'))
model.add(Dense( 5))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam', metrics=['mse'])

# ¸ðµ¨ ÇнÀ
model.fit(x_train, y_train, epochs=100, batch_size=1, validation_data=(x_val, y_val))

# ¸ðµ¨ Æò°¡
loss, mse = model.evaluate(x_test, y_test, batch_size=1)
print('loss= %f, mse= %f' % (loss, mse))

validation_split »ç¿ë¹ýÀº ´ÙÀ½°ú °°´Ù.

model.fit(x_train, y_train, epochs=100, batch_size=1, validation_split=0.2)

ÂüÁ¶)
https://www.tensorflow.org/guide/keras/train_and_evaluate?hl=ko
https://luvris2.tistory.com/167#google_vignette
https://ebbnflow.tistory.com/125