범주 형 속성을 가진 SVM을 처리하는 방법


18

35 크기의 공간이 있습니다 (속성). 내 분석 문제는 간단한 분류 문제입니다.

35 개 차원 중 25 개가 범주 형이며 각 특성은 50 가지 이상의 유형 값을 갖습니다.

이 시나리오에서는 더미 변수를 도입해도 효과가 없습니다.

범주 속성이 많은 공간에서 SVM을 실행하려면 어떻게해야합니까?

답변:


22
  1. categorical 형 특성이 실제로 순 서적이라고 확신하면 숫자 형 특성으로 취급하십시오.
  2. 그렇지 않은 경우 코딩 트릭을 사용하여 숫자 속성으로 변환하십시오. libsvm의 저자의 제안에 따르면 1-K 코딩을 간단히 사용할 수 있습니다. 예를 들어, 에서 값을 가져 오는 1 차원 카테고리 속성이 있다고 가정하십시오 . A = ( 1 , 0 , 0 ) , B = ( 0 , 1 , 0 ) , C = ( 0 , 0 , 1 ) 와 같이 3 차원 숫자로 바꾸십시오.{,,}=(1,0,0)=(0,1,0)=(0,0,1). 물론, 이것은 당신의 문제에있어서 추가적인 차원을 야기 할 것이지만, 그것이 현대 SVM 솔버 (선형 또는 커널 유형에 상관없이)에있어 심각한 문제는 아니라고 생각합니다.

+1 이것도 제가 말하려고하는 것입니다! 또한 재귀 분할은 때때로 지속적으로 가치를 부여하는 기능을 가장 잘 자르는 위치를 식별하고 빈으로 분할하는 데 사용되기도합니다.
카일.

흥미 롭습니다! "재귀 분할"은 (이진) 트리 소리를냅니다. 이 두 아이디어의 차이점은 무엇입니까? 게다가 SVM은 이미 지속적인 기능을 처리 할 수 ​​있습니다. 왜 우리는이를 빈 (다시, 범주 형 데이터)으로 바꾸어야합니까?
pengsun.thu

3
AK 수준 범주 형 변수에 대해 k-1 더미 변수를 작성하지 않습니까? 예를 들어 A = (1,0,0), B = (0,1,0), 여기서 (0,0,1)을 건너 뛰나요?
특이점

후속 질문 : 0-1 데이터의 추가 스케일링이 필요하지 않습니까?
AZhao
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.