2012-01-13 27 views
1

A \ B中給出相同Ab和L2正則化參數beta = 0之間的區別,爲什麼ridge\給出了兩個不同的解決方案?脊和MATLAB

b = [ 0 
    -2 
    -3 
    -3 
    -3 
    -3 
    -3 
    -3 
    -3 
    -3 
    -3 
    -3 
    -3 ]; 

A = [ 
1 0 0 0 
0.750000000000000 0.250000000000000 0 0 
0.500000000000000 0.500000000000000 0 0 
0.250000000000000 0.750000000000000 0 0 
0 1 0 0 
0 0.750000000000000 0.250000000000000 0 
0 0.500000000000000 0.500000000000000 0 
0 0.250000000000000 0.750000000000000 0 
0 0 1 0 
0 0 0.750000000000000 0.250000000000000 
0 0 0.500000000000000 0.500000000000000 
0 0 0.250000000000000 0.750000000000000 
0 0 0 1 
]; 

>> ridge(b, A, 0,0) 
ans = 
    0.6942 
    -0.1856 
     0 
    -0.0468 

>> A \ b 
ans = 
    -0.8604 
    -3.4188 
    -2.8970 
    -3.0343 
+0

請嘗試格式化您的帖子。也嘗試使用更簡單的例子。 – Nzbuu 2012-01-13 19:48:20

+2

你看過'ridge(b,A,0,1)'的輸出嗎?或者閱讀['ridge'函數](http://www.mathworks.co.uk/help/toolbox/stats/ridge.html)的幫助? – Nzbuu 2012-01-13 19:54:06

回答

1

那是因爲,你可以SE在documentationridge使用了稍微不同的算法比mldivide:因爲 「經典」 僞逆((A」 * A)^ - 1 * )可能成爲明智的小誤差的(A ' * A)^ - 1接近奇異值,該公式被修改爲(A' * A - KI)^ - 1 * A,減少了問題的條件。

+0

對不起,但由於以下幾個原因,此響應錯誤。首先,嶺不使用你表達的表達。它使用一個使用\的數字穩定版本。問題是,如果你要談論空調問題,那麼使用一個數字較差的公式是愚蠢的極端!同樣,「經典的」僞逆最好從不使用矩陣逆來寫。相反,使用x = A \ y。 – 2012-01-13 22:15:34

+0

我知道有關條件問題。我想問的是,即使我在(A'* A - kI)^ - 1中選擇k = 0,他們爲什麼會產生不同的解。在這種情況下,我認爲/更好的解決方案。 – user864128 2012-04-01 20:05:13