レコメンドシステム—— FM(Factorization Machine)の原理(コード付き)
シーリズの目次
レコメンドシステムのシーリズをここにまとめています。
無料相談コース(未経験OK)
- 機械学習やレコメンド分野に悩んでいる人
- 機械学習やレコメンド分野に携わりたい人
ぜひ下記の無料コースへお申し込みください!
機械学習エンジニア、レコメンドエンジニアになるためのサポート
FM(Factorization Machine)とは?
FMモデルは近年提案されたモデルで、データ量が比較的多く、特徴がまばらな状態でも優れた性能と効果が得られることから、レコメンデーションシステムの領域で広く使われています。
レコメンデーションの世界では、クリック率CTR (click-through rate)とコンバージョン率CVR (conversion rate)が効果を測る2つの重要な指標となります。CTR、CVRを正確に見積もることはトラフィックの価値を高め、レコメンデーションのマッチングを増やすために重要な指針となります。ディープラーニングに加えてCTR/CVRを予測します一般的な手法としては、人工特徴工学+ LR(Logistic Regression)、GBDT(Gradient Boosting Decision Tree) + LR、FM (Factorization Machine)などがあります。
ここでは、FMモデルの実装原理を説明するために、主に原理的に検討します。
FMの公式
FM (Factorization Machine)とは、2010年にKonstanz大学のSteffen Rendle氏(現在はGoogle)が考案した、疎なデータによる特徴の組み合わせ問題を解決するためのものです。FMモデルを一例として導入します。広告分類の質問で、ユーザーと広告スペースに関する特徴から、ユーザーが広告をクリックしたかどうかを予測するとします。ソースデータは以下の通りです。
Clickedはラベルで;Country、Day、Ad_typeが特徴です。3つの特徴はいずれもcategorical型であるため、数値型特徴への変換にはone-hot Encodingが必要である。
上の表からわかるように、ワンホット符号化されたサンプルデータの特徴のほとんどは、かなりまばらです。上の例では、各サンプルは7次元の特徴を持っていますが、平均して3次元の特徴だけがゼロではありません。
実は、これはこのケースだけのことではなく、実際の応用シーンではよくあることです。例えば、CTR/CVR予測の場合、ユーザーの性別、職業、教育レベル、カテゴリー嗜好、商品のカテゴリーなど、ワンホットコード化されたサンプルデータの間引き性が発生します。特に商品カテゴリーというタイプの特徴、例えば商品の下位カテゴリーは約550個で、ワンホットコードを用いて550個の数値特徴が生成されますが、1サンプルあたり550個の特徴のうち、有効なのは1つだけ(ゼロではない)です。このように、間引きは実際の問題では避けられない課題です。
one-hotコードのもう一つの特徴は特徴空間が大きいことです。例えば、商品群が550次元の特徴を持つ場合、一つのcategorical特徴が550次元の数値的特徴に変換され、特徴空間が急増します。
また、大量のサンプルデータを見ると、ある特徴を関連付けることでラベルとの相関性が高まることがわかります。たとえば、「USA」と「Thanksgiving」、「China」と「Chinese New Year」といった関連性は、ユーザーのクリックにプラスの影響を与えます。つまり、「China」から来たユーザーは、「Chinese New Year」では大量の閲覧・購入行動を起こし、「Thanksgiving」では特に消費行動を起こさない可能性が高いということです。この相関特性とラベルとの正の相関は、実際の問題では、「化粧品」商品と「女性」性、「スポーツアクセサリー」商品と「男性」性、「映画チケット」商品と「映画」嗜好など、一般的に見られます。そのため、2つの特徴の組み合わせを取り入れることに意味があります。
多項式モデルは特徴の組み合わせを含む最も直観的なモデルです。多項式モデルの中で,特徴 xiと xj の組み合わせは
公式1:
その中で,n はサンプルの特徴量,
式(1)からわかるように、組み合わせ特徴量のパラメータは合計で
その理由は、各パラメータ wij のトレーニングには
FM的求解推导
二次項のパラメータトレーニング問題をどのように解決すればよいか?行列分解はこの問題に対するアプローチを提供します。モデルベースの協調フィルタリングでは、評価行列はユーザーマトリックスとアイテムマトリックスに分解でき、各ユーザーとアイテムは潜在的なベクトル表現を持つことができます。
たとえば、以下の図の例では、各ユーザーを2次元ベクトルで表現し、同様に各アイテムも2次元ベクトルで表現し、2つのベクトルの内積が評価行列中のユーザーによるアイテムへの評価を表します。
同様に、すべての二次項のパラメータ
公式2:
ここで、
具体的には、
明らかなことですが、式(2)は一般的なフィッティング方程式であり、異なる損失関数を使用して回帰、バイナリ分類などの問題を解決するために使用できます。たとえば、回帰問題を解くためにMSE(平均二乗誤差)損失関数を使用することができますし、分類問題を解くためにHinge/Cross-Entropy損失を使用することもできます。
もちろん、バイナリ分類を行う場合、FMの出力はシグモイド変換を経る必要があり、これはロジスティック回帰と同じです。直感的には、FMの計算量は O(
公式3:
SGD(Stochastic Gradient Descent)を使用してモデルをトレーニングする場合、FMのトレーニングの複雑さを再評価します。モデルの各パラメータの勾配は次のようになります。
ここで、
おわりに
FMは非常に柔軟なモデルであり、適切な特徴変換方法を使用することで、二次多項式カーネルのSVMモデル、MFモデル、SVD++モデルなどをシミュレートできます。
SVMの二次多項式カーネルと比較すると、FMはサンプルが疎な場合に優れています。さらに、FMのトレーニング/予測の複雑さは線形です。
MFと比較すると、FMは実質的には特徴 u と i の2つのカテゴリの特徴を持つモデルです。FMでは、ユーザーの購買履歴の平均値、アイテムの購買履歴の平均値など、任意の数の特徴を追加できますが、MFは2つのカテゴリの特徴に制限されています。
コード実例
Discussion