机器学习:伪逆矩阵法

  • Post author:
  • Post category:其他

机器学习:例1:伪逆矩阵法
 

伪逆矩阵是逆矩阵的广义形式。由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但在matlab里可以用函数pinv(A)求其伪逆矩阵。基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。函数返回一个与A的转置矩阵A’ 同型的矩阵X,并且满足:AXA=A,XAX=X.此时,称矩阵X为矩阵A的伪逆,也称为广义逆矩阵。pinv(A)具有inv(A)的部分特性,但不与inv(A)完全等同。  如果A为非奇异方阵,pinv(A)=inv(A),但却会耗费大量的计算时间,相比较而言,inv(A)花费更少的时间。

 

clc;clear;

X = [0.2 0.7 1; 0.3 0.3 1; 0.4 0.5 1; 0.6 0.5 1; 0.1 0.4 1; 0.4 0.6 1; 0.6 0.2 1; 0.7 0.4 1; 0.8 0.6 1; 0.7 0.5 1]
y = [1;1;1;1;1;-1;-1;-1;-1;-1]

A = X'
B = X'*X
C = X'*y

w = inv(X'*X)*X'*y

%法2
X1 =pinv(X)   %X的伪逆矩阵
w1 = (pinv(X))*y

X =

    0.2000    0.7000    1.0000
    0.3000    0.3000    1.0000
    0.4000    0.5000    1.0000
    0.6000    0.5000    1.0000
    0.1000    0.4000    1.0000
    0.4000    0.6000    1.0000
    0.6000    0.2000    1.0000
    0.7000    0.4000    1.0000
    0.8000    0.6000    1.0000
    0.7000    0.5000    1.0000

y =

     1
     1
     1
     1
     1
    -1
    -1
    -1
    -1
    -1

A =

    0.2000    0.3000    0.4000    0.6000    0.1000    0.4000    0.6000    0.7000    0.8000    0.7000
    0.7000    0.3000    0.5000    0.5000    0.4000    0.6000    0.2000    0.4000    0.6000    0.5000
    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000    1.0000

B =

    2.8000    2.2400    4.8000
    2.2400    2.4100    4.7000
    4.8000    4.7000   10.0000

C =

   -1.6000
    0.1000
         0

w =

   -3.2180
    0.2414
    1.4312

X1 =

   -0.5290   -0.3912   -0.1569    0.2474   -0.7794   -0.1408    0.1991    0.4334    0.6677    0.4495
    1.1022   -0.8769    0.1368    0.1689   -0.4103    0.6356   -1.3274   -0.3138    0.6999    0.1850
   -0.1641    0.6999    0.1110   -0.0981    0.6669   -0.1311    0.6283    0.0394   -0.5495   -0.2027

w1 =

   -3.2180
    0.2414
    1.4312

 


版权声明:本文为weixin_42072280原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。