2010-05-08 4 views
19

내가 태그 중심의 전자 상거래 환경을 위해 사용하는 것이 현명한 일 것입니다 무슨 알고리즘 궁금가 :태그/키워드를 기반으로 추천

  • 각 항목은 여러 개의 태그가 있습니다. IE :

    이름 항목 : "메탈 - 블랙 앨범 CD", 태그 :

  • 각 사용자가 여러 개의 태그가 "메탈", "블랙 앨범", "바위", "음악" 친구 (다른 사용자)는 에 바인딩됩니다. IE :

    아이디 : "testguy"관심 분야 : "파이썬", "바위", "금속", "컴퓨터 과학" 친구 : "testguy2", "testguy3"

관심 사용자 태그를 확인하고 정교한 방법으로 권장 사항을 생성하여 해당 사용자에 대한 권장 사항을 생성해야합니다.

아이디어 :.

  • 하이브리드

    추천 알고리즘은 각 사용자가 친구로서 사용 (공동 + 콘텍스트 기반 권고의 혼합물) 일 수있다.
  • 아마도 사용자 태그를 사용하면 유사 사용자 (동료)가 추천을 생성 할 수 있습니다.

  • 태그를 통해 사용자와 항목간에 직접 일치하는 태그 일 수 있습니다.

모든 의견을 환영합니다. 모든 파이썬 기반 라이브러리도 환영합니다. 파이썬 언어에서이 실험 엔진을 사용하게 될 것입니다.

+5

정확한 복제본 : http://stackoverflow.com/questions/2704845/python-recommendation-engine – msw

+3

훨씬 더 좋은 질문입니다. – whybird

+0

너무 광범위하게 닫는 투표/공구 rec. –

답변

18

1) 태그에 무게를 둡니다.

태그 관심의 여러 그룹으로 나뉩니다 : 내 친구 중 누구도

  • 내 친구 점유율의 숫자에 태그를 공유하지

    • 내 태그,하지만 난 공유하지
    • 내 태그를 할 내 친구의 숫자에 의해.

    은 (때때로 당신이-친구가 친구 - 중 - 너무 태그를 고려할 수 있지만 내 경험에 노력을 가치가되지 않았습니다. YMMV합니다.)

    모든 태그를 식별하는 사람과 또는 그 사람의 친구들이 관심사에 있고,이 개인을 위해 태그에 가중치를 붙이십시오. 태그 무게에 대한 하나 개의 가능한 단순한 공식은

    (tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends) 
    

    참고 함께 넣어 모든 친구의 두 배를 자신의 의견을 가치있게 매직 넘버 2입니다.

    2) 항목 목록의 태그 중 하나를 가지고 각 항목에 대한

    무게 :-), 조정할 자유롭게 바로 태그의 가중 모든 값을 추가 할 수 있습니다. 높은 가치 = 더 많은 관심.

    3) 임계 값을 적용하십시오.

    가장 간단한 방법은 사용자에게 상단에 개의 결과를 표시하는 것입니다.

    더 정교한 시스템은 안티 태그 (즉, 관심없는 주제)를 적용하고 다른 많은 작업을 수행하지만이 간단한 공식을 효과적이고 신속하게 발견했습니다.

  • +1

    친절한 답변을 해주셔서 감사합니다. 나는 수식에 대해 약간 혼란 스럽다 : 정확하게 tag_is_in_my_list는 무엇을 의미 하는가? 1 또는 0과 같은 어떤 종류의 바이너리라면? 건배 – Hellnar

    +2

    예, 이진수 1 또는 0입니다. – whybird

    +0

    이 예/샘플 구현은 – user962206

    4

    Toby Segaran이 작성한 O'Reilly의 Programming Collective Intelligence 사본을 추적 할 수 있습니다. 이 문제에 대한 모델 솔루션이 있습니다 (실제로는 정말 좋은 것들이 많이 있습니다).

    0

    문제는 Amazon의 잘 알려진 사이트와 같은 제품 권장 엔진과 유사합니다. 이들은 association rules이라는 학습 알고리즘을 사용하는데, 이는 기본적으로 사용자와 제품 사이의 공통 피쳐 Z를 기반으로 한 사용자 X 구매 제품 Y의 조건부 확률을 만듭니다. 많은 오픈 소스 툴킷은 OrangeWeka과 같은 연결 규칙을 구현합니다.

    0

    Drools에 Python Semantic module을 사용하여 파이썬 스크립팅 언어로 규칙을 지정할 수 있습니다. Drools를 사용하여 쉽게 수행 할 수 있습니다. 몇 가지 권장 엔진을 해결하는 데 사용 된 훌륭한 규칙 엔진입니다.

    0

    제한된 볼츠만 기계를 사용합니다. 비슷하지만 유사하지 않은 태그의 문제를 아주 깔끔하게 해결합니다.

    +0

    이 답변을 조금 더 살릴 수 있습니까? 예를 들어 집처럼 RBM을 사용 하시겠습니까? – dwanderson

    +0

    @ dwanderson RBM의 WP 페이지를 읽었습니까? – isomorphismes