2012-12-18 6 views
4

문제 : 라벨 1,2,3을 사용한 3 가지 클래스 분류.MATLAB 용 LibSVM의 다중 클래스 분류에 대한 확률 추정

도구 :이 단계 후에 MATLAB

svmModel = svmtrain(<Trainfeatures>, <TrainclassLabels>, '-b 1 -c <someCValue> -g <someGammaValue>'); 
[predLabels, classAccuracy, **probEstimates**] = svmpredict(<TestFeatures>, <TestClassLabels>, '-b 1'); 

에 대한 LibSVM, 나는, probEstimates의 처음 10 행으로

0.9129 0.0749 0.0122 
0.9059 0.0552 0.0389 
0.8231 0.0183 0.1586 
0.9077 0.0098 0.0825 
0.9074 0.0668 0.0257 
0.8685 0.0146 0.1169 
0.8962 0.0664 0.0374 
0.9074 0.0548 0.0377 
0.9474 0.0054 0.0472 
0.9178 0.0642 0.0180 

얻을 수 있지만, 처음 10이 될 레이블을 예측 :

2 
2 
2 
2 
2 
2 
2 
2 
2 
2 

질문 :

  1. 필자의 견해는 확률 추정치가 특정 항목이 특징 벡터를 가지고 특정 클래스에 속할 확률이라고 생각했습니다. 그러나 이것이 사실이라면이 항목들은 클래스 1이 아닌 클래스 2에 속해야합니다. libsvm이 클래스의 순서를 변경합니까, 아니면 여기에 뭔가 빠져 있습니까? 내가 틀렸다면 누군가가 확률 추정의 실제 해석이 무엇인지 설명해 줄 수 있습니까?

  2. 클래스 1의 정밀도를 높이려면 결정 경계를 이동해야합니다 (클래스 1로 예측할 항목이 적어서 결정 경계에서 더 보수적이어야 함). 이러한 클래스 확률 중 어떤 것이 있어야합니까? 어떻게 다루는가?

+0

http://stats.stackexchange.com/에서이 질문을하는 것이 나을 것 같습니다. – Mathias

답변

6

최근에 동일한 문제가 발생했습니다. 이유는 교육 데이터의 순서와 관련이 있습니다. 사후 확률 벡터의 색인을 학습 데이터의 레이블과 일치 시키려면 학습 데이터를 레이블에 따라 정렬해야합니다. 예를 들어

상기 첫 번째 데이터 점의 라벨은 사후 확률 벡터의 첫 번째 항목이 제

0

모델에 저장된 라벨의 순서로 표시된 데이터 포인트와 관련된 4이면 우리가해야한다고 생각했던 것과 다를 수도 있습니다. svmModel.Label을 사용하여 확인할 수 있습니다. 그리고,이 순서에 따라 확률 추정치가 출력된다.