【論文紹介】Field-aware Factorization Machines for CTR Prediction (RecSys2016) - 6月 15, 2019 こんにちは、ぐぐりら(@guglilac)です。 RecSys2016のField-aware Factorization Machines for CTR Predictionを読みました。 ## 3行まとめ Factorization machinesでは各特徴量につき一つの埋め込みベクトルを学習したが、特徴量をFieldという単位に分けて各特徴量につきField分の埋め込みベクトルを学習するように改善したField-aware Factorization machinesを提案。CTR predictionとそれ以外のタスクについてその性能を実験的に検証した。 ## 関連研究 ### Poly2とFM 線形モデルでは捉えられない特徴量どうしの交互作用を考慮したモデルはいろいろあって この論文中では * poly2 * Factorization Machines(FM) が紹介されています。 poly2は二次の交互項に対応する重みをモデルに組み込むことでexplicitに交互作用をモデル化したものです。 FMより原始的で、以下の理由からFMの方が優れていると考えられています。 * FMの方が汎化する * naiveにpoly2を実装すると重みの個数が爆発する 一つ目は単純で、trainingデータにない組の特徴量がtestに来た時に、poly2だと対応する重みが学習できていないのでうまく予測できないですが、FMだとちょうどその組がtrainに入っていなくても片方が同じ、とかの組みが入っていれば、その学習結果を利用できそうです。 (A,B)という特徴量の組みをテストで予測したいけど(A,B)が学習データには入っていない場合でも、(B,D)と(A,C)などの組が学習されていればFMではBやAの埋め込みベクトルが学習されるので、それらの内積がちゃんとAとBの交互作用を表現できていればうまくいく、という気持ちです。 二つ目は、$N$個の特徴量があったら、それらの2次の交互作用をexplicitに考えるモデルは重みの個数が$O(N^2)$のオーダーになって学習や予測が大変、ということです。 これらの理由からFM関連の研究が多いです。poly2は自分も初めてこの論文で知りました。名前あったんだみたいな。 ### FFM Field-aware Factorization Machinesはこの論文で出てきた名前ですが、この元になっている論文が以下の二つです。 * PITF(pairwise interaction tensor factorization) 論文リンク * factor model 論文リンク PITFは、CTR predictionではなくてpersonalized tag recommendationのタスクで出てきたもので、fieldもuser,item,tagの三つという特殊な場合について考えたモデルです。 factor modelはこれを一般化して、CTR predictionでfield を考えたFMをやろうとした研究です。 FFMはこのfactor modelの別名(この論文中でそう呼ぶよ、と書いてある)なので、中身としては同じなのですが、以降factor modelとは呼ばれずFFMが一般的になったみたいです。 そうなるとなぜこの論文がFFMの話になるとよく引かれるのか、と不思議に思いました。 contributionのところを読むと、「この研究はFFMをctr predictionにつかった唯一の研究かもしれない」とか書いてあるのですが、factor modelの論文もCTR predictionしてるのでは。。?となりました。 よくわかりません。 他の貢献には、FFMの学習のテクニック(最適化アルゴリズムの並列化、early stopping)を示したこと、publicなFFMライブラリとしてLIBFFMを作ったことなどが書いてあって、「流行するようにわかりやすい形、使いやすい形にすることも研究なんだ」と感じました。 ## 実装 余談ですがFM関連のライブラリをいくつかまとめました。 LIBFFM pyFM fastFM LIBFM 使いやすいライブラリがあると流行るし研究も盛んになるんだな〜と ## FFMのmodel概要 FMでは、各特徴量を一つの埋め込みベクトルに変換して、 特徴量同士の交互作用を対応する埋め込みベクトルの内積で表現しました。 Field-aware FMでは、特徴量をfieldという単位に分けます。 fieldは同じタイプの特徴量をまとめた単位、というイメージです。 カテゴリカル変数を入力に入れる際にonehotにすることがありますが、それをイメージするといいかもしれないです。 Field-aware FMでは、埋め込みベクトルをFieldの個数分作ります。 従来のFMではどんなFieldの特徴量との交互作用を考えるときでも同じ埋め込みベクトルを使っていましたが、 それを交互作用を考える相手のタイプにあわせて違う埋め込みベクトルを使えばより正確に交互作用を表せるのでは、という気持ちです。 ## FFMの弱点 論文中でも指摘されていますが、モデルの重みが多くなってきたことが原因か、over fittingしやすいという弱点があります。 この論文ではearly stoppingという方法を提案しています。 わざわざearly stoppingと呼ぶから何かと思ったけれど、ただvalidation lossが上がり始めたら学習を終了するということらしいです。 ちなみに、FFMのover fittingを防ごうという研究は他にも行われていて、 以下の論文紹介記事に書いています。 よろしければ読んでみてください。 【論文紹介】Field-aware Probabilistic Embedding Neural Network for CTR Prediction(RecSys2018) ## データの種類ごとの適用方法 論文中では、以下の三種類のデータを入力として考えています。 * categorical features * numerical features * single field features ### categorical features categoricalのときは、ちらっと言ったようにone hotにしてそれらをfieldと考えると良さそうです。 実際、実験でも示されているとおりFFMはカテゴリカルな特徴を多く含むデータに対して特に強い結果を出しています。 ### numerical features 数値データは、離散化してカテゴリカルと同じように扱うのがよさそう、と書いてあります。 dummy fieldとして扱う方法もあるかもですが、field と特徴量が重複して情報量がないので 離散化の方が良さそうです。 この場合はどのくらいの幅で離散化するかという点に自由度があります。 ### single field features NLPにおける文章などの入力は一つのfieldしか存在しません。 こういう場合は難しくて、もし仮にfieldを一つしか設定しないとこれはFMと同じになります。 特にこれ以上論文には書いてなかったですが、そもそもこういうデータの時にFFMを考えるメリットがあまりなさそうなので、そんなに深刻に考える必要はないんじゃない?と思いました。 ## 実験 CTR predictionとして * criteo * avazu それ以外のデータセットに対してもいくつか実験を行っています。 詳しい結果は省略しますが 考察では * sparse * カテゴリカル なデータに対して特にFFMが強い結果を示しました。 使う側としてはこういう「どういう時にworkするのか」が明確だと使いやすいんだろうなと思いました。 ## まとめ Field-aware Factorization Machines for CTR Predictionを読んだので、その紹介でした。 FM関連の記事が増えてきました。 そろそろ実験とかもしてみたいですね。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿