신경망 : 원-핫 변수 압도적 인 연속?


13

약 20 열 (20 가지 기능)이있는 원시 데이터가 있습니다. 그 중 10 개는 연속적인 데이터이고 10 개는 범주 형입니다. 범주 형 데이터 중 일부는 50 개의 서로 다른 값 (미국)을 가질 수 있습니다. 데이터를 사전 처리 한 후 10 개의 연속 열이 10 개의 준비된 열이되고 10 개의 범주 형 값은 200 개의 1- 핫 인코딩 된 변수가됩니다. 이 200 + 10 = 210 기능을 모두 신경망에 넣으면 200-one-hot 기능 (10 범주 열)이 10 개의 연속 기능을 완전히 지배하게 될 것입니다.

아마도 한 가지 방법은 열을 함께 "그룹화"하는 것입니다. 이것이 유효한 관심사이며이 문제를 처리하는 표준 방법이 있습니까?

(나는 중요하지 않다고 생각하지만 Keras를 사용하고 있습니다.)


두 개 이상의 순차적 모델을 사용한 다음 병합하는 것을 고려 했습니까? 각 모델에는 데이터가 제공 될 때 데이터와 더 잘 일치하는 입력이 있습니다 (소시지처럼 매쉬업하는 것과는 대조적으로). 병합 후 바로 최종 출력 레이어가 만들어 지므로 최종 레이어는 특정 샘플에 가장 적합한 모델을 결정합니다. keras.io에서 : keras.io/getting-started/sequential-model-guide
photox

내가 찾던 것. 기여해 주셔서 감사합니다.
user1367204

나는 이것을 시도했고 앙상블의 val_loss (model_1, model_2)는 model_1의 val_loss보다 높고 model_2의 val_loss보다 컸다.
user1367204

실제로 이것을 시도했지만 실제로이 문제가 발생한다고 결정 했습니까? 이 점을 확인하기 위해 어떤 테스트를 했습니까? 결과는 어땠습니까?
휴 퍼킨스

답변:


5

범주 형 변수를 one-hot과 다른 방법으로 인코딩 할 수 있습니다. 이 경우 이진 또는 해시 인코더가 적합 할 수 있습니다. 특히 해싱은 모든 범주를 피처 벡터 당 하나의 표현으로 인코딩하기 때문에 어느 쪽도 다른 쪽을 지배하지 않기 때문에 좋습니다. 최종 표현의 크기를 지정할 수도 있으므로 모든 범주 형 변수를 10 개의 피처로 해시하고 20 개의 숫자 피처 (반 연속, 반 범주 형)로 끝날 수 있습니다.

둘 다 https://github.com/scikit-learn-contrib/categorical-encoding 에서 구현 되거나 자신을 구현하기 위해 매우 간단합니다.


4

임베드 를 사용 하여 많은 범주 형 변수를 단일 벡터로 변환 할 수 있습니다 . 이 압축 벡터는 범주 형 피처의 분산 표현입니다. 범주 형 입력은 어떤 방식 으로든 모든 입력을 설명하는 N 개의 잠재 피처를 나타내는 N 개의 실수를 갖는 길이 N의 비교적 작은 벡터로 변환됩니다.

영어 사전에서 많은 단어를 고려하십시오. 이 숫자가 N이면 각 단어를 길이가 N 인 one-hot-coded vector로 나타낼 수 있습니다. 그러나 word-to-vec 는이 정보를 거의 200-300 사이의 길이 벡터로 캡처 할 수 있습니다.

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