ちょっと特別にコラムを作ります.
「化合物の保持時間予測」のコラムの中の,「化合物プロパティの計算方法」
https://sites.google.com/site/esitomonokai/jie-xi-bu-wu/hua-he-wuno-bao-chi-shi-jian-yu-ce
の後に出てくる,PLSによる保持時間推定の前段階です.
このコラムは,
「主成分分析,PCAのイメージはある程度できるけど,PLSは色々なサイト見ても難しくてよくわからん」
という人向けに書きます.多少マニアックです.
ここでのPLSは,厳密には
PLS-R: Partial Least Squares – Regression
としてお話します.
基本的に,回帰の問題は最小二乗法の目的と同じで,「Yを予測するための係数を最適化する」ことに話は集約します.たとえば,
Y = b1x1 + b2x2 + b3x3 + E
(Xが変数, bが係数でEは余りです.)
(今はわかりやすく変数3つですが,以下の文は100になっても1000になっても同じように考えられます.)
で,実測Yと予測Yの差 (つまりE) の二乗和が最小になるように,b1, b2, b3を決定するのが最小二乗法です.
ちょっと式を簡単にしたいので,b = {b1, b2, b3}, X = {x1, x2, x3}として,
Y = Xb + E
と書いておきます.
言いたいことは,結局PLS-Rも,上のbを導き出すことに変わりはないということです.
最小二乗法が,誤差を最小化するためのbを見つけてくるのに対し,PLS-Rはどうするのでしょうか?以下からは,それを考えていきます.
PCAやPLSの醍醐味は,多変量のX行列から情報を集約し,少数の潜在変数Tに置き換えることで,たとえば1000変数(つまり1000次元)のものを,2,3次元くらいで理解するところにあります.
このような潜在変数は,結局はXの線形結合,わかりやすく書くなら,
t = w1x1 + w2x2 + w3x3
として表現されるものです.
(いまは変数3つですが,これも,もっと変数が多くても同じです.)
これも,わかりやすく,w = {w1, w2, w3}, x = {x1, x2, x3}とまとめて,
t = Xw
と書いておきます.
ここであえて,wXと書かないのは(上のXbも同じ),本来ならYもXも「多サンプル」存在するわけで,実際には縦ベクトルなわけです.また,上のwやxはワードの都合上横ベクトルで書いていますが,数学では普通縦ベクトルです.
…
まぁいいや.笑
このコラムの本筋には関係ないので,とりあえず,「うーん」ってなる人は,実際にサンプルがA, B, C, D, Eと5つあって,Yを予測するための変数が3つあって,それを3つ係数で予測して余りEとなるような行列計算を実際に書いてみてください.
まぁ本当にそれはどうでもよくて,とりあえず今言いたいのは,この
t = Xw
のwは,どうやって求めるのでしょうか?ということです.
PCAの場合,情報集約(次元削減)の結果のtはどうなってほしかったのでしょう?
そう,
「tの分散が最大になるようなw」
を求めるのが主成分分析です.
よくPCAの参考サイトで書かれている式の導出は,
(とりあえず,細かな係数は無視して書くと)
tの分散 = Var (t) = tTt = (Xw)T(Xw)=wTXTXw
うんたらかんたらーって書いて,このwを求めるには結局はLagrange未定定数法を解く問題に帰着できてー。。。
とか,色々書いてくれています.そちらを参考にしてください.
いまは,僕なりにこう書いておきます.下のargは,「となるような」と読み替えて下さい.Withは「〇〇の条件で」と読み替えて下さい.
PCAの問題は,
w = arg max { Var (t) } with wTw = 1
(潜在変数tの分散Varが最大になるようなw.ただし,wのスカラーは1)
という一行の式に書きます.(余計難しいかな…)
最後のwTw=1は収束条件です.
ラグランジュ未定乗数法を解く時の定石ですよね.
まぁ,とりあえずこんな感じでwを求めてtを作って,
t = Xw
を求めます.
また,Xに対してこのtを射影したものがローディングと言われ,
p=XTt
となります.
そしてX – tpT = Xnewとして,このXnewに対してもまた同じことをして,次元を増やしていく.というのが,NIPALS式のPCAの解き方です.
すみません,多少難しいかもしれません.
ここまでで何が言いたいかというと,
「PCAは潜在変数の分散が最大になるようなwを見つける問題だった」
ということです.
では,PLSはどうでしょう.
それは,Yの潜在変数をUそしてUを構成するための係数をcとし,Xの場合は同様に潜在変数をTそしてTを構成するための係数をwとしたとき,
「UとTの共分散が最大になるようなw, c」
を求める問題となります.
すこし別の形で書くと,Tは先ほどと同じようにt = Xwと書け,Uもu = Ycと書けることを意識しておいて,上記言葉を読み替えると,
「YcとXwの共分散が最大になるようなw, c」
を求めることが,PLSの本質です.
argの式で書くと,
w = arg max { Cov (Yc, Xw) } with wTw = 1, tTt = 1, cTc=1, uTu=1
Covは共分散です.
となります.
このwを,またまたうんたらかんたらーって解くのですが,ここでは気にしないでおきます.
何がわかっておいてほしいかというと,
PCAもPLSも本質的には多変量のデータを少数の潜在変数Tで説明するための手法であって,そのTの求め方,突き詰めていうと潜在変数Tを構成する係数wの求め方が違うということです.
PLSは,Y変数の情報を加味して次元削減することから,その情報集約はYのバイアスが掛かっていることになるので,教師ありの次元縮約と言ったりします.
PLS-DAというものがありますが(DAは判別分析という意味),このアルゴリズムは上記PLS-RのY変数を,0と1の2変数のみ(バイナリーベクトルといいます)で考えるだけです.あとの動きは全く同じです.
つまり,PCAのスコアはバイアスのない「教師無し」法の結果としてのスコアプロットを皆さんは見ていることになっていて,PLS-DAのスコアプロットは,上記の考えに乗っとって潜在変数を決定したものだということをご理解ください.
さて,やっと最後です.
本来の目的を思い出して下さい.
今,
Y = Xb + E
となるようなbを求めたいというお話でした.
PLSの場合,直接の相関関係はXとY同士にはなく,つまり,「潜在変数Uと潜在変数Tの共分散が最大になるように解いている」わけなので,
U = TBという関係となります.
上記にさらっと書きましたが,いまTTT=I (Iは単位ベクトルです)という収束条件を考えているので,上記式に左からTTを掛けると,
TTU=B
となります.(このBを最大化するように解いているわけでした.実際には,「それぞれの潜在変数それぞれについて」ということになりますが.つまり,ここで言うBは,PLSの計算過程ですでに決まっているものとなります.)
また,U = YCであることに注意すると,
Y = TBCT
という関係式になり(右からCを両辺に掛けると,YC=TB,つまりU=TBです.),
T=XWであることに注意すると,
Y = XWBCT
となっていることから,Bpls = WBCTとおけば,
Y = XBpls
という形になり,このBplsが求めるべき回帰係数になります.(実際,YはYハットと書くべきです.もし書かないのであれば,Y = XBpls + Eと書くべきかと思います.)
以上でPLS-Rの説明は終わりです.