(나는 이미 대부분의 답변에 이것을 썼다고 확신하지만 지금은 그것을 찾을 수 없습니다. 누군가 그 답변을 우연히 발견하면 연결하십시오). 나는 여기에 두 가지 약간 다른 접근법을 보았습니다.
그러나 먼저 몇 가지 용어 :
- 적용 분야에서 나에게 맞는 (적합한 / 훈련 된) 모델 은 바로 사용할 수 있습니다. 즉, 모델에는 새 데이터에 대한 예측을 생성하는 데 필요한 모든 정보가 포함 됩니다. 따라서 모델에는 하이퍼 파라미터 도 포함 됩니다. 보다시피,이 관점은 아래의 접근법 2와 밀접한 관련이 있습니다.
- OTOH, 내 경험에 대한 훈련 알고리즘 은 다음과 같은 의미로 잘 정의되어 있지 않습니다. 하이퍼 파라미터도 수정해야합니다. 내 응용 프로그램 관점에서 보면 매개 변수와 하이퍼 매개 변수 사이에는 큰 차이가 없습니다. 둘 다 모델의 일부이며 훈련 중에 추정 / 결정해야합니다.
그들 사이의 차이점은 일반적으로 몇 가지 조향 매개 변수 ( 하이퍼 매개 변수와 함께 훈련 알고리즘 클래스를 설명하는 새로운 훈련 알고리즘을 개발하는 사람의 차이와 관련이 있다고 생각합니다.)는 애플리케이션 / 도메인 지식없이 수정 (또는 적어도 결정 / 추정 방법을 수정)하기 어렵거나 불가능합니다.
접근법 1 : 안정적인 최적화 결과 필요
이 접근 방식에서 "모델 교육"은 "일반"모델 매개 변수에 적합하며 하이퍼 파라미터 가 제공됩니다. 내부 교차 검증은 하이퍼 파라미터 최적화를 처리합니다.
하이퍼 파라미터 세트를 선택해야하는 딜레마를 해결하기위한 여기서 중요한 단계 / 가정 은 최적화가 안정적 이어야한다는 것 입니다. 유효성 검증을위한 교차 검증은 모든 대리 모델이 최종 모델과 동일하게 (최종 모델뿐만 아니라) 동일하게 취급 할 수 있도록 최종 모델 (전체 데이터 세트에 적용되는 동일한 훈련 알고리즘에 의해 획득 됨) 과 충분히 유사하다고 가정합니다 . 이 가정이 무너지면
대리 모델은 여전히 동일하지만 최종 모델과 동일하지는 않지만 교차 검증의 잘 알려진 비관적 편향에 대해 이야기하고 있습니다.
대리 모델도 서로 같거나 같지 않으면 불안정성에 문제가 있습니다 .
내부 루프의 최적화 결과 는 최적화가 안정적인 경우 하이퍼 파라미터를 선택할 때 충돌이 없음을 의미합니다 . 그리고 상당한 변화가 내부 교차 검증 결과를 통해 관찰되는 경우, 최적화가 안정되지이다 . 불안정한 훈련 상황은 하이퍼 파라미터 중 어떤 것을 선택해야하는지 결정하는 것보다 훨씬 더 심각한 문제가 있으며,이 경우에는 물러나서 모델링 프로세스를 시작하는 것이 좋습니다.
그러나 여기에는 예외가 있습니다. 최적화에는 실제 목적에 대해 동일한 성능을 제공하는 몇 가지 로컬 최소값이있을 수 있습니다. 그들 중 안정적인 선택을 요구하는 것은 불필요 한 강력한 요구 사항 일 수 있지만이 딜레마에서 벗어날 수있는 방법을 모르겠습니다.
모든 모델이 동일한 승률 매개 변수 세트를 생성하지 않는 경우 일반 루프 오류로 외부 루프 추정값을 사용해서는 안됩니다.
- 피
- 그러나 모든 스플릿이 동일한 파라미터를 생성 할 때 의사 결정이 없으면 외부 루프에서 독립성이 깨집니다. 각 스플릿의 테스트 데이터는 다른 모든 스 플리트에서 데이터를 학습하여 사용 된 파라미터 세트가 이미 결정된 결정에 이미 들어갔습니다. 매개 변수를 최적화합니다.
접근법 2 : 하이퍼 파라미터 튜닝을 모델 교육의 일부로 취급
이 방법은 "훈련 알고리즘 개발자"의 관점과 훈련 알고리즘의 응용 사용자를 연결합니다.
교육 알고리즘 개발자는 "나이키"교육 알고리즘을 제공 model = train_naked (trainingdata, hyperparameters)
합니다. 적용되는 사용자의 요구에 tunedmodel = train_tuned (trainingdata)
따라 하이퍼 파라미터를 수정해야합니다.
train_tuned
네이 키드 트레이닝 알고리즘 주위에 교차 검증 기반 옵티 마이저를 래핑하여 구현할 수 있습니다 train_naked
.
train_tuned
그런 다음 하이퍼 파라미터 입력을 필요로하지 않는 다른 교육 알고리즘과 같이 사용할 tunedmodel
수 있습니다. 예를 들어, 출력 을 교차 검증 할 수 있습니다. 이제 교차 검증의 평가의 일부로 "정상"파라미터가 안정성을 확인해야하는 것처럼 하이퍼 파라미터가 안정성을 확인합니다.
개별 매개 변수 세트에 관계없이 모든 우승 모델의 평균 성능을내는 경우 중첩 교차 검증에서 실제로 수행하는 작업입니다.
차이점이 뭐야?
우리는 아마도 두 가지 접근법을 취하는 다른 최종 모델로 끝날 수 있습니다.
- 접근법 1의 최종 모델은
train_naked (all data, hyperparameters from optimization)
- 반면 접근 방식 2는
train_tuned (all data)
더 큰 데이터 세트에서 하이퍼 파라미터 최적화를 다시 실행하므로 다른 하이퍼 파라미터 세트로 끝날 수 있습니다.
그러나 동일한 논리가 적용됩니다. 최종 모델이 교차 검증 대리 모델과 실질적으로 다른 매개 변수를 갖는 경우, 이는 가정 1이 위반되는 증상입니다. 따라서 IMHO는 다시 우리는 갈등이 아니라 오히려 (내재적 인) 가정이 정당화되는지 점검합니다. 그리고 그렇지 않다면, 우리는 어쨌든 최종 모델의 성능을 제대로 평가하는 데 너무 많은 돈을 걸지 않아야합니다.
많은 사람들이 접근법 1을 수행하는 중첩 교차 검증에 대해 생각하는 인상 (여기 CV에서 비슷한 질문 / 혼란의 수를 보았 음)을 보았습니다. 그러나 일반화 오류는 일반적으로 접근법 2에 따라 추정됩니다. 최종 모델.
아이리스 예
요약 : 최적화는 기본적으로 의미가 없습니다. 사용 가능한 샘플 크기는 여기서 매개 변수 세트의 성능을 구별 할 수 없습니다.
그러나 적용 관점에서, 결론은 4 가지 매개 변수 세트 중 어느 것이 든 중요하지 않다는 것입니다. 이는 나쁜 소식이 아닙니다. 다음은 조정 된 모델에 대한 적절한 내포 검증의 이점을 제공합니다. 모델이 최적의 모델이라고 주장 할 수는 없지만 접근 방식 2를 사용하여 전체 데이터를 기반으로 구축 한 모델이 가지고 있다고 주장 할 수는 있습니다. 약 97 % 정확도 (150 개의 테스트 사례 중 145 개에 대한 95 % 신뢰 구간 : 92-99 %)
접근법 1도 그다지 멀지 않은 점에 유의하십시오-아래를 참조하십시오 : 최적화로 인해 넥타이 때문에 상대적으로 명확한 "우승자"를 실수로 놓쳤습니다 (실제로 샘플 크기 문제의 또 다른 매우 심각한 증상입니다).
C = 1이 여기에서 좋은 선택이 될 것임을 "볼"정도로 SVM에 충분히 깊이 익숙하지는 않지만 더 제한적인 선형 커널을 사용합니다. 또한 최적화 를 수행 한 것처럼 모든 매개 변수 세트가 실질적으로 동일한 성능을 제공한다는 사실을 알고 있더라도 당첨 매개 변수 세트를 선택하는 데 아무런 문제가 없습니다.
그러나 미래에는 경험이 기대할 수있는 성능에 대한 대략적인 추측과 어떤 모델이 좋은 선택이 될지에 대해 고려하십시오. 그런 다음 수동으로 고정 된 하이퍼 파라미터를 사용하여 해당 모델을 빌드하고 성능에 대한 신뢰 구간을 계산하십시오. 이를 사용하여 최적화 시도가 합리적인지 여부를 결정하십시오. (독립적 인 표본 크기가 큰 현장에있는 경우 상황이 훨씬 나아 보인다면 10 개의 독립 사례를 얻는 것이 쉽지 않은 데이터를 주로 사용하고 있다고 덧붙일 수 있습니다.)
긴 버전 :
예를 들어 iris
데이터 세트 에 대한 결과 입니다. iris
150 개의 경우, 2 x 2 매개 변수의 그리드 (2 개의 커널, 2 개의 페널티에 대한 페널티 C
) 를 갖는 SVM 이 고려됩니다.
내부 루프는 129 (2x) 및 132 (6x)로 분할됩니다. "최고"파라미터 세트는 C로 둘 = 1 단 내부 테스트의 정확도는 선형 또는 RBF 커널 간의 미정 모두 98.5 % 관측 정밀도 - (94) 내에서 (항상 잃어버린 C = 10을 포함). 분할 중 하나에서 가장 큰 차이는 r = 1의 C = 1 대 10의 rbf에 대한 3 대 8 오류입니다.
이것이 중요한 차이점은 없습니다. CV에서 개별 사례에 대한 예측을 추출하는 방법을 모르지만 3 오류가 공유되고 C = 10 모델이 5 오류를 추가로 가정한다고 가정합니다.
> table (rbf1, rbf10)
rbf10
rbf1 correct wrong
correct 124 5
wrong 0 3
> mcnemar.exact(rbf1, rbf10)
Exact McNemar test (with central confidence intervals)
data: rbf1 and rbf10
b = 5, c = 0, p-value = 0.0625
alternative hypothesis: true odds ratio is not equal to 1
2 x 2 그리드에는 6 쌍의 비교가 있으므로 여러 비교도 수정해야합니다.
접근법 1
rbf가 선형 커널에서 "원"인 4 개의 외부 스플릿 중 3 개에서 실제로 동일한 추정 정확도를 가졌습니다.
그리드를 params = {'kernel':['linear', 'rbf'],'C':[1,10]}
수확량으로 변경
({'kernel': 'linear', 'C': 1}, 0.95238095238095233, 0.97674418604651159)
({'kernel': 'rbf', 'C': 1}, 0.95238095238095233, 0.98449612403100772)
({'kernel': 'linear', 'C': 1}, 1.0, 0.97727272727272729)
({'kernel': 'linear', 'C': 1}, 0.94444444444444442, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 0.94444444444444442, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 1.0, 0.98484848484848486)
({'kernel': 'linear', 'C': 1}, 1.0, 0.96212121212121215)
접근법 2 :
여기에, clf
최종 모델입니다. 를 사용하면 random_state = 2
C = 1 인 rbf가 이깁니다.
In [310]: clf.grid_scores_
[...snip warning...]
Out[310]:
[mean: 0.97333, std: 0.00897, params: {'kernel': 'linear', 'C': 1},
mean: 0.98000, std: 0.02773, params: {'kernel': 'rbf', 'C': 1},
mean: 0.96000, std: 0.03202, params: {'kernel': 'linear', 'C': 10},
mean: 0.95333, std: 0.01791, params: {'kernel': 'rbf', 'C': 10}]
(5 회, 1 6 회에 1에 대해 발생 linear
과 rbf
와 C = 1
순위 1에 연결되어 있습니다)