文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准。感谢博主Rachel Zhang的个人笔记,为我做个人学习笔记提供了很好的参考和榜样。


§ 1.  单变量线性回归 Linear Regression with One Variable

 1. 代价函数Cost Function 

在单变量线性回归中,已知有一个训练集有一些关于$x$、$y$的数据(如×所示),当我们的预测值$h(x)$被假设为$h(x)=\theta_{0}+\theta_{1}x$时,我们要使得$\theta_{0}$、$\theta_{1}$两个参数所表示的直线(蓝线)尽量与这些数据点很好地拟合。想要实现这个思路,就需要使得同一$x$对应的$h(x)$与$y$ 尽量相近。在这样的假设中,$J(\theta_{0},\theta_{1})$被称为Cost Function(也称平方误差代价函数),我们在实验过程中应该使得这一函数值尽量小。在这样的$h(x)$中,只出现了一个变量$x$,因此也叫单变量(One Variable);以后也可能会出现多变量的情况,比如$h(x_{1},x_{2})=\theta_{0}+\theta_{1}x+\theta_{2}x^{2}$

单参数的情况下非常容易理解:在这里,Andrew Ng将h(x)简化,使得$\theta_{0}=0$,只考虑$\theta_{1}$。再举例示范了一下由$J(\theta_{1})$确定$\theta_{1}$值的过程。

单参数情况下,得出的$J(\theta_{1})$是一个弓形,而当有两个参数的时候则有所不同。

有两个参数的情况下,得出的$J(\theta_{0},\theta_{1})$是一个3D的碗状图形,三个坐标轴分别代表了两个参数$\theta_{0},\theta_{1}$和代价函数$J(\theta_{0},\theta_{1})$。

但通常,我们用轮廓图(Contour Plot or Coutour Figure)来表示这样的3D模型。

上右即为轮廓图。在同一个椭圆上的各个点,$J(\theta_{0},\theta_{1})$的值是相同的,而越靠中心的椭圆则J值越小。

2.梯度下降算法Gradient Descent

梯度下降算法被广泛运用在机器学习领域中。本章中,主要介绍利用梯度下降算法(Gradient Descent)最小化线性回归的代价函数。

1 初始设定$\theta_{0}$与$\theta_{1}$,一般将二者都初始化为0

2 不断改变$\theta_{0}$与$\theta_{1}$,使得$J$减小

3 直到找到最小值时结束

把Cost Function的图形想成山,而你在山上的某一点,那么梯度下降算法就是环顾四周,找到最快下山的路径,迈出一步,然后再环顾四周,找到最快下山的路径,再迈出一步,如此反复。

但梯度下降算法有一个特点,如果你从稍微偏一些的角度作为初始化点,那么完全可能去到另一个局部最优解的点上,与之前的完全不同。例如下图:

但事实上线性回归的代价函数总是一个凸函数(Convex Function),这样的函数只存在一个全局最优解,不存在有多个局部最优解的情况,所以不需要考虑这个问题。

具体的算法如下:

其中α表示学习速率(Learning Rate)表示我们以多大幅度更新theta_j

注意:我们应该像左边的情况这样实现同步更新(Simultaneous Update),否则就会出现错误。

例题(考察了一下同步更新):

对于粉色方框里的导数项,则表示了与蓝线相切的红线的斜率。

关于学习速率α,如果过小,那么梯度下降的速度会很慢;如果过大,那么可能难以收敛,甚至会发散。所以应该适当地选择α。

如果出现$\theta_{1}$已是局部最优解的情况,那么在那一点,它的切线斜率为0,因此$\theta_{1}$不会改变。可见,即使α不变,梯度下降算法也能找到局部最优点。

由于每接近局部最优解一些,梯度下降算法都会自动的把下降幅度变小,因此无需随之减小α

推导可得:

而后引入批量梯度下降算法的概念:即在梯度下降算法的每一步都用到了所有的训练样本。

在数据量较大的情况下,梯度下降算法比正规方程适用。


笔记目录

(一)单变量线性回归 Linear Regression with One Variable

(二)多变量线性回归 Linear Regression with Multiple Variables

(三)逻辑回归 Logistic Regression

(四)正则化与过拟合问题 Regularization/The Problem of Overfitting

(五)神经网络的表示 Neural Networks:Representation

(六)神经网络的学习 Neural Networks:Learning

(七)机器学习应用建议 Advice for Applying Machine Learning

(八)机器学习系统设计Machine Learning System Design

(九)支持向量机Support Vector Machines

(十)无监督学习Unsupervised Learning

(十一)降维 Dimensionality Reduction

(十二)异常检测Anomaly Detection

(十三)推荐系统Recommender Systems

(十四)大规模机器学习Large Scale Machine Learning

机器学习 (一) 单变量线性回归 Linear Regression with One Variable的更多相关文章

  1. 吴恩达机器学习(二) 单变量线性回归(Linear Regression with one variable)

    一.模型表示 1.一些术语 如下图,房价预测.训练集给出了房屋面积和价格,下面介绍一些术语: x:输入变量或输入特征(input variable/features). y:输出变量或目标变量(out ...

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

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

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

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

  4. [Machine Learning] 单变量线性回归(Linear Regression with One Variable) - 线性回归-代价函数-梯度下降法-学习率

    单变量线性回归(Linear Regression with One Variable) 什么是线性回归?线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方 ...

  5. 机器学习(二)--------单变量线性回归(Linear Regression with One Variable)

    面积与房价 训练集 (Training Set) Size       Price 2104       460 852         178 ...... m代表训练集中实例的数量x代表输入变量 ...

  6. Coursera《machine learning》--(2)单变量线性回归(Linear Regression with One Variable)

    本笔记为Coursera在线课程<Machine Learning>中的单变量线性回归章节的笔记. 2.1 模型表示 参考视频: 2 - 1 - Model Representation ...

  7. 单变量线性回归(Linear Regression with One Variable)与代价函数

    所谓的单变量线性回归问题就是监督学习的一部分. 通过构建数学模型给出一个相对准确的数值,也就是预测模型,通过将数据通过数学模型,衍生至回归问题 通过以下的几个例子,我们来研究单变量线性回归. 1.王阿 ...

  8. 机器学习第2课:单变量线性回归(Linear Regression with One Variable)

    2.1  模型表示 之前的房屋交易问题为例,假使我们回归问题的训练集(Training Set)如下表所示: 我们将要用来描述这个回归问题的标记如下: m                代表训练集中实 ...

  9. 吴恩达机器学习笔记1-单变量线性回归(Linear Regression with One Variable)

    在监督学习中我们有一个数据集,这个数据集被称训练集.

随机推荐

  1. WebApiConfig设置返回json并且对于get,post可以重名

    webapi2默认返回的是xml格式的,并且一个控制器中的方法名不能重名,列如:一个get,一个post这个也是不允许的,这些我们都可以进行设置. 下面设置:返回json格式,并且一个控制器中的方法可 ...

  2. 轻量ORM-SqlRepoEx (五) 存储过程操作

    .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵活的Lambda表达式组合,实现 ...

  3. 菜鸟崛起 DB Chapter 4 MySQL 5.6的数据库引擎

    数据库存储引擎是数据库底层的软件组件,我们平常看不到,但是却与我们操作数据库息息相关.DBMS使用数据引擎进行创建.查询.更新和删除数据操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能 ...

  4. selenium之Xpath定位

    1. 绝对定位: driver.find_element_by_xpath("/html/body/div[x]/form/input") x 代表第x个 div标签,注意,索引从 ...

  5. 细说多线程之Thread与Runnable

    1:创建线程的两种方式: 继承Thread类 public class MyThread extends Thread { @Override public void run() { } } MyTh ...

  6. c# TCP高性能通信

    开篇都是吹牛逼哈... 我原本打算使用dotnetty来解决传输问题,但是试了下没有成功,也没有找到相关问题解决方法,导出源码,好大啊.暂时不想研究,而且是.Net Core的.最后没有办法,就自己封 ...

  7. [USACO5.2]蜗牛的旅行Snail Trails(有条件的dfs)

    题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总是从棋盘的左上角出发.棋盘上有空的格子(用“.”来表示)和B 个路障 ...

  8. 洛谷P2052 [NOI2011]道路修建(树形DP)

    题目描述 在 W 星球上有 n 个国家.为了各自国家的经济发展,他们决定在各个国家 之间建设双向道路使得国家之间连通.但是每个国家的国王都很吝啬,他们只愿 意修建恰好 n – 1 条双向道路. 每条道 ...

  9. Intellij IDEA切换maven

    问题描述: IDEA自带Maven,但不想用,想用自己安装的. 解决方案: File->Settings(快捷键:Ctrl+Alt+S) 这里分为了两个,竟然还有默认配置一说,上面的只是修改了当 ...

  10. oracle-sql优化-通过分组和缓存减少不必要的读

    环境:aix 7.1,oracle12.1.0.2 cdb 优化前SQL select * from (select row_.*, rownum rownum_ from (select '弱覆盖' ...