備忘録

勉強や読書の記録

ISLR: Chapter 4 Classification

 回帰ではレスポンスが量的データの場合を扱ったが,レスポンスを質的データとしたい場合もある.そういう時は回帰ではなく分類を用いる.

4.1 An Overview of Classification

 問題設定:顧客がデフォルトするかしないかを判定

4.2 Why Not Linear Regression?

 ダミー変数を置いて回帰するアプローチは,その質的データの取りうる値が2値の場合は有効.ダミー変数が2値の場合に最小二乗法で学習された線形回帰モデルは \mbox{Pr}(Y=1 \mid X)の推定値になってる.ただ,回帰なので実際に予測した時に値が [0,\ 1]の範囲に収まらないため,確率として解釈するにはちょっと無理がある.

 しかし,ダミー変数の数が2つ以上になると,ダミー変数の置き方によってダミー変数の間の差に意味が生じるので基本的にダメ.例えば,ラベルが脳卒中,薬物中毒,癲癇だとして,それぞれのダミー変数を1, 2, 3とする.そうすると,3-2=2-1=1となるので,癲癇と薬物中毒の差は薬物中毒と脳卒中の差と同じであるということを意味してしまう.もちろん差の意味が同じことを表してるなら1, 2, 3とダミー変数を置くのも良いが,そうでない場合が多いので,レスポンスが質的データの場合は分類手法を使う方が良い.

4.3 Logistic Regression

 確率を,  \displaystyle
\begin{align}
p(X)=\mbox{Pr}(Y=1 \mid X)
\end{align}
とする.

4.3.1 The Logistic Model

 線形回帰モデル p(X)=\beta_0+\beta_1Xでモデル化すると [0,\ 1]の範囲を超える値を取ってしまう.そこで,ロジスティック回帰では p(X)をロジスティック関数を使ってモデル化する.  \displaystyle
\begin{align}
p(X)=\frac{e^{\beta_0+\beta_1X}}{1+e^{\beta_0+\beta_1X}} \label{logisticRegression}
\end{align}
関数の形はFig. 4.2にあるようにS字型.パラメタは最尤推定で求める.式 \eqref{logisticRegression}は次のように変形できる.  \displaystyle
\begin{align}
\frac{p(X)}{1-p(X)}=e^{\beta_0+\beta_1X} \label{odds}
\end{align}
この式の左辺はoddsと呼ばれ, [0,\ \infty]の範囲で値をとる.oddsは0に近いほど低い確率, \inftyに近いほど大きい確率であることを表す.

 式 \eqref{odds}の対数を取ると,  \displaystyle
\begin{align}
\log\biggl( \frac{p(X)}{1-p(X)}\biggr) = \beta_0+\beta_1X \label{logit}
\end{align}
この式の左辺をlog-oddsまたはlogitと呼び,式 \eqref{logisticRegression} Xについて線形の関係にあるlogitを持っていることがわかる.

 説明変数Xの係数 \beta_1は,線形回帰ではXを1単位分動かした時に目的変数Yに及ぼす変化の平均値を意味しているが,ロジスティック回帰ではXを1単位分動かした時にlogitが\beta_1ずつ変化する(つまり,oddsにe^{\beta_1}をかけることと等価).

 p(X)Xの関係は直線で表現できない.p(X)の変化量はXの値によって変化するから,S字カーブを描く.

4.3.2 Estimating the Regression Coefficients

 最小二乗法で学習してもいいけど,最尤推定というもっといい方法がある.最尤推定の性質として,式\eqref{logisticRegression}のパラメタ\beta_0,\ \beta_1を観測に最も近くなるように学習する.最尤推定は以下の形で定式化できる. \displaystyle
\begin{align}
\ell(\beta_0,\ \beta_1)=\prod_{i: y_i=1} p(x_i) \prod_{i’:y_{i’}=0} (1-p(x_{i’}))
\end{align}
線形回帰での最小二乗法は実は最尤推定の特殊なケースになってる.

4.3.3 Making Predictions

 パラメタ\beta_0,\ \beta_1が求まれば予測は簡単にできるという話.ロジスティック回帰でも質的説明変数に対してダミー変数のアプローチを使える.

4.3.4 Multiple Logistic Regression

 式\eqref{logisticRegression},\ \eqref{logit}を多変量に拡張すると以下のように書ける.  \displaystyle
\begin{align}
p(X)=\frac{e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}}{1+e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}},\ \mbox{where } X=(X_1,\ldots,\ X_p)\mbox{ are }p\mbox{ predictors.} \label{multiLR}
\end{align}
\displaystyle
\begin{align}
\log\biggl(\frac{p(X)}{1-p(X)}\biggr)=\beta_0+\beta_1X_1+\ldots+\beta_pX_p
\end{align}

 多変量(income, balance, student)でロジスティック回帰した時には,incomeとbalanceを固定した時,学生よりも非学生のほうが高いデフォルト確率を示すが,studentのみでロジスティック回帰した時は非学生よりも学生の方が高いデフォルト確率を示す.これはbalanceとstudentに相関があるから.balanceとstudentを繋ぐ要素は,本書では「学生はより大きな負債を抱えている(奨学金かな?)」とされている.3章でも話したけど,説明変数間に相関があると,単変量と多変量で結果が変わる.この現象は一般に交絡(confounding)と呼ばれる.

4.3.5 Logistic Regression for >2 Response Classes

 ロジスティック回帰で多クラス分類もできるけど,実際には次章で紹介する線形判別分析(Linear Discriminant Analysis, LDA)を用いるので本書では割愛.Rでは簡単に使えるらしい.

4.4 Linear Discriminant Analysis

 ロジスティック回帰(式 \eqref{logisticRegression},\ \eqref{multiLR})では直接\mbox{Pr}(Y=k \mid X=x)モデリングした.つまり,説明変数Xを与えた時のレスポンスYの条件付き分布をモデル化している.

 ただ,多クラス分類においてロジスティック回帰は,レスポンスを綺麗に分けることができる場合はパラメタ推定が安定しない.また,観測が少なく,かつ各クラス毎の説明変数Xの分布が正規分布の場合は,もっと良い手法がある.それがLDA.分離平面が綺麗に分かれる場合のパラメタ不安定問題も,この手法なら気にすることはない.

 LDAでは\mbox{Pr}(Y=k \mid X=x)を直接モデル化しない.代わりに,各クラスごとの説明変数Xの分布をモデル化し,ベイズの定理を使って\mbox{Pr}(Y=k \mid X=x)を求める.

4.4.1 Using Bayes' Theorem for Classification

 \pi_kをある観測がk番目のクラスに所属している事前確率とする.また,k番目のクラスに属する観測Xを得た時の密度関数をf_k(X)\equiv \mbox{Pr}(X=x \mid Y=k)とする.f_k(X)は確率なので,大きな値を取ればk番目のクラスに属する観測XX \approx xだろうし,小さな値をとった時にはX \approx xである確率は低い.で,ベイズの定理を使うと,求めたい確率\mbox{Pr}(Y=k \mid X=x)は以下のように書ける.  \displaystyle
\begin{align}
\mbox{Pr}(Y=k \mid X=x)=\frac{\pi_k f_k(x)}{\sum_{l=1}^{K} \pi_l f_l(x)} \label{lda}
\end{align}
\mbox{Pr}(Y=k \mid X)は以下p_k(X)と書く.母集団からのランダムなサンプルがある場合は\pi_kは非常に簡単に求まるが,f_k(x)は密度関数を簡単な形だと仮定しない限りはかなり難しい.

4.4.2 Linear Discriminant Analysis for p=1

 まず,説明変数1つの場合を考える.密度関数f_k(x)正規分布だと仮定する. \displaystyle
\begin{align}
f_k(x)=\frac{1}{\sqrt{2\pi}\sigma_k}\exp\biggl(-\frac{1}{2\sigma_k^{2}}(x-\mu_k)^2\biggr) \label{densityFunc}
\end{align}
クラス毎の分散は全て\sigma^2,つまり,\sigma_1^{2}=\ldots =\sigma_k^{2}=\sigma^{2}と仮定し,式\eqref{densityFunc}を式\eqref{lda}に代入すると, \displaystyle
\begin{align}
p_k(x)=\frac{\pi_k \frac{1}{\sqrt{2\pi}\sigma_k}\exp\biggl(-\frac{1}{2\sigma_k^{2}}(x-\mu_k)^2\biggr)}{\sum_{l=1}^{K} \pi_l \frac{1}{\sqrt{2\pi}\sigma_l}\exp\biggl(-\frac{1}{2\sigma^{2}}(x-\mu_l)^2\biggr)} \label{lda2}
\end{align}
となる.ここで, \mu_kk番目のクラスの平均を表す.ベイズ分類器は式\eqref{lda2}の確率が最大となるクラスを,観測が所属するであろうクラスとする.式\eqref{lda2}のlogを取って整理すると, \displaystyle
\begin{align}
\delta_k(x)=x \cdot \frac{\mu_k}{\sigma^{2}}-\frac{\mu_k^{2}}{2\sigma^{2}}+\log(\pi_k) \label{logLDA}
\end{align}
となる.

 実際に予測するためには, \mu_1,\ldots,\ \mu_k,\ \pi_1,\ldots,\ \pi_k,\ \sigma^{2}を推定する必要がある.LDAは,式\eqref{logLDA}を用いて\pi_k,\ \mu_k,\ \sigma^{2}を推定するとベイズ分類器の近似になる.肝心の推定量は下式で与えられる. \displaystyle
\begin{align}
\hat{\mu}_k=\frac{1}{n_k}\sum_{i:y_i=k}x_i \label{estMU}
\end{align}
\displaystyle
\begin{align}
\hat{\sigma}^2=\frac{1}{n-K}\sum_{k=1}^{K}\sum_{i:y_i=k}(x_i-\hat{\mu}_k)^{2} \label{estSIGMA}
\end{align}
ここで,nはトレーニング用の観測の総数,n_kk番目のクラスのトレーニング用観測の総数を表す.\hat{\mu}はクラスkの観測の平均,\sigma^{2}はそれぞれのクラスの標本分散の重み付き平均になっている.もし事前確率\pi_kについての情報がなければ,LDAでは \displaystyle
\begin{align}
\hat{\pi}_k=\frac{n_k}{n} \label{estPI}
\end{align}
とする. 式\eqref{estMU},\ \eqref{estSIGMA},\ \eqref{estPI}を式\eqref{logLDA}に代入すると,観測X=xの所属クラスは \displaystyle
\begin{align}
\hat{\delta}_k(x)=x \cdot \frac{\hat{\mu}_k}{\hat{\sigma}^{2}}-\frac{\hat{\mu}_k^{2}}{2\hat{\sigma}^{2}}+\log(\hat{\pi}_k) \label{logLDA2}
\end{align}
が最大となるクラス.LDAという名前がついているのは判別関数\hat{\delta}_kxの線形関数になっているから.

 LDAは各クラスの観測がクラス固有の平均\muと,クラス共通の分散\sigma^{2}正規分布から生成されていると仮定している.Section 4.4.4ではクラス固有の分散\sigma_k^{2}を持てるように仮定を緩める.

4.4.3 Linear Discriminant Analysis for p>1

 LDAを多変量に拡張する.p=1の時は観測X正規分布に従うとしていたが,多変量の場合,観測X=(X_1,\ X_2,\ldots,\ X_p)は多変量正規分布に従う.それぞれの成分は単変量の正規分布に従い,成分間には多少の相関あり.p次元のランダムな変数Xが平均\mu,共分散\Sigmaの多変量正規分布に従うことをX \sim N(\mu,\ \Sigma)で表す.下式は多変量正規分布確率密度関数\displaystyle
\begin{align}
f(x)= \frac{1}{ \sqrt{(2\pi)^{p}} \sqrt{\left|\Sigma\right|}} \exp \biggl( -\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu) \biggr) \label{densityFunc2}
\end{align}

 k番目のクラスに属する観測はクラス固有の平均\mu_kとクラス共通の共分散\Sigmaを持つ多変量正規分布N(\mu_k, \Sigma)に従う.観測があるクラスに所属する確率は,式\eqref{densityFunc2}を式\eqref{lda}に代入し,logを取って整理すると,下式で与えられる. \displaystyle
\begin{align}
\delta_k(x)=x^{T}\Sigma^{-1}\mu_k-\frac{1}{2}\mu_k^{T}\Sigma^{-1}\mu_k+\log \pi_k
\end{align}
観測が所属するクラスは上式が最大となるクラス.

 単変量でのLDAと同様に \mu_1,\ldots,\ \mu_k,\ \pi_1,\ldots,\ \pi_k,\ \Sigmaを求める必要がある.推定量は式\eqref{estMU},\ \eqref{estSIGMA},\ \eqref{estPI}と似たような感じで与えられるみたい.

 LDAはベイズ分類器の近似になってる.モデルが正しければベイズ分類器はtotal error rateを最小,つまり誤分類した観測の総数が最も少なくなるようにする.total error rateはどちらのエラーも含んでるので,その辺は,例えば \mbox{Pr(default}=\mbox{Yes}\mid X=x)>0.5というように,閾値で調整する.

4.4.4 Quadratic Discriminant Analysis

 LDAではクラス共通の共分散\Sigmaを用いたが,共分散が共通ではない場合には2次判別分析(Quadratic Discriminant Analysis, QDA)を用いる.

 クラス固有の共分散を\Sigma_kとすると,観測xがクラスkに所属する確率は次のようになる. \displaystyle
\begin{align}
\delta_k(x) =-\frac{1}{2}(x-\mu_k)^{T}\Sigma_k^{-1}(x-\mu_k)-\frac{1}{2}\log \left|\Sigma_k \right| + \log \pi_k
\end{align}
こいつを整理して, \displaystyle
\begin{align}
\delta_k(x)=-\frac{1}{2}x^{T}\Sigma_k^{-1}x+x^{T}\Sigma_k^{-1}\mu_k-\frac{1}{2}\mu_k^{T}\Sigma_k^{-1}\mu_k-\frac{1}{2}\log \left|\Sigma_k \right|+\log \pi_k.
\end{align}
クラスに属する確率を求める上式がxの2次関数の形になってるので,QDAと呼ぶ.

 LDAとQDAのどちらを使うべきなのか?答えはバイアス・バリアンスのトレードオフの関係にある.LDAでは共分散行列を求めるために\displaystyle \frac{p(p+1)}{2}個のパラメタを推定する必要があり,QDAではクラスによって共分散が異なるため,クラス数をかけた\displaystyle \frac{Kp(p+1)}{2}個のパラメタの推定が必要になる.LDAはxについて線形なので,QDAより表現力が低い代わりに分散が小さい.つまり,より良い分類精度を示す可能性がある.だが,バイアスとバリアンスはトレードオフの関係にあるので,LDAのバイアスは高い.使い分けとしては,テストデータが小さく,予測器の分散が重要でないならLDA.テストデータが十分に大きい,もしくは,共分散がクラス間で共通しているという仮定が妥当でなければQDAの方が良い.

4.5 A Comparison of Classification Methods

 ロジスティック回帰,LDA,QDA,kNNを比較する.

 まず,ロジスティック回帰とLDAを比較する.結論から言うと,ロジスティック回帰とLDAはかなり似てる.単変量でクラス1への所属確率をp_1(x),クラス2への所属確率をp_2(x)=1-p_1(x)とする.ロジスティック回帰のlogitは式\eqref{logit}.LDAの枠組みで\displaystyle \log \biggl( \frac{p_1(x)}{1-p_1(x)} \biggr)を求めると,c_0,\ c_1 \mu_1,\ \mu_2,\ \sigma^2の関数とすると,式 \eqref{lda2},\ \eqref{logLDA}より, \displaystyle
\begin{align}
\log \biggl( \frac{p_1(x)}{1-p_1(x)} \biggr)=\log \biggl( \frac{p_1(x)}{p_2(x)} \biggr) = c_0+c_1x
\end{align}
と書ける.ロジスティック回帰もLDAもxの線形関数になってるので,どちらも直線の決定境界を与える.両者の違いはパラメタの求め方.ロジスティック回帰では最尤推定,LDAでは正規分布のパラメタ\mu,\ \sigma^2を用いて c_0,\ c_1を求めてる.フィッティングにおけるこの関係性は多変量になっても同じ.だがしかし,フィッティングの方法が似てるからといって必ずしも同じような結果を得るとは限らない.LDAは観測が正規分布に従うと仮定してるので,実際に正規分布に従う場合はロジスティック回帰よりもLDAの方が優れた精度を示すし,正規分布の仮定が間違っているならLDAよりロジスティック回帰の方が優れた精度を示す.

 kNN分類器は決定境界の形を仮定しないノンパラメトリックな手法.kNNは非線形な決定境界を与えるので,真の決定境界が非線形の時はロジスティック回帰やLDAより有効.ただ,各説明変数毎のパラメタを持たないので,どの説明変数が効いてるのかはわからない.

 QDAは非線形なkNNと線形なロジスティック回帰・LDAとの折衷案.決定境界は2次関数の形になってるので線形な決定境界を与える手法よりはより幅広い問題を扱えるが,ノンパラメトリックなkNNほどではない.訓練用の観測が少ない時には決定境界の形をある程度仮定できるので,kNNよりQDAの方が良い精度を示す.

 LDAやロジスティック回帰に2次の項X_1^{2},\ X_2^{2},\ X_1X_2を導入すれば2次関数の形の決定境界を得られるが,その場合はLDA ・ロジスティック回帰とQDAの中間になるらしい.