🤖

論文紹介 Weighted Multi-Level Feature Factorization

に公開

この記事について

Rodriguez, et al.の2023年の論文「Weighted Multi-Level Feature Factorization for App ads CTR and installation prediction」の紹介です。
タイトルが長すぎてZenn記事のタイトルに収まりませんでした。

はじめに

オンライン広告の世界ではユーザーのクリック予測は最初の重要な関心事であり、その先のインストールや購入などの行動予測にもつながる重要なステップです。
この目的のために、異なる次数(order)の特徴量と、重み付き線形結合を用いて予測を生成するモデル「Weighted Multi-Level Feature Factorization」を提案します。

問題の定式化

あるユーザーが広告表示されたアプリを翌日にインストールする確率を予測します。
入力はShareChatのデータを用いており、以下のような特徴量から成ります。

  • ユーザー特徴量
    • デモグラフィック特徴量(年齢、性別、匿名化された位置など)
    • ユーザーの消費履歴から学習されたコンテンツの嗜好の埋め込み
    • ユーザーのアプリインストール履歴から学習された埋め込み
  • 広告特徴量
    • カテゴリ特徴量(サイズ、カテゴリなど)
    • 実際のクリエイティブを表現する埋め込み
  • 履歴的な相互作用(広告、広告主、広告主カテゴリとユーザーがやりとりした回数)

それぞれのデータは82の特徴量から成り、is_clickedis_installedのラベルを含みます。
2つの異なる、しかし関連したタスクであるis_clickedis_installedを予測します。

これらのタスクはそれ自体複雑であるうえに、さらに次のような課題があります。

  • 各特徴量に意味的な情報(semantic information)が欠けている。
  • 各ユーザーについて既知の相互作用の数が限られている。
  • どの特徴量がユーザーを表し、どの特徴量が広告を表すのかが区別されていない。

評価指標はnormalized cross entropyの平均です。

データエンジニアリング

カテゴリ特徴量の変換

カテゴリ数が20以上の特徴には順序エンコーディングを適用。カテゴリ数が20未満の特徴量については、クリック率・インストール率に変換します。たとえば特徴量 f_{32} に対しては以下の通りです:

  • クリック率:
\text{TC}f_{32}(c) = P(\text{is\_clicked} \mid f_{32} = c) \tag{1}
  • インストール率:
\text{TI}f_{32}(c) = P(\text{is\_installed} \mid f_{32} = c) \tag{2}

数値特徴量の変換

まず平均で欠損を補完し、次に以下の式で標準化します。

S(c) = \frac{c - \mu}{\lambda \sigma} \quad (\lambda = 3) \tag{※}
  • \mu: 平均
  • \sigma: 標準偏差
  • \lambda: ハイパーパラメータ。3に設定。

その後、以下の式で非線形変換を適用しました:

L(t) = \begin{cases} t & -1 < t < 1 \\\\ \log_2(t + 1) & t \geq 1 \\\\ -\log_2(-t + 1) & t \leq -1 \end{cases} \tag{3}

この変換により外れ値を抑制しています。
例えば、図1は特徴量 f_6 0 の変換前後の最小値と最大値の変化を示しています。

手法

本モデルの全体構造は図2に示されます。
本モデルはEmbedded features、Clicked features、Shared features、Installed featuresの4つのコンポーネントから構成されます。
Embedded featuresはカテゴリ特徴量を密な埋め込み表現に変換し、それらの平均を取って最終的なカテゴリ特徴量ベクトルを作ります。
このベクトルを数値特徴量ベクトルと連結し、密な表現を得ます。
Clicked / Shared / Installedの各コンポーネントは同じ構造を持ち、Dense層 → ノイズ層 → 活性化関数の順序です。
ノイズ層は訓練時のみ適用され、以下で定義されます。

\text{noise}(x) = x \cdot N(1, \sigma_\lambda) \quad (\sigma_\lambda = 0.5) \tag{4}

ここで N(1, \sigma_\lambda) は平均1、標準偏差 \sigma_\lambda = 0.5 の正規分布に従うサンプリングです。
ノイズは正則化の役割を果たします。
各コンポーネントは深さの異なる3つのベクトルを出力します。

\\( \mathbf{F}^t = (f^t_1, f^t_2, f^t_3))

ここで t \in c,s,i はそれぞれ特徴量の種類、インデックスは特徴量を出力した層の深さです。
Clicked特徴量とShared特徴量を組み合わせて is\_clicked を予測し、Installed特徴量とShared特徴量を組み合わせて is\_installed を予測します。Shared特徴量はタスク間の類似性を表現し、パラメータ数を減らすことでモデルの発散を低減します。
各層の特徴量ベクトルに対して内積を取り、学習された重みを掛けて和を取り、全体に共有パラメータを掛けます。これがWMLFF層です。

\text{WMLFF}(\mathbf{F}^t_1, \mathbf{F}^t_2) = m \sum_{l=1}^L w_l \langle f^t_{1l}, f^t_{2l} \rangle \tag{5}

ここで、 m は全WMLFF層に共通なスカラー、 w_l は各レベルの学習された重みです。
最後にこの層の出力にシグモイド関数を適用します。

\hat{\text{is\_clicked}} = \sigma(\text{WMLFF}(\mathbf{F}^c, \mathbf{F}^s)) \tag{6}
\hat{\text{is\_installed}} = \sigma(\text{WMLFF}(\mathbf{F}^i, \mathbf{F}^s)) \tag{7}

損失は2値交差エントロピー損失の平均を用います。

L(c, \hat{c}, i, \hat{i}) = -\frac{1}{2N} \sum \left[ c \log \hat{c} + (1 - c) \log(1 - \hat{c}) + i \log \hat{i} + (1 - i) \log(1 - \hat{i}) \right] \tag{8}

ここで 𝑁 はバッチサイズ、c,\hat{c} はクリックの真値と予測値、 i,\hat{i} はインストールの真値と予測値です。

実験評価

表1が提案モデルの結果です。
最良の学術チームに5.93%及びませんでした。
提案モデルの様々なバリエーションについては以下の通りですが、Originalがもっとも良い結果でした。

  • Original with \sigma\lambda =0.3
    • ノイズ層で使用する分布の標準偏差を 0.5 から 0.3 に減らしました。
    • 性能が低下しました。
    • 過学習が起きている可能性を示しています。
  • Original with QHAdam & Original with AdamW
    • 最適化関数を変更しました。
    • 両方のケースで結果はオリジナルとほぼ同じでした。
  • Original without shared features
    • クリックタスク用に2つ、インストールタスク用に2つの特徴コンポーネントを別々に用意しました。
    • 性能が低下しました。
    • 両タスク間に相関があることを示唆しています。
  • WMLFM based on cosine similarity
    • WMLFMモジュールにおいて内積ではなくコサイン類似度を使いました。
    • 性能が低下しました。
    • 導入したノイズが内積よりコサイン類似度に強く影響することや、勾配消失問題が起きた可能性が考えられます。
  • Original with k-fold
    • 学習データを10分割し、10種類のモデルを学習した後、それらの予測を平均化するアンサンブルモデルとしました。
    • 性能が低下しました。
    • 学習データとテストデータの分布の違いが捉えられなかったか、このアンサンブル手法がモデルに適していなかった可能性があります。
  • Original with deeper feature components
    • クリック・共有・インストールの各特徴コンポーネントを3層ではなく6層に拡張しました。
    • 性能が低下しました。
    • 勾配消失のような問題で学習が難しくなったと考えられます。
  • Original with 64 dimensions
    • 埋め込みと線形層の次元数を32から64に増加させました。
    • 性能が低下しました。
    • 次元数を増やすと学習データにはより適合しやすくなりますが、過学習のリスクも高まります。実際、学習損失は減少しましたが、テスト結果では過学習が確認されました。

6. 他のデータセットでの実験評価

6.1 Criteo

Criteo_x1データセットでの結果を表2に示します。
Originalではタスクと同じハイパーパラメータを使用しました。他のバリエーションでは内部表現次元を64に増やしたり、ノイズレベルを変更しました。
提案モデルは大きな調整なしでも2017〜2019年のモデルと同程度の性能を示しましたが、SOTAモデルには2%未満の差で及びませんでした。
次元数を増やしノイズを減らすと性能が改善する傾向があり、ハイパーパラメータの効果がデータセットの特性に依存していることがわかります。

6.2 MovieLens 100k

MovieLens100kデータセットでの結果を表3に示します。
データセットの特性に合わせ、モデルにいくつか修正を加えました。

  • 損失関数を平均二乗誤差に変更
  • ターゲットのスコア(1〜5)を0〜1にスケーリング
  • RMSEを計算する際は逆変換せず0〜1の範囲で扱う
  • シグモイド出力を削除し、出力を実数値に拡張した線形バージョンも評価

使用した特徴量は以下の通りです。

  • カテゴリ特徴:ユーザー、職業、年齢、映画(順序エンコーディング)
  • バイナリ特徴:映画ジャンル、ユーザー性別

これらは数値特徴量として扱い、Dense層で表現を学習

さらに以下の4つの統計特徴量を追加しました。

  • ユーザー平均、ユーザー標準偏差
  • 映画平均、映画標準偏差

ノイズを増やした場合に性能が向上し、このハイパーパラメータがデータセットの特性に依存していることを示唆しています。
統計特徴量を加えることで結果が改善し、この情報が有効であることを示唆しています。
提案モデルは本タスク専用ではないにもかかわらず2018年のモデルと同等の性能を発揮し、SOTAとの差も5%未満でした。

結論

本論文ではRecSys Challenge 2023で使った手法を提案しました。提案手法は異なる次数(order)の特徴量に基づき、相互作用を捉えます。さらに、他のベンチマークに適用するための予備調査を行い、良い結果を示しました。

参考文献

Discussion