机器学习中的数学知识——最小二乘法

1.线性回归
2.非线性回归
3.聚类
4.分类
5.降维
6.优化算法(启发式优化算法)

定义

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。也是机器学习中常用的优化器。

( x , y ) (x,y) (x,y)是一对观测量,且 x = [ x 1 , x 2 , . . . , x n ] T ∈ R N , y ∈ R x=[x_1,x_2,...,x_n]^T\in \mathbb R^N,y\in\mathbb R x=[x1,x2,...,xn]TRNyR满足以下公式: y = f ( x , w ) = ∑ n = 0 n x i w i y=f(x,w)=\sum_{n=0}^{n}x_iw_i y=f(x,w)=n=0nxiwi其中 w = [ w 1 , w 2 , . . . , w n ] T w=[w_1,w_2,...,w_n]^T w=[w1,w2,...,wn]T为待定的参数。
为了寻找函数 y = f ( x , w ) y=f(x,w) y=f(x,w)的参数 的最优估计值,对于给定 m m m组观测数据 ( x i , y i ) (x_i,y_i) (xi,yi),求解目标函数(均方误差) L ( y , f ( x , w ) ) = ∑ m = 0 m [ y i − f ( x i , w ) ] 2 L(y,f(x,w))=\sqrt{\sum_{m=0}^{m}[y_i-f(x_i,w)]^2} L(y,f(x,w))=m=0m[yif(xi,w)]2 当目标函数取值最小所对应的参数 w w w,即为最小二乘的求解参数,即 a r g m i n w   L ( y , f ( x , w ) ) \underset{w}{argmin} \ L(y,f(x,w)) wargmin L(y,f(x,w))

最小二乘法的矩阵求解

假设 m m m个数据, Y ∈ R m , X ∈ R m × n Y\in \mathbb R^m,X\in \mathbb R^{m\times n} YRmXRm×n , W ∈ R 1 × n ,W \in\mathbb R^{1\times n} ,WR1×n,则损失函数有 L ( W ) = [ ( X W − Y ) T ( X W − Y ) ] 1 / 2 L(W)=[(XW-Y)^T(XW-Y)]^{1/2} L(W)=[(XWY)T(XWY)]1/2根据最小二乘法原理要对 L ( W ) L(W) L(W)求最小值,则对 W W W求导得到 ∂ L ∂ W = X T ( X W − Y ) \frac {\partial L} {\partial W}=X^T(XW-Y) WL=XT(XWY)然后令导数等于0,得 X T X W = X T Y X^TXW=X^TY XTXW=XTY整理得 W = ( X T Y ) − 1 X T X W= {(X^{T}Y)^{-1}}{X^TX} W=(XTY)1XTX其中 ( X T X ) − 1 (X^{T}X)^{-1} (XTX)1表示 ( X T X ) (X^{T}X) (XTX)的逆矩阵。

最小二乘法与梯度下降

1.最小二乘法简洁高效,比梯度下降这样的迭代简便很多,但是也有它的局限性。
2.因为需要计算 ( X T X ) (X^{T}X) (XTX)的逆矩阵,当逆矩阵不存在的时候,就没有办法使用最小二乘法了,梯度下降法仍然可以使用。
3.当样本特征n非常的大的时候,计算逆矩阵非常耗时,这时候就不能使用最小二乘法了,梯度下降仍然可以使用。
4.如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。

#可以调用sklearn中的linear_model模块进行线性回归。(最小二乘法回归)
from sklearn import linear_model       
#最小二乘法回归
model_linear = linear_model.LinearRegression()
model_linear.fit(X_train, y_train)
print('最小二乘法回归预测分数:',model_linear.score(X_test, y_test))#预测模型分数(越大
print('最小二乘截距:',model_linear.intercept_,'最小二乘系数:',model_linear.coef_)  #截距,系数
plt.scatter(X_train, y_train, marker='o',color='green',label='train')
plt.scatter(X_test, y_test, marker='*',color='blue',label='test')
plt.plot(X_test, model_linear.predict(X_test),c='r',label='LinearRegression')
plt.legend()
plt.show()

机器学习中的数学知识——最小二乘法_第1张图片

你可能感兴趣的:(数学,机器学习,机器学习,线性代数)