博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
机器学习门户网站——单变量线性回归
阅读量:6404 次
发布时间:2019-06-23

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

线性回归的概念。在高中的数学书出现了。

给你一些样本点,怎样找出一条直线,使得最逼近这些样本点。

给出一个样例:如果 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

easy想像,这肯定是一个平面函数了

关键问题就是怎样找到这个最低点

以下再举个样例直观的感受下。不再使用3维图了,而是使用例如以下右图。

左图的直线明显和样本点一点都不逼近,所以在右图中的红叉就离中间比較远

这里比上面略微好点,于是红点离中心更近了

这是最优结果,落在了中间

还是那个问题。怎样寻找我们的theta0和theta1呢?我们能够用梯度下降的方法。如图:

随机初始化theta0和theta1,一直往梯度下降的方向走,J就会越来越小。

公式例如以下:

当中,alpha是我们的learning rate,不能太小。否则算法速度会非常慢,也不能太大,否则非常easy越过最小值导致不能收敛。

我们在前面有:

于是

因此,我们的算法变成

当你发现两次循环之间的theta0和theta1的区别非常小非常小就converge了,你能够设置一个阀值比方10e-6。

配套练习

你可能感兴趣的文章
GDB的两个技巧
查看>>
PHP MysqlND 简介
查看>>
iOS面试题
查看>>
使用JavaIO提供的API下载指定文件(image)
查看>>
Android给图像添加相框、圆形圆角显示图片、图像合成知识
查看>>
Cloudera Hadoop:CCAH、CCA、CCP
查看>>
通过资源编排快速的构建负载均衡(SLB)
查看>>
<秦时明月>---月光
查看>>
网站设计选择大于努力
查看>>
Java设计模式(十七)----责任链模式
查看>>
psycopg2 postgresql driver for python don't support prepared statement Direct
查看>>
Java 混淆那些事(六):Android 混淆的那些琐事
查看>>
RecyclerView的Adapter中attach和detach探索
查看>>
Application,Activity,Service的创建流程(2)
查看>>
Hikari连接池使用SpringBoot配置JMX监控
查看>>
15.当心局部块函数声明笨拙的作用域
查看>>
BFC模型浅识
查看>>
maven入门总结
查看>>
在Angular中操作DOM:意料之外的结果及优化技术
查看>>
编写一个webpack的loader(1)
查看>>