여러 수준의 범주 형 변수를 축소하는 주요 방법은 무엇입니까?


58

통계 모델에서 여러 범주를 입력 (예측 자)으로 사용하기 위해 여러 범주를 축소 (또는 풀링)하는 데 사용할 수있는 기술은 무엇입니까?


대학생 전공 (학부생이 선택한학과) 과 같은 변수를 고려하십시오 . 순서가없고 범주 형이지만 수십 가지의 고유 한 수준을 가질 수 있습니다. 회귀 모델에서 메이저를 예측 변수로 사용하고 싶다고 가정 해 봅시다.

모델링을 위해 이러한 수준을 그대로 사용하면 너무 많은 종류가 있기 때문에 모든 종류의 문제가 발생합니다. 그것들을 사용하기 위해 많은 통계적 정밀도가 버려 질 것이며 결과를 해석하기가 어렵습니다. 우리는 특정 전공에 거의 관심이 없습니다. 광범위한 전공 (하위 그룹)에 관심이있을 가능성이 높습니다. 그러나 레벨을 이러한 상위 레벨 카테고리로 나누는 방법 또는 사용할 상위 레벨 카테고리 수를 항상 명확하지는 않습니다.

일반적인 데이터의 경우 요인 분석, 행렬 분해 또는 불연속 모델링 기법을 사용하게되어 기쁩니다. 그러나 전공은 상호 배타적 인 범주이므로 모든 것에 대한 공분산을 악용하는 것이 주저합니다.

또한 나는 주요 범주에 대해서는 신경 쓰지 않습니다. 회귀 결과와 관련하여 높은 수준의 범주를 만드는 데 관심이 있습니다 . 이진 결과의 경우 차별적 성능을 극대화하는 상위 수준의 범주를 생성하는 선형 판별 분석 (LDA)과 같은 것을 제안합니다. 그러나 LDA는 제한된 기술이며 더러운 데이터 준설처럼 느껴집니다. 또한 지속적인 솔루션은 해석하기 어렵습니다.

한편 다중 대응 분석 (MCA)과 같은 공분산을 기반으로하는 것은 상호 배타적 인 더미 변수 사이의 고유 한 의존성 때문에이 경우에 의심스러운 것 같습니다. 같은 변수.

편집 : 분명히하기 위해, 이것은 범주 를 축소 하는 것 (선택하지 않음)에 관한 것이며 범주는 예측 변수 또는 독립 변수입니다. 뒤늦은 시각에서이 문제는 "모든 것을 정규화하고 신이 분류하도록"적절한시기처럼 보인다. 이 질문이 많은 사람들에게 흥미 롭다는 것을 알게되어 기쁩니다!


2
stats.stackexchange.com/questions/230636/에 대한 나의 의견에서 여기에 비슷한 질문의 긴 목록이 있습니다! 보세요 ... 또한 "많은 수준"이라는 키워드로이 사이트를 검색하십시오.
kjetil b halvorsen

3
나는 시간이 있으면 다시 돌아올 것입니다 ... 그동안 다음은 질문에 대답하는 것으로 보이는 매우 관련성 높은 논문입니다 : epub.ub.uni-muenchen.de/12164/1/petry_etal_TR102_2011. pdf
kjetil b halvorsen

2
나는 질문을받지 못한다고 생각한다. 내 자연적 충동은 실제로 계층을 인코딩하기 위해 더미 변수를 추가하는 것 (아마도 당신이 생각할 수있는 많은 다른 계층 구조)과 L1 / L2 정규화를 사용하여 최상위 카테고리를 보장하는 것입니다. 더 세밀한 레벨 카테고리 대신에 선택됩니다. 메이저 등의 문제점은 명백하게 유사성이 없다는 것입니다 (더미 변수로 표현 될 때). 좋은 모델을 얻으려면 (일반화 가능) 그 유사성을 제공해야합니다.
seanv507

1
@ ssdecontrol, 예, 제 예는 전화 번호 (또는 다른 ID)입니다. 기본적으로 이것들을 사용하여 모델링하는 방법을 물을 때 정답은 그렇지 않습니다!
seanv507

2
계층 구조를 유추하려면 신경망 임베딩 체계를 살펴볼 수 있습니다. 본질적으로 그들은 범주와 나머지 모델 사이에 감소 된 뉴런 세트를 사용하므로 모델은 풀기에서 유사한 범주의 선형 투영을 찾아야합니다. 본질적으로 비선형 버전의 인수 분해 시스템입니다. tensorflow.org/guide/embedding
seanv507

답변:


41

내가 정확하게 이해했다면, 예측 변수 중 하나가 범주 형인 선형 모델을 상상할 수 있습니다 (예 : 대학 전공). 레벨의 하위 그룹 (범주 하위 그룹)에 대해 계수가 정확히 동일 할 것으로 예상합니다. 수학과 물리에 대한 회귀 계수는 같지만 화학 및 생물학에 대한 회귀 계수와는 다릅니다.

가장 간단한 경우에는 단일 범주 형 예측 변수가 포함 된 "일원 분산 분석"선형 모형이됩니다. 여기서 는 범주 형 변수의 수준을 인코딩합니다 ( 범주). 그러나 와 같이 일부 수준 (범주)을 함께 축소하는 솔루션을 선호 할 수 있습니다i { α 1 = α 2 , α 3 = α 4 = α 5 입니다.

yij=μ+αi+ϵij,
i
{α1=α2,α3=α4=α5.

이는 알파가 다른 솔루션에 불이익을주는 정규화 페널티를 사용할 수 있음을 나타냅니다. 즉시 생각 페널티 용어 중 하나는이것은 올가미와 비슷하며 차이 의 희소성을 강제해야합니다. 이것은 정확히 원하는 것입니다. 많은 것들이 0이되기를 원합니다. 정규화 매개 변수 는 교차 유효성 검사와 함께 선택해야합니다.α iα j ω

L=ωi<j|αiαj|.
αiαjω

나는 그런 모델을 다루지 않았으며 위의 것이 내 마음에 온 첫 번째 것입니다. 그런 다음 구현 된 것이 있는지 확인하기로 결정했습니다. 나는 몇 가지 구글 검색을했고 곧 이것이 카테고리 융합 이라는 것을 깨달았다 . 검색 lasso fusion categorical하면 읽을 수있는 많은 참조가 제공됩니다. 다음은 내가 간단히 살펴본 것입니다.

Applied Statistics의 Annals에 발표 된 Gertheiss와 Tutz 2010은 다른 참고 문헌이 포함 된 최근의 매우 읽기 쉬운 논문처럼 보입니다. 초록은 다음과 같습니다.

회귀 분석의 축소 방법은 일반적으로 메트릭 예측 변수를 위해 설계되었습니다. 그러나이 기사에서는 범주 형 예측 변수에 대한 축소 방법이 제안됩니다. 응용 프로그램으로, 우리는 예를 들어 도시 지구가 범주 예측 자로 취급되는 뮌헨 임대 표준의 데이터를 고려합니다. 독립 변수가 범주 형인 경우 일반적인 축소 절차를 약간 수정해야합니다. 요인의 선택 및 범주의 군집화를위한 두 가지 기반 방법이 제시되고 조사됩니다. 첫 번째 방법은 명목 척도 수준을 위해 설계되었으며, 두 번째 방법은 순서 예측자를위한 것입니다. 뮌헨 임대 표준에 적용하는 것 외에도 시뮬레이션 연구에서 방법을 설명하고 비교합니다.L1

정규화 강도가 증가 할 때 두 범주 형 변수의 레벨이 어떻게 병합되는지 보여주는 Lasso와 같은 솔루션 경로가 마음에 듭니다.

Gertheiss와 Tutz 2010


1
그리고 단지 내가 @Kjetil 이미 일주일 전에 Tutz에 의한 서류 중 하나에 대한 링크를 준 것으로 나타났습니다 모든 것을 ... 작성 후
아메바는 분석 재개 모니카 말한다

1
이것에 관한 문헌을 파고 들어 주셔서 감사합니다! 이것은 확실히 좋은 출발점입니다. 특히 제가 찾을 수있는이 기술의 이름 ( "융합")이 있습니다
shadowtalker

10

나는 내가 일하고있는 프로젝트에서 이것과 씨름했다.이 시점에서 나는 카테고리를 융합하는 좋은 방법이 실제로 없다고 결정했다. 그래서 나는 나의 계층 적 / 혼합 효과 모델을 시도하고있다. 전공 과 동등한 것은 무작위 효과입니다.

또한 이와 같은 상황에서는 실제로 두 가지 융합 결정을 내리는 것 같습니다. 1) 모델에 적합 할 때 보유한 범주를 융합하는 방법 및 2) 기본적으로 새로운 범주를 포함 할 융합 된 범주가 "기타"가되는 것 당신이 당신의 모델에 맞는 후 누군가가 꿈꾸는 전공. (임의의 효과는이 두 번째 경우를 자동으로 처리 할 수 ​​있습니다.)

완전히 자동화 된 절차와는 달리, 융합에 어떤 판단이있을 때, 나는 "기타"범주에 대해 회의적이다. "기타"범주는 종종 어떤 종류의 원칙적 그룹화보다는 그 안에 몇 가지가있는 범주의 범주이다.

임의의 효과는 많은 레벨을 처리하고, 다른 레벨을 동적으로 풀 ( "강도에서 끌어 오기"), 이전에 보지 못한 레벨을 예측할 수 있습니다. 레벨의 분포는 거의 항상 정상인 것으로 가정 할 수 있습니다.


1
근접 행렬을 거리 행렬로 사용하여 클러스터링하는 방법을 살펴 보셨습니까? stats.stackexchange.com/questions/270201/… ?
Keith

7

Zz1,...,zKYZImpact(Z)

Impact(zk)=E(Y | Z=zk)E(Y)

YYlogitEE

category_encoders 라이브러리 에는 Python 구현이 있습니다 [2].

"임팩트 코딩"이라는 변형이 R 패키지 Vtreat [3] [4] 에서 구현되었습니다 . 패키지 (및 임팩트 코딩 자체)는 2016 년의 저자가 작성한 기사 [5]와 여러 블로그 게시물 [6]에 설명되어 있습니다. 현재 R 구현은 다항식 (2 개 이상의 범주로 범주화 된) 또는 다변량 (벡터 값) 응답을 처리하지 않습니다.

  1. Daniele Micci-Barreca (2001). 분류 및 예측 문제에서 높은 카디널리티 범주 속성에 대한 전처리 체계. ACM SIGKDD Explorations Newsletter , 3 권, 2001 년 7 월 1 호, 27-32 페이지. https://doi.org/10.1145/507533.507538
  2. 카테고리 인코더. http://contrib.scikit-learn.org/categorical-encoding/index.html
  3. 존 마운트와 니나 주멜 (2017). vtreat : 통계적으로 안전한 'data.frame'프로세서 / 컨디셔너. R 패키지 버전 0.5.32 https://CRAN.R-project.org/package=vtreat
  4. Win-Vector (2017). 유리한. https://github.com/WinVector/vtreat의 GitHub 저장소
  5. Zumel, Nina 및 Mount, John (2016). vtreat : 예측 모델링을위한 data.frame 프로세서. 1611.09477v3, ArXiv 전자 인쇄 . https://arxiv.org/abs/1611.09477v3 에서 사용 가능합니다 .
  6. http://www.win-vector.com/blog/tag/vtreat/

로짓 E는 무엇입니까? 수식 자체를 공유해 주시겠습니까?
Optimus Prime

@OptimusPrime의 로짓 E는 기대의 로짓입니다
shadowtalker

괜찮아. 이 경우 Impact (zk) = log (E (Y | Z = zk) −E (Y)) 또는 Impact (zk) = log (E (Y | Z = zk))-log (E (Y) )?
Optimus Prime

2
이것은지도 학습이며 Y에서 "도난당하는"자유도를 인식하기 위해 복잡한 조정이 필요합니다.
Frank Harrell

3
확실히-범주 예측 변수에 대해 범주를 처리하는 방법을 안내하기 위해 Y를 사용하는 방법은 과적 합의 대상이되며 불확실성 구간이 정확할 정도로 넓을 수는 없습니다. 나는 감독되지 않은 학습에 중점을 두어 그러한 문제가 발생하지 않도록했습니다.
Frank Harrell

6

범주 형 예측 변수의 기준으로 사용하기에 논리적 인 보조 독립 변수가있는 경우 그의 선형 판별 분석과 관련된 Fisher의 최적 채점 알고리즘 사용을 고려하십시오. 대학 전공을 단일 연속 메트릭에 매핑하고 적절한 기준이 입학 전 SAT 정량 시험 점수라고 가정합니다. 각 전공의 평균 정량 점수를 계산하고 해당 전공을 해당 평균으로 바꿉니다. 이것을 여러 개의 앵커로 쉽게 확장 할 수있어 전공을 요약 할 수있는 자유도가 2 개 이상 생성됩니다.

이전 제안들 중 일부와는 달리 최적의 채점은 감독되지 않은 학습 접근법을 나타내므로 자유도 (Y에 대해 추정 된 매개 변수의 수)는 거의 정의되지 않아 적절한 통계적 추론 (자주 발생하는 경우, 정확한 표준 오류, 신뢰도)이 발생합니다. (호환성) 간격 및 p- 값).

https://stats.stackexchange.com/users/28666/amoeba @amoeba 의 처벌 제안을 매우 좋아합니다 .


내 질문 stats.stackexchange.com/q/383887/44368를 살펴 시겠습니까? 감사합니다.
Hans

이 강의의 슬라이드 15에 설명 된 방법을 최적으로 채점 합니까? 해당 용어를 검색하기는 약간 어렵습니다. 모든 용어는 다른 상황에서 일반적입니다.
shadowtalker

1
저는 0.85입니다
Frank Harrell

이것은 머신 러닝 을 통한 타겟 인코딩 아이디어의 (더 나은) 버전처럼 들립니다 ( 예 : stats.stackexchange.com/questions/398903/…
kjetil b halvorsen

2

" 분류 및 예측 문제에서 높은 카디널리티 범주 형 속성에 대한 전처리 체계 "논문 은 범주 변수를 사후 클래스 확률로 매핑하기 위해 모든 풀 / 레벨에서 중첩 된 '임시적 베이 즈'체계의 범주 속성에서 계층 구조를 활용합니다. 직접 또는 다른 모델의 입력으로 사용할 수 있습니다.


이것은 기본적으로 @Wayne이 제안한 것 (혼합 효과 모델 ~ 잦은 베이지안 계층 모델)과 질문에 대한 의견으로 제안한 것입니다. 그러나 OP는 계층 구조를 유추하려고합니다.
seanv507

1

여기에는 여러 가지 질문이 있으며 그중 일부는 이전에 묻고 답변합니다. 계산에 시간이 오래 걸리는 경우 : 여러 가지 방법으로 처리 할 수 ​​있습니다. 희소 피쳐 행렬Maechler and Bates 의 논문 으로 대규모 회귀 분석을 참조하십시오 .

그러나 문제는 모델링과 관련이있을 수 있습니다. 범주 형 예측 변수를 처리하는 일반적인 방법이 매우 많은 수준의 범주 형 변수를 가질 때 실제로 충분한 지침을 제공하는지 확실하지 않습니다 [many-categories]. 태그에 대해서는이 사이트를 참조하십시오 . 시도 할 수있는 많은 방법이 있습니다. (이것이 내가 알 수없는 좋은 아이디어라면 특정 응용 프로그램을 말하지 않았다면) 일종의 계층 적 범주 변수, 즉 영감을 얻습니다. 생물학적 분류에 사용 된 시스템에 따라 https://en.wikipedia.org/wiki/Taxonomy_(biology)를 참조 하십시오.. 거기에서 개인 (식물 또는 동물)이 먼저 도메인, 왕국, Phylum, 클래스, 명령, 가족, 속 및 종으로 분류됩니다. 따라서 분류의 각 수준에 대해 요인 변수를 만들 수 있습니다. 예를 들어 슈퍼마켓에서 판매되는 제품의 수준이 [식료품, 주방 용품, 기타]로 시작하는 계층 적 분류를 만들 수 있으면 식료품은 [고기, 생선, 야채, 곡물 등]으로 분류 될 수 있습니다. 곧. 결과와 특별히 관련되지 않은 사전 계층 구조를 제공하는 가능성.

그러나 당신은 말했다 :

회귀 결과와 관련하여 높은 수준의 범주를 생성하는 데 관심이 있습니다.

그런 다음 fused lasso를 시도 하고이 스레드의 다른 답변을 볼 수 있습니다.이 스레드의 다른 답변을 참조하십시오.이 계층의 제안에 의해 암시 된 수준의 사전 구성이 아닌 전체 데이터를 기반으로 레벨을 더 큰 그룹으로 축소하는 방법으로 볼 수 있습니다 레벨의 조직.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.