비 순차 범주 형 예측 변수의 수준 수 감소


11

SVM, 임의 포리스트 또는 다른 분류기를 말하는 분류기를 훈련시키고 싶습니다. 데이터 세트의 기능 중 하나는 1000 수준의 범주 형 변수입니다. 이 변수의 레벨 수를 줄이는 가장 좋은 방법은 무엇입니까? R에는 드문 수준을 결합 combine.levels()하는 Hmisc 패키지 에서 호출되는 기능이 있지만 다른 제안을 찾고있었습니다.


범주 형 변수가 순서가 없습니까? 대략 몇 건의 사례가 있습니까? 범주 형 변수에 대한 빈도 분포는 무엇입니까?
Jeromy Anglim

레벨은 주문되지 않습니다. 약 10,000 개의 관측치가 있습니다. 빈도 분포는 다음과 같습니다. 레벨 A는 관측치의 약 11 %에 나타납니다. 레벨 B가 8 %로 나타납니다. 레벨 c가 5 %로 나타납니다. 이 수준 중 약 15 개가 데이터 세트에서 관측치의 50 %를 차지합니다.
sabunime

답변:


9

이를 수행하는 최선의 방법 은 수행중인 작업에 따라 엄청나게 달라 지므로 작업 독립적 인 방법으로 가장 좋은 것을 말할 수는 없습니다.

레벨이 서수이면 두 가지 쉬운 방법이 있습니다.

  1. 그들을 비우십시오. 예를 들어, 0 = (0 250), 1 = (251 500) 등 각 빈이 같은 수의 항목을 갖도록 제한을 선택할 수 있습니다.
  2. 레벨의 로그 변환을 수행 할 수도 있습니다. 범위가 줄어 듭니다.

레벨이 순서가 아닌 경우 데이터 세트의 다른 기능 / 변수를 기반으로 레벨을 클러스터링하고 이전 레벨의 클러스터 ID를 대체 할 수 있습니다. 클러스터링 알고리즘이 있기 때문에이 작업을 수행하는 방법은 여러 가지가 있으므로 필드가 넓습니다. 내가 그것을 읽을 때, 이것이 combine.levels()하는 일입니다. 다음을 사용하여 유사 할 수있는 kmeans()prcomp(). 이후에 분류기를 훈련시켜 새로운 데이터 포인트에 대한 클러스터를 예측할 수 있습니다.


3
범주 형 변수를 임의의 효과로 취급하는 것 이외의 다른 방법으로 이것을 처리하는 좋은 방법을 모르겠습니다. 변수에 2 차 (릿지) 형벌 법을 사용하여이를 에뮬레이션 할 수 있습니다. 나의 회귀 모델링 전략 책과 강의 노트 가 여기에 들어갑니다.
Frank Harrell

1
@FrankHarrell 두 가지 접근 방식이 떠 오릅니다. 다 변수 가변 잠재 클래스 분석은 하나 (cran.r-project.org/web/packages/poLCA/poLCA.pdf), 대응 분석은 다른 것 (예 : statmethods.net/advstats/ca)입니다. html).
Mike Hunter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.