[机器学习Lesson 2]代价函数之线性回归算法
本章内容主要是介绍:单变量线性回归算法(Linear regression with one variable)
1. 线性回归算法(linear regression)
1.1 预测房屋价格
下图是俄勒冈州波特兰市的住房价格和面积大小的关系:

该问题属于监督学习中的回归问题,让我们来复习一下:
- 监督学习(Supervised'Learning'):对示例数据给出“正确答案”。
- 回归问题(Regression 'Problem'):根据之前的数据预测出一个准确的输出值 。
1.2 训练集

- m=训练样本数量
- x's=输入变量/特征量
- y's=输出变量/目标变量,预测结果
(x,y)表示一个训练样本。
x(1) 指的是 第一个训练集里值为2104的输入值, 这个就是第一行里的x x(2) 等于1416。这是第二个x y(1) 等于460,这是第一个训练集样本的y值, 这就是(1)所代表的含义。
这就是一个监督学习算法的工作方式,我们可以看到这里有我们的训练集里房屋价格,我们把它喂给我们的学习算法,然后输出一个函数。
按照惯例,通常表示为小写h代表hypothesis(假设) h表示一个函数。输入是房屋尺寸大小,就像你朋友想出售的房屋。因此,h 根据输入的 x 值来得出 y 值。 y值对应房子的价格。所以h是一个从x到y的函数映射 。
- y关于x的线性函数 :
hθ(x)=θ0+θ1*x

这个模型被称为线性回归(linear regression)模型。 这实际上是关于单个变量的线性回归,这个变量就是x 根据x来预测所有的价格函数。同时, 对于这种模型有另外一个名称,称作单变量线性回归 单变量是对一个变量的一种特别的表述方式。总而言之 这就是线性回归。
2. 代价函数(Cost Function)
任何能够衡量模型预测出来的值h(θ)与真实值y之间的差异的函数都可以叫做代价函数C(θ),如果有多个样本,则可以将所有代价函数的取值求均值,记做J(θ)。
J(θ0,θ1)=12m$\sum$i=1m(y^i−yi)2=12m∑i=1m(hθ(xi)−yi)2

m:训练样本的个数;
hθ(x):用参数θ和x预测出来的y值;
y:原训练样本中的y值,也就是标准答案
上角标(i):第i个样本
3. 代价函数1(简化版):当θ0=0时
hθ(x)=θ1x,如下图:
重要公式

- Hypothesis: 假设。这个例子中是尺寸对于房价关系的预测。
- Parameters: 参数。
- Cost Function:代价函数。
- Goal: 优化目标。代价最小化。
3.1 斜率为1时的代价函数

(1)假设函数
x轴为面积,y轴为房价
假设函数 h(x) 对于一个固定的θ1,这是一个关于x 的函数。 所以这个假设函数就是一个关于 x 这个房子大小的函数。
(2)代价函数
x轴为假设函数的斜率,y即代价大小
代价函数 J 是一个关于参数 θ1 的函数,而 θ1 控制着这条直线的斜率 。
3.2 斜率为0.5时的代价函数

斜率为0.5时,取3个样本(m=3):(0.5,1),(1,2),(1.5,3)。套公式得出J(0.5)=0.58
同理,J(0)=1/6(1²+2²+3²)=14/6,求出更多的点之后,我们得出类似以下函数:

学习算法的优化目标是我们想找到一个 θ1 的值,来将 J(θ1) 最小化。这是我们线性回归的目标函数。 上面的曲线中,让 J(θ1) 最小化的值是 θ1=1。这个确实就对应着最佳的通过了数据点的拟合直线 。这条直线就是由 θ1=1 的设定而得到的。 对于这个特定的训练样本,我们最后能够完美地拟合 这就是为什么最小化 J(θ1),对应着寻找一个最佳拟合直线的目标。
4. 代价函数2:完整版
包含θ0、θ1两个参数的代价函数呈现出来的是类似下图的三维曲面图,两个轴分别表示θ0、θ1。

在ML中,一般使用轮廓图( contour plot 或 contour figure 的意思)描述该模型。
4.1 轮廓图简介

右侧图形就是一个轮廓图,两个轴分别表示θ0和θ1。 而这些一圈一圈的椭圆形,每一个圈就表示J(θ0,θ1) 相同的所有点的集合。
如图选取三个点,这三个点都表示相同的 J(θ0,θ1) 的值。横纵坐标分别是θ0, θ1 这三个点的 J(θ0,θ1) 值是相同的。我们需要算的代价函数即为圆心的点,此时我们的代价最小。
4.2 第一组数据
我们选取一组数据,θ0=800,θ1=-0.15,此时我们可以对应得到一个左边这样一条线。

以这组 θ0,θ1 为参数的这个假设 h(x) 并不是数据的较好拟合。并且你也发现了这个代价值 距离最小值点还很远。也就是说这个代价值还是算比较大的,因此不能很好拟合数据。
4.3 第二组数据

θ0=360,θ1=0。我们可以得到h(x)=360+0*x这样一条直线。同样不能很好的拟合数据。
4.4 第三组数据
最后一个例子:

这个点其实不是最小值,但已经非常靠近最小值点了。 这个点对数据的拟合就很不错,它对应这样两个θ0 和 θ1 的值。同时也对应这样一个 h(x) 这个点虽然不在最小值点,但非常接近了。 因此误差平方和,或者说 训练样本和假设的距离的平方和,这个距离值的平方和 非常接近于最小值,尽管它还不是最小值。
5. 小结
通过这些图形,本篇文章主要是帮助理解这些代价函数 J 所表达的值;它们是什么样的它们对应的假设是什么样的;以及什么样的假设对应的点更接近于代价函数J的最小值。
我们真正需要的是一种有效的算法,能够自动地找出这些使代价函数J取最小值的参数θ0和θ1来。我们也不希望编个程序 把这些点画出来,然后人工的方法来读出这些点的数值,这很明显不是一个好办法。
事实上在深入机器学习的过程中, 我们会遇到更复杂、更高维度、更多参数的情况。而这些情况是很难画出图的,因此更无法将其可视化,因此我们真正需要的,是编写程序来找出这些最小化代价函数的θ0和θ1的值。在后续文章中将介绍一种算法 能够自动地找出能使代价函数 J最小化的参数θ0和θ1的值。
本文资料部分来源于吴恩达 (Andrew Ng) 博士的斯坦福大学机器学习公开课视频教程。
[1]网易云课堂机器学习课程:
http://open.163.com/special/opencourse/machinelearning.html
[2]coursera课程:
https://www.coursera.org/learn/machine-learning/
[机器学习Lesson 2]代价函数之线性回归算法的更多相关文章
- 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)
在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...
- Andrew Ng机器学习算法入门(三):线性回归算法
线性回归 线性回归,就是能够用一个直线较为精确地描述数据之间的关系.这样当出现新的数据的时候,就能够预测出一个简单的值. 线性回归中最常见的就是房价的问题.一直存在很多房屋面积和房价的数据,如下图所示 ...
- 通过机器学习的线性回归算法预测股票走势(用Python实现)
在本人的新书里,将通过股票案例讲述Python知识点,让大家在学习Python的同时还能掌握相关的股票知识,所谓一举两得.这里给出以线性回归算法预测股票的案例,以此讲述通过Python的sklearn ...
- Python机器学习课程:线性回归算法
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 最基本的机器学习算法必须是具有单个变量的线性回归算法.如今,可用的高级机器学习算法,库和技术如此之多 ...
- Spark机器学习(1):线性回归算法
线性回归算法,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法. 1. 梯度下降法 线性回归可以使用最小二乘法,但是速度比较慢,因此一般使用梯度下降法(Grad ...
- 机器学习-线性回归算法(单变量)Linear Regression with One Variable
1 线性回归算法 http://www.cnblogs.com/wangxin37/p/8297988.html 回归一词指的是,我们根据之前的数据预测出一个准确的输出值,对于这个例子就是价格,回归= ...
- 机器学习之linear_model (线性回归算法模型)
1.matplotlib 首先看一下这个静态图绘制模块 静态图形处理 数据分析三剑客 Numpy : 主要为了给pandas提供数据源 pandas : 更重要的数据结构 matplotlib : 静 ...
- 梯度下降算法&线性回归算法
**机器学习的过程说白了就是让我们编写一个函数使得costfunction最小,并且此时的参数值就是最佳参数值. 定义 假设存在一个代价函数 fun:\(J\left(\theta_{0}, \the ...
- 机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables)
机器学习(三)--------多变量线性回归(Linear Regression with Multiple Variables) 同样是预测房价问题 如果有多个特征值 那么这种情况下 假设h表示 ...
随机推荐
- ubuntu16.04卸载软件
root@test:/# dpkg -l | grep cobbler root@test:/# sudo dpkg --purge cobbler
- cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)
在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...
- Java获取当前的日期和时间
Java获取当前的日期和时间 1.具体实现方法如下 /** * @Title:DateTime.java * @Package:com.you.model * @Description:获取当前的日期 ...
- linux下测试磁盘的读写IO速度
有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策. 下面是两种测试方法:(1)使用hd ...
- MySQL日期类型和毫秒值相互转换
有时需要将日期类型值转换成毫秒值,有时也要将毫秒值转换成日期,为了更方便,满足查询的需要. 现在,新建一张数据库表t_stu_info,并向表里插入数据 use test; show tables; ...
- directX显示采集源(摄像头)filter
IGraphBuilder * g_pGraphBuilder = NULL;IBaseFilter *Pbf=0;IVideoWindow * g_pVWindow = NULL;IMediaCo ...
- 【原】Java学习笔记028 - 集合
package cn.temptation; import java.util.HashSet; import java.util.Set; public class Sample01 { publi ...
- 用Mirror,搞定用户画像
Mirror产品概述 Mirror是专为金融行业设计的全面用户画像管理系统.该系统基于星环多年来为多个金融企业客户构建用户画像的经验,深入契合业务需求,实现对用户全方位全维度的刻画.Mirror内置银 ...
- 利用popstate事件和window下的history对象处理浏览器跳转问题
引子 之前,偶尔在项目中用过history接口做返回上一页功能,当时是用的history.go(-1),前几天面试中遇到一个控制浏览器跳转的问题时有点懵,特意查了文档记录一下,并且列出一些目前能想到的 ...
- 【BZOJ4566】找相同字符(后缀数组)
[BZOJ4566]找相同字符(后缀数组) 题面 BZOJ 题解 后缀数组的做法,应该不是很难想 首先看到两个不同的串,当然是接在一起求\(SA,height\) 那么,考虑一下暴力 在两个串各枚举一 ...