« 読了:Indahl, Liland, Naes(2008) 正準PLS回帰分析のご提案 (おまえらにわかるかどうかは別にして) | メイン | 読了: Rosipal & Kramer (2006) PLSレビュー in 2006 »
2018年5月 5日 (土)
Abdi, H. (2010) Partial least squares regression and projection on latent structure regression (PLS regression). WIREs Computational Statistics. 2(1), 97-106.
「PLS回帰というのはこういうもので...」と人に説明する必要が生じたのだが、めんどくさいのでよさそうなPDFを送り付けて済ませてしまった。ごめんなさい。渡しておいて読んでないというのもなんなので、自分でも読んでみた次第。
著者AbdiさんはPLS回帰の専門家として私のなかで評価が高い方である(超・上から目線。要はわかりやすく書いてくれるのでスキよということです)。いま検索してみたら、なかなか渋い感じのおじさんであった。
途中で気が付いたんだけど、これ、前半は以前読んだAbdi(2007)とほぼ同じ。どうせ三歩歩けば忘れてしまうので、気にせずメモを取りましたけど。
いわく。
PLS回帰は、予測子がたくさんあるときの予測に向いている手法。もともとPLS回帰は社会科学から生まれたのだが(Woldは経済学者だしね)、ケモメトリクスとか官能評価とかで人気がでて、社会科学に逆輸入された。
事例数を$I$、従属変数の$I \times K$行列を$Y$, 予測子の$I \times J$行列を$X$とする。
$X$で$Y$を予測したい。$Y$が単変量ならふつうはOLSを使うところだが、$J$が$I$より大きかったりすると$X$が正則でなくなる。さあどうするか。変数を削るか? リッジ回帰に走るか?
ひとつのアイデアは主成分回帰(PCR)である。すなわち、$X$を主成分分析し、主成分を予測子とする。テクニカルには、$X$をSVDにかけて
$X = R \Delta V^T$
右特異行列$V$を負荷と呼ぶ。$G = R\Delta$を因子得点と呼ぶ。で、$G$を予測子にしてOLSをやる。
このアイデアの短所は、予測子から最適なサブセットを選ぶという問題が未解決だという点である。上位主成分を選ぶのは、$X$の説明という意味では最適だが、$Y$の説明という意味では最適でない。
そこでPLS回帰でございます。
$X$と$Y$の両方を、共通の直交因子の積として表現することを考える。つまり、まず
$X = TP^T$
と分解する。$T$の列を「潜在ベクトル」と呼ぶ。ふつうは$T^T = I$とする(実のところ、ここの規準化の仕方によって微妙な差が出てくる。ソフト間で結果が違う原因がここにある)。PCAとのアナロジーで言うと、$T$が得点行列、$P$が負荷行列である。
$Y$は
$\hat{Y} = T B C^T$
と推定する。$C$は「ウェイト行列」, $B$は対角行列で「回帰ウェイト行列」という。
潜在ベクトルの行列$T$をどう決めるか。PLS回帰ではこれを、$X$の線形和と$Y$の線形和を最大化する問題として捉える。
オリジナルのアルゴリズム(NIPALS)だとこうである。$X$, $Y$はあらかじめ標準化しておく。これを$E$, $F$に代入する。ランダムベクトル$u$を用意しておく。
ステップ1. $E^T u$を求め、標準化して「Xウェイト」$w$とする。
ステップ2. $Ew$を求め、標準化して「X得点」$t$とする。
ステップ3. $F^T t$を求め、標準化して「Yウェイト」$c$とする。
ステップ4. $u=Fc$を「Y得点」とする。
これを収束するまで繰り返す。で、係数$b = t^T u$と、「X負荷」$p=E^T t$を求める。$E$の予測値$tp^T$, $F$の予測値$b t c^T$を求め、$E, F$から引く。
以上が第一因子。これを繰り返していく。$b$は$B$の対角にいれていく。
$X$の二乗和のうち潜在ベクトルによって説明された部分は$p^T p$、$Y$の二乗和のうち潜在ベクトルによって説明された部分は$b^2$となる。
ところで、行列の固有値を求める方法にpower methodというのがあるんだけど、NIPALSはこれと似ている。
NIPALSはSVDの観点からも捉えることができる。上のをつなげると、「求めて標準化する」のを$\propto$と書くとして、
$w \propto E^T u \propto E^T Fx \propto E^T F F^T t \propto E^T F F^T E w$
なので、
$S = E^T F$
をSVDしたときの第1右特異ベクトルが$w$, 第1左特異ベクトルが$c$であることがわかる。[←ううううむ... ごめんなさい、私にはよくわかんないです... ]
PLS回帰モデルをどう評価するか。
手元のデータについての記述が目的なのであれば、モデルの評価にもっともよく使われているのはRESS(残差平方和)である。$L$因子PLS回帰による予測値の行列を$\hat{Y}^{[L]}$として、
$RESS = || Y - \hat{Y}^{[L]} || ^2$
が小さければ良い予測だということになる($L$を大きくすれば小さくなる)。潜在変数については、潜在変数を実質的に解釈することに意味がある文脈ならば、解釈すればよろしい。
そうではなくて、手元の標本に基づく新データの予測が目的だとすると、それぞれの潜在変数による寄与と、潜在変数の数の決定が問題になる。これはジャックナイフ法やCVで調べる必要がある。相関係数の二乗とか、PRESS(予測誤差平方和)とかが良く使われている。予測値の行列を$\tilde{Y}^{[L]}$として、
$PRESS = || Y - \tilde{Y}^{[L]} || ^2$
である。
$L$をどう決めるか。記述の場合とちがい、PRESSは$L$を大きくし過ぎると逆に上がってしまう。ひとつの方法は、PRESS最小の$L$を選ぶというもの。もうひとつは、$L=l$のときのPRESSとRESSを$PRESS_l$, $RESS_l$として、
$Q^2_l = 1 - (PRESS_l) / (RESS_{l-1})$
が閾値を上回っている最大の$l$を選ぶというもの($RESS_0=K(I-1)$とする)。閾値の案としては、$(1-0.95^2)=0.0975$とか、「事例数が100以下だったら$.05$、そうでなかったら$0$」とか。[このくだり、理解できない。挙げられている事例で計算してみたんだけど、$Q^2$の値が全然合わない。なにか読み間違えているのか、誤植があるのだと思う]
ところで、ここまでで述べてきたPLS回帰はWold, Martensから発する系統。もうひとつ、Booksteinという人の系統もある。BPLSと呼ぶことにしよう。
BPLSでは、$S = X^T Y$のSVDが
$S = W \Theta C^T$
だとして、
$T = XW$
$U = YC$
とする。BPLSの場合、$X$と$Y$を入れ替えても同じ結果になる。正準相関分析とすごく似ている(ちがいは、正準相関分析では$X$, $Y$の線形和の相関を最大化するのに対して、BPLSでは共分散を最大化するという点)。
BPLSのバリエーションとして、
- BPLSが良く使われているのは脳画像データの分析。$Y$行列が行動指標を表しているときは「行動BPLS回帰」, $Y$行列が対比とか実験条件のダミー行列になっているときは「課題BPLS回帰」という。
- $Y$行列がアプリオリな群を表わすダミー行列で、$X$行列が偏差を表しているときは「平均中心化BPLS回帰」という。判別対応分析とすごく似ている。$S=X^T Y$は重心になるので、これは結局重心行列のPCAと等価である。[なるほど]
- 「シードPLS回帰」というのもある。脳を測定した行列(列がボクセル)を、シードと呼ばれる列と残りの列にわける。シードの部位と他の部位の関連性を調べるのに使う。[おおお... なるほどね]
云々。
。。。一番勉強になったのは、PLSとBPLSのちがい。そういうことだったのか、とようやく腑に落ちた。以前、PLS回帰についての説明を複数種類読み比べて、微妙なちがいに頭を抱えたことがあるんだけど、以前取ったメモと見比べて思うに、Rのplsパッケージの解説書Mevik & Wehren(2007)で説明されているのは、PLSではなくてBPLSなのではないかと思う。
論文:データ解析(2018-) - 読了:Abdi (2010) PLS回帰への招待 in 2010