멀티 클래스 SVM을 수행하는 가장 좋은 방법


18

SVM이 이진 분류기라는 것을 알고 있습니다. 다중 클래스 SVM으로 확장하고 싶습니다. 그것을 수행하는 가장 좋고, 가장 쉬운 방법은 어느 것입니까?

코드 : MATLAB

   u=unique(TrainLabel); 
    N=length(u); 
    if(N>2)    
        itr=1;    
        classes=0;   
        while((classes~=1)&&(itr<=length(u)))   
            c1=(TrainLabel==u(itr));    
            newClass=double(c1); 
            tst = double((TestLabel == itr));
            model = svmtrain(newClass, TrainVec, '-c 1 -g 0.00154');  
            [predict_label, accuracy, dec_values] = svmpredict(tst, TestVec, model);    
            itr=itr+1;   
        end
        itr=itr-1;
    end

이것을 어떻게 개선 할 수 있습니까?


classes코드에서 변수 는 무엇을 합니까? 쓸모없는 것 같습니다.

어떤 결론을 얻었습니까? 나는 내 일 에이 문제가 있습니다. 적절한 rusult에 도달하면 여기에서 다중 분류 코드를 공유하십시오. 감사합니다.
me.rasouli

답변:


16

다중 클래스 분류에는 많은 방법이 있습니다. SVM과 관련이없는 두 가지 클래식 옵션은 다음과 같습니다.

  1. 일대일 (OVA) 분류 :
    클래스 A, B, C 및 D가 있다고 가정합니다. 4 가지 분류를 수행하는 대신 4 개의 이진 분류기를 훈련 시킵니다 . A vs. A, B, not B , C 대 C가 아닌, D 대 D가 아닌 그런 다음 "최고"의 긍정적 인 클래스를 선택하십시오 (예 : 네 번의 실행에서 여백보다 더 큼). 분류가 긍정적이지 않은 경우 (즉, 모두 X가 아님) 최악의 클래스 (예 : 마진에 가장 가까운)의 "반대"를 선택하십시오.

  2. 모든 대 :
    모든 가능한 분류 쌍을 훈련시킵니다. 몇 가지 요소 (예 : 선택한 횟수)에 따라 등급을 매기고 최고를 선택하십시오.

어느 최선을 작동하는 것은 논쟁하고있다 : 두안 및 Keerthi은 모두 대 - 모든 방법 특정을 제안 경험적 연구가, 동안 리프킨 및 Klautau 한 - 대 모든 계획에 대한 주장을. 레이블 자체 대신 클래스 레이블을 설명하는 오류 수정 코드를 배우는 체계도 있습니다.

행운을 빕니다!

편집 : 특히 OVA의 경우 실제로 원하는 것은 각 클래스의 사후 확률입니다. 나이브 베이 즈 (Naive Bayes)와 같은 일부 방법의 경우에는 간단합니다. SVM은 일반적으로 확률을 제공하지 않지만 계산할 수있는 방법이 있습니다. John Platt의 1999 년 논문 "서포트 벡터 머신의 확률 적 출력 ..."을 참조하십시오.


2
OVA의 경우-Platt 스케일링으로 인해 가장 큰 확률을 가진 클래스를 선택할 수 있습니까?
B_Miner

1
네, 기본적으로 Duan과 Keerthi 논문의 결론입니다. Platt 확률과 Hastie의 쌍별 커플 링 트릭을 결합하여 좋은 결과를 얻습니다. 아마도 그것을 포함하도록 텍스트를 편집해야 할 것입니다. 잘 잡아 B_Miner!
매트 크라우스

SVM에서 투표 또는 합류를해야합니까?
lakesh

@lakesh, One-vs-all 또는 All-vs-all은 투표 방식과 같습니다. 이진 분류기 집합을 사용하는 경우 이를 다중 클래스 분류기로 변환하기 위한 작업을 수행해야 합니다 . 또는 아래의 carlosdc에 설명 된 수정 된 SVM을 사용할 수 있습니다.
Matt Krause

그게 뭐야?
lakesh

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