Matrix Factorization¶
Matrix Factorization: A Simple Tutorial and Implementation in Python @ quuxlabs
その他の行列分解による推薦¶
ALS¶
ALS(Alternating Least Squares)
Alternating Least Square (ALS) でCP分解 - でかいチーズをベーグルする
iALS¶
iALS(Implicit Alternating Least Squares) はALSの応用的な位置付けのモデル。
通常のALSはユーザーがアイテムに対して明示的な評価を与える場合を想定している。iALSはユーザーの行動履歴などの暗黙的なフィードバック(例:クリック、閲覧、購入履歴など)を扱う。
import time
import pandas as pd
import numpy as np
from surprise import Dataset, Reader, accuracy
from surprise.model_selection import train_test_split
from surprise import SVD, NMF# data_ml_100k = Dataset.load_builtin(name=u'ml-100k', prompt=False)
# data_ml_100kTrying to download dataset from https://files.grouplens.org/datasets/movielens/ml-100k.zip...
Done! Dataset ml-100k has been saved to /root/.surprise_data/ml-100k
<surprise.dataset.DatasetAutoFolds at 0x7fa71c03bcd0>ML100K_URL = 'http://files.grouplens.org/datasets/movielens/ml-100k/u.data'
df = pd.read_csv(ML100K_URL, names=["userid", "itemid", "rating", "timestamp"], sep="\t")
df.tail()Loading...
reader = Reader(rating_scale=(1, 5))
data = Dataset.load_from_df(df_custom[["userid", "itemid", "rating"]], reader)trainset, testset = train_test_split(data_custom, test_size=.2)algo = SVD()
algo.fit(trainset)
pred = algo.test(testset)
_ = accuracy.rmse(pred),accuracy.mse(pred),accuracy.mae(pred),accuracy.fcp(pred)RMSE: 0.9338
MSE: 0.8720
MAE: 0.7378
FCP: 0.7007