교차 유효성 검사 후 분류기를 선택하는 방법은 무엇입니까?


13

k- 폴드 교차 검증을 수행 할 때 테스트 정확도가 가장 높은 분류기를 사용해야합니까? 교차 검증에서 분류자를 얻는 데 일반적으로 가장 좋은 방법은 무엇입니까?


이 질문은 "최상의 접근 방식"을 결정하는 데 사용되는 메트릭에 따라 크게 달라집니다. 정량적으로 많은 사람들이 정확도를 사용하지만 데이터 세트에 따라 F1-Score와 같은 고조파 평균과 같은 다른 메트릭을 사용할 수 있습니다. 따라서 미터법 선택도 마찬가지로 중요 할 수 있습니다.
Nathan McCoy

@NathanMcCoy는 정확도를 가정 할 때 테스트 정확도가 가장 높은 분류기를 선택합니까?
Armon Safai

확실한! 다른 생각을하려고합니다. :)
Nathan McCoy

답변:


15

이 두 가지 작업 중 하나를 수행 할 때 교차 유효성 검사를 수행합니다.

  • 모델 선택
  • 모형의 오차 추정

모델 선택은 다른 시나리오에서 발생할 수 있습니다.

  • 특정 문제 / 데이터 세트에 대해 하나의 알고리즘 대 다른 알고리즘 선택
  • 특정 문제 / 데이터 세트에 대한 특정 알고리즘의 하이퍼 파라미터 선택

(알고리즘을 선택하고 모델이라고 부르는 것이 좋으며 하이퍼 파라미터 검색을 수행하는 경우 중첩 교차 검증을 수행해야합니다. 중첩 CV가 실제로 필요합니까? )

교차 검증은 오차 추정치가 해당 모델의 일반화 오차와 가장 가까운 것으로 어느 정도까지 보장합니다 (이것은 매우 근사하기는 어렵지만). 접힘 사이의 평균 오차를 관찰 할 때 전체 데이터 세트를 기반으로하는 모델에 대해 예상되는 오차를 잘 예측할 수 있습니다. 또한 예측의 분산을 관찰하는 것이 중요합니다. 즉, 오류가 접기마다 얼마나 달라지는 지입니다. 변동이 너무 높으면 (상당히 다른 값) 모형이 불안정 해지는 경향이 있습니다. 부트 스트랩은이 점에서 좋은 근사치를 제공하는 다른 방법입니다. ELS-Standford 에서 자유롭게 구할 수있는 "통계학의 요소"에 관한 7 장을주의 깊게 읽어보십시오.

앞에서 언급했듯이 접힌 부분에서 빌드 된 모델을 가져서는 안됩니다. 대신 전체 데이터 세트 (폴드로 분할 된 모델)로 모델을 다시 작성해야합니다. 테스트 세트가 분리되어 있으면이 최종 모델을 사용하여 CV에서 얻은 것과 유사한 오류를 얻을 수 있습니다. 그러나 CV 절차에서 제공 한 예상 오차에 의존해야합니다.

다른 모델 (알고리즘 조합 등)로 CV를 수행 한 후 오류와 접기 간 편차에 대해 더 나은 성능을 가진 모델을 선택했습니다. 전체 데이터 세트로 모델을 다시 작성해야합니다. 우리는 일반적으로 모델 선택을 참조하면서 모델이 데이터에 기반한 예측 가능한 모델이라고 생각하지만,이 경우 적용하는 알고리즘 + 사전 절차의 조합을 나타냅니다. 따라서 예측 / 분류를 만드는 데 필요한 실제 모델을 얻으려면 전체 데이터 집합에서 승자 조합을 사용하여 모델을 작성해야합니다.

마지막으로 주목할 점은 어떤 종류의 전처리를 적용하는 경우 클래스 정보 (기능 선택, LDA 차원 축소 등)를 사용하는 경우 이전에 데이터가 아니라 모든 폴드에서 수행해야한다는 것입니다. 이것은 중요한 측면입니다. 데이터의 직접적인 정보 (PCA, 정규화, 표준화 등)를 포함하는 전처리 방법을 적용하는 경우에도 동일한 작업을 수행해야합니다. 그러나 데이터에 의존하지 않는 전처리를 적용 할 수 있습니다 (전문가의 의견에 따라 변수를 삭제하지만 다소 분명합니다). 이 비디오는 그 방향으로 당신을 도울 수 있습니다 : CV 옳고 그른 방법

여기, 주제에 관한 마지막 멋진 설명 : CV 및 모델 선택


알다시피, 실제로 별도의 테스트 데이터가 필요합니까, 아니면 이미 교차 검증을 수행하고 모델에 대한 대략적인 테스트 오류를 ​​얻은 이후로 모든 데이터의 100 %에 대해 분류자를 훈련시킬 수 있습니까?
Armon Safai

"오류에 대한 더 나은 수행 한 선택에 대한 +1 과 주름 사이의 분산을 ". 모델을 선택할 때 모든 사람이 폴드 간의 분산을 무시하는 것 같습니다.
stmax

CV 오류 만 신경 쓰면 왜 테스트 오류를 ​​처리해야합니까? 나는 당신이 "CV 절차에 의해 주어진 추정 된 오류에 대해 정말로"썼기 때문에 물었다.
HelloWorld

다른 질문. 전체 데이터 세트에 대해 구축 할 때 CV의 최고 모델이 최고 모델이 아닌 경우 어떻게해야합니까?
HelloWorld

1
데이터의 100 %에서 모델을 작성합니다. 이는 교차 검증에 사용 된 데이터의 100 %에서 의미합니다. 훈련 및 추가 테스트를 위해 원래 데이터를 80 % -20 %로 분할 한 경우 80 %에서 CV를 수행하고 모델을 선택하고 전체 80 %에서 재교육합니다. 이 경우에 테스트 세트 (20 %)를 사용하면 보이지 않는 새로운 데이터가 어떻게 작동하는지 확인할 수 있습니다 (향후 사용 가능한 데이터로 생각할 수 있음). 사용하는 오류 추정은 CV에서 얻은 것입니다. . 새 모델이 좋은 모델 (20 % 또는 실제로는 새 데이터) 인 경우 새 데이터와 유사한 오류가 발생하기를 바랍니다. @ArmonSafai
Javierfdr

8

아니요. k- 겹 교차 검증 중에 만들어진 k 분류자를 선택하지 마십시오. 우선, 교차 검증의 목적은 예측 모델을 제시하는 것이 아니라 예측 모델이 실제로 얼마나 정확하게 수행되는지 평가하는 것입니다. 두 번째로, 논쟁을 위해 k = 10으로 k-fold cross-validation을 사용하여 주어진 분류 문제를 해결하는 데 가장 적합한 세 가지 분류 알고리즘 중 하나를 찾는다고 가정 해 봅시다. 이 경우, 데이터는 동일한 크기의 k 부분으로 무작위로 분할됩니다. 부품 중 하나는 테스트 용으로 예약되어 있으며 나머지 k-1 부품은 교육용으로 사용됩니다. 교차 검증 프로세스는 k 회 반복되어 반복 할 때마다 다른 부분이 테스트에 사용됩니다. 교차 검증을 실행 한 후 각 접기의 결과를보고 어떤 분류 알고리즘 (훈련 된 모델도 아님)이 가장 적합한 지 궁금합니다. 10 개의 반복 중 하나에서 테스트 정확도가 가장 높은 알고리즘을 선택하고 싶지 않습니다. 특정 반복에 대한 테스트 데이터에 매우 쉬운 예제가 포함되어 있기 때문에 무작위로 발생했기 때문에 테스트 정확도가 높습니다. 당신이하고 싶은 것은 최고의 정확도를 생성하는 알고리즘을 선택하는 것입니다 그런 다음 높은 테스트 정확도로 이어집니다. 당신이하고 싶은 것은 최고의 정확도를 생성하는 알고리즘을 선택하는 것입니다 그런 다음 높은 테스트 정확도로 이어집니다. 당신이하고 싶은 것은 최고의 정확도를 생성하는 알고리즘을 선택하는 것입니다모든 k 배에 걸쳐 평균 . 알고리즘을 선택 했으므로 전체 교육 데이터를 사용하여 알고리즘을 학습하고 예측을 시작할 수 있습니다.

이것은이 질문의 범위를 벗어나지 만 선택한 알고리즘을 최대한 활용하려면 모델의 하이퍼 파라미터 (있는 경우)를 최적화해야합니다. 사람들은 일반적으로 교차 검증을 사용하여 하이퍼 파라미터 최적화를 수행합니다.


10 개의 서로 다른 훈련 데이터 세트가 있기 때문에 k- 폴드 교차 검증이 k 개의 다른 모델을 생성한다고 생각했습니다.
Armon Safai

업데이트 된 답변을 확인하십시오. 나는 질문을 더 직접적으로 다루고 예제를 통해 더 잘 설명하기 위해 그것을 다듬었다.
tuomastik

난 당신이 마지막으로 당신의 분류를 양성 때, 당신은 교차 검증에서 알고리즘을 선택한 후 분류를 양성하는 모든 데이터를 사용합니까 참조
ARMON Safai을

예, 내부 CV 루프가 하이퍼 파라미터 튜닝을 관리하고 외부 CV 루프가 최적의 독립적 인 데이터 세트에서 모델 성능을 평가하는 중첩 교차 검증이 필요한 하이퍼 파라미터 최적화와 같은 추가 분석을 수행하지 않으려는 경우 하이퍼 파라미터.
tuomastik

1

따라서 80 %를 교육으로 사용하고 20 %를 유효성 검사 데이터로 사용하는 교육이 있다고 가정하겠습니다. 우리는 80 %를 훈련하고 나머지 20 %를 테스트 할 수 있지만 우리가 취한 20 %는 실제 테스트 데이터와 유사하지 않으며 후자의 성능이 좋지 않을 수 있습니다. 이를 방지하기 위해 k- 폴드 교차 검증을 사용할 수 있습니다.

따라서 모델이 다르고 데이터 세트에서 어떤 성능이 더 우수한지 알고 싶다면 k- 폴드 교차 검증이 효과적입니다. k- 검증 성능에 대한 검증 오류를 알고이를 기반으로 더 나은 모델을 선택할 수 있습니다. 이것은 일반적으로 k- 폴드 교차 검증의 목적입니다.

하나의 모델 만 사용하고 k- 폴드 교차 검증으로 확인하는 경우 테스트 데이터의 대략적인 오류를 얻을 수 있지만 when you are actually training it finally, you can use the complete training data(여기서 전체 데이터가 일부보다 더 잘 수행된다고 가정하기 때문에) 때로는 그렇지 않을 수도 있지만 이것이 일반적인 가정입니다.)


교차 검증을 할 때 테스트 정확도가 가장 높은 모델을 선택하기 만합니까?
Armon Safai

테스트 할 때 유효성 검사 데이터 세트의 테스트 권한을 의미합니까?
Hima Varsha

내가 무슨 뜻인지 모르겠는데 그게
ARMON Safai

교차 검증을 사용하여 더 나은 성능의 모델을 선택하면 (예 : 2 개의 모델 선형 회귀 또는 신경망이있는 경우) 모든 데이터에 대해 해당 모델을 학습합니다 (선형 회귀 또는 신경망인지 여부)
Hima 바르샤

1
@HimaVarsha 그래서 우리가 평균을 취하기로 결정했다면, 우리는 어떻게 "평균 분류기"를 선택할 것입니까?
Armon Safai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.