對(duì)于給定的維度為d的特征x=(x1,x2...xd),建立線性模型y=w1x1+w2x2...wdxd+b。給予m對(duì)的樣本X,Y。其中實(shí)際結(jié)果為Y=(y1,y2...ym)T,屬性為矩陣X=(x1T,x2T...xmT)T,如下,其中矩陣中最后一行為1是與偏移量b相乘。

特征屬性
建立線性模型,則設(shè)定每個(gè)屬性對(duì)應(yīng)的權(quán)值w=(w1,w2...wd,b)T,那預(yù)測(cè)值Y'可以表示為:

權(quán)重

預(yù)測(cè)值
那么得出預(yù)測(cè)值與樣本真實(shí)值對(duì)比,得到均方誤差:

均方誤差
由式子可見(jiàn),調(diào)整各個(gè)權(quán)重w的值可以使得預(yù)測(cè)均方誤差最小,求上式最小值,即需要求導(dǎo),對(duì)矩陣求導(dǎo)可參考維基百科Matrix calculus中表格公式,最后得到結(jié)果如下:

求導(dǎo)
當(dāng)XTX為滿(mǎn)秩矩陣時(shí),上式取零則得到最優(yōu)解:

解
下面以一組簡(jiǎn)單一維特征樣本實(shí)驗(yàn)(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)
參考:
通過(guò)一個(gè)例子快速上手矩陣求導(dǎo)
Matrix calculus
周志華 機(jī)器學(xué)習(xí) 清華大學(xué)出版社 2017