하이퍼 파라미터 튜닝 기준 테스트 데이터 및 모델 선택 기반 검증 데이터를 수행 한 후 전체 데이터에 대해 최종 모델을 학습하지 않는 이유는 무엇입니까?


9

전체 데이터에서 나는 훈련 + 테스트 + 검증을 의미합니다.

유효성 검사 데이터를 사용하여 하이퍼 파라미터를 수정하고 테스트 데이터를 사용하여 모델을 선택하면 전체 데이터에 대해 모델을 학습하여 모델을 학습하는 것보다 매개 변수를 더 잘 학습하는 것이 좋습니다. 열차 데이터


2
테스트 데이터를 사용하여 하이퍼 파라미터를 수정해서는 안됩니다. 블라인드 컨트롤 그룹 (테스트 세트)을 제거하여 전체 실험을 망쳤습니다.
JahKnows

@JahKnows 모델의 하이퍼 매개 변수 조정을 마친 후에는 다른 데이터 집합에서 일반화가 얼마나 잘되는지 알지 못한다는 점을 제외하고는 해를 이해하지 못합니다. 실험을 망치는 방법은 무엇입니까? 내가 뭔가를 놓치고 있습니까?
Apoorva Abhishekh

답변:


8

문제는 잘못된 가정에 있습니다. 많은 사람들이 "할 수없는"말을합니다.

실제로 널리 배포 된 sklearn 패키지 의 그리드 검색 구현은 바로 그 일을합니다. refit=False그렇지 않으면 전체 데이터를 사용하여 최종 모델을 재교육합니다.

일부 하이퍼 매개 변수의 경우 데이터 양과 관련이 있기 때문에 바람직하지 않을 수 있습니다. 예를 들어 의사 결정 트리에min_samples_leaf 대한 정리 전 전술을 고려하십시오 . 더 많은 데이터가 있으면 사전 정리가 원하는대로 수행되지 않을 수 있습니다.

그러나 다시 말하지만, 대부분의 사람들은 실제로 교차 검증 후 전체 데이터를 사용하여 재교육을 실시하여 가능한 최고의 모델로 끝납니다.

부록 : @NeilSlater에 따르면 일부 사람들은 CV 위에서 홀드 아웃을합니다. 다시 말해, 그들은 기차 테스트 분할을 한 다음 훈련에서 모델 선택을 수행합니다. 그에 따르면, 그들은 원래의 훈련 세트 스플릿을 사용하여 재 훈련하지만 테스트 세트는 사용하지 않습니다. 그런 다음 테스트 세트를 사용하여 최종 모델 추정을 수행합니다. 개인적으로, 나는 이것에 대해 세 가지 결함을 봅니다. 데이터가 낭비되지 않도록 내포 된 교차 검증과 같은 방법 및 (c) 홀드 아웃은 데이터가 거의 없을 때 모델이 일반화되는 방식을 유추하는 끔찍한 방법입니다.


이 기능은 교차 유효성 검사 재사용에 관한 것입니다. 교차 유효성 검사의 가정 만 있고 성능 측정 값이 없기 때문에 테스트 데이터를 재사용하는 것은 바람직하지 않습니다. 그렇지 않으면 버그 나 문제 매개 변수 (예 : 제공 한 예)가 모델을 감지 할 수 없게 악화시킬 수 있습니다.
Neil Slater

@NeilSlater 나는 당신이 여기서 말한 것을 이해하지 못합니다 : "이 기능은 교차 유효성 검사 재사용에 관한 것입니다"
Ricardo Cruz

"feature"-> refitGridSearchCV 기능 의 옵션. 보류 된 테스트 데이터를 포함하는 것은 적합하지 않습니다 (해당 데이터를 볼 수조차 없음).
Neil Slater

@NeilSlater, 당신이 나를 믿지 않는다면 쉽게 코드를 확인할 수 있습니다 (여기) . refit = True이면 "전체 데이터 세트를 사용하여 최상의 추정량을 맞추십시오".
Ricardo Cruz

1
@ NeilSlater, 그것은 내 경험이 아니지만 다른 사람들이 혜택을 볼 수 있도록 내 의견에 귀하의 경험을 추가했습니다. 감사합니다.
Ricardo Cruz

1

그래 넌 할수있어.

테스트 데이터는 유사한 분포에서 데이터를 학습하기 위해 제공되므로 모델을 손상시키지 않습니다. 모델을 올바르게 훈련했다면 큰 변화가 없습니다 (이전 테스트 / 검증 데이터의 정확도 측정법 제외).

그러나 테스트 데이터가 열차 데이터와 정확히 동일한 분포에서 나온다는 것은 거의 사실이 아니므로 실제 응용 사례 시나리오에서 모델의 일반화 가능성을 높일 수 있습니다.


1
이 제안에 따라 테스트 데이터를 포함 할 때의 문제점은 이제 모델의 일반화 정도를 측정 할 수 없다는 것입니다. 예, 일반화가 더 나아질 것으로 기대할 수 있습니다. 그러나, 당신은하지 않습니다 알고 당신이 그것을 측정 할 수있는 능력을 제거했기 때문에. 나는 그 경고를 추가하고 때로는 왜 여전히 괜찮은지를 설명한다. – 그것은 위험하지만)
Neil Slater

@ NeilSlater : 다른 데이터 세트에서 일반화하는 것이 얼마나 좋은지를 측정 할 수있는 능력을 제거했음을 이해합니다. 그러나 테스트와 홀드 아웃이 모두있는 경우 하이퍼 파라미터 튜닝 후에도 모델을 기차 + 테스트에서 다시 훈련시킬 수 있지만 모델이 일반화되는 방법을 확인하기 위해 홀드 아웃 상태로 남아 있습니다. 나는 이것이 내가 요구 한 것과 다르다는 것을 안다. 그러나 나는 단지 당신의 견해를 알고 싶습니다.
Apoorva Abhishekh

1
@ApoorvaAbhishekh : 또 다른 홀드 아웃 데이터 세트가 있다면, new_train = {old train, old cv, old test}에서 훈련 된 새 모델에 대한 새 테스트 세트로 사용할 수 있습니다. 그럼 당신은 일반화의 척도를 얻을 것입니다. 과도하게 사용하지 않도록주의해야하지만 새로운 조합 세트에 문제가있는 경우 (예 : 더 많은 데이터로 인해 조기 중지가 변경되어야 함)이를 새로운 cv 세트로 사용할 수도 없습니다. . . 다른 홀드 아웃이 준비 되지 않은 경우를 제외하고 . . .
Neil Slater

@NeilSlater 이론적으로 성능을 알기 위해서는 새로운 데이터 셋이 필요합니다. 실제로 오랜 시간 동안 작업하고 기대할 사항을 알면 모델의 성능이 향상 될 수 있습니다. 그러나 일반적으로 컴퓨터 비전-레이블이없는 데이터와 같이 모델의 성능을 확인하기위한 다른 데이터도 있습니다. 옳지 않지만 작동합니다. 물론 극단적 인 경우이지만 그것이 효과가 있다고 말하고 싶습니다. 나 자신은 항상 훈련에 섞이지 않는 테스트 세트를 가지고 있습니다.
Il'ya Zhenin

1

이 질문에 대한 답변은 사용하는 교육 알고리즘 (기술)에 따라 다릅니다. 예를 들어, 훈련 및 검증 (테스트는 아님) 세트가 마지막에 결합되는 앙상블 분류에서 몇 가지 접근법을 보았습니다. 유효성 검사조차도 주로 하이퍼 파라미터를 결정하는 데 사용된다는 것을 아는 것이 중요합니다. 이러한 하이퍼 파라미터 중 일부는 훈련에 사용 된 데이터의 함수일 수 있습니다. 예를 들어, 중지 시점을 파악하는 데 사용되는 DNN 검증에서는 네트워크의 매개 변수 (가중치) 조정을 유지 한 결과로 과적 합이 발생할 수 있으므로 중지 시점을 알 수있는 방법이 필요합니다. 유효성 검사를 설정하지 않으면 훈련 과정에서 맹목적으로 걸을 것입니다. 반면에 이전에 지정된 것과 동일한 수의 반복을 사용하는 경우 이러한 추가 샘플에서 얻을 수없는 가능성이 높습니다. 테스트 세트가 없으면 위에 표시된대로 테스트 세트를 전혀 만지지 않아야합니다. 모델을 평가할 방법이 없습니다. 이것은 도박이며, 실제 데이터 분포 (테스트 데이터로 표시)에 대한 정확도를 추정하지 않고는 모델이나 솔루션을 제공 할 수 없습니다.


기차 데이터에 대한 교육, 유효성 검사 데이터에 대한 하이퍼 파라미터 튜닝 및 테스트 데이터를 기반으로 모델 선택을 선택한 후 모델 기반 전체 데이터를 교육 할 수 있습니까? 또는 하이퍼 파라미터 튜닝을 마친 후에 교육 데이터와 유효성 검사 데이터를 결합하고 테스트 데이터를 사용하여 정확도를 추정 할 수 있습니까? 잘못 써서 죄송합니다. 지금 수정했습니다.
Apoorva Abhishekh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.