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,它们也会产生不同的解决方案。在这种情况下,我认为/的解决方案更可取。