现在的位置: 首页 > 综合 > 正文

数学之路(3)-机器学习(3)-机器学习算法-最小二乘法与回归[5]

2013年03月21日 ⁄ 综合 ⁄ 共 1108字 ⁄ 字号 评论关闭

逆矩阵的局限性

使得 \mathbf{AB}=\mathbf{BA}=\mathbf{I}_n,其中\mathbf{I}_n为 n 阶单位矩阵,则称\mathbf{A} 可逆的,且 \mathbf{B} 是 \mathbf{A}逆矩阵,记作\mathbf{A}^{-1}

只有正方形(n×n)的矩阵,亦即方阵,才可能、但非必然有逆矩阵。若方阵\mathbf{A}的逆矩阵存在,则称\mathbf{A}为非奇异方阵或可逆方阵。

那么奇异矩阵或非方阵的矩阵不存在逆矩阵,就会导致用下面最小二乘法求线性或非线性回归出现问题,


另外,某些自变量之间很可能存在共线性,相关性强,此时有两种方案,一种是使用岭回归方法

岭回归分析是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的耐受性远远强于最小二乘法

但是对λ的取值过程较复杂
另外一种方法就是使用伪逆来代替逆矩阵
广义逆阵又称伪逆,是对逆阵的推广。一般所说的伪逆是指Moore-Penrose伪逆,它是由E.
H. Moore和Roger Penrose分别独立提出的。一个与A的转置矩阵A' 同型的矩阵X,并且满足:AXA=A,XAX=X.此时,称矩阵X为矩阵A的伪逆,也称为广义逆矩阵。
我们使用伪逆,numpy提供了求伪逆的函数:linalg.pinv()
下面是多变量多项式非线性回归的部分python代码
z=np.matrix([1.4,1.9,1.7,0.8,1.1]).T
myx =np.matrix([[7,3],[3,17],[11,5]],dtype=np.float64)
x = np.matrix([[myx[0,0],myx[0,1],myx[0,0]**2,myx[0,1]**2,myx[0,0]*myx[0,1]],\
               [myx[1,0],myx[1,1],myx[1,0]**2,myx[1,1]**2,myx[1,0]*myx[1,1]],\
               [myx[2,0],myx[2,1],myx[2,0]**2,myx[2,1]**2,myx[2,0]*myx[2,1]]],\
               dtype=np.float64)
y =x*z
wn=np.linalg.pinv(x.T*x)

输出符合我们的要求,不存在很大的误差:
参数项矩阵为[[
1.59659657]
 [
0.69002152]
 [ 2.01029166]
 [ 0.9820693 ]
 [ 0.4052783 ]]
[[ 0.]
 [ 0.]
 [ 0.]]

http://blog.csdn.net/u010255642

1.596597*x1+0.690022*x2+2.010292*(x1^2)+0.982069*(x2^2)+0.405278*x1*x2+0.000000
>>> 
如果采用传统的求逆矩阵方式,将大大影响回归的效果。

抱歉!评论已关闭.