私はモデルをバッチ処理するプロセス間の評価を予測しています。予測評価があまりにも高いように見えるしかしその後...ALSモデル - 予測full_u * v^t * vの評価が非常に高い
import json
import numpy as np
pf = model.productFeatures()
pf_vals = pf.sortByKey().values().collect()
pf_keys = pf.sortByKey().keys().collect()
Vt = np.matrix(np.asarray(pf_vals))
full_u = np.zeros(len(pf_keys))
def set_rating(pf_keys, full_u, key, val):
try:
idx = pf_keys.index(key)
full_u.itemset(idx, val)
except:
pass
set_rating(pf_keys, full_u, 260, 9), # Star Wars (1977)
set_rating(pf_keys, full_u, 1, 8), # Toy Story (1995)
set_rating(pf_keys, full_u, 16, 7), # Casino (1995)
set_rating(pf_keys, full_u, 25, 8), # Leaving Las Vegas (1995)
set_rating(pf_keys, full_u, 32, 9), # Twelve Monkeys (a.k.a. 12 Monkeys) (1995)
set_rating(pf_keys, full_u, 335, 4), # Flintstones, The (1994)
set_rating(pf_keys, full_u, 379, 3), # Timecop (1994)
set_rating(pf_keys, full_u, 296, 7), # Pulp Fiction (1994)
set_rating(pf_keys, full_u, 858, 10), # Godfather, The (1972)
set_rating(pf_keys, full_u, 50, 8) # Usual Suspects, The (1995)
recommendations = full_u*Vt*Vt.T
top_ten_ratings = list(np.sort(recommendations)[:,-10:].flat)
print("predicted rating value", top_ten_ratings)
top_ten_recommended_product_ids = np.where(recommendations >= np.sort(recommendations)[:,-10:].min())[1]
top_ten_recommended_product_ids = list(np.array(top_ten_recommended_product_ids))
print("predict rating prod_id", top_ten_recommended_product_ids)
を、製品の特徴を抽出ALS model - how to generate full_u * v^t * v?
! rm -rf ml-1m.zip ml-1m
! wget --quiet http://files.grouplens.org/datasets/movielens/ml-1m.zip
! unzip ml-1m.zip
! mv ml-1m/ratings.dat .
from pyspark.mllib.recommendation import Rating
ratingsRDD = sc.textFile('ratings.dat') \
.map(lambda l: l.split("::")) \
.map(lambda p: Rating(
user = int(p[0]),
product = int(p[1]),
rating = float(p[2]),
)).cache()
from pyspark.mllib.recommendation import ALS
rank = 50
numIterations = 20
lambdaParam = 0.1
model = ALS.train(ratingsRDD, rank, numIterations, lambdaParam)
:私はここで説明するアプローチを使用してい
('predicted rating value', [313.67320347694897, 315.30874327316576, 317.1563289268388, 317.45475214423948, 318.19788673744563, 319.93044594688428, 323.92448427140653, 324.12553531632761, 325.41052886977582, 327.12199687047649])
('predict rating prod_id', [49, 287, 309, 558, 744, 802, 1839, 2117, 2698, 3111])
これが表示されます間違っている。任意のヒントをいただきました。
私はこれを使用して良い結果を得ましたが、これは暗黙のフィードバックであり、評価は負または不明の場合は0、正の場合は1でした。私は0と1の間の予測を得ました。そして、私はランクを指標として使用していました。つまり、スコアにあまり注意を払っていませんでした。 –
ああ、興味深い。私はまだ暗黙のフィードバックを調べていない。あなたが答えとしてあなたのコメントを投稿すると、他に誰も答えなければデフォルトで賞金を得るでしょう;) –
@ yoh.lejなぜ、私はクリスのような膨らんだ評価を得ていたのですか?だから、評価はバイナリです。ヨハン、この式が何に基づいているのか簡単に説明できますか?私は類似性測定のためのグーグルを試みて、それを見ていない。類似点は何を計算していますか?私は現在線形代数クラスを取っているので興味をそそられています。論理的には、この新しいユーザーが最も類似している既存のユーザーを判断し、評価を予測するためにその要素を使用するように思われる - このアプローチはより洗練されていますか?ありがとう! (クリス - ALSをチェックしてください。trainImplicit) – ScottEdwards2000