线性回归 Linear regression(1)线性回归的基本算法与求解
本系列内容大部分来自Standford公开课machine learning中Andrew老师的讲解,附加自己的一些理解,编程实现和学习笔记。
第一章 Linear regression
1.线性回归
线性回归是一种监督学习的方法。
线性回归的主要想法是给出一系列数据,假设数据的拟合线性表达式为:
如何求得参数θ成为这个方法唯一的问题,为此我们需要定义损失函数:
,其中m表示样本个数,
表示第i组样本,所以J表示总的m个样本的损失函数。
这个损失函数的表达式我们一定很熟悉,方差?最小二乘法?没错,这就是我们最原始的最小二乘模型。我们的任务就是让损失函数J尽可能的小。
P.S:至于为什么要选择J作为我们的损失函数,从表面上看很自然,当然选择这个函数也有概率解释,概率解释会放在之后的文章中讨论。
2.LMS最小均方算法
我们现在要做的任务就是选择参数θ,使得损失函数J尽可能小,很自然我们会想到梯度下降的方法。
梯度下降的思想最形象的解释就是:你站在山顶,环顾四周,寻找一个下山最快的方向走一小步,然后再次环顾四周寻找一个下山最快的方向走一小步,在多次迭代之后就会走到最低点。
放在这里也就要求我们先选择一个初始的然后利用梯度下降进行迭代
,其中α表示学习的步长。
对于单个样本来说最后迭代公式为,这就是我们熟知的Widrow-Hoff规则。
我们可以来分析一下这个迭代公式,的更新取决于真实值与拟合值的误差
,从直观上我们就很能理解梯度下降和Widrow-Hoff规则了。
有了这个规则,我们就可以设计相应的算法,使得J取到最小值了。
方法一:批量梯度下降
意思很简单,每次迭代都迭代所有的m个已知样本,直到收敛。
Repeat until convergence{
(for every j)
}
方法二:随机梯度下降
批量梯度下降其实存在一个比较大的问题,当数据组数m特别大的时候,我们迭代一次就需要很长的时间。使用随机梯度下降虽然有可能走一些“弯路”,但因为每次迭代只使用一组数据所以相比较而言,反而能更快的收敛。
Loop{
for i=1 to m{
if convergence;
}
}
其实在梯度下降算法中,还有一个问题,学习率如何控制,AndrewNg并没有太多的介绍,但是其实对于学习率α的控制相当重要,如果α略大就会导致最后无法收敛。我会针对自己做的demo再写一篇博客讨论学习率控制的问题。
3.如何直接求出θ
其实我们是能利用矩阵运算直接求出参数θ,不过需要一些矩阵计算,可能会重新开一篇文章来计算这个θ。
这里就直接给出答案
线性回归 Linear regression(1)线性回归的基本算法与求解的更多相关文章
- 线性回归 Linear regression(3) 线性回归的概率解释
这篇博客从一种方式推导了Linear regression 线性回归的概率解释,内容来自Standford公开课machine learning中Andrew老师的讲解. 线性回归的概率解释 在Lin ...
- 线性回归 Linear regression(2)线性回归梯度下降中学习率的讨论
这篇博客针对的AndrewNg在公开课中未讲到的,线性回归梯度下降的学习率进行讨论,并且结合例子讨论梯度下降初值的问题. 线性回归梯度下降中的学习率 上一篇博客中我们推导了线性回归,并且用梯度下降来求 ...
- Ng第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 2.4 梯度下降 2.5 梯度下 ...
- 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)
二.单变量线性回归(Linear Regression with One Variable) 2.1 模型表示 2.2 代价函数 2.3 代价函数的直观理解 I 2.4 代价函数的直观理解 I ...
- 机器学习方法:回归(一):线性回归Linear regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...
- 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression
机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...
- 机器学习 (一) 单变量线性回归 Linear Regression with One Variable
文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...
- ML 线性回归Linear Regression
线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...
- ufldl学习笔记与编程作业:Linear Regression(线性回归)
ufldl学习笔记与编程作业:Linear Regression(线性回归) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听一些 ...
随机推荐
- pyspider—爬取下载图片
以第一ppt网站为例:http://www.1ppt.com/ from pyspider.libs.base_handler import * import urllib2,HTMLParser,r ...
- mac terminal update management pack
npm -g outdated npm -g install npm@6.4.1
- ubuntu install git vim Plug manage
在UBUNTU采用163或是阿里云来更新源,最新的更新源地址可以在网上查阅, 阿里源 deb http://mirrors.aliyun.com/ubuntu/ bionic main restric ...
- i++为什么是线程不安全的
主要是因为i++这个操作不是原子性的,它会编译成 i = i +1: 其实是做了3个步骤,一个是读取,修改,写入 .所以会出现多线程访问冲突问题. 可以结合Java内存模型来进行说明.
- 如何优雅地使用 rm 防止误删除?
IT 界的有一个老梗,一次某论坛的数据库管理员抱怨自己老板一直虐待他,结果他一气之下就删库跑路了...... 于是... 据新华社北京 8 月 20 日电 ,北京一软件工程师徐某离职后因公司未能如期结 ...
- Codeforces Round #202 (Div. 2)
第一题水题但是wa了一发,排队记录下收到的25,50,100,看能不能找零,要注意100可以找25*3 复杂度O(n) 第二题贪心,先找出最小的花费,然后就能得出最长的位数,然后循环对每个位上的数看能 ...
- JavaScript中的call、apply、bind是怎么回事?
在JS中,这三者都是用来改变函数的this对象的指向的,他们有什么样的区别呢.在说区别之前还是先总结一下三者的相似之处:1.都是用来改变函数的this对象的指向的.2.第一个参数都是this要指向的对 ...
- css3之calc()
初识calc() 在使用calc()之前,我也只是听说有这么一个东西,但在用过之后我才发现这个功能其实很实用. calc()其实就是英文calculate(计算)的缩写,它看起来像个函数吧? 其实不是 ...
- Markdown - 让网络书写变得简单
概述 宗旨 Markdown 的目标是实现「易读易写」. 可读性,无论如何,都是最重要的.一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所 ...
- MySQL数据中分级分组显示数据
前面已经有了SqlServer数据分级分组显示数据了.今天又来做一个MySQL数据库中的分级分组显示,SqlServer中用到了递归,这里为了简单就直接把根的数据显示为0 ,而不用递归了. 在MySQ ...