2014-10-17 5 views
1

여러 요인의 데이터를 사용하여 mahout 권장 사항에 대한 세부 정보를 제공해 주시겠습니까? 나는 사용자 아이디, 책, 언어, 카테고리 등의 데이터를 가지고있다. 사람들이 프랑스어 언어로 된 스릴러 카테고리로 책을 읽었다 고 가정 해 봅시다. 이제 그 모든 사실을 고려해 볼 때 나는 그에게 책을 추천해야합니다. 올바른 경로를 선택하는 것에 대해 통찰력을 주시겠습니까?여러 가지 요소가있는 암시 적 데이터가 필요합니다.

답변

1

인덱스 및 쿼리 할 검색 엔진 모델을 만드는 Mahout 1.0에 대한 것입니다.

모델은 표시기라고하며 각 항목의 유사한 항목 목록입니다. 비슷한 의미로 그들은 같은 사람들에 의해 구입되었습니다. 이것은 cooccurrence recommender의 본질입니다.

협업 필터링 데이터는 읽은 책 또는 ID입니다. 책을 추천하면 여러 형식 (전자 책, 녹음 된 책, papeback 등)에 대해 동일한 제목의 다른 ID를 표시 할 수 있습니다. 메타 데이터를 사용하여 특정 범주에 대한 레코드를 왜곡 할 수 있습니다. 잠재 고객이 대개 다국어라고 생각하지 않는 이상이 언어는 아마도 필터 일 것입니다.

구매를 Mahout 1.0 spark-itemsimilairty에 입력하여 CF 유형 표시기를 만듭니다. 각 도서에 대해 비슷한 책 목록이 나옵니다. 검색 엔진의 색인을 생성하십시오. 그런 다음 가장 간단한 쿼리는 구입 한 사용자의 사용자 기록입니다. 이렇게하면 주문을받지 않은 추천 도서가 주문 목록으로 제공됩니다.

이제 사용자의 가장 선호하는 카테고리를 향한 결과를 왜곡하여 색인의 별도 필드에있는 각 항목의 카테고리를 색인화하십시오. 따라서 색인에는 "지표"필드와 "범주"필드가 있습니다. "문서"는 실제로 카탈로그에있는 항목/책입니다. 당신은 아마도 모든 사용자가에서 구입 한, 원하는대로

query: 
    field: indicators; q: "book1 book2 book3 book10" //the user's purchase history 
    field: categories; q: "user's-favorite-category user's-second-favorite-category" 
    field: language; filter: "list-of-languages-of-books-the-user-has-purchased" 

당신은 그 필드에 쿼리에서 많은 종류를 넣을 수 있습니다 : 왜곡 된 쿼리 (의사 코드)입니다. 언어 필터를 사용하면 필터가 아닌 왜곡 요소로 사용할 수 있습니다. 이러한 방식으로 메타 데이터로 비뚤어 지거나 필터링 된 협업 필터링 recs를 원활하게 통합하여 고품질의 rec를 얻을 수 있습니다. 도움이 될 것으로 생각되는 모든 메타 데이터를 사용할 수 있습니다.

현재 서적 세부 정보보기와 같이 기록한 다른 작업을 추가하면 더 좋은 결과를 얻을 수 있습니다. 이것은 cross-cooccurrence 표시기라고 불리는 특별히 처리 된 표시기를 요구할 것이고 또한 spark-itemsimilairty에 의해 계산 될 것이다. 실제로 사용자가 취하는 모든 작업 - 전체 클릭 스트림을 별도의 교차 공동 작업 표시기로 포함 할 수 있습니다. 이렇게하면 레코드를 만드는 데 사용할 수있는 협업 필터링 데이터의 양이 크게 늘어나므로 품질이 향상됩니다.

이 아이디어는 카테고리와 같이 책이 아닌 항목에 대한 작업으로 확장 될 수도 있습니다. 사용자가 책을 구입하면 어떤 의미에서 카테고리를 구입할 수도 있습니다. 이러한 "카테고리 구매"를 2 차 액션으로 기록하고 크로스 코코레이션 인디케이터를 생성하면 결과를 왜곡하고 구매 표시로 사용할 수 있습니다. 쿼리는 다음과 같이 보일 것이다 :

query: 
    field: indicators; q: "book1 book2 book3 book10" //the user's purchase history 
    field: category-indicators; q: "user's-history-of-purchased-categories" 
    field: categories; q: "user's-favorite-category user's-second-favorite-category" 
    field: language; filter: "list-of-languages-of-books-the-user-has-purchased" 

읽기 여기 스파크 itemsimilarity에 대해 : http://mahout.apache.org/users/recommender/intro-cooccurrence-spark.html이 인덱스 및 쿼리 부분에 대한 검색 엔진 (SOLR, Elasticsearch)를 사용하는 방법에 대한 논의가 포함되어 있습니다.

+1

Mahout ALS recommendator는 교육 ​​집합의 모든 사용자에 대해 모든 rec를 반환합니다. 따라서 매우 최근의 동작을 기반으로 rec를 반환 할 수 없습니다. Mahout Item-Based recommendender의 경우에도 마찬가지입니다. 설명하려면 차원 감소 및 행렬 인수 분해를 이해해야합니다. ALR은 데이터의 중요한 경향을 설명하는 몇 가지 "요인"으로 항목을 줄입니다.데이터에서 노이즈를 필터링하는 데 사용됩니다. 이들 중 어느 것도 여러 작업을 사용하거나 메타 데이터로 비뚤어지게 할 수 없습니다. 최첨단 검색 엔진을 사용하십시오. – pferrel