일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 정보보호
- RectQuery
- 알고리즘
- BottomTabNavigation
- 플러터
- 면접을위한CS전공지식노트
- 딥러닝
- 날짜포맷팅
- ReactNative
- 플러터앱개발공부
- 모두의딥러닝
- 앱개발
- 웹해킹
- tabBarBadge
- Flutter
- 명령형프로그래밍
- BottomTabBarNavigator
- 데이터베이스의기본
- 플러터공부
- react
- Object~
- 화면이동
- Flutter공부
- date-fns
- OpenWeatherApi
- 앱개발공부
- 플러터앱개발
- 선언형프로그래밍
- 하단탭바알림
- Navigation
- Today
- Total
기록하기
[모두의 딥러닝] Train Set, Test Set, 모델 성능 검사하기 본문
Train Set은 무엇인가요?
- Train set은 온전히 모델의 학습만을 위해서 사용됩니다. Train set을 통해 모델을 학습시키고, parameter나 feature등을 수정해서 모델의 성능을 높이는 작업을 거칠때 사용됩니다.
- 요약 : 모델의 학습을 위해 사용되는 데이터
Test Set은 무엇인가요?
- Test set은 최종적으로 우리가 만든 모델의 성능을 평가하기 위한 데이터셋이기 때문에 모델의 학습에는 전혀 사용되지 않습니다. 모델이 실상에 사용 되었을때도 성공적이기 위해서는 unseen data에 대해 좋은 성능을 발휘하는 것이 매우 중요한데, test set이 unseen data의 역할을 해주어 우리가 만든 모델의 성능을 효과적으로 평가할 수 있도록 도와주는 것입니다.
- 요약 : 생성된 모델을 예측성능을 평가하는데 사용된다.
Train Set과 Test Set을 나누는 이유는 무엇인가요?
- 과적합을 방지하기 위해서 Train Set과 Test Set을 분리합니다. 만약 주어진 데이터에만 치중하여 학습할 경우, 조금이라도 다른 패턴을 가진 데이터에 대해서는 모델의 성능이 떨어집니다. 때운에 validation data set을 활용하여 학습 중인 모델이 Overfitting 되었는지 확인하여, 학습을 조기에 종료하고, 하이퍼 파라미터를 튜닝하는 등의 조치를 취합니다. 해당 과정을 통해 모델피팅을 한 후, test data set에 대한 예측을 수행하여, 모델의 성능이 잘 나오는지 확인한다.
Train 예측률과 Test 예측률 어떤 것이 더 중요한가요?
- train 예츨률은 모델이 학습 데이터에 대해 얼마나 정확하게 예측하는지를 나타냅니다. 모델이 학습 데이터를 완벽하게 예측할 수 있을 때 Train 예측률운 100%r가 됩니다. 그러나, train 예측률이 100%일 때, 모델이 과적합 되었을 가능성이 높습니다. 그래서 새로운 데이터에 대해 좋은 예측을 할 수 없다는 것을 의미합니다. 어떤 것이 더 중요한지 판단 풀가능!
은닉층에 따라 어떻게 바뀔까요?
- 은닉층의 수가 증가하면 모델의 복잡성이 증가하게 됩니다. 이로 인해 모델은 훈련 데이터에 대해 더욱 높은 정확도를 얻게 되지만, 일반화 능력이 감소할 수 있습니다. 따라서, 훈련 세트와 테스트 세트가 변경되지는 않지만, 모델 훈련 데이터에 오버피팅되는 경향이 높아질 수 있습니다.
훈련 세트와 테스트 세트는 일반적으로 동일한 데이터셋에서 추출됩니다. 훈련 세트는 모델을 훈련시키는데 사용되고, 테스트 세트는 모델의 성능을 평가하는 데 사용됩니다. 따라서, 훈련 세트와 테스트 세트는 모델이 학습하고 일반화해야 하는 동일한 패턴을 포함하고 있어야합니다.
그러나, 모델의 은닉층이 늘어남으로써 모델이 학습하는 함수의 복잡도가 증가할 수 있습니다. 이 경우 모델이 훈련 세트에 지나치게 적합되어 있는 경우가 많아져서, 테스트 세트의 정확도가 감소할 수 있습니다. 이러한 문제를 방지하기 위해서는, 적적한 정규화 기법등을 사용하거나, 은닉층의 수와 크기를 조절하면서 적절한 균형을 유지해야합니다.
광물 분석 데이터로 train과 test를 나누고 test 결과 값이 가장 높도록 은닉층 조절해서 코딩해보기
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from sklearn.model_selection import train_test_split
import pandas as pd
!git clone https://github.com/taehojo/data.git
df = pd.read_csv('./data/sonar3.csv', header=None)
X = df.iloc[:,0:60]
y = df.iloc[:,60]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, shuffle=True)
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 = 'binary_crossentropy', optimizer='adam', metrics=['accuracy'])
history = model.fit(X_train, y_train, epochs=200, batch_size=10)
score = model.evaluate(X_test, y_test)
print('Test accuracy:', score[1])
결과
'AI 수업' 카테고리의 다른 글
[모두의 딥러닝] 과적합에 대해 알아보자! (0) | 2023.05.08 |
---|---|
[모두의 딥러닝] K겹 교차 검증 (0) | 2023.04.24 |
[모두의 딥러닝] 다중 분류 문제 해결하기 (0) | 2023.04.17 |
[모두의 딥러닝] 피마 인디언의 당뇨병 예측 실행 (0) | 2023.04.10 |
[모두의 딥러닝] 히트맵 그리기 (0) | 2023.04.10 |