0

mahout でアイテム ベースのレコメンダーを使用しようとしています。これには、250 万人のユーザーとアイテムのやり取りが含まれていますが、好みの値は含まれていません。約100件のアイテムと10万人のユーザーがいます.推奨するのに約10秒かかります. 一方、ユーザーベースのレコメンダーを使用すると、同じデータの場合、1 秒もかかりません。

ItemSimilarity sim = new TanimotoCoefficientSimilarity(dm); 
CandidateItemsStrategy cis = new SamplingCandidateItemsStrategy(10,10,10,dm.getNumUsers(),dm.getNumItems());
MostSimilarItemsCandidateItemsStrategy mis = new SamplingCandidateItemsStrategy(10,10,10,dm.getNumUsers(),dm.getNumItems());
Recommender ur = new GenericBooleanPrefItemBasedRecommender(dm,sim,cis,mis);

SamplingCandidateItemsStrategy に上記のパラメーターを使用することを提案している @Sean の回答の 1 つを読みました。しかし、それが実際に何をしているのかはよくわかりません。

編集: 2.5 M はユーザーとアイテムの関連付けの合計で、10 万人のユーザーがいて、アイテムの総数は 100 です。

4

1 に答える 1

1

多くの理由の中で、アイテムベースのレコメンダーを選択する主な理由は次のとおりif the number of items is relatively low compared to the number of users, the performance advantage could be significantです。これも逆です。If the number of users is relatively low compared to the number of items, choosing user-based recommendation will result in performance advantage.

あなたの質問から、データセット内のアイテム数とユーザー数が実際にはわかりませんでした。2.5M に言及してから 100K に言及したら?いずれにせよ、ユーザーベースの推奨事項の方が速い場合は、このアプローチを選択する必要があります。

ただし、アイテム間の類似性がより固定されている場合 (根本的にまたは頻繁に変化することが予想されない場合) は、事前計算の対象として適しています。事前計算を行い、アイテム間の事前計算された類似性を使用できます。

また、好みの値がないため、アイテムベースの類似度を使用する場合は、アイテムのいくつかの特性に基づいた純粋なアイテム間の類似度で類似度関数を強化することを考えることができます。(これは単なるアイデアです)。

于 2014-02-07T08:48:13.823 に答える