An Introduction to Statistical Learning (6.3. 〜 6.4.)

権藤研 輪講資料 2019/07/16
新山

6. Linear Model Selection and Regularization (線型モデルの選択および正規化)

はじめに

6.3. 次元削減の手法

ここでは、p個のパラメータ X1, X2, ... Xp から観測された変数 Y を、 p よりも少ない M個の変数 Z1, Z2, ... ZM の線形和で表現することを考える:

Zm = φ1m X1 + φ2m X2 + ... + φpm Xp = Σ(φjm Xj)

このとき、Y はこうなる:

yi = θ0 + θ1 Σ(φj1 xi1) + θ2 Σ(φj2 xi2) + ... + θM Σ(φjM xiM) = Σ(θm Σ(φjm xim))

ここで θ0, θ1, ..., θM は 線型回帰の係数である。もし、 φ1m, φ2m, ..., φpm の値が うまく選ばれていれば、これを使った最小二乗法の誤差は もとの式の最小二乗法の誤差よりも小さくなるはずである。 ここでは p+1 個の係数を推定するかわりに M+1 個の係数を推定することで「次元の削減」をおこなっている。

ちなみに

Σ(θm zim) = Σ(βj xij)
である。
問1. 上の式を証明せよ。

6.3.1. 主成分回帰 (Pricipal Component Regression, PCR)

主成分分析 (Principal Component Analysis, PCA) は 多変量のデータを少数の素性に分解するポピュラーな手法である。 たとえば図 6.14 は各都市の人口 (pop) と広告費 (ad) の 関係にみられる第1主成分 (first principal component) を表している:

これを実際の直線上に分布させてみると、次のようになる。 図6.15の右側は、各点を第1主成分の上に投影 (projection) した 点が示されている。

数学的には、この第1主成分 Z1 は次のように表現される:

Z1 = 0.839 × (pop - Avg(pop )) + 0.544 × (ad - Avg(ad ))
問2. 上の Z1 における 0.839 および 0.544 の意味を、 以下の変数名から選べ。(添字も含む)
yi = θ0 + θ1 Σ(φj1 xi1) + θ2 Σ(φj2 xi2) + ... + θM Σ(φjM xiM) = Σ(θm Σ(φjm xim))

データ上のある点における Z1 の値を、 その点の第1主成分のスコア (first principal component score) とよぶ。 PCA では、スコアの分散が最大になるように変数の組み合わせを求める。 (実際には、係数を大きくすれば分散はいくらでも大きくなってしまうので、 Σ(各係数2) = 1 となるように制限する。)

注意: ここで得られる直線は普通の最小二乗法に近いが、 同じではないことに注意。 最小二乗法は各点と直線との

Σ(ΔY座標2)
を最小化するが、PCA の直線は各点との
Σ(距離 = 各点から直線上に鉛直におろした線分の長さ)
を最小化する。

図 6.16 に示すように、 第1主成分と各変数 pop および ad の 相関はどちらも高い。

いっぽう、第2主成分は以下に式で表される。
Z2 = 0.544 × (pop - Avg(pop )) - 0.839 × (ad - Avg(ad ))
各変数の相関は高くない。 一般に、2つの主成分が互いに直行する (orthogonal / parpendicular) 直線で表される場合、 2つの成分の相関はゼロである。 各点の主成分スコアを比べてみると Z1 に比べて Z2 の値は非常に低い。 これは、第2主成分が分散しておらず、そこに含まれている情報は ほとんどないことを示している。

例: p = 2 の場合、Z1 を求めてみると…

argmax φ1, φ2 {Var(φ1x1 + φ2x2)} =
argmax φ1, φ212 Var(x1) + φ22 Var(x2) + 2φ1φ2 Cov(x1, x2)} =
...
argmax φ1, φ2 [ φ12 {Σ(x12) - (Σx1)2/n} + φ22 {Σ(x22) - (Σx2)2/n} + 2 φ1φ2 {Σ(x1x2) - (Σx1)(Σx2)/n} ]
となる。
問3. 上の 「...」 の部分を導出せよ。(チョー大変)
ここでさらに
φ12 + φ22 = 1
という制限をつけると、 φ1 = sin(t), φ2 = cos(t) と 表すことができ、これを最大化する t を求めればよい。

これを力ずくで (!) 求めるような実装が以下である (7/17 バグ修正済):

主成分回帰 (Pricipal Component Regression, PCR) とは、まず 主成分分析をおこない、その上位M個の主成分 Z1, ..., ZM に 対して線型回帰を行う方法である。これは、ほとんどのデータの変化は 少数の主成分の変化のみによって説明できるという仮定にもとづいている。 この仮定は必ずしも正しくないが、うまくいくことが多い。 上の広告費データの例では、変数 popad の変化は ほとんど第1主成分 Z1 の変化によって説明できるので、 ここからさらに別の変数 (sales など) を予測することはたやすい。 ただし、PCR では素性の線形和を求めているだけで、 素性そのものの数を減らしているわけではないことに注意。 この点で、PCR は 6.2.1. 節で説明した "Ridge regression" に近い。(?)

PCR で使用する主成分の個数 M は、 ふつうクロス・バリデーション (cross validation) によって 決定される。たとえば図 6.20 は Creditデータの回帰を PCR によって (M の数を変化させつつ) 行った結果である。 M = 10 でエラーが最も小さくなっているが、もともとの変数は 11個なので、 これではほとんど次元を削減していることにならない。

6.3.2. 部分二乗和 (Partial Least Squares, PLS)

PCR の基本アプローチは、入力変数 X の値だけを見て、 主成分を決定するというものであった。 しかし実際には PCA の結果が出力変数 Y と相関しているという保証はない。 そこで、変数 Y の値を見ながら「教示つきで (supervised)」 主成分 Z1, ..., ZM の線形和を決定するのが PLS である。 PLS では、X および Y 両方の変化を 説明するような組み合せを探す。

PLS は以下のようなステップで計算する:

  1. まず単純な最小二乗法で Y と Xj の相関を推定し、 その各係数を Z1 中の φi1 に使う。 すると、
    Z1 = Σ(φj1 X1)
    となり、変数 Y にもっとも強く相関する変数の組み合わせになる。
  2. つぎに Z1 中の各変数の 残差 (residuals) に対して回帰をおこなうことで、各変数を調整する。 これは PLS の最初の成分では説明できない残りの差異を説明するのに使われる。 このステップを繰り返し、M 個の成分を抽出する。
  3. 最後に、各 Zm と Y との相関を最小二乗法により求める。
図6.21は生成された Sales データ 100個に対する PLS と PCR の違いを図示したものである。 これは pop のほうが ad よりも Y と相関が高いということを示している。 PLS は PCA とは異なり、入力の差異をそれほど説明しないが、Y の違いはよく説明する。 PCR と同じように PLS で使う M個の成分もクロス・バリデーションにより決定する。 PLS は計量化学 (chemometrics) の分野でスペクトル分析によく利用されているが、 多くの場合は PCR とそれほどの違いはない。

6.4. 高次元なデータを扱う際の注意

6.4.1. 高次元なデータとは

伝統的に、統計で扱うデータは predictor の個数 p が サンプル数 n に比べてはるかに低い (p ≪ n) ものが多かった。 ところが過去20年のうちに、p > n であるようなデータが 扱われるようになった。たとえば:

サンプルの数よりもパラメータ数が多いデータを 「高次元な (high-dimensional)」データという。 過学習 (overfitting) の問題はつねに存在したが、 高次元ではこれがなおさら重要になる。

問4. 人が日常生活で直面する、高次元なデータを使った推定の例をあげよ。

6.4.2. 具体的に何が問題か?

最小二乗法など多くの統計的手法において、 推定するパラメータ数がサンプル数よりも 多い場合、ほぼつねに「完璧フィット」する解が見つかってしまう (図6.22)。これはほぼ確実に過学習である。 同様のことはロジスティック回帰やLDAなどでも発生する。

図6.23 はこの問題をさらに如実に表している。 n=20 のデータに対して、p の値を 1〜20 まで変化させなて 最小二乗法を行った場合、R2 の値は p が増えるにつれ増加し、MSE は減少する。 すると p が増えたほうがよさそうに見えるが、 実際に独立したテストセットを使った MSE は非常に大きくなる。

6.4.3. 高次元における回帰

この章 (6章) でとりあげた手法はどれも、 モデルの柔軟性を意図的に下げるものであった。 一般的に、使用するデータが高次元になるほどテストデータを使った精度は減少する。 この現象を「次元の呪い (Curse of dimensionality)」とよぶ。 ふつう与えるパラメータは多いほうがモデルが正確になると思いがちだが、 多くは相関のないパラメータであるために、ノイズのほうが多くなってしまう。 ようするに、パラメータの多さは諸刃の剣なのである。

6.4.4. 高次元の結果を解釈する

高次元なデータでは、結果と関係のない変数が互いに相関している可能性がある (3章でやった multicollinearity)。たとえば 50万種類の SNP と血圧の相関を 学習しようとして、17種類のSNPとの相関が発見された場合、これだけが唯一の 正しいモデルであるとは限らない (他にも正しいモデルが無数に存在するかもしれない)。 そのため、高次元なデータによって作られたモデルは、各データの特徴に 依存する可能性が高い (これはようするに過学習の別の言い方である)。

また、高次元なデータを使った場合、モデルの妥当性を二乗誤差や p-value や R2 で測定してはならない。p > n の状態では、これらは簡単に小さくなる。 モデルの妥当性はつねに訓練データとは別の、 独立したテストデータを使って評価するべきである。

おさらい問題.
  1. 第1主成分とは何か?
  2. 第1主成分のスコアとは何か?
  3. Curse of dimensionality とは何か? また、これはなぜ起こるか?
  4. 高次元のデータを使った場合、モデルの評価で気をつけるべきことは何か?

Yusuke Shinyama