线性回归

<span style="font-family: Arial, Helvetica, sans-serif;">(3α为学习率,代表每一次更新θ的步长,步长过大,容易错过最小值;步长过小,达到收敛耗费的步骤越多。</p><p>将代价函数(2)带入更新θ的公式(3)并化简可以得到只有一个样本j的最小均方差更新规则(4)</p><p><img src="https://img-blog.csdn.net/20151216203826193?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /> (4)</p><p>对于多个训练样本,批量梯度下降法(batch gradient descent)每更新一次θ值,需要考虑训练集中所有的样本,直至代价函数收敛,时间复杂度高。</p><p><img src="https://img-blog.csdn.net/20151216205255589?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>随机梯度下降法(stochastic gradient descent,也称incremental gradient descent),θ随着训练集中的单个样本更新。</p><p><img src="https://img-blog.csdn.net/20151216205921966?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>随机梯度下降法相对于批量下降法更容易接近使得代价函数最小的θ值,但很难收敛,取最小值附近的值。</p><p>对于较大的训练集,随机梯度下降法优于批量梯度下降法。</p><p>2. 最小二乘法</p><p>对于样本数为m,维数为n的训练集,函数f可用m*n的矩阵表示。函数f对A求导可表示为矩阵</p><p><img src="https://img-blog.csdn.net/20151216211118228?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />(5)</p><p>例如,<img src="https://img-blog.csdn.net/20151216211226970?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />对A求导可表示为<img src="https://img-blog.csdn.net/20151216211319169?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />。</p><p>对于给定的训练集,可以定义设计矩阵(design matrix)X,包含训练样本的输入。同时定义m维向量Y,包含对应的目标值。</p><p><img src="https://img-blog.csdn.net/20151216211730074?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /><img src="https://img-blog.csdn.net/20151216211807866?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>代价函数J(θ)为</p><p><img src="" alt="" /></p><p>为了使J最小,先求出J对于θ的导数。经过一系列的化简后得到。</p><p><img src="https://img-blog.csdn.net/20151216213402043?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>让导数为0,最后得到使得J(θ)最小的θ向量的值为</p><p><img src="https://img-blog.csdn.net/20151216213609377?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>特征选择对于学习算法性能的影响十分重要。特征选择过少,得到的模型不能很好地刻画实际情况。特征的选择过多,则容易引发过拟合,使得模型在训练集上有很好的的结果,但无法应用于其他数据。</p><p>3. 局部加权线性回归(locally weighted linear regression, LWR)</p><p>假设有足够多的训练数据,使得特征的选择不那么关键。在线性回归的基础上加入了非负权值w(i)</p><p><img src="https://img-blog.csdn.net/20151216215337440?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>对于权值大的项,尽量选取θ使代价函数小,对于权值小的项可以忽略不计。</p><p>通常将权值选择为</p><p><img src="https://img-blog.csdn.net/20151216215727781?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p>权值取决于x(i)到x的距离,距离越大,w(i)越小,距离越小,w(i)趋近于1.即离点x越远的点对x的影响越小,越近的点对x的影响越大。</p><p>w(i)的分布类似于高斯分布。τ为带宽参数,决定了权值随距离下降的快慢。</p><p>相对于前两种方法,局部加权线性回归为非参数算法。参数学习算法有固定和有限的参数θ,一旦得到θ值,就不需要训练数据了。而非参数学习方法需要保留整个训练集,假设h随着训练集的增加线性增长。</p><p>在R中进行线性回归</p><p>1)绘制散点图,判断是否存在线性关系</p><p>R中的tress数据包含了31棵树的周长(Girth),树高(Height)和体积(Volume)信息</p><p><img src="https://img-blog.csdn.net/20151216222705137?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></p><p></p><pre name="code" class="plain">#以周长为横坐标,体积为纵坐标,画红色散点图</span>
plot(Volume~Girth,data=trees,pch=16,col='red')


监督学习问题的目标:给定训练集,通过学习方法得到假设h,使得预测的结果h(x)与实际结果y最相近。

若预测变量y为连续变量,该问题为回归问题;为离散变量,该问题为分类问题。

线性回归的目的在于得到一组权值θ,使得x和y满足线性关系。

1. 最小均方法(least mean squares, LMS)

用于求解权值θ,使得J(θ)的值最小。梯度下降法通过给定初始θ值,通过迭代算法不断更新θ值,最终使得J(θ)的值达到最小。因为梯度的方向就是函数下降最快的方向,但梯度下降法只能得到局部最优。


<img src="https://img-blog.csdn.net/20151216224307395?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);" />
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">2)建立线性回归模型进行分析</span>

#使用lm()建立周长和体积的线性模型
model=lm(Volume~Girth,data=trees)
model的结果包含以下部分:

coefficients:线性模型的系数。本例子得到的线性模型的结果可表示为 Volume = 5.065856*Girth - 36.943459


residuals:残差,对应值 - 拟合值。在本例子中为周长对应的体积减去线性模型得到的体积的值。第一个样本的残差 = 10.3 - (5.065856 * 8.3 - 36.943459) =5.1968


effects:在拟合过程中,将数据投影在QR分解产生连续的正交子空间得到的不相关的单自由度值


rank:拟合线性模型的numeric rank

fitted.values:每个样本的拟合结果

#将回归直线加在原图上
abline(model,lty=2)

#展示回归模型
summary(model)
#模型诊断,对残差进行分析,mfrow=c(2,2)表示将结果展示<span style="font-family: Arial, Helvetica, sans-serif;">残差分析结果图</span>2*2<span style="font-family: Arial, Helvetica, sans-serif;">布局</span>
par(mfrow=c(2,2))
plot(model)
par(mfrow=c(1,1)) 

左上为拟合值和残差对比图,右上为QQ图(Quantile-Quantile Plot 分位数图 )用于直观验证一组数据是否来自某个分布,或者验证某两组数据是否来自同一(族)分布,用来判断残差是否符合正态分布。右下图是标准化残差对杠杆值,虚线表示的cooks距离等高线。

结果表明31号样本对拟合函数的分布有较大的影响。为了降低其影响,可将变量开方改善回归结果。

plot(sqrt(Volume)~Girth,data=trees,pch=16,col='red')
model2=lm(sqrt(Volume)~Girth,data=trees)
abline(model2,lty=2)
par(mfrow=c(2,2))
plot(model)


根据模型,predict()函数可获得模型的预测值。
<span style="font-family: Verdana, Geneva, sans-serif; font-size: 15.3999996185303px; line-height: 21.5599994659424px;">data.pre=data.frame(predict(model2,interval='prediction'))</span>
<span style="font-family: Verdana, Geneva, sans-serif; font-size: 15.3999996185303px; line-height: 21.5599994659424px;">lines(data.pre$lwr~trees$Girth,col='blue',lty=2)</span>
<span style="font-family: Verdana, Geneva, sans-serif; font-size: 15.3999996185303px; line-height: 21.5599994659424px;">lines(data.pre$upr~trees$Girth,col='blue',lty=2)</span>


线性回归理论来自斯坦福机器学习视频

实例来自blog:http://xccds1977.blogspot.com/2011/11/r_18.html

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值