2013-05-29 2 views
0

회귀에 LibSVM을 사용하려고합니다. 나는 얼굴을 발견하려고 노력하고있다. (다른 얼굴의 10 개의 클래스). 얼굴 클래스로 1-10을 표시하고 11은 비 얼굴 클래스입니다. 테스트 이미지가 10 개의 얼굴 클래스 중 하나에 속하면 0-1 사이의 연속 스코어를 줄 스크립트 인 LibSVM을 개발하고 싶습니다. 그렇지 않으면 -1 (비 얼굴)이됩니다. 이 점수를 통해 내 전화를 예측할 수 있습니다. 테스트 이미지가 1 등급과 일치하면 점수는 .1 주위에 있어야합니다. 마찬가지로 테스트 이미지가 클래스 10과 일치하는 경우 점수는 1 주위에 있어야합니다 (1에 가까운 모든 연속 값). 이 문제를 해결하기 위해 LibSVM을 사용하여 SVR을 사용하려고합니다. 분류를 통해 예상 클래스를 쉽게 얻을 수 있습니다. 그러나 나는 회귀를 통해 얻을 수있는 지속적인 점수 가치를 원합니다. 이제는 LibSVM을 사용하는 SVR 기능의 함수 나 매개 변수를 인터넷에서 찾고 있었지만 아무것도 찾을 수 없었습니다. 아무도이 점에서 저를 도울 수 있습니까?Matlab에서 LibSVM을 사용하여 지원 벡터 회귀에 대한 매개 변수

+2

아직 회귀는 아닙니다. 0과 1 사이의 값을 예측하는 것은 SVM을 확률 모델로 바꾸는 Platt scaling을 사용하여 수행 할 수 있습니다. –

답변

1

회귀 문제가 아닙니다. 회귀를 통해이를 해결하면 좋은 결과를 얻을 수 없습니다.

당신은 여러 클래스 분류 문제를 다루고 있습니다. 이것을 접근하는 가장 좋은 방법은 확률 론적 결과를 가진 10 개의 1 대 모든 분류자를 생성하는 것이다. 확률 론적 결과 (예 : 구간 [0,1])를 얻으려면 -b 1 옵션 (C-SVC (-s 0))을 사용하여 교육하고 예측할 수 있습니다.

10 개의 분류 기준 중 하나라도 긍정적 인 등급에 대한 확률이 충분히 높으면 해당 확률 (1에 가까움)을 사용합니다. 10 개의 분류 기준 중 신뢰도가 높은 양수 레이블이없는 경우 기본값 -1을 사용할 수 있습니다.

간단히 말해서, 확률 적 출력을 갖는 모든 대 분류자를 포함하는 다중 분류자를 작성하십시오. 후속 적으로 내가 설명한대로 예상치를 후 처리합니다 (예 : 0.7).

+0

감사합니다. Marc. 나는 그것을 시도했다. 그러나 특정 클래스에 대해 (0.0과 1.0 사이의) 특정 양수 값을 얻을 수있는 방법이 혼란 스러웠습니다. 예를 들어, 이미지가 클래스 1에 충분히 가까우면 0.1 이상, 테스트 이미지가 클래스 2에 충분히 가까우면 0.2, 테스트 이미지가 클래스 3에 충분히 가까우면 0.3 (예 : 테스트 이미지가 클래스 10에 충분히 근접한 경우). 또한 점수는 분리 될 수 없으며, 값 6.56을 가질 수 있습니다 (이 경우 클래스 7에 가까운 것으로 가정합니다). – user2433638

+0

@ user2433638 : 2 단계를 사용하여이를 수행 할 수 있습니다. (1) (k) (2) value = k-1 + prob (k). 만약 당신이 찾은 최대 확률이 당신이 지정한 threshold보다 작 으면 -1. –

+0

을 얻는다.). 이제는 매개 변수 '-b 1'을 사용하여 점수를 얻고 가장 높은 확률 점수를 취하여 (이미 해본 적이 있습니다), 다른 클래스는 동일한 확률 값을가집니다 (확률 점수 8.81, 클래스 1 또는 클래스 10 또는 클래스 5는 다른 실행으로 분류 될 수 있음). 대신에 점수 8.81로 테스트 이미지가 클래스 9로 분류되어 있음을 알게 될 것입니다. " – user2433638

관련 문제