ChunPom’s diary

数学、物理、機械学習に関する話題。あと院試、資格、大学入試まで。

RでFactorization Machinesを動かす(備忘録)

FM(Factorization Machines)はRendleが2010年に提案したレコメンダ向けアルゴリズムである。

https://www.csie.ntu.edu.tw/~b97053/paper/Rendle2010FM.pdf

レコメンダ向けといえど、より一般的な回帰や分類問題にも使用することができ,その汎用性の高さや小規模データでも高精度なモデルを構築できる点で人気の手法である。本記事は,すでにGitHubでソフト化されているFMツール「libFM」を,R上で動かす際の備忘録。OSはWindowsを想定。なお,元のlibFMはC++ベースで構築されている。

 

筆者自身RもFMも初心者であったため,導入にいろいろと嵌ってしまった...このようなことが起こらないよう,初心者向けに以下の導入手順をまとめておく。

 

①Rインストール

1-1 CRAN(The Comprehensive R Archive Network)にアクセス。

https://cran.r-project.org/

1-2 Download R for Windowsに行き,「base」をインストール

1-3 続いて「Rtools」もインストール。

 これがないと,後述するdevtoolコマンドが起動しない

 

②libFM exe インストール

2-1 Rendleのサイトにアクセス。

http://www.libfm.org/

2-2 「libfm-1.40.windows.zip」をダウンロード。適当な場所に解凍しておく。

 

③ PATH設定

3-1 「システム環境変数」→「環境変数」→ユーザーの環境変数から「Path」の編集

3-2 2-2の保存場所をPathに追加

 

④R起動とlibFMの立ち上げ

4-1 Rを起動しコンソール開く

4-2 Sys.getenv("PATH") を打ち込み、2-2のPathが有効になってることを確認

4-3 getwd() で現在のディレクトリを確認した上で,「ファイル」→「ディレクトリの変更」から,所望のディレクトリに移動(デフォルトのonedrive直下がキモいので)。

4-4 下記資料7P目に従ってそのディレクトリに書き込み権限を付与。

http://www.iu.a.u-tokyo.ac.jp/~kadota/20130606_install.pdf

4-5 install.packages("devtools", type = "win.binary") でdevlopパッケージをインストール

4-6 library(devtools)でdevlopを呼び出し,devtools::install_github("andland/libFMexe")

 

⑤R上でlibFMの基本動作確認

5-1 Rコンソール上で,以下のサンプルコードを入力

library(libFMexe)
data(movie_lens)
set.seed(1)

train_rows = sample.int(nrow(movie_lens), nrow(movie_lens) * 2 / 3)
train = movie_lens[train_rows, ]
test = movie_lens[-train_rows, ]

predFM = libFM(train, test, Rating ~ User + Movie,task = "r", dim = 10, iter = 500)

mean((predFM - test$Rating)^2)

5-2 予測誤差が出てきたか確認!

 

以上の手順で,R上でlibFMが動かせるようになった。FMに関する情報は書籍化もされている。興味のある方はドウゾ。

仕事ではじめる機械学習

仕事ではじめる機械学習

 

 

参考文献を示す。

<R導入手順>

https://k-metrics.github.io/cabinet/env_install_tls.html

<libFM導入手順>

https://qiita.com/siero5335/items/8a8eb8de8633041d865a

<R初期設定>

http://www.iu.a.u-tokyo.ac.jp/~kadota/20130606_install.pdf