Apache Mahout を使って簡単なレコメンド処理を試してみた
レコメンドエンジンは、Amazonのオススメ商品機能が有名です。
AmazonがWeb業界でこれだけの影響力がある理由としては、レコメンドエンジンを最初にビジネスとして展開させたことの要因が大きいと思われます。
そこで、今回はApache Mahout を使って簡単なレコメンド処理を試してみました。
-
■ 実行してみる
Apache Mahout による簡単なレコメンド処理は、入力データをコンバートした DataModel をレコメンド処理をコンバートした Recommender に設定して、recommend メソッドにレコメンド対象のユーザーIDと対象となるレコメンドアイテム数を指定します。
今回はCSV ファイルを入力データとするFileDataModelとGenericItemBasedRecommenderを使用してみます。
入力 CSV ファイルフォーマットは、以下のようになります。
ユーザーID, アイテムID, 評価の値
GenericItemBasedRecommender はコンストラクタ内で指定する Similarity によって類似性の計算方法を設定できます。
Mahout には複数の Similarity が用意されています。
EuclideanDistanceSimilarity : ユークリッド距離
UncenteredCosineSimilarity : コサイン類似度
CityBlockSimilarity : マンハッタン距離
PearsonCorrelationSimilarity : ピアソン相関
などが挙げられます。
言語解析などは、作成したデータの行列が疎名行列になり情報を密にするためSVD(特異値分解)などのアルゴリズムが使用されます。
また、協調フィルタリングではSlope One 等のアルゴリズムが使用されます。
これらのSVDやSlope One 等の本格的なアルゴリズムを使用するには、Recommender(SVDRecommender や SlopeOneRecommender)を使用します。
それでは、単純な例を実行してみます。
実行例 (ユーザーID=1 のレコメンドアイテムを出力)
コマンドを叩くと以下の結果が出てきました。
result : 4, 3.6665667
アイテムID=4 がレコメンドされたアイテムです。
入力ファイルのデータが単純すぎたため
1アイテムしか出力されませんでした。
入力ファイル例
1,2,5
2,2,5
1,3,5
1,5,2
2,1,4
2,4,3
2,5,1
1,1,4
・・・
大規模の入力データを使うと 類似性 による違いが出てきます。
実行例2(ユークリッド距離 EuclideanDistanceSimilarity)
情報: Processed 55131 user
result : 149, 2.2220574
result : 143, 2.2179555
result : 133, 2.2135546
result : 137, 2.2050555
result : 145, 2.205735
実行例3(コサイン類似度 UncenteredCosineSimilarity)
情報: Processed 55131 users
result : 114, 4.388584
result : 117, 4.3185726
result : 129, 4.2214856
result : 138, 4.219598
result : 148, 4.108547
実行例4(マンハッタン距離 CityBlockSimilarity)
情報: Processed 55131 users
result : 117, 3.3547886
result : 129, 3.259705
result : 148, 3.1355408
result : 114, 3.1283574
result : 150, 3.1052058
■ 最後に
このようにApache Mahoutを利用すれば、レコメンドエンジンなどの複雑なアルゴリズムを組む必要がなく、大規模なデータもHadoopやSparkの環境下にて動かせば、簡単に実現できます。一度試してみては如何でしょうか。
-
お問い合わせ
SiTest の導入検討や
他社ツールとの違い・比較について
弊社のプロフェッショナルが
喜んでサポートいたします。 -
コンサルティング
ヒートマップの活用、ABテストの実施や
フォームの改善でお困りの方は、
弊社のプロフェッショナルが
コンサルティングいたします。
今すぐお気軽にご相談ください。
今すぐお気軽に
ご相談ください。
(平日 10:00~19:00)
今すぐお気軽に
ご相談ください。
0120-315-465
(平日 10:00~19:00)
グラッドキューブは
「ISMS認証」を取得しています。
認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業
「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。