不均衡データの対策においてポピュラーかつ簡単な手法にランダムアンダーサンプリングとクラスサイズの逆数の重みづけの2つがあります。実はこの2つの手法は非常に関係が深い手法として知られています。
0. 記号
$\boldsymbol{x} \in \mathcal{X}$ を特徴量, $y \in \text{{0, 1}} $をラベル($y=1$を少数派)。$n, n_1, n_0$をそれぞれ, 全体,少数派クラス,多数派クラスのサンプルサイズとします。また特徴量とラベルのペアが従う同時分布を$P(\boldsymbol{X},Y)$, または単に$D$とします。最後にラベル$Y$の確率$P(Y=1), P(Y=0)$をそれぞれ簡潔に$p_1,p_0$と表記することにします。
1. ランダムアンダーサンプリングとは
1.1 概要
ランダムアンダーサンプリング(以下, RUS)は、多数派クラスに属するサンプルの中から均等な確率でランダムに削除することで, クラス比率を均等にします。したがって任意の多数派クラスのサンプル$\boldsymbol{x^{(-)}}$が訓練データとして選択される確率は
$$
\frac{\binom{n_0 - 1}{n_1 - 1}}{\binom{n_0}{n_1}} = n_1 / n_0$$ となります。
これで訓練データの不均衡は是正されるものの,RUSによって訓練データの分布は$P(\boldsymbol{X},Y)$から変化してしまうため、モデルの学習によって推定される$\hat{P}(Y=1\mid\boldsymbol{X})$にはバイアスが生じてしまいます。
1.2 RUSによるバイアスとその補正
そこで, Dal Pozzolo1らは, RUS後に訓練データとしてそのサンプルが選択されたことを示す確率変数$S \in \text{{0, 1}}$ を用いて, $\hat{P}(Y=1\mid\boldsymbol{X})$に生じたバイアスを補正する方法を提案しました。$S$は, RUS後に訓練データとして選択されるなら1, そうでないなら0とする2値の確率変数とします。したがって$S$はラベル$y$にのみ依存し, その確率は
$$P(S=1|Y=1) = 1, \quad P(S=1 \mid Y=0) = \frac{n_1}{n_0} $$
となります。
文献1では, RUS後の学習でモデルによって推定される条件付き確率は$P(Y=1\mid \boldsymbol{X}, S=1)$であるとしました。 この確率は一般的なベイズの定理より
\begin{align}
P(Y=1\mid \boldsymbol{X}, S=1) &= \frac{P(S=1\mid \boldsymbol{X}, Y=1)}{P(S=1\mid \boldsymbol{X})}P(Y=1\mid \boldsymbol{X}) \tag{1.1}\\
&=\frac{P(S=1\mid \boldsymbol{X}, Y=1)}{\sum_{y\in \{0, 1\}}P(S=1\mid \boldsymbol{X}, Y=y)P(Y=y\mid\boldsymbol{X})}P(Y=1\mid \boldsymbol{X}) \tag{1.2}\\
&=\frac{P(Y=1\mid \boldsymbol{X})}{P(Y=1\mid \boldsymbol{X}) + P(Y=0\mid \boldsymbol{X})\frac{n_1}{n_0}} \tag{1.3}
\end{align}
と元々の分布$D$上での$P(Y=1\mid \boldsymbol{X})$の式に変形できます。(1.3)式を$P(Y=1\mid \boldsymbol{X})$について解くことで$P(Y=1\mid \boldsymbol{X}, S=1) \to P(Y=1\mid \boldsymbol{X})$の変換を導出できます。なお, (1.2)式から(1.3)式の変形は$Y$で条件づけたら$\boldsymbol{X}$と$S$は独立である($P(S\mid \boldsymbol{X},Y)=P(S\mid Y) $)ことを用いています。
2. クラスサイズの逆数の重みづけとは
2-1 ICWの導入
サンプルごとの重みづけで不均衡データに対処する最もシンプルな方法は, そのサンプルが所属するクラスのサイズの逆数を重みとして割り当てる方法です。すなわち、サンプル$i$の重み$w_i$は
w_i = \frac{y_i}{n_1} +\frac{1-y_i}{n_0} \tag{2.1}
となります。この重みのお気持ちとしては, 多数派のサンプルに対しては小さい重みをつけ, 少数派クラスのサンプルには大きな重みをつけることで学習における影響度をクラス間で均一にしようとしていています。
本記事において, (2.1)式を少し拡張し, (2.1)式を定数倍したものを「クラスサイズの逆数の重みづけ」, あるいは略字でICW (Inverse Class-Size Weighting) と呼ぶことにしましょう。特にこれ以降では, 定数として$n/2$倍したものを利用します。つまり、サンプル$i$に付与される重み$w_i$は
\begin{align}
w_i &= \frac{ny_i}{2n_1} +\frac{n(1-y_i)}{2n_0} \\
&\simeq \frac{y_i}{2p_1} +\frac{(1-y_i)}{2p_0} \tag{2.2}
\end{align}
となります。(2.2)式は, 近似となっていますがこの後の議論をより簡潔にするために, $p_y\simeq n_y/n$の推定精度が十分高いものとみなして、(2.2)式をそのまま扱うとします。
2.2 ICWを用いた際の汎化誤差
任意の損失$l$を用いたICWの重み付き汎化誤差について考えます。(2.2)式の$w_i$は結局のところ,ラベル$y_i$にのみ依存しているので、$y$の関数$w(y)$として扱うと,重み付き汎化誤差は
E_D[w(Y)l(\boldsymbol{X, Y \mid\theta})]
となります。ここで$\boldsymbol{\theta}$はモデルのパラメータであり,$l$の出力がモデルに依存していることを間接的に表しています。 $y$が2値の離散値であることに注意すると
\begin{align}
E_D[w(Y)l(\boldsymbol{X}, Y \mid \boldsymbol{\theta})] &=E_{Y}[E_{\boldsymbol{X}}[w(Y)l(\boldsymbol{X}, Y \mid \boldsymbol{\theta})\mid Y]]\\
&=\sum_{y \in \{0, 1\}}p_yw(y)E_{\boldsymbol{X}}[l(\boldsymbol{X}, y \mid \boldsymbol{\theta})\mid Y=y]\\
&=\sum_{y \in \{0, 1\}}\frac{1}{2}E_{\boldsymbol{X}}[l(\boldsymbol{X}, y \mid \boldsymbol{\theta})\mid Y=y]\\
&= E_{D^{\ast}}[l(\boldsymbol{X}, Y \mid \boldsymbol{\theta})] \tag{2.3}
\end{align}
ここで、$D^\ast$はラベルの事前確率$P(Y)$のみを均等になるように変更した分布であり、その同時分布を$Q(\boldsymbol{X}, Y)$すると, $Q(\boldsymbol{X}, Y)= \frac{1}{2}P(\boldsymbol{X}\mid Y)$ です。
(2.3)式より,(2.2)式の重み$w_i$を用いることは、暗黙的に$D^\ast$へのラベルシフト問題として、$D^\ast$上での$l$の(期待値の)最小化を解いているとみなすことができます。
2-3 D^* 上での条件付き確率
一般的な2値分類の教師あり学習では, 元々の分布$D$上での$P(Y=1\mid\boldsymbol{X})$(またはその対数オッズ)を推定することが可能です。しかし, (2.3)式より, ICWで重みづけすることによって$D^{\ast}$上での$P(Y=1\mid\boldsymbol{X})$に変化してしまいます。$D$と$D^{\ast}$で$P(Y=1)$の値は違うので、当然$\boldsymbol{X}$で条件づけた時の$Y=1$となる確率も異なってきます。実際,ベイズの定理より
\begin{align}
P(Y=1\mid\boldsymbol{X})= \frac{P(\boldsymbol{X}\mid Y=1)P(Y=1)}{P(Y=1)P(\boldsymbol{X}\mid Y=1) + P(Y=0)P(\boldsymbol{X}\mid Y=0)}
\end{align}
となるので、$P(\boldsymbol{X}\mid Y)$が同じでも$P(Y=1)$の値が異なるならば, $P(Y=1\mid\boldsymbol{X})$の値は異なります。
今、$D$と$D^{\ast}$上の$\boldsymbol{X}$で条件づけた時の$Y=1$となる確率をそれぞれ,
$P(Y=1\mid\boldsymbol{X}), \quad P^{\ast}(Y=1\mid\boldsymbol{X})$と明確に分けて両者の関係を定式化しましょう。
やや、テクニカルですが両者の条件付きオッズを取ると
\begin{align}
\frac{P(Y=1\mid\boldsymbol{X})}{P(Y=0\mid\boldsymbol{X})} &= \frac{P(\boldsymbol{X}\mid Y=1)P(Y=1)}{P(\boldsymbol{X}\mid Y=0)P(Y=0)}\\
&=\frac{\frac{0.5P(\boldsymbol{X}\mid Y=1)}{0.5P(\boldsymbol{X}\mid Y=1) + 0.5P(\boldsymbol{X}\mid Y=0)}}{\frac{0.5P(\boldsymbol{X}\mid Y=0)}{0.5P(\boldsymbol{X}\mid Y=1) + 0.5P(\boldsymbol{X}\mid Y=0)}}\frac{p_1}{p_0}\\
&=\frac{P^{\ast}(Y=1\mid\boldsymbol{X})}{P^{\ast}(Y=0\mid\boldsymbol{X})} \frac{p_1}{p_0} \tag{2.4}
\end{align}
左辺と(2.4)式について, $P(Y=1\mid\boldsymbol{X}) = 1-P(Y=0\mid\boldsymbol{X})$ であることに気をつけながら単純な式変形で$P^{\ast}(Y=1\mid\boldsymbol{X})$について解くと
\begin{align}
P^{\ast}(Y=1\mid\boldsymbol{X}) = \frac{P(Y=1\mid\boldsymbol{X})}{P(Y=1\mid\boldsymbol{X}) + P(Y=0\mid\boldsymbol{X})\frac{p_1}{p_0}} \tag{2.5}
\end{align}
となります。
RUSとICWとの関係
(1.3)式と(2.5)式を再掲しましょう。それぞれ
\begin{align}
P(Y=1\mid \boldsymbol{X}, S=1) &=\frac{P(Y=1\mid \boldsymbol{X})}{P(Y=1\mid \boldsymbol{X}) + P(Y=0\mid \boldsymbol{X})\frac{n_1}{n_0}}\\
P^{\ast}(Y=1\mid\boldsymbol{X}) &= \frac{P(Y=1\mid\boldsymbol{X})}{P(Y=1\mid\boldsymbol{X}) + P(Y=0\mid\boldsymbol{X})\frac{p_1}{p_0}}
\end{align}
非常によく似ていますね。もちろん
\begin{align}
\frac{n_1}{n_0} &= \frac{n_1/n}{n_0/n} = \frac{\hat{p}_1}{\hat{p}_0} \simeq \frac{p_1}{p_0}
\end{align}
となります。真の確率の値とその推定量という差はあれど、RUSとICWは本質的には同じ条件付き確率の推定を目的としていることがこの2つの式から読み取れます。
実務に活かせる知見として, 限られた時間の中でモデリングをする際, 試行錯誤の候補にRUSとICWの両方を候補として入れるのは非効率であるという事が分かります。