线性回归是一种监督学习方法.
对每个样本来说:
hθ(x)=θ0+θ1x1+θ2x2+...+θnxn
即:
h(x)=∑i=0nθixi=θTX
其中,
hθ(x) 为预测值,
xi 为样本的第i个特征,且
x0=1 ;
θi 为该特征下的权重。线性回归就是要在已有的样本特征和标签下学习特征权重,从而在待测样本中应用学习好的特征权重,得到待测样本的标签。
定义损失函数:
J(θ)=12∑i=1m(hθ(x(i)−y(i)))2
我们的目的是找到最优的
θ 来最小化
J(θ) , 使用梯度下降方法:
θj=θj−α∂J(θ)∂θj
对每一个样本来说:
∂J(θ)∂θj===∂∂θj12(hθ(x)−y)2(hθ(x)−y)∂hθ(x)∂θj(hθ(x)−y)xj
因此:
θj=θj−α(hθ(x(i))−y(i))x(i)j
其中i表示第i个样本。上式表示第i个样本第j个特征的权重的优化。
接下来,我们来了解几种求解最优参数的方法。
1 批量梯度下降(batch gradient descent(BGD)):
不断迭代下式直到收敛{
θj=θj−α∑i=1m(hθ(x(i))−y(i))x(i)j (for every j)
}
由上式可知,每一次迭代都要遍历所有样本,因此,当样本量很大时,批量梯度下降法迭代时间会很长。
2 随机梯度下降(stochastic gradient descent(SGD)):
不断迭代下式直到收敛{
for i = 1 to m,{
θj=θj−α(hθ(x(i))−y(i))x(i)j (for every j)
}
}
由上式可知,随机梯度下降法每一次迭代只使用一个训练样本,因此可以大大缩小迭代时间。
3 mini-batch gradient descent,具体是指:在每一次迭代中,随机选取若干个训练样本(比如50个),使用上述梯度下降方法进行参数优化,多次迭代直到收敛。该方法的速度比BGD快,比SGD慢;精度比BGD低,比SGD高。
以上,便是使用批量梯度下降法和随机梯度下降法求解线性回归最优参数的过程,接下来,讲解一下使用矩阵求导的方式求解最优参数,这部分比较简单,如果懂得二范数求导的话,可以直接推导出来。
首先,了解一下向量求导法则:前导不变,后导转置。比如:
∂(xTw)∂x=w
∂(wx)∂x=wT
∂(xTAx)∂x=(A+AT)x
4 矩阵求导优化:
J(θ)===12∑i=1m(hθ(x(i)−y(i)))212(Y−Xθ)T(Y−Xθ)12(YTY−YTXθ−θTXTY−θTXTXθ)
其中X的行表示样本,列表示特征:
Y−Xθ=⎡⎣⎢⎢⎢⎢⎢⎢⎢y1y2y3⋮ym⎤⎦⎥⎥⎥⎥⎥⎥⎥−⎡⎣⎢⎢⎢⎢⎢⎢⎢x11x21x31⋮xm1x12x22x32⋮xm2x13x23x33⋮xm3⋯⋯⋯⋱⋯x1nx2nx3n⋮xmn⎤⎦⎥⎥⎥⎥⎥⎥⎥∗⎡⎣⎢⎢⎢⎢⎢⎢⎢w1w2w3⋮wm⎤⎦⎥⎥⎥⎥⎥⎥⎥
令导数等于零:
∂J(θ)∂θ=12(XTY−XTY−(XTX+XTX)θ)=0
因此:
θ=(XTX)−1XTY
值得注意的是,上述公式中包含
(XTX)−1 , 也就是需要对矩阵求逆,因此这个方程只在逆矩阵存在时适用。当然,当逆矩阵不存在时也可以用广义逆求解,此处不展开。同时,该方法虽然简单,但是当样本特征很大时,计算
(XTX)−1 的时间复杂度会很高。
概率解释:
我们应该想这样一个问题:当我们讨论回归问题时,我们为什么要最小化平方损失函数?在CS229的课程中,吴恩达教授给我们做了详细的概率解释。现总结如下:
对单个样本来说:
y(i)=θTx(i)+ε(i)
其中
ε(i) 为预测误差,我们假定样本的误差属于独立同分布。
根据中心极限定理:多个随机变量的和符合正态分布;因为误差的随机性,
ε(i) 符合均值为0,方差为
σ2 的正态分布,即假定
ε(i)−N(0,σ2) ,因此:
p(ϵ(i))==12π−−√σexp(−ϵ(i)22σ2)12π−−√σexp(−(y(i)−θTx(i))22σ2)
上述第2个等式表明,给定
θ , 在
x(i) 的条件下,
y(i) 符合正态分布,且均值为
θTx(i) ,方差为
σ2 ,即
y(i)|x(i);θ−N(θTx(i),σ2)
因此:
p(y(i)|x(i);θ)=12π−−√σexp(−(y(i)−θTx(i))22σ2)
似然函数:
L(θ)=L(θ;X,Y)=p(Y|X;θ)
由于
ϵ(i) 的独立性假设,所以上式可以写成:
L(θ)==∏i=1mp(y(i)|x(i);θ)∏i=1m12π−−√σexp(−(y(i)−θTx(i))22σ2)
我们的目的是求得使
L(θ) 最大时的
θ ,此即最大似然估计。
为了方便计算,取对数似然估计
l(θ) :
l(θ)=====logL(θ)log∏i=1mp(y(i)|x(i);θ)∏i=1m12π−−√σexp(−(y(i)−θTx(i))22σ2)∑i=1mlog12π−−√σexp(−(y(i)−θTx(i))22σ2)mlog12π−−√σ−12σ2∑i=1m(y(i)−θTx(i))2
因此,最大化
l(θ) 就相当于最小化
12∑mi=1(y(i)−θTx(i))2 ,这就是最小平方损失函数的由来。
局部加权线性回归(Locally Weighted Linear Regression,LWLR):
局部加权线性回归在线性回归的基础上,在计算损失函数时,对每一个样本都赋予权重,具体步骤如下:
(1)计算样本权重:
w(i)=exp(−(x(i)−x)22τ2)
其中,
x(i) 为第i个训练样本的特征,
x 为待预测样本特征,
τ 是唯一需要我们自己设定的参数;当
|x(i)−x| 比较小时,权重
w(i) 接近于1,当
|x(i)−x| 越大时,权重
w(i) 越小;也就是说,训练样本中,跟待测样本特征较接近的样本的权重
w(i) 也相应较大;
(2)损失函数:
J(θ)=12∑i=1mw(i)(hθ(x(i)−y(i)))2
(3)梯度下降:
θj=θj−α∂J(θ)∂θj (for every j)
(4)输出:
hθ(x) (即θTX)
总的来说,加入样本权重,随着样本点与待预测点距离的递增,权重将以指数级衰减;输入参数
τ 控制衰减的速度。
但是局部加权线性回归存在一个问题:因为每预测一个样本,算法都要遍历所有训练样本计算样本权重,所以当样本集很大时,局部加权线性回归的运行时间会比较长。