2013-10-17 7 views
6

나는 분류 할 데이터를 가지고 있습니다. KNN 알 고를 사용하면 정확도가 90 %이지만 SVM을 사용하면 70 % 이상을 얻을 수 있습니다. SVM은 KNN보다 좋지 않습니다. 나는 이것이 어리석은 질문 일지 모르지만, SVN의 매개 변수는 KNN과 거의 유사한 결과를 줄 것입니다. matlab에 libsvm 패키지를 사용 중입니다. R2008지원 벡터 머신 대 K 가까운 이웃

+2

이 질문은 기계 학습에 관한 것이므로 http://stats.stackexchange.com/ – Shai

+0

에 더 적합 할 것이므로이 주제는 오프 - 토픽 인 것으로 보이므로 기계 학습은 코딩의 일부가 아닙니다. 이것은 개방형 플랫폼이며 누구나 코딩과 관련이 있고 어떤 사람들이 브레인 스토밍을 요구할 때 어떤 질문이라도 자유롭게 할 수 있습니다. 그러므로 유용하지 않다면 다른 사람들이 참여할 수 있도록이 토론에서 멀리 떨어져있을 수 있습니다. –

+0

여기에 속하지 않는다고 주장하지는 않습니다. http://stats.stackexchange.com과 같은보다 헌신적인 포럼에서 더 많은 정보를 얻은 청중과 더 나은 답변을 찾을 수있을 것이라고 생각합니다. – Shai

답변

8

kNN과 SVM은 학습 방법이 다릅니다. 각 접근 방식은 기본 데이터에 대해 다른 모델을 의미합니다. KNN 비 파라 메트릭 방식으로 데이터의 기본 분포 (parsen 윈도우 추정기 조 근사치) 대략 시도하면서 SVM은 가정

는, 데이터 포인트 (매우 제한적인 가정) 오토넷 하이퍼 평면에 존재한다.

어떤 알고리즘과 구성이 가장 잘 사용되는지 더 잘 결정하려면 시나리오의 특성을 살펴 봐야합니다.

+2

"SVM은 데이터 포인트를 분리하는 하이퍼 평면이 있다고 가정합니다 (상당히 제한적인 가정)"실제로 제한적이지는 않습니다. RBF 커널이있는 SVM은 레이블 조합을 통해 모든 데이터 세트를 분산시킬 수 있습니다. – Pedrom

+0

@Pedrom 실제로 커널 SVM은 매우 강력한 도구입니다. – Shai

+1

@ValentinHeinitz 당신은 실제로 10 줄로 정확한 설명을 얻을 것으로 기대하지 않습니까? – Shai

6

정말 사용하는 데이터 집합에 따라 다릅니다. 이 이미지의 첫 번째 줄 (http://scikit-learn.org/stable/_images/plot_classifier_comparison_1.png)과 같은 것이 있으면 kNN이 정말 잘 작동하고 Linear SVM이 정말 나쁘게 작동합니다.

SVM의 성능을 향상 시키려면 그림의 커널 기반 SVM (rbf 커널 사용)을 사용할 수 있습니다.

당신이 scikit이 배울 파이썬 당신은 코드 비트를 재생할 수 있습니다 사용하는 경우 여기에 커널 SVM을 사용하는 방법을 볼 수 http://scikit-learn.org/stable/modules/svm.html

5

KNN은 기본적으로 "당신이 좌표 x 가까이 있다면, 그 분류를 말한다 x에서 관측 된 결과와 유사 할 것이다. " SVM에서 가까운 아날로그는 "작은"대역폭 매개 변수를 가진 고차원 커널을 사용할 것입니다. SVM이 더 많이 오버플로 할 수 있기 때문입니다. 즉, SVM은 "x 좌표에 가깝다면 분류는 x에서 관찰 된 것과 유사합니다."에 더 가깝습니다.

가우스 커널로 시작하고 다른 매개 변수에 대한 결과를 확인하는 것이 좋습니다. 내 자신의 경험 (물론 특정 유형의 데이터 세트에 중점을 두어 마일리지가 다를 수 있음)에서 튜닝 된 SVM이 튜닝 된 kNN보다 성능이 우수합니다.

질문 :

1) kNN에서 k를 어떻게 선택합니까?

2) SVM에 사용 된 매개 변수는 무엇입니까?

3) 샘플 내 또는 샘플 밖의 정확도를 측정하고 있습니까?

관련 문제