回归:多元线性回归最小二乘法
线性回归,是一种统计方法,描述变量之间的一种关系。方程式如下:
这里另
=1也可以简化为:
, 或者
。
最容易理解的说明:给出m条数据
最小二乘法就是使得偏差平方和最小。就会使得曲线都最大可能的拟合方程 。使得偏差平方和最小,也就是损失函数最小,Cost Function:
这里的i代表第i条数据。
使得最小,那么只要
的偏导数等于0,
就达到了最小值。那么
偏导数为:
.......
可写为:
j>0 and j<=n
可写为:
, j>0 and j<=n
使得所有的偏导数都等于0。
,j>0 and j<=n
得出等式:
................
可以看出,对角线上 是 x的每一列对应乘积相加,其它线上是所以可以变换为矩阵相乘,,
设矩阵
,
,
则 , 得出:
得出:
此种方式,必须是满秩矩阵。
代码为:
def regress(x, y):
x = np.mat(x)
y = np.mat(y).T
xT = x.T * x
if np.linalg.det(xT) == 0.0:
return
weight = xT.I * (x.T * y)
return weight
x为训练数据,y为训练结果。返回 权重,也就是矩阵。
MATLAB
function [theta] = normalEqn(X, y)
theta = zeros(size(X, 2), 1);
theta=inv(transpose(X)*X)*transpose(X)*y
end