matlab中ridge与A\b的区别

matlab中ridge与A\b的区别,matlab,linear-regression,Matlab,Linear Regression,给定相同的A、b和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

给定相同的
A
b
和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

这是因为,
ridge
使用了与
mldivide
稍有不同的算法:由于“经典”伪逆((a'*a)^-1*a)可能对(a'*a)^-1接近奇异值的小错误敏感,因此公式被修改为(a'*a-kI)^-1*a,减少问题的条件。

这是因为,正如您在中所看到的,
ridge
使用了与
mldivide
稍有不同的算法:由于“经典”伪逆((a'*a)^-1*a)可能对(a'*a)^-1接近奇异值的小错误敏感,因此公式被修改为(a'*a-kI)^-1*a,减少问题的条件。

请尝试正确设置您的帖子格式。也试着使用更简单的例子。你看过
ridge(b,A,0,1)
的输出了吗?或者阅读帮助?请尝试正确格式化您的帖子。也试着使用更简单的例子。你看过
ridge(b,A,0,1)
的输出了吗?或者阅读帮助?抱歉,但是这个回答是错误的,有几个原因。首先,ridge不使用您显示的表达式。它使用数值稳定的版本,而使用\代替。关键是,如果你要讨论条件问题,那么使用一个数值很差的公式是非常愚蠢的!同样,“经典”伪逆最好不要使用矩阵逆来编写。相反,使用x=A\y。我知道调节问题。我想问的是,为什么即使我在(A'*A-kI)^-1中选择k=0,它们也会产生不同的解决方案。在这种情况下,我认为/的解决方案更可取。对不起,这个回答是错误的,原因有几个。首先,ridge不使用您显示的表达式。它使用数值稳定的版本,而使用\代替。关键是,如果你要讨论条件问题,那么使用一个数值很差的公式是非常愚蠢的!同样,“经典”伪逆最好不要使用矩阵逆来编写。相反,使用x=A\y。我知道调节问题。我想问的是,为什么即使我在(A'*A-kI)^-1中选择k=0,它们也会产生不同的解决方案。在这种情况下,我认为/的解决方案更可取。