불균형 데이터를위한 SVM


15

데이터 세트에서 SVM (Support Vector Machine)을 사용하려고합니다. 그래도 문제를 시도하기 전에 SVM이 불균형이 심한 데이터에서 제대로 작동하지 않는다는 경고를 받았습니다. 제 경우에는 최대 95-98 % 0과 2-5 % 1을 가질 수 있습니다.

스파 스 / 언밸런스 드 데이터에서 SVM 사용에 대해 이야기 한 리소스를 찾으려고했지만 'sparseSVM'(소량의 지원 벡터를 사용) 만 찾을 수있었습니다.

누군가가 간단히 설명 할 수 있기를 바랐습니다.

  1. SVM이 그러한 데이터 세트와 얼마나 잘 관련되어 있는지
  2. SVM 알고리즘을 수정해야하는 경우
  3. 어떤 자료 / 논문이 이에 대해 논의 하는가

답변:


15

많은 SVM 구현은 긍정적이고 부정적인 인스턴스에 서로 다른 가중치를 할당하여이 문제를 해결합니다. 기본적으로 샘플의 무게를 측정하여 포지티브의 가중치 합계가 네거티브의 가중치 합계와 같아 지도록합니다. 물론, SVM 평가에서 데이터의 95 %가 음수이면 항상 음수를 예측하여 95 %의 정확도를 얻는 것은 사소한 것임을 기억해야합니다. 따라서 평가 지표가 균형을 이루도록 가중치를 부여해야합니다.

특히 libsvm태그로 추가 한에는 클래스 가중치를 설정할 수있는 플래그가 있습니다 ( -w믿지만 문서를 확인하십시오 ).

마지막으로, 개인적 경험을 통해 SVM이 체중 보정 유무에 관계없이 매우 유사한 결과를 얻을 수 있음을 종종 알 수 있습니다.


나를 이길 :-)
Marc Claesen

@ 비트 단위로 불균형 데이터와 동일한 문제가 있으며 99 %의 정확도를 얻습니다. libsvm에서 가중치를 사용했습니다. 평가 메트릭도 가중해야한다고 언급했습니다. 평가 지표에 가중치를 부여하는 방법을 알고 싶었습니다.
Hani Goc

1
@HaniGoc은 기본적으로 각 클래스의 정확도를 별도로 계산하여 평균을 계산하려고합니다. 그래서 예를 들어, 10 개 클래스 A와 90 클래스 B를 가지고 있다면 당신은 당신이 가진 것 표준 정확도 클래스 B, 수의 모든 샘플을 추측 만 가중 정확성, 당신은 것입니다 0.5 * ( 0 / 10 + 90 / 90 ) = 0.5 . 90/100=0.90.5(0/10+90/90)=0.5
Bitwise

7

SVM은 희소 및 불균형 데이터에서 제대로 작동합니다. 클래스 가중치 SVM은 소수 클래스의 교육 인스턴스에 높은 오 분류 페널티를 할당하여 불균형 데이터를 처리하도록 설계되었습니다.


5

SVM과 같은 희소 데이터의 경우 잘 작동합니다.

@Bitwise가 말했듯이 정확도를 사용하여 알고리즘의 성능을 측정해서는 안됩니다.

대신 알고리즘 의 정밀도, 리콜F- 점수 를 계산해야 합니다.


추론을 넓히시겠습니까? 또한 (테스트 세트에서) 분류가 완료되면 F- 점수를 어떻게 측정 할 수 있습니까? 감사합니다
Spacey

테스트 세트에서 FScore를 측정하려면 수동으로 분류 한 다음 수동 데이터와 예측 된 데이터를 사용하여 호출 및 정밀도를 계산해야합니다. SVM이 희소 데이터와 잘 작동하는 이유는 무엇입니까?
alexandrekow

예, SVM이 희소 데이터에서 작동하는 이유도 좋습니다. 감사합니다
Spacey

"간단한 기능이 없어도 SVM에는 아무런 문제가 없습니다.이를 확인하는 한 가지 방법은 좌표축을 임의로 회전 할 수 있다는 것입니다. 이로 인해 문제가 변경되지 않고 동일한 솔루션을 제공 할 수 있지만 데이터가 완벽하게 희소되지 않음 (이는 부분적으로 임의의 투영이 작동하는 방식 "( stats.stackexchange.com/questions/23470/… )
alexandrekow
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.