机器学习:例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
1
0.2000 0.3000 0.4000 0.6000 0.1000 0.4000 0.6000 0.7000 0.8000 0.7000
2.8000 2.2400 4.8000
-1.6000
-3.2180
-0.5290 -0.3912 -0.1569 0.2474 -0.7794 -0.1408 0.1991 0.4334 0.6677 0.4495
-3.2180 |