SVM 또는 신경망을 사용할 때 범주 형 변수를 숫자 형 변수로 코딩하는 방법


19

SVM 또는 신경망을 사용하려면 범주 형 변수를 숫자 변수로 변환 (인코딩)해야합니다.이 경우 일반적인 방법은 0-1 이진 값을 사용하여 k 번째 범주 형 값을 (0,0, .. ., 1,0, ... 0) (1은 k 번째 위치에 있습니다). 0-1 표현이 신경망에 많은 수의 추가 차원 (입력 단위)을 도입하여 특히 바람직하지 않거나 예상하지 않은 것처럼 많은 수의 범주 값 (예 : 10000)이있을 때 이것을 수행하는 다른 방법이 있습니까? ?

일반적인 전략에 대해 묻고 있습니다.


일반적인 전략이나 특정 문제에 대해 질문하고 있습니까?
Denis Tarasov

답변:


11

단어가 일반적으로 1-k로 인코딩되는 NLP에서, 단어 임베딩의 사용이 최근에 등장했다. 위키 피 디아 페이지 의 참조와 함께 좋은 시작이다.

일반적인 아이디어는 의미 적으로 유사한 단어가 그 공간에서 가까운 각 단어 대한 벡터 표현 을 배우는 것입니다 . 결과적으로, 입력은 어휘의 크기 대신에 크기가 이다.엑스나는아르 자형나는

그 아이디어를 당신의 설정으로 옮길 수 있습니다.


10

'표준'방법은 다음과 같습니다. 원핫 인코딩 (질문에서 언급했습니다). 가능한 카테고리가 너무 많지만 0-1 인코딩이 필요한 경우 해싱 트릭을 사용할 수 있습니다 .

다른 자주 사용되는 방법은 카테고리에 대한 답변을 평균화하는 것입니다 : kaggle의 의견 그림을 참조하십시오 .


1

패키지 dummyVars에서 R로 사용할 수 있습니다 caret. 레벨 수에 따라 다른 열을 자동으로 생성합니다. 그 후에는 cbind원본 데이터를 사용 하여 첨부 할 수 있습니다 . 다른 옵션은 model.matrix및 을 포함 sparse.model.matrix합니다.


0

더 간결하고 때로는 최고 성능을 능가하는 이진 인코딩을 시도 할 수 있습니다. 예를 들어 Keras에서 categorical embedding을 구현할 수 있습니다.


0

케이1

Cheng Guo, Felix Berkhahn의 "범주 형 변수의 개체 임베딩"

함수 근사 문제의 범주 형 변수를 유클리드 공간에 매핑합니다.이 변수는 범주 형 변수의 개체 포함입니다. 매핑은 표준 감독 훈련 과정 동안 신경망에 의해 학습됩니다. 엔터티 임베딩은 원 핫 인코딩에 비해 메모리 사용량을 줄이고 신경망의 속도를 높일뿐만 아니라 임베딩 공간에서 유사한 값을 서로 가깝게 매핑하여 범주 형 변수의 고유 속성을 보여줍니다. 우리는 최근 Kaggle 경쟁에서 성공적으로 적용했으며 상대적으로 간단한 기능으로 3 위를 차지했습니다. 우리는이 논문에서 엔티티 임베딩이 신경망이 데이터가 희박하고 통계를 알 수 없을 때 더 잘 일반화하는 데 도움이된다는 것을 더 보여줍니다. 따라서 다른 방법이 과적 합되는 높은 카디널리티 기능이 많은 데이터 세트에 특히 유용합니다. 또한 훈련 된 신경망에서 얻은 임베딩이 대신 입력 기능으로 사용될 때 테스트 된 모든 머신 러닝 방법의 성능을 크게 향상시킵니다. 엔티티 임베딩은 범주 형 변수에 대한 거리 측정 값을 정의하므로 범주 형 데이터를 시각화하고 데이터 클러스터링에 사용할 수 있습니다.

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