【論文紹介】Learning Classifiers from Only Positive and Unlabeled Data
はじめに
通常の2値分類問題においては、サンプルxに対してラベルがpositive(y=1)であるかnegative(y=0)であるかが明示的に与えられていることを前提とします。
一方で、現実的な問題設定においてnegativeが明示的に与えられないケースも存在し、そのようなケースに対応しようとするのがpu learningになります。
pu learningの中でも、Learning Classifiers from Only Positive and Unlabeled Data において提案されている方法は実装自体が簡単なのと、以下のようなパッケージが配布されていることもあり使用しやすくなっています。
この記事では、上記論文でどのようなことが行われているのかまとめていきます。
pu learning における問題設定
pu learningにおいては、positiveのみ、かつその一部のみがフィードバックとして明示的に与えられる状況を想定します。
そして、positiveとして明示的にラベルがわかるものをlabeled、明示的なラベルが存在しないものをunlabeledとして扱います。
そのため、inputとなるデータセットのラベルは以下のような構成になります。
- labeled : 潜在的なpositiveのうち観測されたサンプルのみが含まれる
- unlabeled : 潜在的なpositiveなサンプルのうち観測されなかったサンプル、潜在的にnagativeな全てのサンプルが含まれる
このようなデータセットにおいて、labeledをpositive、unlabeledをnegativeとして扱って学習してしまうと、本来の確率分布とは異なる予測値になってしまうことが想定されます。具体的には、本来の分布よりも全体的に低い確率での予測値が得られることになります。
このようなケースにおいて、本来の確率分布をできるだけ再現することが pu learning における問題設定になります。
また、labeledはpositiveの全てが含まれる訳ではないですが、labeledであればpositiveなので、positive vs unlabeledでの2値分類問題として、pu(positive unlabeled) learning, pu classification という呼び方が定着しているように思います。そのため、この記事ではこちらの呼び方を使用します。
Learning Classifiers from Only Positive and Unlabeled Data
こちらの論文では、
- 2値分類モデルの出力値をpu分類の出力値としてcalibrationする方法
- puデータセットを元に重み付き分類問題へ落とし込む方法
の2つの方法が提案されています。
論文内で明確に手法名が定義されている訳ではないのですが、上記パッケージにおいて著者名を使用し前者はElkanoto
、後者はWeighted Elkanoto
と呼ばれているので、こちらでもその呼び方を使用します。
全てのpositiveのうち、labeledとして観測されるpositiveはxの値に関わらず発生するという仮定(Selected Completely At Random assumption)をおくことが特徴となっています。
Selected Completely At Random assumption
こちらの論文においては、全てのpositiveのうち、labeledとして観測されるpositiveはxの値に関わらず発生するという仮定
つまり、
- positive: y=1, negative: y=0
- labeled: s=1, unlabeled: s=0
と表記したとき、以下が成り立つという仮定を、Selected Completely At Random assumption(SCAR仮定)と呼びます。
提案手法1: Elkanoto
2値分類モデルの出力値をpu分類の出力値としてcalibrationする方法です。
定期化
上記SCAR仮定より、labeled=positiveである確率p(s=1|x)は
となるので、
- 通常のpositiveとnegativeに対する予測値 p(y=1|x) を出力する関数: f(x)
- labeledとunlabeledから学習した p(s=1|x) を出力する関数: g(x)
とおいたときに、f(x) は g(x) / p(s=1|y=1) により求めることができます。
また、ここでlabeledは全てpositiveである、つまり
となります。
ここから、validation setにおけるlabeledのみを含むデータセットをPとおいた時、
より、p(s=1|y=1) の値はvalidation setにおけるlabeledサンプルに対する g(x) の出力の平均値として推定可能です。
つまり、labeledとunlabeledから学習した関数 g(x) の出力を、validation setにおけるlabeledサンプルに対する g(x) の出力の平均値で割ったものが、positiveとnegativeの2値分類としての出力となります。 決定境界をnegativeに向けてずらすイメージですね。
手順
具体的な手順としては、以下になります。
- puデータセットから通常の分類モデルを学習
- validation setのpositiveに対する分類モデルの予測値を平均し、p(s=1|y=1)を求める
分類モデルの予測値 / p(s=1|y=1)
がcalibrationされた予測値となる
提案手法2: Weighted Elkanoto
puデータセットを元に重み付き分類問題へ落とし込む方法です。
上記SCAR仮定より、
であることがわかるので、ある関数 h(x) の期待値 E[h(x)] は以下のように変換できます。
このことから、unlabeledなサンプルは
p(y=1|x, s=0)
の重みを持つpositiveサンプル1 - p(y=1|x, s=0)
の重みを持つnegativeサンプル
で構成されると見なすことができます。
本論文ではこれを利用して、unlabeledデータセットを複製し、片方にp(y=1|x, s=0)
の重みを、もう片方に1 - p(y=1|x, s=0)
の重みを持たせることで、重み付き学習として扱うことを提案しています。
検証
DeepFMを使用して、手法1として紹介したElkanotoの検証を行いたいと思います。
実装
以下が実装になります。
検証方法などに関しては、上記パッケージにおける検証を参考にしています。
データセット
MovieLens 100K Datasetを使用します。
positiveとnegativeの問題設定とするため、ratingが4以上のものをpostive、3以下のものをnegativeとして使用します。
検証方法
positiveのうち、一定割合がunlabeledである。つまりpositiveとして観測できなかったというケースを考えます。
具体的には、
の二つを用意し、両者共にtrain(validation) setのみに対して、positiveのうち一定割合をランダムでunlabeledに変換します。
これらデータセットで学習したモデルを使用することで、通常のpositive negativeで学習したDeepFMとElkanoto間で、unlabeledが占める割合ごとの精度差を比較します。
評価指標としては、論文でも使用されているf1 score(threshold=0.5)を使用します。
検証結果
下図のように、positiveのうち観測できなかった割合、つまりunlabeledな割合が増えるほど、通常のDeepFMではf1-scoreが大きく下がるのに対して、Elkanotoで補正した場合はあまり下がらないという結果が得られました。
最後に
この論文ですが後続の研究では、全てのpositiveサンプルに対して p(s=1|y=1) が一つしか存在しないという点で非現実的であると書かれています。
また、Elkanotoにおいて、validation set内のpositiveの平均で割ってしまうと補正後の予測値が1を越えることがあるので、何かしら補正する必要があるのかもしれません
追記
こちらの後続の論文に関して、以下でそれぞれまとめています。