저는 기계 학습을 처음 사용합니다.train_test_split의 테스트 데이터로 내 모델이 정상적으로 작동하는 데 왜 새 데이터가 없는가?
나는 지속적인 데이터 세트를 가지고있다. 여러 가지 기능을 사용하여 대상 레이블을 모델링하려고합니다. 열차와 테스트 데이터를 분리하기 위해 train_test_split 함수를 사용합니다. 나는 훈련하고 아래 코드를 사용하여 모델을 테스트입니다 :
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = Sequential()
model.add(Dense(128, input_dim=X.shape[1], kernel_initializer = 'normal', activation='relu'))
model.add(Dense(1, kernel_initializer = 'normal'))
hist = model.fit(X_train.values, y_train.values, validation_data=(X_test.values,y_test.values), epochs=200, batch_size=64, verbose=1)
내가 X_test을 사용했을 때 좋은 결과를 얻을 수있는 검증 데이터에 대한 y_test 그러나
https://drive.google.com/open?id=0B-9aw4q1sDcgNWt5TDhBNVZjWmc
,이 모델을 사용하는 경우 다른 데이터 (X_real, y_real) (train_test_split에 의해 임의로 선택되지 않는다는 것을 제외하면 X_test 및 y_test와 크게 다르지 않음)를 예측합니다.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = Sequential()
model.add(Dense(128, input_dim=X.shape[1], kernel_initializer = 'normal', activation='relu'))
model.add(Dense(1, kernel_initializer = 'normal'))
hist = model.fit(X_train.values, y_train.values, validation_data=(X_real.values,y_real.values), epochs=200, batch_size=64, verbose=1)
https://drive.google.com/open?id=0B-9aw4q1sDcgYWFZRU9EYzVKRFk
과도한 문제입니까? 그렇다면 왜 train_test_split에 의해 생성 된 X_test와 y_test로 내 모델이 정상적으로 작동합니까?
죄송합니다. 용어가 좋지 않습니다. 내 정의 "real_data"를 "유효성 검사 데이터"로 간주 할 수 있습니다. 검증 데이터가 필요한 이유는 무엇입니까? "테스트 데이터"가 충분하지 않습니까? 모델이 "테스트 데이터"를 사용해도 "검증 데이터"로 어떻게 실패합니까? "테스트 데이터"를 사용한 결과에는 높은 편차가 있다는 것을 알고 있습니다. 하지만 제 경우에는 코드를 실행할 때마다 테스트 데이터를 확인하는 것이 좋지만 유효성 검사 데이터는 실패합니다. Btw. 내 데이터 세트는 시계열입니다. – Yahya
귀하의 추측은 지나친 문제였습니다. 다른 말로는 테스트 데이터에 맞지 않을 때까지 분류기를 교육합니다. 좋은 결과가 테스트 데이터에만 적용되지 않는다는 것을 확인하기 위해 보이지 않는 데이터를 보관하여 테스트 결과 (즉, 유효성 검사 데이터) 후의 생각대로 100 % 확실하게 분류 할 수 있습니다. 그러나 검증이 나쁘고 테스트가 좋은 분명한 이유는 두 데이터 세트가 서로 다르다는 것입니다. 그래서 질문은 당신이 가지고있는 데이터의 종류와 더 중요한 것입니다 : "실제 데이터"는 무엇이고 당신이 그것을 진짜라고 부르는 이유는 무엇입니까? –
당신 말이 맞아요. 유효성 검사 데이터가 교육 및 테스트 데이터와 다릅니다. – Yahya