一元线性回归与梯度下降算法
来源:互联网 发布:个人怎样做网络销售 编辑:程序博客网 时间:2024/05/16 17:36
一元线性回归与梯度下降算法
继续看之前的一个例子,如下图,我们的数据中有lstat和medv这两个变量。
现在有一个新的数据lstat=15,这里我们想要找到一条直线,并且想要通过这条直线对medv值做出预测,这个问题可以更具体的称之为回归问题,这里所谓的回归,就是根据之前的数据预测出一个准确的输出值。
首先来定义一些符号:
这里我们可以用
现在我们想要找到一个模型
这里
对于不同的回归模型,如何做出选择?直观的,我们想要我们的模型能够更好的拟合数据。这里,我们的目的就是选取合适的
统计上称
这里,还可以称这个损失函数为平方损失,平方损失对于绝大多数回归问题都是一个很不错的选择;当然也有其他损失函数,比如绝对值损失,但平方损失是回归问题中最常用的手段。
下面我们先来看一下平方损失的几何意义。首先来看一个简单的例子,如下图左图,我们的目的是拟合的直线与训练样本的差值的平方和最小;右图是平方损失函数
当
有了损失函数
损失函数:
目的:
算法概述:
- 初始化
β0 ,β1 ,比如初始化β0=0 ,β1=0 。 - 更新
β0 和β1 以降低J(β0,β1) 值,直至收敛。
梯度下降算法能够解决很多优化问题,它的计算过程就是沿梯度下降的方向求解极值。我们在梯度下降算法中所需要做的就是不断的改变
梯度下降算法伪代码:
repeat until convergence{
}
这里符号
在梯度下降算法中需要注意的是,
下面我们看如何用梯度下降算法解决线性回归问题。
对于线性回归模型,我们有:
线性假设:
损失函数:
使用梯度下降算法最关键的就是对要求
有了这个公式,重新写一下梯度下降算法伪代码。
repeat until convergence{
}
下面就是梯度下降算法的R语言实现,这个算法比较简单。
#linear regression by gradient decent algorithm#auther: JiZhG##gradient decent algorithm for linear regression#x: input#y: output#alpha: learning rate default alpha=0.05#iter: max iterations default alpha=1e+5#tol default 1e-10LinearRegression=function(x,y,alpha=0.05,iter=1e+5, tol=1e-10){ n=length(y) x=cbind(rep(1,n),x) p=dim(x)[2] beta=rep(0,p) temp=rep(0,p) i=1 while(i<iter){ beta_old=beta for(j in 1:p){ temp[j]=1/n*sum((x%*%beta-y)*x[,j]) } beta=beta-alpha*temp #conv if(sum(abs(beta-beta_old))<tol) break i=i+1 } beta}
模拟数据并应用该算法:
#Simulation y=2x+epsilonset.seed(1)x=rnorm(100,3,1)set.seed(10)y=2*x+rnorm(100,0,1)plot(x,y,pch=4,lwd=2,main="Gradient decent algorithm for linear regression")#beta=LinearRegression(x,y)#beta#[1] -0.1032774 1.9893028abline(a=beta[1],b=beta[2],col=2,lwd=2)
迭代解决这个优化问题,下图分别是第一、二、三次迭代得到的回归直线和最终得到的回归直线,最优解为
- 一元线性回归与梯度下降算法
- 线性回归与梯度下降算法
- 线性回归与梯度下降算法
- 线性回归与梯度下降算法(1)
- 线性回归、梯度下降算法与 tensorflow
- 线性回归与梯度下降算法
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降
- 线性回归与梯度下降(gradient descent)算法
- 线性回归和梯度下降算法
- 基于梯度下降算法求解线性回归
- 线性回归及梯度下降算法详解
- 线性回归&梯度下降
- 线性回归与梯度下降法
- Contest 4 1001 Olympiad【拆数】
- developer.android.com上Accessibility文档翻译
- 计算机网络面试题2
- POJ - 1062昂贵的聘礼最短路或者DFS
- ACM hdu5352 最小费用最大流 模板 网络流
- 一元线性回归与梯度下降算法
- 介绍两个Android开源项目:Android显示GIF动画
- Valid Sudoku
- PL/SQL控制语句
- 2015研究僧实习面试题
- 关于并查集的查找函数的写法
- hdu 1081 最大子矩阵和
- 开博前言,即刻起航!我从现在开始,你呢?
- 新浪微博第三代技术体系--总结自InfoQ相关内容