matlab中ridge和A \ b之间的区别

时间:2012-01-13 19:41:50

标签: matlab linear-regression

给定相同的Ab和L2正则化参数beta = 0,为什么ridge\会提供两种不同的解决方案?

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

1 个答案:

答案 0 :(得分:1)

这是因为,正如你可以在documentation中看到的那样,ridge使用的算法与mldivide略有不同:因为“经典”的伪逆向((A' * A)^ - 1 * A )可能对(A' * A)的小错误敏感^ - 1 接近奇异值,公式被修改为(A' * A - kI)^ - 1 * A ,减少问题的条件。