큰 범주 값에 대한 하나의 핫 인코딩 대안?


13

1600 개가 넘는 범주 값이 큰 데이터 프레임이 있습니다 .1600 개가 넘는 열이 없도록 대안을 찾을 수있는 방법이 있습니까?

나는 재미있는 링크 http://amunategui.github.io/feature-hashing/#sourcecode 아래에서 이것을 발견했다.

그러나 그들은 내가 원하지 않는 클래스 / 객체로 변환하고 있습니다. 다른 머신 러닝 모델로 테스트 할 수 있도록 최종 출력을 데이터 프레임으로 원합니까? 또는 로지스틱 회귀 또는 XGBoost 이외의 다른 기계 학습 모델을 훈련시키기 위해 생성 된 행렬을 사용할 수있는 방법이 있습니까?

어쨌든 내가 구현할 수 있습니까?


이것은 정말로 문제입니까? 희소 행렬 표현을 사용한다고 가정하면 onehot 인코딩은 실제로 문제가되지 않습니다.
Louis T

좀 더 500m 기록 이상의 기록의 수백만이 @LouisT
vinaykva

그래도 하나가 뜨겁더라도 희소 행렬을 사용하더라도 문제가되지 않습니다
Louis T

@LouisT 복잡성이 증가하고 기차 시간도 증가하며 데이터가 너무 희박해질 것입니다.
vinaykva

1
귀하의 게시물은 약 1 년 전이며 더 이상 관심이 없지만 신경망을 사용하여 엔티티 포함에 대해 여전히 관심이 있습니까? medium.com/@satnalikamayank12/…
TwinPenguins

답변:


10

하나의 옵션은 희귀 값을 'other'에 매핑하는 것입니다. 이것은 자연 언어 처리에서 일반적으로 수행됩니다. 직관은 매우 드문 레이블이 많은 통계적 힘을 전달하지 않는다는 것입니다.

또한 사람들이 1- 핫 범주 형 값을 저 차원 벡터에 매핑하는 것을 보았습니다. 각 1- 핫 벡터는 다변량 가우시안의 드로우로 나타납니다. 이 방법은 압축 감지의 아이디어에 의해 동기 부여된다는 Deep Knowledge Tracing 종이를 참조하십시오.

BARANIUK, R. 압축 감지. IEEE 신호 처리 매거진 24, 4 (2007).

구체적으로, 그들은 길이 N의 각 벡터를 길이 log2 (N)의 더 짧은 벡터에 매핑합니다. 나는 이것을 직접하지 않았지만 시도해 볼 가치가 있다고 생각합니다.


그런 인코딩으로 거리를 계산하는 방법이 궁금합니다.
eric2323223

2

데이터를 읽고 먼저 범주 형 변수의 모든 고유 값 목록을 얻을 수 있습니다. 그런 다음 고유 값 목록에 하나의 핫 인코더 객체 (sklearn.preprocessing.CategoricalEncoder)를 맞출 수 있습니다.

이 방법은 열차 테스트 프레임 워크 또는 청크 단위로 데이터를 읽는 경우에도 도움이됩니다. 나는이 모든 것을 스스로 수행하는 파이썬 모듈을 만들었습니다. 이 GitHub 리포지토리에서 찾을 수 있습니다 -dummyPy

이것에 대한 짧은 튜토리얼- 파이썬에서 범주 형 변수를 핫 인코딩하는 방법?



0

가장 비슷한 값을 갖거나 유사한 패턴을 가진 값 (또는 열)을 하나의 값 (또는 열)으로 대체 할 수 있도록 1600 개의 값이 400 (또는 적게).

전의. 같은 값의 경우 (구름-님 버스 구름, 이슬비, 비, 비, 폭우는 (비, 비, 폭우)로 변환 될 수 있습니다.

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