Scikit-learn에서 SVC와 LinearSVC의 차이점을 설명 할 수 있습니까?


19

나는 최근에 일하는 법을 배우기 시작 sklearn했고이 독특한 결과 를 보았습니다 .

나는 사용 digits가능 데이터 세트 sklearn다른 모델 및 추정 방법을 시도 할 수 있습니다.

데이터에서 Support Vector Machine 모델을 테스트 할 때 sklearnSVM 분류 에 대해 두 가지 다른 클래스가 있음을 발견했습니다 . SVC그리고 LinearSVC전자는 일대일 접근 방식을 사용하고 다른 하나일대일 접근 방식을 사용합니다.

결과에 어떤 영향을 줄 수 있는지 알지 못했기 때문에 두 가지를 모두 시도했습니다. 나는 몬테 카를로 스타일의 추정을 수행하여 두 모델을 500 번 실행했는데, 매번 샘플을 무작위로 60 % 훈련과 40 % 테스트로 나누고 테스트 세트에 대한 예측 오류를 계산했습니다.

정규 SVC 추정기는 다음과 같은 히스토그램 오류를 SVC 오류율 생성했습니다. 선형 SVC 추정기는 다음과 같은 히스토그램을 생성했습니다. 선형 SVC 오류율

그러한 뚜렷한 차이를 설명 할 수있는 것은 무엇입니까? 대부분의 시간에 선형 모델의 정확도가 높은 이유는 무엇입니까?

그리고 이와 관련하여 결과에서 뚜렷한 분극을 일으키는 원인은 무엇입니까? 1에 가까운 정확도 또는 0에 가까운 정확도 사이에는 아무 것도 없습니다.

비교를 위해 의사 결정 트리 분류는 약 .85의 정확도로 훨씬 더 정규적으로 분포 된 오류율을 생성했습니다.


나는 scikit-learn 문서가 차이점을 강조하지 않는다고 가정합니까? 확인 해봤 었니?
Rohit

1. SVC에서 어떤 커널을 사용 했습니까? 기본 설정 = "rbf"? 2. one-against-one과 one-against-all은 서로 다른 접근법입니다
kpb

문서는 주제에 대해 다소 희박합니다. 그것은 1 대 1과 1 대 나머지의 차이점을 언급하며 선형 SVS는Similar to SVC with parameter kernel=’linear’, but implemented in terms of liblinear rather than libsvm, so it has more flexibility in the choice of penalties and loss functions and should scale better (to large numbers of samples).
metjush

일반 SVC의 경우 기본 커널을 사용했습니다. 나는 1v1과 1vR이 다른 접근법이라는 것을 알고 있지만, 이것이 내가 알고 싶은 것 같아요-왜 그렇게 다른 결과를 생성합니까? 커널 선택입니까 아니면 다중 범주 분류에 대한 다른 접근입니까?
metjush

답변:


23

기본값이있는 일반 SVM은 방사형 기본 기능을 SVM 커널로 사용합니다. 이것은 기본적으로 가우시안 커널 일명 벨 커브입니다. 다른 클래스 사이에 사람이없는 땅은 가우시안 함수로 생성됨을 의미합니다. linear-SVM은 기본 함수에 선형 커널을 사용하므로 이것을 ^ 모양의 함수로 생각할 수 있습니다. 훨씬 덜 조정 가능하며 기본적으로 선형 보간입니다.

많은 정보를 제공하지 않았지만 게시 한 내용을 자세히 살펴보면 사람들 이이 질문을 망치고 있습니다. SVM의 기본 기능.

높고 낮은 바이어스와 높고 낮은 분산의 네 가지 영역을 설명하는 이 이미지 를 확인하십시오 . 분명히 가장 좋은 장소는 낮은 분산과 낮은 바이어스입니다.

다트 바이어스 편차 이미지

먼저 분산을 평가합니다-

이제 플롯을 살펴보십시오. 여기에 이미지 설명을 입력하십시오

비선형 기본 함수는 분산이 더 높습니다. 선형 커널보다 소음이 적은지 확인하십시오! 선형 커널은 분산이 더 낮습니다. 소음이 적은지 확인하십시오!

이제 편견을 평가하자-

어느 커널이 더 정확합니까? 제공하신 오류를 추가 할 수 있습니다. 비선형 커널의 총 오류는 ~ 550 + 325 = ~ 875입니다. 선형 커널의 오류는 ~ 690 + ~ 50 = ~ 740입니다. 따라서 선형 커널 전반적으로 더 나은 것처럼 보이지만 전반적으로 매우 가깝습니다. 이것은 까다로워졌습니다!

함께 모아서

선형 커널이 1에서 좋지 않은 작업을하고 0에서 실제로 큰 일을 한 방법을보십시오. 이것은 꽤 불균형입니다. 비선형 커널이 더 균형 잡힌 곳. 스위트 스폿은 분산이 높지 않은 균형 잡힌 모델을 만드는 것 같습니다. 높은 분산을 어떻게 제어합니까? 빙고-정규화. 비선형 모델에 정규화를 추가하면 훨씬 더 나은 결과를 볼 수 있습니다. 이것은 scikit learn SVM의 C 매개 변수이며 기본값에서 증가 시키려고합니다. 우리는 또한 감마 매개 변수를 가지고 놀 수도 있습니다. 감마는 가우스 폭을 제어합니다. 어쩌면 클래스 사이에 더 큰 사람이없는 땅과 같이 덜 시끄러운 결과를 얻으려면이 값을 약간 늘리십시오.

도움이 되었기를 바랍니다!


C 매개 변수는 될 필요가 감소 하지 증가 기본값에서.
Hamdi

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.