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


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.