0

私は mahout を試していて、入力データモデルについて疑問に思っています

非配布版の場合

ファイルデータモデルは従う必要があります: userid、itemid、userPreference 問題は、このユーザー設定値がないことです。事前に計算する必要があります。

私は記事http://www.codeproject.com/Articles/620717/Building-A-Recommendation-Engine-Machine-Learningを見つけました 著者は実際にはユーザーの好みの値を持っていないようでしたが、彼org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -s SIMILARITY_COOCCURRENCE は {userid, questionid から計算していました私が知る限り、 mahout はデータからパーフェレンス値を計算してから推奨を計算するようですが、この場合は正しいですか?

4

2 に答える 2

0

ユーザー設定の値がない場合は、おそらく必要ありません。Mahout は、好みの値を持たないユーザーにアイテムを推奨するための実装を提供します。これは、ブール設定と呼ばれます。基本的に、一部のユーザーがアイテムを気に入っていることはわかっていますが、その程度はわかりません。たまにはこれでいい。

以下は、これを行う方法のサンプルコードです。基本的に最初の行だけが異なり、データ モデルのタイプがBooleanPrefDataModel. 次に、ブール データを使用して、2 種類の類似度測定を使用できます。LogLikelihoodSimilarity TanimotoCoefficientSimilarity、. 両方とも、ユーザー ベースおよびアイテム ベースのレコメンデーションの計算に使用できます。

DataModel model = new GenericBooleanPrefDataModel( GenericBooleanPrefDataModel.toDataMap( new FileDataModel(new File("FILE_NAME"))));

UserSimilarity similarity = new LogLikelihoodSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(10, similarity, model);
Reecommender recommender =  new GenericUserBasedRecommender(model, neighborhood, similarity);

List<RecommendedItem> recommendations = recommender.recommend(1, 10);

for (RecommendedItem recommendation : recommendations) {
    System.out.println(recommendation);
}

もう 1 つの方法は、mahout の外部で設定値を計算し、データ モデルを他のユーザー ベースまたはアイテム ベースのアルゴリズムにフィードすることです。しかし、私の知る限り、mahout は設定値を計算するための実装を提供していません。

于 2014-02-26T08:14:44.007 に答える
0

データ モデルの設定値を定義できます (ただし、データ モデルによって異なります)。たとえば、データ モデル アイテムは、ユーザーが聞くトラックです。プリファレンス値は、user1 が trackA x 回聞くように定義できます。したがって、データ モデルのプリファレンス値は、userid-itemid の一意のペアごとに定義する必要があります。

データモデルの例:

ユーザー ID、itemid、設定

1,1,3 - 1,2,5 - .... - 5,1,2... など。

于 2014-05-29T23:42:43.780 に答える