2011-04-20 2 views
4

뉴스 기사 분류에 SVM을 사용하려고합니다.LibSVM은 모든 트레이닝 벡터를 지원 벡터로 변환합니다. 이유는 무엇입니까?

필자는 문서 (문서에있는 고유 단어)를 행으로 포함하는 테이블을 만들었습니다. 이러한 기능으로 매핑 된 가중치 벡터를 만들었습니다. 즉, 물품이 특징 벡터 테이블의 일부인 단어가있는 경우, 위치는 1 또는 0으로 표시됩니다.

전 - 트레이닝 샘플 생성 ...

1 : 1 2 : 1~3 : 1~4 : 1~5 : 1~6 : 1~7 : 1~8 : 1~9 : 1 10 : 1 11 : 1 12 : 1 13 : 1 14 : 1 15 : 1 16 : 1 17 : 1 18 : 1 19 : 1 20 : 1 21 : 1 22 : 1 23 : 1 24 : 1 25 : 1 26 : 1 27 : 1 28 : 1 29 : 1 30 : 1

이 문서는 첫 번째 문서이므로 모든 기능이 제공됩니다.

클래스 레이블로 1, 0을 사용하고 있습니다.

나는 분류를 위해 svm.Net을 사용하고 있습니다.

나는 수동으로 훈련 데이터로 분류 된 300 웨이트 벡터를 주었고, 생성 된 모델은 모든 벡터를지지 벡터로 취하고 있으며, 이는 확실히 overfitting입니다.

총 기능 (기능 벡터 DB 테이블에서 unique words/row count)은 7610입니다.

어떤 이유가있을 수 있습니까?

내 피팅 때문에 지금 내 프로젝트는 꽤 나쁜 모양입니다. 이용 가능한 모든 기사를 긍정적 인 기사로 분류합니다.

LibSVM 바이너리 분류는 클래스 레이블에 제한이 있습니까?

-1+1 대신 0, 1을 사용하고 있습니다. 그게 문제 야?

답변

1

지적한대로 매개 변수 검색은 다른 것을하기 전에 아마도 좋은 생각 일 수 있습니다.

다른 커널을 사용할 수도 있습니다. 데이터를 입력하는 것이 바이너리라는 사실은 RBF 커널에서 문제가 될 수 있습니다 (또는 다른 커널과 비교하여 사용량이 최적 이하가 될 수도 있음). 커널이 어느 쪽이 더 적합할지 모릅니다. 선형 커널을 시도하고 더 많은 제안/아이디어를 둘러보십시오.

자세한 정보 및 더 나은 답변은 stats.stackexchange.com에서 확인하십시오.

3

매개 변수 검색을 수행해야하며, 클래스가 불균형 일 경우 분류기가 인위적으로 높은 정확도를 얻지 못할 수도 있습니다. 이 guide is good을 가르치는 데있어 기본적이고 실용적인 것을 가르쳐야합니다.

1

저는 라벨에 -1과 +1을 사용하려고합니다. 표준 방법입니다.

얼마나 많은 데이터가 있습니까? 7610 차원 공간에서 작업하고 있으므로 잠재적으로 많은 지원 벡터가있을 수 있습니다. 다른 벡터가 각 차원에서 초평면을 "지원"합니다.

많은 기능을 사용하면 원리 구성 요소 분석과 같은 특정 유형의 기능 선택 방법을 시도 할 수 있습니다.

+0

이유를 찾았습니다. SVM.net이 trainingdata의 유효성을 검사하지 않기 때문에 이런 일이 발생했습니다. 내 훈련 데이터에서 기능 번호가 정렬되지 않아 이상한 결과가 발생했습니다. 지형지 물 수에 대한 가중치 벡터를 정렬 한 다음 모델을 생성하면 훨씬 나은 결과를 얻을 수 있습니다. 정확도는 74 %입니다. 고맙습니다. –

관련 문제