rankFMとは
FM(factorization machine)のライブラリの1つ。
メソッドがレコメンドで使用する前提の物が多い(気がする)
GitHub: https://github.com/etlundquist/rankfm
インストール方法
pip install rankfm
大体の使い方
用意するもの
ユーザーの行動履歴(必須)
各ユーザーがどのアイテムを閲覧したor購入したといったログデータ。
よくあるFMのライブラリだとratingのような評価値のカラムが必要だが、
rankFMに置いてはそもそも閲覧・購買といった行動した(つまり絶対1になる)というDFが入力されることを前提としているため、そのようなカラムは不要である。
user_id | item_id |
---|---|
1 | 10 |
1 | 11 |
1 | 12 |
2 | 20 |
2 | 21 |
ユーザーの特徴(任意)
user_id | age_10 | age_20 | gender |
---|---|---|---|
1 | 1 | 0 | 1 |
2 | 0 | 1 | 0 |
アイテムの特徴
item_id | category_1 | category_2 | category_3 | price |
---|---|---|---|---|
10 | 1 | 0 | 0 | 1 |
11 | 0 | 1 | 0 | 2 |
12 | 0 | 0 | 1 | 3 |
20 | 0 | 1 | 0 | 4 |
21 | 1 | 0 | 0 | 5 |
動かし方
インポート
from rankfm.rankfm import RankFM
初期化
model = RankFM()
学習
model.fit()
modelをclearしてから学習する
model.fit_partial()
modelをclearしないで学習する(追加学習)
data: PandasDataFrame
user_features_df: PandasDataFrame
item_features_df: PandasDataFrame
data.columns
> ['user_id', 'item_id']
user_features_df.columns
> ['user_id', 'age_10', 'age_20', 'gender']
item_features_df.columns
> ['item_id', 'category_1', 'category_2', 'category_3', 'price']
model.fit(data, user_features=user_features_df, item_features=item_features_df, epoch=100, verbose=False)
レコメンド
model.recommend()という関数があって、これが便利
ユーザーIDを以下のどれかで投げてあげれば、レコメンドする商品を返してくれる。
- pandas.Series
- np.ndarry
- list
また、filter_previous
というパラメータは、既にユーザーのログに存在する商品をレコメンド先に出さないようにしてくれる。
つまり、既閲覧・購買商品を勝手に取り除いてくれる(楽)
model.recommend(users, n_items=10, filter_previous=True)
注意点
- モデルの保存がなさそう