背景
- マーケティングではユーザーのアンケートの分析を実施して戦略を立てることが多い
- アンケートに回答するユーザー属性は、ユーザー全体の属性と比べて偏りがある(共変量シフト)
- Webで調査した場合、インターネットをよく見る層(若い人など)に偏る
- 街頭で調査した場合、よく外出する人や会話に積極的な人に偏る
- 観測できているデータから、上記のようなバイアスを考慮した上で、非観測のユーザーの情報も予測したい
参考書籍
-
施策デザインのための機械学習入門
- 2章の内容をほとんどそのままオープンデータに適用して実施してみています
分析内容
- 共変量シフトに対応した予測をおこなうため、目的関数の推定量の期待値にバイアスがのらないようにする
- データセット
- National Supported Work Demonstration dataset
- 職業訓練とその後の収入のデータ(介入群/対照群からなる実験群と、非実験群の両方のデータがあり因果効果の推定手法の評価に使われることが多い)
- 今回は、一般的な因果効果の推定(介入 vs 対照)とは異なり、実験群の全データが観測できた群 $O=1$、非実験群の全データが観測できなかった群 $O=0$ という、架空の観測/非観測問題として設定し直している
- 前提
- 「介入前の1975年の収入(re75)」を目的変数とし、この目的変数を観測できていない人の収入を予測する問題を考える
- 実験群ではre75が観測できている(観測群と呼ぶ)、非実験群ではre75が観測できていないとする(非観測群と呼ぶ)
- 特徴量:re74, 年齢, 教育年数 etc..
- モデル:ランダムフォレスト
定式化
概要
- 非観測群におけるre75を推定するために、観測群のre75を教師データとして機械学習モデルを構築する
- このとき、「(A)真の目的関数」を最小化したいが、観測群のデータからは不可能である
- そこで何も考えずに、観測群のデータを等しくも重みづけた通常の二乗誤差を使った推定量((B)ナイーブ推定量と呼ぶ)を目的関数として用いると、バイアスが生じる
- バイアスが生じないよう、重みをつけた二乗誤差((C)IW推定量と呼ぶ)を目的関数とする
定義
- $r$: re75
- $f$: 予測モデル
- $X$: ユーザー特徴量
(A)真の目的関数(解くべき問題)
\begin{aligned}
\mathcal{J}(f_{\phi})
& = \mathbb{E}_i[l(r, f(X))|O_i=0]\\
& = \int l(r_i, f(X))\cdot P(X|O=0)dX\\
% ベイズの定理を用いると、
& = \int l(r_i, f(X))\cdot \frac{P(O=0|X)\cdot P(X)}{P(O=0)}dX~(ベイズの定理)\\
% エビデンス部分は定数なので無視し、O=1の確率を\theta(X)とおくと、
& \propto \int l(r_i, f(X))\cdot (1-\theta(X))\cdot P(X)dX~(定数であるエビデンスは無視)\\
& = \mathbb{E}[(1-\theta(X))\cdot l(r, f(X))]
\end{aligned}
(B)ナイーブ推定量(観測データに等しく重みづけた二乗誤差)
\begin{aligned}
\mathcal{J}_{naive}(f_{\phi})
& = \frac{1}{N}\sum_{i:O_i=1}^N l(r_i, f(X_i))\\
& = \frac{1}{N}\sum_{i:O_i=1}^N l(r_i, f(X_i))\cdot O_i\\
\mathbb{E}_i[\mathcal{J}_{naive}]
& = \frac{1}{N}\sum_{i:O_i=1}^N\mathbb{E}_i[l(r_i, f(X_i))\cdot O_i]\\
% theta(X)を用いると、
& = \mathbb{E}[\theta(X)\cdot l(r, f(X))]
% & = \mathbb{E}_i\left[\frac
\end{aligned}
観測されやすいユーザーにおける誤差を大きく評価しておりバイアスが生じる
(C)IW推定量(期待値が真の目的関数と一致するよう重みづけを調整した二乗誤差)
\begin{aligned}
\mathcal{J}_{IW}(f_{\phi})
& = \frac{1}{N}\sum_{i:O_i=1}^N \frac{1-\theta(X_i)}{\theta(X_i)}\cdot l(r_i, f(X_i))\\
\mathbb{E}_i[\mathcal{J}_{IW}]
& = \frac{1}{N}\sum_{i:O_i=1}^N\mathbb{E}_i\left[\frac{1-\theta(X_i)}{\theta(X_i)}\cdot l(r_i, f(X_i))\cdot O_i\right]\\
& = \mathbb{E}_i\left[(1-\theta(X))\cdot l(r, f(X))\right]\\
\end{aligned}
二乗誤差を$\frac{1-\theta(X)}{\theta(X)}$で重み付けることで、期待値が(A)真の目的関数と一致している
結果
- ロジスティック回帰により、観測群における観測確率$\theta(X)$を予測
- 重み$\frac{1-\theta(X)}{\theta(X)}$を算出し、一部非常に大きな値もあったので適当にclipping
- 重みを用いた(C)を目的関数にして作成したモデルと、均一な重みを用いた(B)を目的関数にして作成したモデルの精度を比較
- 精度は改善している
| 指標 | (C)重み付きモデル | (B)均一重みモデル | (C)-(B)の差分 |
|---|---|---|---|
| RMSE | 6114 | 6503 | -389 |
| MAE | 4803 | 5188 | -384 |
| R² | 0.565 | 0.508 | 0.057 |
まとめ
- 学習データと予測データの分布が違うことが自明な場合は、重み付けをする効果がありそう
残論点
- 妥当なclippingの閾値の決め方
