기계 학습을 위해 범주 형 기능을 숫자로 인코딩


14

신경망과 같은 많은 기계 학습 알고리즘은 숫자를 처리 할 것으로 예상합니다. 따라서 범주 형 데이터가 있으면 변환해야합니다. 범주 적으로 말하자면, 예를 들어 :

자동차 브랜드 : Audi, BMW, Chevrolet ... 사용자 ID : 1, 25, 26, 28 ...

사용자 ID는 숫자이지만 레이블 일 뿐이며 연령이나 금액과 같은 연속성 측면에서 아무 의미가 없습니다.

따라서 기본 접근 방식은 이진 벡터를 사용하여 범주를 인코딩하는 것으로 보입니다.

아우디 : 1, 0, 0 ... BMW : 0, 1, 0 ... 시보레 : 0, 0, 1 ...

카테고리가 적을 때 괜찮지 만 그 이상으로는 조금 비효율적입니다. 예를 들어, 인코딩 할 사용자 ID가 10,000 개인 경우 10,000 개의 기능입니다.

문제는 더 좋은 방법이 있습니까? 아마도 확률과 관련이 있습니까?


3
예측 모델에 사용자 ID를 포함하려는 이유는 무엇입니까? 설명하는 것처럼 더미 변수 코딩을 사용할 때 원하는 것보다 큰 카디널리티를 가진 다른 범주 형 변수의 경우 먼저 레벨을 축소하기 위해 의사 결정 트리를 유일한 예측 변수로 실행합니다. "희귀 한"레벨 등을 그룹화하여 다시
바인딩

이는 특정 개인에게 특정한 효과에 관심이있는 통계 모델의 임의 효과와 같이 흥미롭게 들립니다. 예를 들어 같은 개인을 반복해서보고 특정 개인이 무엇을하는지 예측하려는 경우 유용 할 수있는 상황을 상상할 수 있습니다. 가능하면 계획에 대해 더 많은 것을 공유하십시오. 또한 멀티 레벨 모델링을 살펴볼 수도 있지만 머신 러닝보다는 추론 설정에서 더 일반적으로 사용됩니다.
Anne Z.

일부 스마트 연구원이 데이터의 사용자 ID가 사용자 계정을 만들 때 제공되었음을 감지 한 ML 컨테스트에 대해 읽은 것을 기억합니다. 따라서 난독 처리 된 타임 스탬프가 공개되었습니다 (응답 예측에 긍정적 영향을 미침). 이러한 경우와 Anne (권장 시스템)에서 언급 한 경우 외에는 userID를 포함하지 않습니다.
steffen

Anne-무작위 효과 모델이 실제로 개인에게 관심이없는 것은 아니므로 모집단의 표본으로 간주됩니까?
B_Miner

학습 문제가 부유 / 부자가 아닌 이진 카테고리를 예측하는 것이라면 왜 특정 사용자의 자동차 브랜드에 대한 기능을 갖는 것이 타당하지 않은지 이해하지 못합니다. 개인의 소셜 네트워크가 알려진 경우 사용자 ID를 사용할 수 있습니다. 예를 들어, 사용자 X의 친구가 부자가되기 쉽다는 것을 증명하기 위해 이 사고 방식에 문제가 있습니까?
Vladtn

답변:


6

항상 사용자 ID를 단어의 백으로 취급 할 수 있습니다. 대부분의 텍스트 분류기는 데이터가 희박 할 때 수십만 개의 차원을 처리 할 수 ​​있습니다 (예 : Compressed Sparse Rows 를 사용하는 경우 메모리에 명시 적으로 저장할 필요가없는 0) 데이터 매트릭스에 대한 표현).

그러나 문제는 사용자 ID를 기능으로 취급하는 데 특정 문제가 있다는 것이 합리적입니까? 관계 데이터를 비정규 화하고 ID 대신 사용자 기능 (연령, 위치, 온라인 닉네임 문자, 거래 내역 ...)을 사용하는 것이 더 합리적이지 않습니까?

원시 사용자 벡터의 클러스터링을 수행하고 사용자 ID 대신에 가장 가까운 N 개의 가장 가까운 센터 ID를 활성화 된 기능으로 사용할 수 있습니다.


자, 이것은 일반적인 질문이지만 대부분의 사용자 ID 문제에 집중하는 것을 보았으므로 여기에 내가 사용하고 싶은 이유가 있습니다. : Grockit에 대한 Kaggle의 대회 중 하나에서 살펴 보자 kaggle.com/c/WhatDoYouKnow . 목표는 사용자가 질문에 올바르게 대답할지 여부를 예측하는 것입니다. 내 의견으로는 추천 시스템과 비슷한 문제입니다. 영화 대신 질문이 있고 등급 대신 정확 / 잘못된 정보와 다른 데이터가 있습니다. 타임 스탬프를 사용할 수 있습니다 :)
Nucular

1
이 경우 사용자가 독립적이라는 가정을 할 수 있으며 자신의 기록에 대해서만 훈련 된 사용자 당 하나의 분류기를 작성할 수 있습니다.
ogrisel

1

등가 인코딩은 신경망으로 클래스를 인코딩 할 때 찾고있는 것일 수 있습니다. 다른 게시물에서 참조 된 "1 of n"인코딩보다 더 잘 작동하는 경향이 있습니다. 참고로 http://www.heatonresearch.com/wiki/Equilateral을 제안 할 수 있습니다 .


이것은 OP가 요구하는 입력 값에 대한 범주 인코딩이 아니라 출력 값 인코딩과 관련이있는 것으로 보입니다.
Alex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.