机器学习入门——单变量线性回归
来源:互联网 发布:ubuntu16 更换软件源 编辑:程序博客网 时间:2024/06/16 05:59
线性回归的概念,在高中数学书里就出现过。
给你一些样本点,如何找出一条直线,使得最逼近这些样本点。
给出一个例子:假设 x 是房子面积,y是房子价格,确定一条直线需要theta0和theta1.
给出x,我们就可以计算出房子的价格 h(x) = theta0+theta1*x
关键是如何计算出theta0和theta1,也就是如何找出这么一条直线呢?
在这里,引入一个概念,叫做cost function.m表示样本个数,也就是训练样本数目
这是一个square error,学过统计的应该经常见到
因此,我们的目的i就变成如何最小化这个J,意味着这条直线最逼近我们的样本点
先简化一下问题,假设theta0 = 0,那么我们的目标就是最小化J(theta1)
假设目前有3个样本点(1,1)(2,2) (3,3)
J(0) = 1/(2*3)*((1-0)^2+(2-0)^2+(3-0)^2)
当theta1取不同的值时,J(theta1)就形成了一个二次函数,当theta1 = 1是极小值也是最小值。
问题回到2元函数theta0,theta1
容易想像,这肯定是一个平面函数了
关键问题就是如何找到这个最低点
下面再举个例子直观的感受下,不再使用3维图了,而是使用如下右图。
左图的直线明显和样本点一点都不逼近,所以在右图中的红叉就离中间比较远
这里比上面稍微好点,于是红点离中心更近了
这是最优结果,落在了中间
还是那个问题,如何寻找我们的theta0和theta1呢?我们可以用梯度下降的方法。如图:
随机初始化theta0和theta1,一直往梯度下降的方向走,J就会越来越小。公式如下:
其中,alpha是我们的learning rate,不能太小,否则算法速度会很慢,也不能太大,否则很容易越过最小值导致不能收敛。
我们在前面有:
于是
因此,我们的算法变成
当你发现两次循环之间的theta0和theta1的差别很小很小就converge了,你可以设置一个阀值比如10e-6。
配套练习在http://download.csdn.net/detail/abcd1992719g/7306053
- 机器学习入门——单变量线性回归
- 机器学习(2)——单变量线性回归
- 机器学习之——单变量线性回归
- 机器学习之——单变量线性回归
- COURSERA机器学习笔记——单变量线性回归
- 机器学习之——单变量线性回归
- 机器学习(一)——单变量线性回归
- 机器学习入门(3)--(单变量)线性回归算法
- 机器学习入门——线性回归
- Stanford机器学习课程笔记——单变量线性回归和梯度下降法
- 【机器学习】Andrew Ng——02单变量线性回归
- Standford 机器学习—第一讲 Linear Regression with one variable(单变量线性回归)
- 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)
- 机器学习入门系列一(关键词:单变量线性回归,梯度下降法)
- 机器学习入门(6)--(单变量)梯度下降与线性回归
- 机器学习实战:单变量线性回归的实现
- 机器学习-1 概念和单变量线性回归
- 机器学习实战:单变量线性回归的实现
- weka中使用Liblinear
- 九度 1138
- WebView
- JavaSE12_序列化
- java GC总结
- 机器学习入门——单变量线性回归
- 程序员如何快速准备面试中的算法-July
- 基于STM32音响控制系统源代码(一)(音乐频谱显示)
- UCGUI窗体管理及消息处理机制分析
- linux卸载xfce等桌面环境后网络管理图标消失的解决办法
- 用Simple DNS plus 建自己的DNS
- JavaEE基础:JSP的9个内置对象
- android4.3 按键消息处理分析
- Java从Excel中读取数据