default eye-catch image.

ロジスティック回帰とROC曲線

[mathjax] ロジスティック回帰 2値の特徴量tを持つトレーニングデータ(x,y,t)を正解/不正解に分類する問題を考えたとき、最尤推定によりモデルf(x,y)を決めるのがロジスティック回帰。モデルf(x,y)がトレーニングデータ(x,y,t)を正解と分類する確率P(x,y)を立てて、P(x,y)の最大化問題を解くことでf(x,y)のパラメタを決定する。その際、P(x,y)はロジスティック関数を使って以下の通り表される。 $$ begin{eqnarray} z_n &=& sigma(w^Tphi_n) \\ P(x,y) &=& z_n (1-z_n) end{eqnarray} $$ P(x,y)において、トレーニングデータを定数とすることでP(x,y)をパラメタwに関する関数とした。P(x,y)を最大化するwを求めたいのだが、P(x,y)を解析的に最大化することはできず、パラメタwを数値計算(反復再重み付最小二乗法、ニュートンラフソン法)することによりf(x,y)のパラメタwを更新していく。wが一定値に収束した場合、f(x,y)=0はトレーニングデータ内の正解データ(t=1)を1/2の確率で正解(t=1)として分類できることを示す。 正解分類確率の制御 トレーニングデータ(x,y,t)に対して、f(x,y)t>0の場合は「正解」、f(x,y)t0の方向あるt=0のデータ、f(x,y)0の方向に距離α分平行移動していくと、f(x,y)>0のときは正解であったもののf(x,y)>αのときは不正解となるデータが発生する。 逆にf(x,y)<0の方向に距離β分平行移動していくと、f(x,y)<0のときは正解であったもののf(x,y)0方向にα移動することで、トレーニングデータを「正解」として分類する確率を50%から75%に変更する等の操作にあたる。 ロジスティック回帰とROC曲線 分類問題を整理すると、分類対象とするトレーニングデータの特徴量tを2値のいずれであるか識別することであり、分類とその結果の組み合わせとして以下の組み合わせが考えられる。それぞれ統計の分野で名前が付いている。 t=1であるデータを1として分類する TP, True Positive t=1であるデータを0として分類する FN, False Negative t=0であるデータを0として分類する TN, True Negative t=0であるデータを1として分類する FP, False Positive かなり混乱するので図を張り付けておく。観測データが1なのか0なのかは\"Positive\"/\"Negative\"、それを1と分類したのか0と分類したのかは\"True\"/\"False\"。t=1/0は符号に過ぎないので\"Positive\"/\"Negative\"はその時次第。True/Falseは分類結果が特徴量と一致するかどうかを表す。 ロジスティック関数P(x,y)=σ(w0+w1x+w2y)は、トレーニングデータ(x,y)を1として分類する確率を返す関数である。 最尤推定によりwを求めたのだから、f(x,y)=w0+w1x+w2yは、確率的に最もトレーニングデータを正しく分類する多項式となっている。 \"確率的に最も\"の度合いを定量的に表すのがROC曲線とAUC。 全トレーニングデータ(x,y)に対してP(x,y)を計算し降順ソートすると、P(x,y)が高ければ(つまり上位であれば)t=1のデータが多いはずで、P(x,y)が低ければ(つまり下位であれば)t=0のデータが多いはずだ。P(x,y)に相当するTP,FPが期待される。実際には上位にt=0のデータ、下位にt=1のデータが観察されることがあり、単純にP(x,y)からTP,FPが決まるものではない。 TPがP(x,y)よりも相対的に高く、(1-P(x,y))よりも相対的に低ければ、多項式の性能が良いということになる。 定数c=P(x,y)を定めたときP(x,y)<c<1の範囲でt=1のものは True Positive, P(x,y)<c<1の範囲でt=0のものは False Positive。0<c<P(x,y)の範囲でt=0のものは False Negative, t=1のものは False Positive。cを1から0に下げていくと True Positive, False Positiveの数がそれぞれ独立に増加していく。各々のcを真陽性率、偽陽性率という。 横軸に偽陽性率FP、縦軸に真陽性率TPをとり、トレーニングデータ(x,y)をプロットした図がROC(Receiver Operating Characteristic)曲線。 P(x,y)を1から0に減らしていったときTP/FPそれぞれ増加するが、ROC曲線によりTPが大きくFPが小さいプロットが性能の良い分類であることを視覚的に表現できる。 ROC曲線の左下と右上を結ぶ直線は、0<P(x,y)<1の全域に渡りFP=TPであったことを示し、ランダムにTrueかFalseかを答えたときの視覚的表現にあたる。 左上に凸となっているROC曲線が性能の良さを表し、ROC曲線の下の面積AUC(Area Under the Curve)が分類器の性能を表す数値。

default eye-catch image.

ロジスティック回帰 教師有り確率的分類モデル

[mathjax] 2種類の値tを持つトレーニングデータ{(xn,yn,tn)}を正解/不正解に分類するパラメトリックモデルを立てて、パラメトリックモデルと不正解に分類されるトレーニングデータの距離E(w)が最小になるwを決定しモデルを作成するのがパーセプトロンであった。 E(w)においてトレーニングデータ(xn,tt)を定数として使用することでE(w)をwから決まる関数とし、wの決定をE(w)の最小化問題に帰着させる考え方は最小二乗法と同様であった。パーセプトロンは最小二乗法と異なり、E(w)の最小化問題を解析的に解けないため、数値計算によりE(w)を小さくする方向にwを更新する手順を取った。 最小二乗法はトレーニングデータから決定した多項式が未知のサンプルデータにおいても二乗誤差が最小になることを期待していたのと同様に、パーセプトロンも誤分類する未知のサンプルとの距離が最小になることを期待した分類モデルであることを意味する。最小二乗法もパーセプトロンも、サンプルデータのバラツキを考慮していない。 サンプルデータがモデルからσのバラつきをもって存在することを加味することで、パラメタwとバラつきσから決まる尤度関数を導入し、wの決定を尤度関数の最大化問題に帰着する最尤推定法に拡張した。最尤推定法により、パラメトリックモデルが変数とσの関数となり、確率的な回帰を検討できるようになった。 サンプルデータがモデルにより正解であると分類される確率を考慮することで、回帰モデルとして未来を予測する要素を増やすことができる。そこで、本エントリにおいてその手法(ロジスティック回帰)をまとめる。 ITエンジニアのための機械学習理論入門posted with amazlet at 17.03.10中井 悦司 技術評論社 売り上げランキング: 8,130Amazon.co.jpで詳細を見る ロジスティック回帰 モデルf(x,y)を仮定したとき、トレーニングデータ(x,y)について|f(x,y)|はモデルとの距離を表す。また、f(x,y)>0の方向にt=1のデータ、f(x,y)<0の方向にt=-1のデータが存在するモデルであることを示す。 f(xn,yn)tn > 0 であれば分類は正解であるから、f(x,y)が大きくなるにつれてt=1であるデータの発生確率が上がり、f(x,y)が小さくなるにつれてt=1であるデータの発生確率が下がることになる。逆に、f(x,y)が大きくなるにつれてt=-1であるデータの発生確率が下がり、小さくなるにつれてt=-1であるデータの発生確率が上がる。 横軸にf(x,y)、縦軸にt=1であるトレーニングデータがf(x,y)から得られる確率を取ると以下のような曲線が得られる。一般にロジスティック曲線と呼ばれる。 ロジスティック関数は以下のように表現される。 $$ sigma(a)=frac{1}{1+e^{-a}} $$ トレーニングデータ(x,y)で得られたデータの特徴量tが1である確率は以下の式で表される。 $$ P(x,y) = sigma(w_0 + w_1 x + w_2y) $$ また、t=1の場合とt=-1の場合で確率が逆になるため $$ begin{eqnarray} t_n=1の場合 &:& P(x_n,y_n) \\ P_n &=& P(x_n,y_n)^1{1-P(x_n,y_n)}^0 \\ &=& P(x_n,y_n) \\ t_n=-1の場合 &:& 1-P(x_n,y_n) \\ P_n &=& P(x_n,y_n)^0{1-P(x_n,y_n)}^1 \\ &=& 1-P(x_n,y_n) \\ end{eqnarray} $$ まとめて書くと以下となるが、これは全てのトレーニングデータがモデルから得られる確率であり尤度関数である。 $$ P_n = P(x_n,y_n)^{t_n}{ 1-P(x_n,y_n)}^{1-t_n} $$ ここで、 $$ P_n = sigma(w_0+w_1x+w_2y) $$ だから、 $$ P_n = sigma(w_0+w_1x_n+w_2y_n)^t{t_n}{1-sigma(w_0+w_1x_n+w_2y_n)}^{1-t_n} $$ 多項式のベクトル表現をロジスティック関数に入れた結果をznとする。 $$ begin{eqnarray} w &=& left ( begin{array}{c} w_0 \\ w_1 \\ w_2 end{array} right ) \\ phi_n &=& left ( begin{array}{c} 1 \\ x_n \\ y_n end{array} right ) \\ z_n &=& sigma (w^Tphi_n) end{eqnarray} $$ 尤度関数Pnをznを使って表すと以下となる。 $$ P_n = z_n^{t_n}(1-z_n)^{1-t_n} $$ 尤度関数を最大とするwを決定する最尤推定法によりwを決定する方法をロジスティック回帰という。 ロジスティック回帰における尤度関数の最大化 パーセプトロンにおいて数値計算(確率的勾配降下法)によりwの修正値を求めwを更新していったのと同様に、ロジスティック回帰の尤度関数最大化問題も解析的に解くことができず、数値計算によりwを修正していく。ニュートンラフソン法を使った反復再重み付最小二乗法により修正値を求めていく。導出方法は別途記述。wの修正式は以下の通りである。 $$ w_{new} = w_{old}-(Phi^TRPhi)^{-1}Phi^T(z-t) $$ なお、各行列は以下の通りである。Rはzn(1-zn)を対角成分とする対角行列。 $$ begin{eqnarray} t &=& left ( begin{array}{c} t_1 \\ t_2 \\ vdots \\ t_n end{array} right ) \\ Phi &=& left ( begin{array}{c c c} 1 & x_1 & y_1 \\ 1 & x_2 & y_2 \\ vdots & vdots & vdots \\ 1 & x_n & y_n \\ end{array} right ) \\ z_n &=& left ( begin{array}{c} z_1 \\ z_2 \\ vdots \\ z_n \\ end{array} right) \\ end{eqnarray} $$ 収束条件は以下の通り。ニュートン法の収束条件ぽい。 $$ frac{||w_{new}-w{old}||^2}{||w_{old}||^2} < 0.001 $$ なお、wの更新が進み、ロジスティック関数znが0または1に近づくか、0または1そのものになる場合がある。 $$ z_n = sigma (w^T phi_n) $$ zn=0または1となったとき、Rの対角成分zn(1-zn)が0となる。すると $$ Phi^TRPhi $$ の逆行列が存在しなくなりwを更新できなくなる。数値計算上の精度の話でもあるし、もともと全てのトレーニングデータが正解/不正解に分類できるのであれば、f(x,y)を大きくしていったときにf(x,y)と誤分類データとの距離が0になる、すなわちモデルから正解データを100%の確率で取得できる時がくるので、収束停止条件として考慮すべき内容である。