本系列内容大部分来自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)线性回归的基本算法与求解的更多相关文章

  1. 线性回归 Linear regression(3) 线性回归的概率解释

    这篇博客从一种方式推导了Linear regression 线性回归的概率解释,内容来自Standford公开课machine learning中Andrew老师的讲解. 线性回归的概率解释 在Lin ...

  2. 线性回归 Linear regression(2)线性回归梯度下降中学习率的讨论

    这篇博客针对的AndrewNg在公开课中未讲到的,线性回归梯度下降的学习率进行讨论,并且结合例子讨论梯度下降初值的问题. 线性回归梯度下降中的学习率 上一篇博客中我们推导了线性回归,并且用梯度下降来求 ...

  3. Ng第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 2.4  梯度下降 2.5  梯度下 ...

  4. 斯坦福第二课:单变量线性回归(Linear Regression with One Variable)

    二.单变量线性回归(Linear Regression with One Variable) 2.1  模型表示 2.2  代价函数 2.3  代价函数的直观理解 I 2.4  代价函数的直观理解 I ...

  5. 机器学习方法:回归(一):线性回归Linear regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...

  6. 斯坦福CS229机器学习课程笔记 Part1:线性回归 Linear Regression

    机器学习三要素 机器学习的三要素为:模型.策略.算法. 模型:就是所要学习的条件概率分布或决策函数.线性回归模型 策略:按照什么样的准则学习或选择最优的模型.最小化均方误差,即所谓的 least-sq ...

  7. 机器学习 (一) 单变量线性回归 Linear Regression with One Variable

    文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang的个人笔 ...

  8. ML 线性回归Linear Regression

    线性回归 Linear Regression MOOC机器学习课程学习笔记 1 单变量线性回归Linear Regression with One Variable 1.1 模型表达Model Rep ...

  9. ufldl学习笔记与编程作业:Linear Regression(线性回归)

    ufldl学习笔记与编程作业:Linear Regression(线性回归) ufldl出了新教程,感觉比之前的好.从基础讲起.系统清晰,又有编程实践. 在deep learning高质量群里面听一些 ...

随机推荐

  1. nginx+nagios使用用户名密码鉴权设置

    1.使用htpasswd生成密码 使用apache生成/usr/local/apache2/bin/htpasswd -c ./htpasswd.users nagiosadmin 拷贝到nginx的 ...

  2. POJ 2299 Ultra-QuickSort(树状数组+离散化)

    http://poj.org/problem?id=2299 题意:给出一组数,求逆序对. 思路: 这道题可以用树状数组解决,但是在此之前,需要对数据进行一下预处理. 这道题目的数据可以大到999,9 ...

  3. Excel转化成DataTable实现:NPOI和OLEDb

    使用两种方式实现的excel数据转化成DataSet,再结合前一篇的DataTable转化为实体,就可以解决excel到实体之间的转化. 代码如下: 首先定义一个接口: public interfac ...

  4. C# winfrom listview 多窗口调用

    Form1 private void button1_Click(object sender, EventArgs e) { Form f = new Form2(ref listView1); f. ...

  5. java中函数传值与引用问题

    从C++转java,在使用函数传对象时,碰到一点问题,今天特意验证了一下: public class App { public static void doubleTest(double d) { d ...

  6. Kafka消息topic分区

      kafka是为分布式环境设计的,因此如果日志文件,其实也可以理解成消息数据库,放在同一个地方,那么必然会带来可用性的下降,一挂全挂,如果全量拷贝到所有的机器上,那么数据又存在过多的冗余,而且由于每 ...

  7. java使用poi实现excel表格生成

    通过使用poi技术生成Excel,使用反射技术实现自动映射列表的数据. ExportTableUtil.java public class ExportTableUtil { /** * * @Des ...

  8. VS2017 MVC项目,新建控制器提示未能加载文件或程序集“Dapper.Contrib解决方法

    VS2017中MVC项目中,右键新建控制器时,提示 未能加载文件或程序集“Dapper.Contrib, Version=1.50.0.0, Culture=neutral, PublicKeyTok ...

  9. wireshark抓取mysql数据包

    最近在学习搭建数据库服务,因为跟产品相关所以需要从流量中拿到mysql的数据包.然后就想着在本机搭建mysql数据库,然后连接,用wireshark抓就行了. MySQL搭建用的是XAMPP,想说XA ...

  10. 我的 VSCode 常用扩展

    Beautify (option+shift+F) Bookmarks (option+option+k,l,j) Debugger for Chrome Docker EditorConfig fo ...