多元线性回归原理
例子先行
一元线性:拿房价预测来说,房价就只与一个特征size(feet^2)有关:
多元线性:
房子除了面积,还会有其他的特征:number of bedrooms;number of floors; age of home....,为了引入这些特征,有了多元线性回归,x1,x2,x3,x4为特征,y为预测的价格。
符号引入:
n:特征的数量
:第i个训练样例
:第i个训练样例的第j个特征
可以得到模型函数:
我们要假设x0为1,即(),可以理解为我们增加了一个额外的第零个特征向量,因此我们的特征向量由原来的n个变为了n+1个,所以现在我们X的特征向量为:,n+1维向量,
的n+1维向量,则向量表示模型函数为:
, 而
,所以内积
定义代价函数:
如图将模型写成向量形式,用向量
代替,代价函数
用向量J(
)代替,梯度下降的代价函数
也用向量J(
)代替
从0~n不断的update第j个特征的参数,即执行梯度下降的过程。下图是一元和多元的比较,
具体求导过程和一元的类似,如下是推理证明过程。
多元线性回归思路
经过简单的一元线性回归知识,可以了解知道,多元线性回归是将原来一元的x变成了x的向量,由y=b+a*x到了y=a0+a1*X1+a2*X2+...+an*Xn,含有多个特征。
得到一个直线(实际不是直线,有可能是面或者跟复杂的曲线(面))最大程度的拟合所有的点,
方程:,x向量(x1~xn)和y都是已知的,只需要求出
即可,所求出来的
也是一个向量,即求得了线性回归的模型。
先列举几个几个典型的模型:
● 最基本的单变量线性回归:
形如h(x)=theta0+theta1*x1
● 多变量线性回归:
形如h(x)=theta0+theta1*x1+theta2*x2+theta3*x3
● 多项式回归(Polynomial Regression):
形如h(x)=theta0+theta1*x1+theta2*(x2^2)+theta3*(x3^3)
或者h(x)=ttheta0+theta1*x1+theta2*sqr(x2)
但是可以令x2=x2^2,x3=x3^3,于是又将其转化为了线性回归模型。虽然不能说多项式回归问题属于线性回归问题,但是一般我们就是这么做的。
● 所以最终通用表达式就是:
引自:https://blog.****.net/weixin_40014576/article/details/79918819#comments
原理思路:
由最小二乘法,多元线性回归的损失函数:和一元线性回归一样都是求的最小值,让预测结果和真实的结果的差值的平方 尽可能的小。
是个向量,x也是个向量,
原来为列向量,让
变为行向量,转置
对做一个改变,在
前面也乘以一个系数
,为了不改变原式子,令
=1.
所以,由此
可以变成向量形式:
=
推广到整个式子为:,其中
和
分别为(m,n+1)的矩阵和(n+1,1)的矩阵,
所得结果为 所有的预测值组成的向量 。根据矩阵乘法法则,最后得到的是一个(m,1)的矩阵。
我们的目标就是让代价函数最小:最小,变为向量形式为:
,将
带入上式子得:
,在目标函数中,对第一个
进行了转置,这是为了方便使用矩阵的乘法;转置之后,第一个式子为(1,m)的行向量,第二个式子为(m,1)的列向量;所以最终结果为一个值。
最小二乘法求多元线性回归的参数
在学习模型的任务中,我们要做到的是让预测值尽量逼近真实值,做到误差最小,而均方误差就是表达这种误差的一种,所以我们要求解多元线性回归模型,就是要求解使均方误差最小化时所对应的参数:(其中W 相当于)
式(1)
其中w*为模型对应的解,即使得均方误差函数最小化时的权重向量。
那么,我们应该如何求w*呢?在这里,我们可以用最小二乘法对模型的参数进行估计,具体做法是:损失函数对需要求解的参数进行求导(求梯度),并且令其导数为0,求得相应的参数。
在这里,我们需要让对w求导,在求导之前,我们来看一下两个求导公式:
式(2)
式(3)
下图为详细的求导过程:
损失函数对参数进行求导之后,可以求得:
式(4)
令式(4)为零可得:
式(5)
以上即为参数w最优解的闭式解,但我们可以发现w*的计算涉及矩阵的求逆,这样的话就有一些限制了,只有在X^T*X为满秩矩阵或者正定矩阵时,才可以使用以上式子计算。但在现实任务中,X^T*X往往不是满秩矩阵,这样的话就会导致有多个解,并且这多个解都能使均方误差最小化,但并不是所有的解都适合于做预测任务,因为某些解可能会产生过拟合的问题。
缺点:时间复杂度高:O(n^3) (优化O(n^2.4)); 当我们有上百万个样本,或者上百万个特征的时候,运算时间会非常长;但是能直接求得数学解也是很不错的,因为在机器学习算法中,很少有算法可以直接求出数学解。
优点:不需要对数据做归一化处理;结果是 原始数据运算得到结果,所以不存在量纲的问题;