Stanford机器学习 -- Linear Regression with one variable
来源:互联网 发布:linux dns ipv6 ipv4 编辑:程序博客网 时间:2024/03/29 05:59
给定一个数据集(training Set)
分析数据可知:
.拟合函数是一个单变量的方程
我们假设它长这样:
h(x)=θ0+θ1*x (hypothesis)
其中 θ0和 θ1是模型参数
通过调节θ0和θ1得到不同的拟合方程。
例如:
Linear regression 的首要目标是找到一个最优的θ0和θ1 让他们在已知的数据上错误最少,在未知的数据上有和好的表现。
Cost Function(误差函数)
要找到最优的θ0和θ1 首先要知道hypothesis什么时候错了,以及错的有多少。
在线性回归中,最常用的错误衡量是:平方误差(Squared Error Function)
既对一个点(x1,y1) 它的平方误差为
则 一个hypothesis 对一整个数据集的误差可表示为
为了方便处理:
我们在Cost Function 的前面加上 1/2m (它实际是 1/2 和 1/m 的积 ,其中1/2并没有什么实际的含义,只是为了方便以后在数学上做处理, 1/m 表示对数据集上所有误差平方求平均)
误差函数最后变成:
现在我们的问题变成:
目标就是让误差函数取得最小值。
看一个简单的情况:
当θ0 = 0 时:
可以看到不同的θ1 对应于不同的 J(θ1)值
如果同时改变θ0 和 θ1 对应的J(θ0 , θ1)图像为bowl-shape function
将上图映射到二维平面会变成等高线图
在图上选不同的点对应不同的拟合方程
如何实现目标
最常用的方法是 Gradient decsent algorithm(以后用GD表示)
每次Cost Function 都沿着梯度下降的方向下降一小步。知道最小值,不在更新。
两张图的差别告诉我们,GD算法对初始值的选择有一定的依赖性。
还有一点也要注意,这里求解的是让误差函数取得最小值的点,在数学上来讲,求最小值要用导数,而在某个具体点的导数含义是原函数在该点的斜率方向。由于我们的误差函数J(θ)是在某个具体点上定义的,所以求导相当于求出了J(θ)在该点处的斜率,然后我们就可以用梯度下降的方法来求最小值了。
这是GD算法的伪代码表示:
其中,蓝色框中的表示计算梯度(也就是每次更新的方向)
红色框中的表示学习速率(也就是每次下降的步长)
最后的结果就是要求的拟合方程的参数
在一次拟合方程中就是他的斜率
关于学习速率
上图中,第一幅图表示α选择的太小,学习过慢。
第二幅图表示α选择过大,cost Function 将不再收敛。
它说明另外的一个问题,当选择了一个初始的θ0,θ1后在更新时很可能陷在某个局部最小值,却不是全局的最小值。而此时J(θ0,θ1)已经等于0的点而无法跟新。
这是代码的实现步骤。
不可以写成这样:
最后在单变量线性回归求导后,
[1]: https://www.coursera.org/ machine-learning
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- Stanford机器学习 -- Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- 【Stanford机器学习笔记】1-Linear Regression with One Variable
- Stanford机器学习---第一讲. Linear Regression with one variable
- 机器学习-Linear Regression with One Variable
- Stanford机器学习---第1讲. Linear Regression with one variable
- Stanford机器学习---第一讲. Linear Regression with one variable(补充版)
- Stanford公开课机器学习---week1-2.单变量线性回归(Linear Regression with One Variable)
- 【九度】【1507】不用加减乘除做加法
- Linus:利用二级指针删除单向链表
- 牛腩新闻系统(四)——类生成器生成实体代码
- 将标准输入复制到标准输出
- JAVA中的endorsed技术
- Stanford机器学习 -- Linear Regression with one variable
- 开源免费的天气预报接口API以及全国所有地区代码(国家气象局提供)
- 链表和数组的区别在哪里
- iOS下的RSA加密方法
- 备考GRE写作技巧之多背诵GRE作文的经典句子
- vs设置护眼背景色
- 算法练习 -- DP C# 实现 全组合算法
- Java String处理入门 - null或空值的判断处理
- 随心摘录(3)