博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
吴恩达Coursera机器学习 - Chapter 2 单变量线性回归
阅读量:5943 次
发布时间:2019-06-19

本文共 2389 字,大约阅读时间需要 7 分钟。

Chapter 2 - 单变量线性回归(Linear Regression with One Variable)

定义

单变量 数据集或假设函数的特征值只有一个
线性回归 求解回归问题的方程是线性方程(自变量仅为一次)

模型建立

假设函数

以下图所示的训练集为例:

训练集.png

假设:
  • m代表训练集中实例的数量(4个)
  • x 代表特征/输入变量(大小/平方尺)
  • y 代表目标变量/输出变量(价格/1000美元)
  • (x, y) 代表训练集中的实例
  • (x (i), y (i)) 代表第i个观察实例(如i=2时,为(1416, 232))
  • h代表学习算法的函数,也称为假设(hypothesis)
    对于单变量线性回归问题,我们一般将其假设为:$h_\theta(x)=\theta_0+\theta_1x$

那么问题来了,假设了$h(x)$函数后,怎么求θ组合($\theta_{0}$和$\theta_{1}$)呢?

一般而言,思想是将现有的$x$集代入$h(x)$,比较各$y$值与$h(x)$值之间的误差(建模误差)。在不断调整$θ$组合后,找到使得总误差最小的那个θ组合。而衡量误差的方法是建立代价函数。(可能讲解的不规范,见谅 ̄□ ̄||)

代价函数(平方误差函数)

$$ J\left( \theta_{0}\ ,\theta_{1}\ \right) = \frac{1}{2m}\sum_{i = 1}^{m}{\left(h_{\theta}( x^{(i)}) - y^{(i)}\right)}^{2} $$

这个函数看起来有点像方差的计算公式,但还是有区别的……

首先,它不是和平均值作比较,而是和“标准答案”作比较。再次,算出平方和后的式子乘以$\frac{1}{2m}$而非$\frac{1}{m}$。

疑问:为什么乘的是$\frac{1}{2m}$?

猜想:可能是因为后面梯度下降算法计算$min(J\left( \theta_{0},\ \theta_{1}\ \right))$时,会求偏导,从而消去分母中的2。

既然有了代价函数,我们如何求他的最小值呢?

针对二元函数求最小值/极值,在高等数学里,在有约束条件和无约束条件下,分别提供了两种求解的办法,概括来讲,前者就是拉格朗日乘数法,后者则是计算二阶偏导后判断。这当然不能满足我们这门课的要求啦,下面将介绍一种很重要的新方法,梯度下降!

梯度下降

该算法的公式如下:

$repeat\ until\ convergence\ \{\\ \quad \theta_j :=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1)\quad(for\ j=0\ and\ j=1)\\\}$

这里引入了一个新的变量,学习率α。我们可以将这个公式类比为一次函数$y = kx+b$。

  • $\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$即为斜率k;
  • α代表一次迭代中,在$\theta_{j}$方向上应该移动多大程度;
  • 而:=右边的和左边的$\theta_{j}$分别代表这次迭代前和后的$\theta_{j}$值。

对于大括号内的式子,我是这样理解的:在每次迭代中,先算出$\theta_{0},\theta_{1}$在各自方向上,应移动多大的距离才能使代价函数下降的最大,全部算完后同时更新各$\theta_{j}$的值。(若不同时,一次迭代中$\theta$集会变化多次,求出来的$\theta$也就失去了意义)

整个式子会一直重复下去,直至各$\theta_{j}$收敛到某个值,这就是我们需要的$\theta$组合(之一)!

疑问:既然梯度下降算法只能求出局部最小值,那如何求解全局最小值呢?

猜想:首先,在单变量线性回归问题中,或许$J\left( \theta_{0}\ ,\theta_{1}\ \right)$的局部最小值就是全局最小值(没证明过,不确定)。但如果在其他回归问题的方程中就不一定了,这时候,正如课程中所说,我们应尝试完所有的参数组合(或尽可能多吧),求出所有局部最小值,并比较其中某个参数组合是否为全局最小值。

问题又来了,怎么判断$θ_j$是否收敛,α又该怎么取?

这个问题其实在第四章会回答。对于前者,一种$\theta_{j}$收敛的判断依据是:代价函数$J\left(\theta_{0}\ ,\theta_{1}\right)$的变化低于某一阈值。因为即便学习率α不变,随着J(θ)的减小,$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\ \theta_{1})$也会减小(在α值合适时),如下图。我们假设在第300~400次迭代的过程中,某次迭代后,$J\left(\theta_{0}\ ,\theta_{1}\right)$变化小于该阈值,就退出循环,输出$\theta$组合。

α的取值会对迭代次数和 $J\left( \theta_{0}\ ,\theta_{1}\right)$是否能收敛产生很大影响,Andrew Ng老师给的建议是尝试不同的α值:0.01, 0.03, 0.1, 0.3, 1, 3等

代价值应随着迭代次数而降低

  • 求解θ组合

最后一步(算是),我们将代价函数代入梯度下降函数内。在此之前,要解决的是$\frac{\partial}{\partial\theta_{j}}J(\theta_{0},\theta_{1})$的求解。这里需要高等数学中求偏导的基础知识,计算过程就省略不写了。

回头整理梯度下降的算法,我的第一个机器学习算法就诞生啦!名为“批量梯度下降”:

clipboard.png

转载地址:http://vkzxx.baihongyu.com/

你可能感兴趣的文章
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>
基于事件驱动的DDD领域驱动设计框架分享(附源代码)
查看>>
Linux备份ifcfg-eth0文件导致的网络故障问题
查看>>