线性回归——梯度下降VS正规方程

news/2025/6/16 21:41:30

线性回归——梯度下降 VS 正规方程

2018-7-25

线性回归问题: yi=θ0+θ1xi1+θ2xi2+...θmxim=yi=θTXiyi=θ0+θ1x1i+θ2x2i+...θmxmi=yi=θTXi
线性回归问题有一种数学推导的求解方法:
残差平方和:
minQ(θ)=(YXθ)T(YXθ)minQ(θ)=(Y−Xθ)T(Y−Xθ)

θ=(XTX)1XTY⟹θ=(XTX)−1XTY

其中,各参数含义:
Y=[y1,y2,...,yn]T;Y=[y1,y2,...,yn]T;

θ=[θ0,θ1,...,θm]T;θ=[θ0,θ1,...,θm]T;

XRn×(m+1)X∈Rn×(m+1)

这种方法得到的计算式 θ=(XTX)1XTYθ=(XTX)−1XTY,被称为正规方程(Normal Equation)。
对于线性回归问题,还有另外一种解法,称为梯度下降法,了解过机器学习的同学,想必对这种方法不陌生,此处不再详细介绍。本文主要关注梯度下降法和直接正规方程求解法在线性回归问题上的比较:
数据:n 个训练样本,m维特征。
1. 梯度下降法(Gradient Descent)

  • 需要选择学习率αα;

  • 需要多次迭代过程;

  • 当m较大时表现较好。

2. 正规方程法(Normal Equation)

  • 无需选择学习率αα;

  • 无需迭代;

  • 需要计算(XTX)1,[m+1]×[m+1](XTX)−1,([m+1]×[m+1]维) ;

  • 当m很大时计算量很大,会很慢:计算机计算矩阵逆的复杂度为O(n3)O(n3)

总结来说:当特征维数m较小时(100~10000),选择使用正规返程计算能够得到更为准确的参数;当特征维数m很大时(>>10000),应该选择梯度下降法,这样计算速度会比正规方程快一些。
Dr. Ng在网课上讲到,当m大于10000时,他就会考虑用梯度下降法来计算。

吴恩达机器学习链接:http://study.163.com/course/courseLearn.htm?courseId=1004570029#/learn/video?lessonId=1050515796&courseId=1004570029
(顺便说一句,这个不是Stanford的那个机器学习课,是近期网易推出的Dr.Ng 主讲的机器学习入门课,课程内容很基础。但由于是特意录制的网课,所以PPT会比之前Stanford的那个清晰一些。)

文章来源:https://blog.csdn.net/weixin_39986952/article/details/81211203
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-289028.html

相关文章

Java本质论之关于Java栈与堆的思考

来源:【http://www.csdn/1/2/3.com/html/20130308/83/80aa062b7f1f5537e075fa8893d4f189.htm】 Java本质论之关于Java栈与堆的思考 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C不同,Java自动管理栈和堆,程序员不能直接地设…

计算机图形学:逐点比较法生成直线

本文参考书籍《计算机图形学教程》,部分图片内容摘引。 一、生成直线 所谓生成直线,就是给你一组(x1,y1,x2,y2)参数,要求你生成一条从(x1,y1)到(x2,y2)的直线。  在布满像素点的光栅显示器上,我们可以控制每个像素点的亮度&…

Python遍历

Python遍历2018/7/29a [1,2,3]in语句 for item in a:print(item) #output:1 2 3range() range()函数生成一个有序列表的迭代器,并且可指定列表的start、end、step。语法为range(start,end[,step]), 表示区间[start,end),步长为step,默认为step1…

JQuery ajax 调用webservice妙用

jQuery的ajax调用很方便,传参的时候喜欢用Json的数据格式。比如: JavaScript代码,增加一个评论 function AddComment(content) { var threadId $("#span_thread_id").html(); var groupId $("#span_group_id").html();…

音频系统应用中的“POP”噪声以其常用解决方法

“POP”噪声是指音频器件在上电、断电瞬间以及上电稳定后,各种操作带来的瞬态冲击所产生的爆破声。本文将讨论几种常用的解决方法及其工作原理,这些方法针对具体的集成电路具有各自特点,应用时需要根据实际情况综合考虑。 图1:单端…

python3排序

python3排序2018-7-29用sorted可以自定义排序方式 且是在原有数据基础上生成一个排序后的列表bsorted(a,keylambda x:x[1]) #python3中用cmp会报错:TypeError: cmp is an invalid keyword argument for this functionprint(b) 输出: [[6, 0], [2, 1], …

python字符串分割与合并

python字符串分割与合并2018-7-29字符串分割: split_strstr.split() split2_strstr.split(,) ##表示以不同的字符串为分割线,对字符串拆分,得到列表 字符串合并: #将split后的字符串合并为一个完整字符串.join(split_str) ,.jo…

Linux网络协议栈(二)——套接字缓存(socket buffer)

Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。1、 套接字缓存skb由两部分组成:(1) 报文数据:它保存了实际在网络中传输的数据;(2) 管理数据…

[LeetCode] 649. Dota2 Senate

题目描述: Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2 游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利…

BCP批量导入导出

1.批量导入 bcp "select * from DbName.dbo.TableName" queryout E:\test.sql -S . -U sa -P1 -cexec master..xp_cmdshell bcp DbName.dbo.TableName in E:\test.sql -c -T 2.权限配置 /*MSsql2005 如何启用xp_cmdshell 默认情况下,sql server2005安装完后,xp_cmdsh…