マハウト-推奨事項
この章では、と呼ばれる一般的な機械学習手法について説明します。 recommendation, そのメカニズム、およびMahout推奨を実装するアプリケーションの作成方法。
勧告
アマゾンがあなたが興味を持っているかもしれない特定の製品にあなたの注意を引くためにどのように推薦されたアイテムのリストを思い付くのか疑問に思ったことはありません!
Amazonから「MahoutinAction」という本を購入したいとします。
選択した商品に加えて、Amazonは以下に示すように関連する推奨アイテムのリストも表示します。
このような推奨リストは、 recommender engines。Mahoutは、次のようないくつかのタイプのレコメンダーエンジンを提供します。
- ユーザーベースの推奨者、
- アイテムベースの推奨者、および
- 他のいくつかのアルゴリズム。
Mahoutレコメンダーエンジン
Mahoutには、非分散型、非Hadoopベースのレコメンダーエンジンがあります。アイテムのユーザー設定を含むテキストドキュメントを渡す必要があります。そして、このエンジンの出力は、他のアイテムに対する特定のユーザーの推定された好みになります。
例
携帯電話、ガジェット、およびそれらのアクセサリなどの消費財を販売するWebサイトについて考えてみます。そのようなサイトにMahoutの機能を実装したい場合は、レコメンダーエンジンを構築できます。このエンジンは、ユーザーの過去の購入データを分析し、それに基づいて新製品を推奨します。
レコメンダーエンジンを構築するためにMahoutが提供するコンポーネントは次のとおりです。
- DataModel
- UserSimilarity
- ItemSimilarity
- UserNeighborhood
- Recommender
データストアからデータモデルが準備され、レコメンダーエンジンへの入力として渡されます。レコメンダーエンジンは、特定のユーザーのレコメンデーションを生成します。以下に、レコメンダーエンジンのアーキテクチャを示します。
レコメンダーエンジンのアーキテクチャ
Mahoutを使用してレコメンダーを構築する
簡単なレコメンダーを開発する手順は次のとおりです。
ステップ1:DataModelオブジェクトを作成する
のコンストラクタ PearsonCorrelationSimilarityクラスには、製品のユーザー、アイテム、および設定の詳細を含むファイルを保持するデータモデルオブジェクトが必要です。サンプルデータモデルファイルは次のとおりです。
1,00,1.0
1,01,2.0
1,02,5.0
1,03,5.0
1,04,5.0
2,00,1.0
2,01,2.0
2,05,5.0
2,06,4.5
2,02,5.0
3,01,2.5
3,02,5.0
3,03,4.0
3,04,3.0
4,00,5.0
4,01,5.0
4,02,5.0
4,03,0.0
ザ・ DataModelオブジェクトには、入力ファイルのパスを含むファイルオブジェクトが必要です。を作成しますDataModel 以下に示すオブジェクト。
DataModel datamodel = new FileDataModel(new File("input file"));
ステップ2:UserSimilarityオブジェクトを作成する
作成する UserSimilarity 使用するオブジェクト PearsonCorrelationSimilarity 以下に示すクラス:
UserSimilarity similarity = new PearsonCorrelationSimilarity(datamodel);
ステップ3:UserNeighborhoodオブジェクトを作成する
このオブジェクトは、特定のユーザーのようなユーザーの「近隣」を計算します。近隣には2つのタイプがあります。
NearestNUserNeighborhood-このクラスは、特定のユーザーに最も近いn人のユーザーで構成される近隣を計算します。「最も近い」は、指定されたUserSimilarityによって定義されます。
ThresholdUserNeighborhood-このクラスは、特定のユーザーとの類似性が特定のしきい値を満たすか超えるすべてのユーザーで構成される近隣を計算します。類似性は、指定されたUserSimilarityによって定義されます。
ここでは使用しています ThresholdUserNeighborhood 設定の制限を3.0に設定します。
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(3.0, similarity, model);
ステップ4:レコメンダーオブジェクトを作成する
作成する UserbasedRecomenderオブジェクト。以下に示すように、上記で作成したすべてのオブジェクトをコンストラクターに渡します。
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
ステップ5:ユーザーにアイテムを推奨する
のrecommend()メソッドを使用してユーザーに製品を推奨します Recommenderインターフェース。この方法には2つのパラメーターが必要です。1つ目は、推奨事項を送信する必要があるユーザーのユーザーIDを表し、2つ目は送信する推奨事項の数を表します。これがの使用法ですrecommender() 方法:
List<RecommendedItem> recommendations = recommender.recommend(2, 3);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
Example Program
以下に、推奨事項を設定するためのプログラムの例を示します。ユーザーID2のユーザー向けの推奨事項を準備します。
import java.io.File;
import java.util.List;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.UserBasedRecommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
public class Recommender {
public static void main(String args[]){
try{
//Creating data model
DataModel datamodel = new FileDataModel(new File("data")); //data
//Creating UserSimilarity object.
UserSimilarity usersimilarity = new PearsonCorrelationSimilarity(datamodel);
//Creating UserNeighbourHHood object.
UserNeighborhood userneighborhood = new ThresholdUserNeighborhood(3.0, usersimilarity, datamodel);
//Create UserRecomender
UserBasedRecommender recommender = new GenericUserBasedRecommender(datamodel, userneighborhood, usersimilarity);
List<RecommendedItem> recommendations = recommender.recommend(2, 3);
for (RecommendedItem recommendation : recommendations) {
System.out.println(recommendation);
}
}catch(Exception e){}
}
}
次のコマンドを使用してプログラムをコンパイルします。
javac Recommender.java
java Recommender
次の出力が生成されます。
RecommendedItem [item:3, value:4.5]
RecommendedItem [item:4, value:4.0]