2013-08-23 129 views
3

我對matlab中的嶺迴歸有這個疑問。他們在http://www.mathworks.com/help/stats/ridge.html中提到,嶺迴歸實際上意味着中心,並使預測變量的std等於1。但是,我可以看到它沒有。對於例如matlab中的嶺迴歸

讓我的X是

1  1  2 
1  3  5 
1  9 12 
1 12 50 

讓我y爲

1 
2 
3 
4 

它不會做的XS的任何正常化爲0均值和單位方差。任何澄清發生了什麼?我的意思是應該對數據進行歸一化處理,即將x的均值和單位方差進行歸一化,然後計算係數。我期待Ridge(y,x,0,0)給我R = inv(x'* x)* x'y的結果,其中R取x和y歸一化

回答

4

輸出必須相同,脊迴歸只會使計算在數值上更穩定(對多重共線性不太敏感)。

== == UPDATE

現在我更好地瞭解你的要求:)的documentation說:

B =脊(Y,X,K,縮放)使用{0如果b中的係數估計值恢復爲原始數據的比例,則將其縮放以確定 。脊(y,X,k,0)執行這個額外的變換。

你同時設置了第三個和第四個參數爲0,這意味着嶺參數是零,結果不會調整,所以應該是一樣的,你用inv(x'*x)*x'y得到什麼(如果嶺參數k設置爲0,則這是嶺迴歸公式的變化)。

+0

它不是做平均居中並將標準偏差更改爲1的數據? – user34790

+0

。看到我更新的答案。 – kol

+0

不,我的意思是默認情況下,b是在對預測變量進行居中和縮放之後計算得到均值爲0和標準偏差1.爲什麼脊不做?我沒有看到xs居中爲0並且std爲1 – user34790