Learning Classifiers from only Positive and Unlabeled Data

半教師アリ学習

参考

PU 学習

問題設定

データ空間 \(X\) の各点についてラベル \(Y = \{ 0, 1 \}\) が対応している. \(1\) が Positive で \(0\) が Negative の意味.

学習データとして有限のサンプル点集合が与えられるのだが, Positive だと分かってるデータ点の集合と, ラベルが不明なデータ点の集合だけが与えられる. ここからラベルの予測器を学習する問題を PU 学習という.

与えられる学習データは次の \(V\) .

\[P = \{ (x,y,s=1) \}\] \[N = \{ (x,s=0) \}\] \[V = P \cup N\]

ここで \(s\) はラベルが付与されているかどうかを示している. \(x,y\) に加えて \(s\) も確率変数だと見なして議論を進めていく.

前提

方針

\(g\) の学習

「ラベルが付与されているかどうか」はデータセット全てについて分かることなので適当な方法で学習する.

Lemmma 1

ラベルがついているなら必ず Positive だとしてるので,

\[\begin{align*} p(s=1 \mid x) & = p(s=1 \land y=1 \mid x) \\ & = p(y=1 \mid x) p(s=1 \mid x, y=1) \\ & = p(y=1 \mid x) p(s=1 \mid y=1) \\ \end{align*}\]

ここで \(p(s=1 \mid y=1)\) はデータ分布のみによる定数なので, 定数 \(c\) だとおくと,

\[p(s=1 \mid x) = c p(y=1 \mid x)\]

という関係を得る.

左辺と右辺に出てくる確率は結局欲しかった \(g,f\) なので

\[g(x) = c f(x)\]

という比例関係を得る.

\(g\) を学習するというのはこの比例関係の意味で \(f\) を学習することと同値. そしてこれは「ラベルがついてないものを全て Negative だと思った PN 学習」に等しい.

\(c\) の推定

3つ方法が提案されている

  1. Positive なデータ \(x\) を持ってきたときの \(g(x)\) を \(c\) として使う方法
  2. 全体の濃度で決める方法
  3. 実用上

基本的には 1 が一番オススメされてる.

Lemmma 1 によると \(f = g/c\) で \(f\) が確率として well-defined なためには \(f \leq 1 \iff g \leq c\) なことが必要十分条件になってる. 3 の方法はこれが約束されるので嬉しい.

Weighting unlabled examples

Lemmma 1 をそのまま使っても \(g\) から \(f\) を構築できるが, 学習データの重みに使う方法も提案されている.

ラベルが付与されていない \((x, s=0)\) について

\[\begin{align*} p(y=1 \mid x, s=0) & = \frac{1-c}{c} \frac{p(s=1\mid x)}{1 - p(s=1 \mid x)} \\ & = \frac{1-c}{c} \frac{g(x)}{1 - g(x)} \\ \end{align*}\]

になる, らしい.

これがラベルが付与されていない場合に \(y=1\) である確率. これを重みに掛けて学習すればよい.

\(h(x,y)\) をデータ \(x\) を予測して正解ラベルが \(y\) であるときの損失関数だとする.

\[\mathcal{L} = \sum_{x \in P} h(x,1) + \sum_{x \in U} p(y=1 \mid x, s=0) h(x,1) + \sum_{x \in U} p(y=0 \mid x,s=0) h(x,0)\]

として学習する.