記事著者の電子メール: [email protected] 住所: 広東省恵州市
▲ この章のプログラム
⚪ Mastering Spark ケース - 映画の推奨事項;
⚪ マスタースパークのモデルストレージ;
⚪ マスター Spark モデルのロード;
⚪ Spark の推奨システムのコールド スタート問題をマスターします。
1. 事例 – 映画の推薦
1. ユーザーベースの推奨事項
1. 説明
これから ml-100k データ セットを処理します。u.data ファイルには、主に映画のユーザー評価などの 100,000 個のデータが含まれています。
2. コード
org.apache.spark._ をインポートします
org.apache.spark.mllib.recommendation.{ALS,Rating} をインポートします
オブジェクトデモ11{
def main(args:Array[String]):Unit={
val conf=new SparkConf().setMaster("local").setAppName("ml-100k")
val sc=新しいSparkContext(conf)
val rawData=sc.textFile("d://ml-100k/u.data")
val rawRatings=rawData.map(_.split("\t").take(3))
val ratings=rawRatings.map{
case 配列(ユーザー,映画,評価)=>
Rating(user.toInt,movie.toInt,rated.toDouble)
}
val モデル=ALS.train(評価,50,10,0.01)
val rs1=model.predict(789,123)//映画 No. 123 に対するユーザー No. 789 の評価を予測します
val rs2=model.recommendProducts(789,10)//番号 789 のユーザーに 10 本の映画 (トップ 10) を推奨します
}
}
2.おすすめコンテンツをチェック
1. 説明
推奨の有効性を視覚的にテストするには、ユーザーが評価した映画のタイトルと推奨映画のタイトルを比較するだけです。
コード
val movie=sc.textFile("d://ml-100k/u.item")
val title=movies.map(line=>line.split("\\|").take(2))
.map(array=>(array(0).toInt,array(1))).collectAsMap()
println(titles(123))//映画のタイトル番号 123 を表示します
2. 説明
ユーザー 789 の場合、彼が視聴した映画、最高評価のトップ 10 の映画、およびその名前が表示されます。特定の実装では、まず Spark の keyBy 関数を使用して、評価 RDD からキーと値のペア RDD を作成できます。その主キーはユーザー ID です。次に、ルックアップ関数を使用して、指定されたキー値 (つまり、特定のユーザー ID) に対応する評価データのみをドライバーに返します。
コード
val movieForUser789=評価.keyBy(_.user).lookup(789)
println(movieForUser789.size)//ユーザー 789 が評価した映画の数を確認する
3. 説明
次に、このユーザーから最高評価の上位 10 件の映画を取得する必要があります。具体的な方法は、Rating オブジェクトの評価属性を使用して、movieForUser コレクションを並べ替え、上位 10 件の評価 (対応する映画 ID を含む) を選択することです。次に、それを入力として使用し、タイトルを使用して「(映画名、特定の評価)」の形式にマップします。次に、名前と具体的な評価を出力します。
コード1
movieForUser789.sortBy(-_.評価).take(10)
.map(評価=>(タイトル(評価.製品),評価.評価))
.foreach(println)
結果1
(ゴッドファーザー、ザ (1972)、5.0)
(トレインスポッティング (1996)、5.0)
(デッドマン・ウォーキング (1995)、5.0)
(スター・ウォーズ (1977)、5.0)
(スインガーズ (1996)、5.0)
(ラスベガスを去る (1995)、5.0)
(単行本 (1996),5.0)
(ファーゴ (1996)、5.0)
(最後の晩餐、The (1995)、5.0)
(プライベートパーツ (1997)、4.0)
コード2