2012-04-09 4 views
0

바이너리 지원 벡터 머신을 사용하여 일부 픽셀을 분류하려고합니다. 내 훈련 데이터베이스는 28 개의 데이터 파일로 이루어져 있으며 두 개의 클래스가 있습니다. 클래스 1의 숫자 픽셀은 16571이고 클래스 2의 픽셀 수는 313입니다.이진 SVM 분류기가 두 클래스로 실패했습니다. 하나는 크고 다른 하나는 작습니다.

테스트 데이터 (각 파일)에는 약 600 픽셀 만있는 6-10 픽셀 클래스 2의 멤버이고 나머지 픽셀은 클래스 1에 있습니다.

제 문제는 훈련 후에 데이터를 분류하려고 할 때 SVM이 class1의 모든 픽셀을 분류한다는 것입니다.

아마도 class2에서 몇 개의 샘플을 보았 기 때문일 수 있습니다. 사용 가능한 데이터 파일의 수는 제한되어 있습니다 (약 35 개의 데이터 파일).

어떻게하면 SVM을 학습하고 적절한 결과를 얻을 수 있습니까?

도움 주셔서 감사합니다.

+0

클래스 멤버 수의 균형이 필요한 경우 클래스 1의 샘플 수를 약간 줄일 수 있습니다. – Lily

+0

데이터를 [0,1] 크기로 조정 해보고 클래스 재 지정을 다시 시도하십시오 ... – lakesh

+0

이미 크기가 조정되었습니다. 분류 전의 [0,1] 간격으로 데이터. – Lily

답변

0

SVM은 기차 세트 크기의 큰 차이에 민감 할 수 있습니다. 나는 다음과 같은 2 가지 방법 시도하는 게 좋을 것 : 크기는 클래스 2의 크기 주위가되도록 1의 기차, 샘플링에 의해 설정

  1. 제한 클래스 및 클래스의 10 배 (어떤 개선을위한 1X 사이의 크기를 확인 2의 크기가 맞을 수도 있음).

  2. SVM의 'cost'매개 변수 (예 : SVMLight에서 'J'매개 변수로 완료)로 재생하면 클래스의 균형을 유지하는 데 도움이됩니다.

당신은 물론 다음 추가 비용 매개 변수를 사용하여 클래스의 균형을 어느 정도 클래스 1의 기차 데이터의 크기를 제한, 함께, 즉 두 가지 방법을 사용할 수 있습니다.

관련 문제