Recompy:推奨のフレームワーク

Onur Boyar
5 min readAug 12, 2020

--

Fugaku, the fastest supercomputer in the world.

私の最初の日本語のブログでは、PythonパッケージのRecompyについてお話ししたいと思います。 Recompyは、さまざまな行列因数分解アルゴリズムを含むフレームワークです。 Oğuz Kaplan、Can Bulguoğlu、EmreYükselと一緒にRecompyを作成しました。現在利用可能な行列因数分解手法は

-FunkSVD
-SVD ++
-NMF
-ALS

これらのアルゴリズムとともに、ベースラインモデルとしてKNNアルゴリズムを適用しました。

スパースマトリックスの不足しているセルの入力

ご存知のように、レコメンダーシステムにはスパースデータの問題があります。通常、単純な分解アプローチを使用するのに十分なユーザー-アイテムインタラクションはありません。また、映画の異なるセットを評価したユーザー間の類似性を計算するために、ユーザーアイテムマトリックスの欠損値を埋める必要があります。 Recompyはそれを複数の方法で行います。 1つのアプローチは、行列因数分解手法を使用してモデルをトレーニングし、各セルの値を含むユーザーアイテム行列を取得することです。

モデルをトレーニングせずにKNNアプローチを使用したい場合はどうなりますか?ユーザーアイテムマトリックスの不足しているセルをどのように埋めることができますか? Recompyで利用可能な複数の機能を利用できます。グローバル平均、ユーザー平均、アイテム平均値を使用して、欠落しているセルを埋めることができます。

類似点

類似のユーザーを見つけるために、ユーザー間の類似点をどのように見つけることができますか? Recompyでは、さまざまな類似性測定値を使用できます。これらは、

  • コサイン類似度 (Cosine Similarity)
  • 加重コサイン類似度 (Weighted Cosine Similarity)
  • コサイン類似度の調整 (Adjusted Cosine Similarity)
  • ピアソン相関 (Pearson Correlation)
  • 制約付きピアソン相関 (Constrained Pearson Correlation)
  • 平均二乗差 (Mean Squared Difference)

行列の初期化

行列因数分解の問題では、問題の中で最も見落とされがちな部分の1つが初期化です。因数分解行列の正常な初期化は、モデルの精度に大きな影響を与えます。 Recompyでは、3つの異なるイニシャライザを使用できます。これらは

1-ランダ​​ム初期化
2-彼の初期化
3-通常の初期化

これらの行列を初期化するより良い方法は、スペクトル初期化です。現在この手法に取り組んでおり、Recompyに統合したいと考えています。

Recompyを使用したモデルのトレーニング

Recompyには、組み込みのデータセットMovieLensがあります。 FunkSVDモデルを使用してレコメンダーシステムモデルをトレーニングするために、データセットとFunkSVDモデルをインポートします。

#!pip install recompyfrom recompy import load_movie_data, FunkSVD

# get MovieLens data
data = load_movie_data()
# initialization of FunkSVD model
myFunk = FunkSVD()
# training of the model
myFunk.fit(data)

# Create new user. Key:Item ID, Value:Rating
new_user = {'1':5,
'2':4,
'4':3}

# To find the most similar user resulting from cosine similarity.
# Recommend 5 items using the most similar user
myFunk.get_recommendation_for_new_user(new_user, similarity_measure = 'cosine_similarity', howManyUsers = 1, howManyItems = 5)

ご覧のとおり、モデルの初期化は非常に簡単です。簡単にするために、ハイパーパラメータは設定せず、デフォルト値を使用しました。それにもかかわらず、いくつかの要素、イニシャライザ、エポック番号、学習率を設定できました。

新規ユーザーの推奨を取得するには、類似性の測定値、howManyUsersとの比較、およびhowManyItemsの推奨を指定する必要があります。

コードは完成していますが、Recompyの現在のバージョンにはFunkSVD以外の行列分解アルゴリズムは含まれていません。 ライブラリの新しいバージョンが間もなくpipに追加されます。

Recompypipページはここにあります。あなたがそのブログを楽しんだことを願っています!

--

--

No responses yet