2

2つの異なるタイプのユーザー(メンターとメンティー)でいっぱいのデータベースがあります。これにより、2番目のグループ(メンティー)が最初のグループ(メンター)のプロファイルに一致するユーザーを「検索」できるようにします。メンターとメンティーはどちらも、いつでも自分のプロファイルにアクセスしてアイテムを変更できます。

現在、ユーザーマッチング(recommender.mostSimilarIDs())にApacheMahoutを使用しています。私が遭遇している問題は、誰かが検索するたびにユーザーデータをリロードする必要があるということです。それ自体はそれほど時間はかかりませんが、Mahoutがデータを処理するときは、非常に長い時間がかかるようです(3000人のメンターと3000人のメンティーの場合は14分)。処理後、マッチングはほんの数秒で完了します。また、処理中に同じINFOメッセージが何度も表示されます(「処理済み2248ユーザー」)。コードを見ると、メッセージは10000ユーザーごとにのみ出力される必要があることがわかります。

GenericUserBasedRecommenderとGenericDataModelを、NearestNUserNeighborhood、AveragingPreferenceInferrer、PearsonCorrelationSimilarityとともに使用しています。データベースからメンターをロードし、メンティーをPOJOのリストに追加し、それらをFastByIDMapに変換してDataModelに提供します。

これを行うためのより良い方法はありますか?プロダクトオーナーは、すべての検索でデータが最新である必要があります。

4

1 に答える 1

1

(私は著者です。)

毎回データをリロードするように要求する必要はありません。なぜですか?

14 分というのは長すぎるように聞こえますが、このような少量のデータを読み込むには長すぎます。何かがおかしいのです。詳細については、user@mahout.apache.org でフォローアップしてください。

からのログ メッセージが表示されDataModelます。これは、選択したロギング システムで無効にできます。1 つの最終カウントを出力します。これは心配する必要はありません。

PreferenceInferrera が必要であることが絶対にわかっている場合を除き、 a を使用しないことをお勧めします。ここって本当に評価あるの?そうでない場合は提案するかもしれませLogLikelihoodSimilarityん。

于 2010-08-30T12:43:04.560 に答える