对于给定的维度为d的特征x=(x1,x2...xd),建立线性模型y=w1x1+w2x2...wdxd+b。给予m对的样本X,Y。其中实际结果为Y=(y1,y2...ym)T,属性为矩阵X=(x1T,x2T...xmT)T,如下,其中矩阵中最后一行为1是与偏移量b相乘。
建立线性模型,则设定每个属性对应的权值w=(w1,w2...wd,b)T,那预测值Y'可以表示为:
权重 预测值
那么得出预测值与样本真实值对比,得到均方误差:
均方误差
由式子可见,调整各个权重w的值可以使得预测均方误差最小,求上式最小值,即需要求导,对矩阵求导可参考维基百科Matrix calculus中表格公式,最后得到结果如下: 求导
当XTX为满秩矩阵时,上式取零则得到最优解:
解
下面以一组简单一维特征样本实验(x,y)=(1,1.1), (2,1.9), (3,3.1), (4,3.9)得到拟合直线如下图:
拟合直线
程序如下:
import matplotlib.pyplot as plt
import numpy as np
x = np.matrix([[2,1],[2,1],[3,1],[4,1]])
y = np.matrix([1.1,1.9,3.1,3.9]).T
w = ((x.T*x).I * x.T) *y
plt.figure(1)
plt.plot((x[:,0]),y,'x')
Xr=np.linspace(0,5,101)
Yr=w[0,0]*Xr+w[1,0]
plt.plot(Xr,Yr)
参考:
通过一个例子快速上手矩阵求导
Matrix calculus
周志华 机器学习 清华大学出版社 2017
网友评论