속성을 사용하여 사용자 프로필 분류 / 클러스터


14

웹 사이트에서 제품을 구매하는 사용자 데이터가 있습니다.

내가 가진 속성은 사용자 ID, 사용자의 지역 (주), 제품 카테고리 ID, 키워드 키워드 제품, 키워드 키워드 웹 사이트 및 판매 비용입니다.

목표는 제품 및 웹 사이트의 정보를 사용하여 "남성 젊은 게이머"또는 "집에서 엄마"와 같이 사용자가 누구인지 식별하는 것입니다.

아래 그림과 같이 샘플 사진을 첨부했습니다.

여기에 이미지 설명을 입력하십시오

제품에 대한 1940 개의 고유 카테고리와 13845 개의 고유 키워드가 모두 있습니다. 웹 사이트의 경우 13063 개의 고유 키워드가 있습니다. 전체 데이터 세트는 일일 로깅 데이터이므로 매우 큽니다.

나는 감독되지 않았기 때문에 클러스터링을 생각하고 있지만 그 ID는 숫자 의미가없는 주문 번호입니다. 그런 다음 알고리즘을 적용하는 방법을 모르겠습니다. 나는 또한 분류를 생각하고 있습니다. 구매 한 제품의 판매량에 따라 수업 열을 추가하는 경우 클러스터링이 더 바람직하다고 생각합니다. 키워드 ID의 크기가 10000을 초과 할 수 있으므로이 경우에 어떤 알고리즘을 사용해야하는지 모르겠습니다 (각 제품에는 많은 키워드가있을 수 있으므로 웹 사이트도 마찬가지 임). 이 프로젝트에 Spark를 사용해야합니다.

누구든지 아이디어 나 제안으로 나를 도울 수 있습니까?

정말 고맙습니다!


1
더 많은 정보를 제공 할 수 있습니까? "제품 A의 카테고리 ID"는 무엇이며 모든 항목에 대해 동일한 길이의 "제품 A의 키워드 ID 검색"은 무엇입니까? "검색 키워드 ID의 크기가 10000보다 클 수 있습니다"라는 이유는 무엇입니까? 그들은 무엇인가? 당신은 얼마나 많은 샘플을 가지고 있습니까? 여기에 몇 가지 샘플 데이터를 게시하면 모든 질문에 답변 할 수 있습니다. 그럼 아마 당신에게 뭔가를 제안 할 수 있습니다.
Kasra Manshaei

제품 A와 제품 B는 사용자가 구매 한 두 제품입니까? 단어는 키워드가 다를 수 있기 때문에 제품 A와 B가 사용자마다 다르다고 제안하는 것 같습니다. 그래요? 그리고 마지막 코멘트, 당신은 분류 또는 클러스터 하시겠습니까? 그것들은 상당히 다른 기술입니다 :)
logc

답장을 보내 주셔서 감사합니다 @kasramsh. 설명을 업데이트하고 샘플 데이터도 첨부했습니다. 당신에게서 제안을 얻을 수 있기를 바랍니다!
실비아

@logc 예, 제품 (이전에는 제품 A라고 말함)과 웹 사이트 (이전에는 제품 B라고 말함)는 사용자마다 다릅니다. 각 제품에는 몇 개의 키워드가 있으며 각 웹 사이트에는 몇 개의 키워드가 있습니다. "남성 젊은 게이머"와 같은 사용자 프로필을 만들 수 있다면, 군집화 또는 분류는 괜찮습니다. "집 엄마에게있어". 클러스터링이 더 바람직하다고 생각합니다. 감사합니다!!
실비아

@sylvia-비슷한 문제가 해결되었습니다. 나는 그것을 별도의 질문으로 게시했습니다. 어떻게 해결했는지에 대한 제안을 해 주시겠습니까? datascience.stackexchange.com/questions/12930/… K에 대한 또 다른 의심은 고객별로 레코드를 그룹화 했습니까? 의미는 각 행이 거래를 나타내거나 현재까지 해당 고객의 총 구매를 나타냅니다.
Neil

답변:


11

지금은 간단한 답변을 얻을 시간이 있지만 나중에 더 확장 해 보겠습니다.

당신이 원하는 것은이다 클러스터링 하면 데이터에 대한 몇 가지 레이블을 발견하기 원하기 때문에. (분류와는 달리, 최소한 일부 데이터에 대한 레이블이 있고 나머지에 레이블을 지정하려는 경우).

사용자에 대한 클러스터링을 수행하려면 추상 공간에서 사용자를 일종의 포인트로 만들어야합니다. 그런 다음 점 사이의 거리를 측정하고 "가까운"점이 "유사"하다고 말한 다음 해당 공간의 위치에 따라 레이블을 지정합니다.

데이터를 사용자 프로필처럼 보이는 것 (예 : 사용자 ID,이 사용자의 기능을 나타내는 숫자 벡터)으로 변환해야합니다. 귀하의 경우, 각 기능은 "웹 사이트 범주"또는 "제품 범주"일 수 있으며 그 숫자는 해당 기능에 사용 된 금액입니다. 또는 기능은 물론 웹과 제품의 조합 일 수 있습니다.

예를 들어, 세 가지 기능 만있는 사용자 프로필을 상상해 보겠습니다.

  • "기술적"웹에 사용 된 달러
  • "패션"제품에 사용 된 달러,
  • "가족 중심"웹 (누군가)의 "공격적"비디오 게임에 사용 된 달러.

이러한 프로필을 작성하려면 너무 많은 "범주"및 "키워드"를 관련성이 있다고 생각되는 기능에 매핑해야합니다. 그렇게하려면 주제 모델링 또는 의미 론적 유사성 을 살펴보십시오 . 이 맵이 구축되면 키워드 "가제트", "전자 제품", "프로그래밍"및 X가 다른 웹에서 소비 한 모든 비용이 모두 첫 번째 기능으로 집계되어야합니다. 등등.

기능을 "인상"하는 것을 두려워하지 마십시오! 사용자를 클러스터링 한 후에는이를 구체화하고 완전히 변경해야합니다.

사용자 프로파일이 있으면 k- 평균 또는 기타 흥미로운 것으로 사용하여 클러스터를 계속 진행하십시오 . 어떤 기술을 사용하든 각 클러스터의 "대표"지점을 얻는 데 관심이 있습니다. 이것은 일반적으로 해당 클러스터에있는 점의 기하학적 "중심"입니다.

이러한 "대표적인"점을 그리고 다른 군집과 비교하는 방법을 보여줍니다. 레이더 차트를 사용하는 것이 여기에서 매우 유용합니다. 두드러진 특징 (대표에 표시되어 있고 다른 군집과 비교할 때 매우 두드러진 특징)이있는 경우, 어색한 문구 ( "nerds", "fashionistas")로 군집에 레이블을 지정할 수 있습니다. , "공격적인 엄마"...).

클러스터링 문제는 공개 된 문제이므로 "올바른"해결책은 없습니다! 내 대답은 이미 꽤 길다고 생각합니다. 프로파일 정규화 및 이상 값 필터링에 대해서도 확인하십시오.


너무 감사합니다! 매우 도움이됩니다. 매핑부터 시작하겠습니다. 정말 감사!
실비아

도와 줄 수있어서 기뻐. :)
logc

@logc 님, 저는 기능 선택을 위해 LDA를 적용했습니다. 각 user_id를 "document"로 간주하고 키워드는 "document"에서 "words"로 간주하고 LDA를 적용하여 키워드에 대한 몇 가지 주제를 얻었습니다. 그러나 대부분의 주제가 동일한 키워드로 구성되어있는 이유를 모르겠습니다. 이것이 LDA가 제 경우에 적합한 방법이 아니거나 실수가 있다는 것을 의미합니까? 정말 고맙습니다!
실비아

@sylvia :이 질문을이 사이트에서 새로운 질문으로 바꾸는 것이 좋습니다. 그렇지 않으면, 우리는 많은 주석을 작성할 수 있으며, 이것이 Q & A에 가장 적합한 형식은 아닙니다. :)
logc

제안 해 주셔서 감사합니다. 다음은 datascience.stackexchange.com/questions/5941/을 살펴볼 시간이 있다면 게시 한 링크입니다 .
실비아

-2

오리엔테이션과 탐구를 위해 기계 학습을위한 매우 유용한 툴킷 인 WeKa 를 추천 할 수 있습니다 . 특정 입력 형식 (.ARFF)을 사용하므로 해당 형식도 고려해야합니다.

키워드 딜레마에 대해서는 중복되거나 표시되지 않은 키워드를 제거하기 위해 일부 기능을 선택하는 것이 좋습니다.


답장을 보내 주신 @Lennart Kloppenburg에게 감사드립니다. 속성 (keword_id)이 주문 번호 인 경우 기능 선택을 수행하는 방법은 무엇입니까? 위의 샘플 데이터를 업데이트했습니다. 한 번 살펴보고 제안 해 주시겠습니까? 감사합니다!
실비아
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.