ROC-AUCを最適化したいならRankSVMを使えば良いのでは?

この記事は何?

機械学習分野における予測精度の評価指標としてROC-AUCがよく用いられています. ROC-AUCは分類問題で用いられる評価指標ですが,ROC-AUCを直接最適化できるとお得です.

機械学習の一つにランキングを学習するランク学習という枠組みがあり,様々な予測モデルが提案されています. 提案されている予測モデルの一つに,RankSVMというSVMを基にしたランク学習手法があります. O. Chapelleら(2009)によると,関連度が二値で与えられているデータセットに対しRankSVMを適用するとROC-AUCを最適化できると主張しています.

そこでこの記事では,RankSVMがROC-AUCをなぜ最適化できるのかを考えてみます.

ROC-AUCの求め方

論文中の5.2 Optimization of the AUCにて紹介されている,ROC-AUCの求め方を見てみます.

 \displaystyle \rm{AUC}=\frac{|\{(i,j)\ \rm{such\ that}\ y_i=1,y_j=-1,f(x_i)>f(x_j) \}|}{|\{i, y_i=1\}| \times |\{i, y_i=-1\}|}

この式を噛み砕くと,分母は「正例の数×負例の数」を表し,分子は「正例と負例のペアのうち,正しく分類されたペアの数」を表しています.分子の\(f(x_i)>f(x_j)\)がポイントです.

RankSVMの目的関数

論文中の1 Introductionにて紹介されている,RankSVMの目的関数(式 1)を見てみます.

 \displaystyle \frac{1}{2}||{\bf w}||^2+C \sum_{(i,j) \in P}l({\bf w}^T{\bf x}_i-{\bf w}^T{\bf x}_j)

ここで,\( (i,j) \in P\)は正例\(i\)・負例\(j\)の組を表し,\(l\)は損失関数\( l(t)=\max(0, 1-t)^2 \)を表します.

式中の損失関数は「正例と負例のペアのうち,誤って分類されたペア」の損失を表しています.そのため,目的関数を\( {\bf w} \)について最小化すると,「正例と負例のペアについて,正しく分類するように」\( {\bf w} \)を求めることになります.

ここで先述のROC-AUCの式を振り返ると,ROC-AUCは「正例と負例のペアのうち,正しく分類されたペアの数」が増えると高くなるので,二値問題に対するRankSVMによってROC-AUCを最適化できるという話のようです.

その他

分野によってはROC-AUCの一部分(False Positive Rateをある値で固定した際のROC-AUC)で評価するそうですが,そういった問題でもROC-AUC全体の最適化によって一部分ROC-AUCの最適化に繋がるのでしょうか?一部分ROC-AUCを直接最適化するのは少し難しそうです.

ここではRankSVMについて見ましたが,他のPairwiseランク学習手法でもROC-AUCの最適化に繋がるのではないかと考えられます.