1

scikit-learn의 GridSearchCV은 (내부) 교차 유효성 검사 폴드의 점수를 수집 한 다음 모든 폴드 수에 대한 평균을 계산하는 것으로 보입니다. 나는이 문제의 근본 원인에 대해 궁금해했다. 언뜻보기에는 교차 검증 폴드의 예측을 수집 한 다음 선택한 폴링 메트릭을 모든 폴드의 예측에 적용하는 것이 더 유연 해 보입니다.Scikit-learn : GridSearchCV에서 채점

나는이 우연히 그 이유는 내가 (v0.20.dev0을 scikit 배우기) cv=LeaveOneOut()scoring='balanced_accuracy' 설정 불균형 데이터를 GridSearchCV를 사용하는 것입니다. 균형 잡힌 정확도 (또는 리콜)와 같은 채점 척도를 각 왼쪽 샘플에 적용하는 것은 이치에 맞지 않습니다. 오히려 모든 예측을 먼저 수집 한 다음 모든 예측에 한 번 내 점수 메트릭을 적용하려고합니다. 아니면 추론에 오류가 있습니까?

업데이트 : 난 예측 먼저 채점 메트릭이 한번인가되는 모든 내부 폴드와 수집 된 차이 GridSearchCV에 기초하여 정의 그리드 검색 클래스를 생성하여이를 해결.

답변

1

GridSearchCV은 채점을 사용하여 모델에 설정할 내부 하이퍼 매개 변수를 결정합니다.

"최적"하이퍼 매개 변수의 성능을 평가하려면 교차 유효성 검사의 추가 단계를 수행해야합니다.

http://scikit-learn.org/stable/auto_examples/model_selection/plot_nested_cross_validation_iris.html

편집이 실제 질문에 대답에 가까워을 참조하십시오 : 각각의 배에 대한 예측을 수집하고 LeaveOneOutbalanced_accuracy를 사용하려면 다음, 그들 모두를 점수 합리적인 것 같다 나를 위해 . 나는 당신이 그것을하기 위해 자신의 그리드 검색자를 만들어야 할 것 같아요. 이 경우 model_selection.ParameterGridmodel_selection.KFold을 사용할 수 있습니다.

+0

네,하지만 제 질문은 그와 관련이 있습니다 .-'GridSearchCV'는 득점을 사용합니다. 별도로 각 내부 교차 유효성 검사 배율에 점수를 적용한 다음 모든 내부 접기 예측을 먼저 수집 한 다음 점수 측정 지표를 한 번 적용하는 대신 스코어 전체에서 평균을 계산합니다. 제 경우에는 후자가 더 적절할 것 같습니다. – monade

+0

그래, 그 질문을 오해했다. 'LeaveOneOut'와'balanced_accuracy'를 사용하고 싶다면 각 폴드에 대한 예측을 모아서 모두 채점하는 것이 합리적입니다. 나는 그렇게하기 위해 자신의 그리드 탐색자를 만들어야 할 것 같다. 'model_selection.ParameterGrid'와'model_selection.KFold'를 사용할 수 있습니다. – KPLauritzen

+0

고마워요 @KPLauritzen, 제가 할게요! – monade