ridge
MATLAB には2つの異なる実装があります。1つは単に
(ウィキペディアのリッジ回帰ページで見られるように)、と サイズ列の単位行列であること() 列()、および
私は単にMatlabの「尾根」を
x = ridge(A, b, lambda)
私の問題は、どちらも異なる結果を返すことです。(1)必要な結果を返します(他の人と結果を比較することでわかります)が、(2)同じ結果が返されないのはなぜですか?
私のマトリックス 疎で、1%1と99%0で埋められます。一部の列には1がほとんど含まれていません。最大の違いは、1が非常に少ない列の係数が(1)の0に非常に近いことですが、(2)の0からかなり離れている可能性があります
なぜそれが違うのか、そして(2)の呼び出しを変更して(1)と同じ結果を出すにはどうすればいいですか?
センタリングとスケーリングが理由である場合、Matlab呼び出しで(1)と同じ結果が得られるように「A」と「b」を変更できますか?
—
Susie G.
こんにちは、スージー。はい、できます。最初に、すべてが定数の(ゼロ以外の)列がある場合、 それを除く。さて、単に中心を合わせてスケーリングしますを呼び出す前に自分自身
—
枢機卿
ridge
。あなたは何もする必要はないはずです。
(スパース性の詳細は無視しました。センタリングすると、スパース性が壊れます。非常に大きな これにより、計算上問題が発生する可能性があります。)
—
枢機卿
ridge
(MATLABのドキュメントに従って)を呼び出すと、(標準として)次のように示されます。 0と標準偏差1。モデルには定数項が含まれておらず、Xに1の列が含まれていてはなりません。。