【統計学修士の備忘録】#2 ロジスティック回帰とLDA
こんにちは。ポムポムプリンが大好きなぽむぽむです。今回はデータを2種類のクラスに分類にする問題について記録します。
2種類のクラスに分類する問題とは、例えばこのようなものです。ある銀行が今までの顧客の収入と破産履歴のデータを使って、新しい顧客が破産するかどうかを予測するモデルを作りたいとします。この時のアウトカムは破産する or 破産しないの2択(バイナリー)なので2種類のクラスに分類する問題ということになります。
ロジスティック回帰
機械学習に慣れていない人はとりあえず線形の回帰分析から始めると思います。Yを破産したかどうか(破産したら1、しなかったら0)にして、Xを収入として普通に線形回帰する方法です。ところがどっこい、説明は割愛しますが線形回帰では上手く破産確率を推定することはできません。
そこで使われるのがロジスティック回帰です。これは破産確率を$${p(X)=\cfrac{e^{ \beta_{0} + \beta_{1}X}}{1 + e^{\beta_{0} + \beta_{1}X}}}$$ とし、Yがその確率のもとベルヌーイ分布に従うとして、係数を最尤推定する方法です。アウトカムも0か1のバイナリーになるので、便利ですね。
LDA
今回のメインはこちらです。LDA は Linear Discriminant Analysis の略で、二種類の分類に限らず、様々な分類の問題に使われます。
まずは分類の基本とも言えるベイズ分類器から始まります。ベイス分類器は、データXを元にYのクラスを予測する方法の1つで、クラスを決めるルールは
$$
f_{Bayes} = argmax_{k=1,…,k} P(Y=k | X=x)
$$
となります。至ってシンプルで、$${X}$$のデータが与えられた時の$${Y}$$の事後確率が1番大きくなるような$${k}$$を選びましょうということです。
この事後確率を求めるために使うのが Discriminant function $${\pi_{k}f_{k}(x)}$$です。ここで、$${\pi_{k}}$$は$${Y}$$が$${k}$$である確率(事前確率)、$${f_{k}(x)}$$は$${Y=k}$$が与えられた時の、$${X}$$の条件付確率密度です。つまり、「Yがkである確率」と「Yがkであった時にX=xである確率」を掛け合わせているので、$${\pi_{k}f_{k}(x)}$$は「Y=k、かつ、X=kである確率(同時確率密度)」になります。
ここまで来たらベイズの定理を見慣れている人は、材料が全て揃ったことが分かると思います。先ほどのベイズ分類器で出てきた事後確率は$${P(Y=k|X=x)}$$でした。これを求めていきます。
$$
\begin{equation*}
\begin{split}
P(Y=k|X=x) &= \cfrac{P(Y=k, X=x)}{P(X=x)} \\
&= \cfrac{\pi_{k}f_{k}(x)}{\sum_{k=1}^{K} \pi_{k} f_{k} (x)}
\end{split}
\end{equation*}
$$
あとはこれをkについて最大化するだけなのですが、そもそも$${\sum_{k=1}^{K} \pi_{k}f_{k}(x)}$$は$${k}$$に寄らないので、$${\pi_{k}f_{k}(x)}$$を最大化するだけで良くなります。
シンプルな例として、Xが一次元で正規分布に従う場合を考えます。$${Y=k}$$の時のXの分布は$${X|Y=k \sim N(\mu_{k}, \sigma_{k}^{2})}$$なので、条件付き確率密度$${f_{k}(x)}$$は
$$
f_{k}(x) = \cfrac{1}{\sqrt{2\pi}\sigma_{k}} e^{-\cfrac{1}{2} (\cfrac{x-\mu_{k}}{\sigma_{k}})^{2}}
$$
です。ここで、最尤推定法と同じ様な手順で$${\pi_{k}f_{k}(x) = \pi_{k} \cfrac{1}{\sqrt{2\pi}\sigma_{k}} e^{-\cfrac{1}{2} (\cfrac{x-\mu_{k}}{\sigma_{k}})^{2}} }$$を最大化していきます。つまり、logをとって、kに関係のない項を除くと
$$
x \cfrac{\mu_{k}}{\sigma^{2}} - \cfrac{\mu_{k}^{2}}{2 \sigma^{2}} + log(\pi_{k})
$$
という線形なxの関数に変身します。あとはkに関して微分するなりして最大化するkを見つけるだけです。実際には$${\pi_{k}}$$や$${\mu_{k}}$$の本当の値は分からないので、持っているデータから推定する必要があります。
※ちなみに、Xが多次元の場合は確率密度関数を多次元正規分布のものに変えるだけです。この時にLDAでは共分散行列$${\Sigma}$$はどのクラスでも同じとしますが、クラスによって異なる$${\Sigma_{k}}$$を用いる場合は QDA (Quadratic Discriminant Analysis) となります。
遠回りしましたが、二種類のクラスに分類する問題に戻ります。この場合は$${\pi_{1}f_{1}(x), \pi_{2}f_{2}(x),…, \pi_{K}f_{K}(x)}$$の中から最大化する$${k}$$を見つけるのではなく、$${\pi_{1}f_{1}(x)}$$と$${\pi_{2}f_{2}(x)}$$を比べるだけなので、
$$
log(\cfrac{\pi_{1}f_{1}(x)}{\pi_{2}f_{2}(x)}) = c_{0} + c_{1}x_{1} + \cdots + c_{p}x_{p}
$$
というこの線形の関数が正か負かでクラスが決まるということになります。何だかロジスティック回帰に似ていますね。
ロジスティック回帰とLDAの比較
実際にこの二つを使った分析結果は似たようなものになるそうです。じゃあ何が違うのかとなると、パラメーターの求め方です。ロジスティック回帰では条件付確率$${P(Y|X)}$$を用いていたのに対し、LDAでは同時確率$${P(X,Y)}$$を用いていました。また、この時に正規分布の仮定を置いていました。実際にデータが正規分布に従っていれば良いのですが、そうでない場合はロジスティック回帰の方がアウトパフォームするとされています。
また、同じような分類問題で有名なメソッドとしてk近傍法があると思います。こちらについてもまたいつか記録しながらLDAと比較してみたいと思います。
この記事が気に入ったらサポートをしてみませんか?