- ベストアンサー
線形回帰分析:多重共線性と主成分回帰について
- 多重共線性がある場合、線形回帰モデルの回帰係数の信頼性や予測精度が低下する
- 主成分回帰は多重共線性による回帰係数の信頼性、予測精度の低下を防止する方法
- 主成分回帰は元の説明変数より少数の重要な主成分のみを説明変数に用いることが狙い
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは. 指摘をいただきました部分は単純に書き損じです. 質問者様の指摘にあります通り, 正しくは,X = U*S*V' です. お詫びというものでもありませんが,補足を行っておきます. 行空間と列空間はそれぞれ解の一意性と存在にかかわるものです. 任意の n * m 行列 y = X*a の方程式系について, ベクタ y が X の列空間にある場合,等価的に X の列ベクタの線型和で書ける場合,系には解 a が存在します. そうでない場合は, y から 「Xの列ベクタで書けない成分」を抜き取ります. この「」の中身が残差であり,最小二乗法はこれが最小になるような修正を行います. これは真っ直ぐ射影すること,X の列空間への直交射影で達成できます. さて,修正した y (つまりXの列ベクタの線型和で書ける)に関する方程式 y_hat = X*a_hat の解が最小二乗解です. ところで, X*b = 0 なる b が存在する場合(b は X の零空間といいます), X*(a_hat+b) = X*a_hat + 0 = y_hat となってしまいます. あるスカラー c に関して, X*(c*b) = c*(X*b) = 0 ですから,このような b が存在する場合, 最小二乗解は無数に存在することになります. これは都合が悪いので,この無数の解のうち b をを含まないものを選択します. b は X の行ベクタに直交することに注意すると,これは「X の行ベクタで書けない成分」の抜き取りですから, 先の議論同様 X の行空間への直交射影で達成できます. まとめると, (1) 左辺をXの列空間へ直交射影する (解を得るため) (2) (1) で得た解をXの行空間へ直交射影する (解を一意に決めるため) という作業で最小二乗解を確定します. 以上が X の 列ベクタと行ベクタそれぞれで張られる空間の基底が必要になる理由です. 説明変数が独立でない場合,n*m 行列 X のランクは m より小さくなります. X のランクを l (l < m) と書くと, X の行ベクタで独立なものは l 本しかないので, これらに直交する一次独立なベクタを m - l 本持ってこれます(上記の b が存在する). 結果として,(2) の作業が必要になり,求解に特異値分解が要求されるということになります. このとき,X'*X は m*m 行列ですが,ランク l 行列の積であるため,そのランクも l であり, 逆行列が作れず普段の解法が使えない,と考えてもよいでしょう.
その他の回答 (3)
- echoes_x86
- ベストアンサー率65% (21/32)
すみません. 本文中の説明はXがm*n行列(m>n)の場合でした. 冒頭のように,データ数n,説明変数m (n > m)の回帰問題である場合, Xはn*m行列となりますから,特異値分解の結果の Uはn*m行列,Vはm*m行列,Sはm*m行列となります. 行列の意味は本文中と同じです. 失礼しました.
お礼
詳しく解説・補足頂き,誠にありがとうございます。お陰様で,全体像がつかめたように思います. 特異値分解の表現については,Sとして,対角成分が非零となることが期待される,rank(X)×rank(X)行列を定義されたということですね。 行列U, Vの,基底としての意味については,恐縮ながらまだ理解できていないため,今後勉強させて頂きます。 2番目に頂いた回答で,X = U*S*V'ではなくX = U*S^-1*V'と書かれているのは,便宜上と理解させて頂いてよろしいでしょうか?後者の定義の場合,Sの対角成分は特異値の逆数になると解釈しております。 > 文脈からすれば a1_hat = ((X' X)^-1) X' y であるように思いますが ご指摘の通り,最小二乗推定量の右端にyが抜けておりました。失礼致しました。 取り急ぎ,お礼を申し上げます。
- echoes_x86
- ベストアンサー率65% (21/32)
こんばんは. >特異値分解について. データ数n,説明変数m (n > m)の回帰問題の説明変数行列Xを考えます. このとき,Xの方程式を最小二乗の意味で解くために X = U*S^-1*V' と特異値分解したとします. ここで,UとVはそれぞれm*n,n*n行列であり,Xの列空間と行空間の基底を成します. Sはn*n行列であり,正定値対称行列X'*X(またはX*X')の大きい方からnの固有値の平方根(Xの特異値)を要素とする対角行列です. 質問者様のように,Uをm*m,Vをn*n,Sをm*nとして,UとVそれぞれにXの左零空間と右零空間に対応する基底を含めても良いのですが, 方程式を解く目的ではこれらは必要ないので, 通常は非零であることが期待される min(m,n) の特異値のみを計算します. したがって,S^-1は正方行列Sの対角行列の逆数を考えることで容易に計算できます. さて,Sの要素,Xの特異値はX'*Xの固有値の平方根ですから, これらが著しく小さいということはX'*Xが悪条件であることを意味します. この場合,質問者様の(1)式の計算を行うことができないとお分かりいただけると思います(文脈からすれば a1_hat = ((X' X)^-1) X' y であるように思いますが). >線型変換 少し勘違いしていたようです. 私の主張は「『多重共線性』がある場合」 (a) X'*Xの解法 (b) X = U*S^(-1)*V'の解法 は同じ結果を与えない.という程度のものです. ですが,質問者様ご自身が仰るように, 説明変数が線型従属ですと X'*X や (X*L)'*(X*L) の逆行列は存在しませんので, 質問者様の主張も成立せず,結論はそう変わるものではないように思います.
- echoes_x86
- ベストアンサー率65% (21/32)
こんばんは. いくつか重大な誤解があるようです. >しかし,説明変数行列の線形変換は,回帰モデルのあてはめ値(fitted values),残差,新たなデータに関する予測値に影響を与えません.主成分も線形変換の1つなので,元の説明変数と同数の主成分を説明変数に用いる場合,全く同じあてはめ値,残差,予測値が得られます. これは質問者様の経験から導かれたものであるように思いますが, 一般的に成立することではありません. 説明変数行列をX,目的変数ベクタをy,回帰係数ベクタをaとし, 誤差ベクタをeとした y = Xa + e なるモデルを考えます. いま,X を U*S*V^T と特異値分解したとき, min ||y - Xa||^2 の解aは a = V*S^(-1)*U^T*y ...(1) と書けます. 問題となるのは S^(-1) の部分です. 質問者様の「説明変数間に多重共線性がある場合」を 「ある説明変数が他の説明変数に線型従属である場合」と解釈すると, 説明変数行列Xは悪条件となりますから,行列 S の要素に零か,著しく小さい要素が現れます. このような S から S^(-1) を作ると,最悪の場合で零除算,そうでなくても著しく小さい数による除算(=極端に大きな数の乗算)が発生します. これよってyに含まれる微少な誤差が極端に増幅され,aの信頼性は著しく低くなることでしょう. この回避のために S の零に近い要素を捨てる必要が出てくるわけです(=いくつかの主成分のみを利用する). 無論,Sに零に近いものがなければ特異値分解する必要はなく, もっと単純な解法が存在しますし,これは (1) と同じ結果を与えます. まとめると,状態の悪いXは零割りを含む線型変換を行う恐れがあり, これが回帰係数の信頼性を損なう,ということです. 質問者様がこのような経験をお持ちでないなら,それは相当な幸運であると言えます.
お礼
丁寧な解説を頂き,誠にありがとうございます。 理解を進める途中で、次の2点で躓いてしまいました。恐縮ですが、コメントを頂ければ幸いです。 A. 特異値分解について、まだ理解がないのですが、Xがn×m行列であった場合(データ数n,説明変数の数mの線形回帰の場合)、Sはn×m行列になるようですね。 すると、Sは一般に正方行列ではないということになりますが、逆行列S^(-1)が考えられるのはなぜでしょうか? B. 質問に書かせて頂いた命題「説明変数行列の線形変換は,回帰モデルのあてはめ値(fitted values),残差,新たなデータに関する予測値に影響を与えない」について、一般的に成立することではないと教えて頂きました。これは、多重共線性がある場合には成立しないという意味合いでしょうか。それとも、普通は成立しない、という意味でしょうか。 私は、以下に登場する逆行列が全て存在する場合、上記の命題が「成立する」ことを以下のように示せると思っておりました。 『線形回帰モデル1 : y = X a1 + e について,回帰係数ベクトルa1の最小二乗推定量は,転置を'で表すと, a1_hat = ((X' X)^-1) X' …(1) Xに対する線形変換を表すm次正方行列をLで表すと, 線形回帰モデル2 : y = (X L) a2 + e について,回帰係数ベクトルa2の最小二乗推定量は, a2_hat = (((X L)' (X L))^-1) (X L)' = (((L' X') (X L))^-1) L' X' = ((L' X' X L)^-1) L' X' = ((X' X L)^-1 (L')^-1) L' X' = (L^-1) ((X' X)^-1) ((L')^-1) L' X' = (L^-1) ((X' X)^-1) X' = (L^-1) a1_hat よって,a2_hat = (L^-1) a1_hat …(2) 回帰モデルのあてはめ値は, モデル1 : y_hat = X a1_hat モデル2 : y_hat = (X L) a2_hat = (X L) (L^-1) a1_hat = X a1_hat となり,両モデルについて等しい.同様に残差や,新しいデータXnewに関する予測値も等しい.』 以上,よろしくお願い致します。
補足
3番目の回答へのお礼に記しましたが,この回答へのお礼での記述では,最小二乗推定量の右端にベクトルyが抜けておりました。正しくは, a1_hat = ((X' X)^-1) X'y …(1) a2_hat = (L^-1) ((X' X)^-1) X'y = (L^-1) a1_hat …(2) のようになります。 失礼致しました。
お礼
詳しい解説・補足説明を頂き,ありがとうございます。 これまで,なぜ最小二乗推定量と正射影が関係あるのか,よくわからないまま過ごしてしまいました。いまご説明を頂いたことで,「Xの列ベクトルの線形和で表現できない成分を除くために」列空間へ,Xの全ての行ベクトルと直交するベクトルがある場合には「Xの行ベクトルの線形和で表現できない成分を除くために」行空間へ射影する必要があり,射影によって生じる残差を最小にするために,正射影を用いるのだということが理解できました! まだ特異値分解に関しては理解不足な点がありますが,自分の不勉強のせいです。今後とも,完全に理解するために,勉強して参ります。 ご丁寧に回答いただき,ありがとうございました!