Machine Learning(2)—Lessons by Andrew Ng
来源:互联网 发布:java面试题2017 编辑:程序博客网 时间:2024/06/05 05:54
classification problem
之前我们学习的回归问题中,y的取值是连续的,比如房价。但是有的问题中y的取值只能是一些离散的点,即y的取值是有限个的。首先我们学习的二元分类问题(binary classification problem)中y只能取0或1。如果我们对这样一个分类问题依然使用之前的线性回归算法,会发现拟合的效果是很差的。如图:
当训练集只含有前面八个点时,我们利用线性回归拟合出红线表示的结果,但一旦训练集中添加了绿色框中的点时,线性回归拟合的结果变成了蓝线。比较两者门限(y=0.5)所对应的横坐标,发现结果相差很大。因此这时线性回归是不适用的。引入另一种算法,称为逻辑回归算法(logistic regression algorithm):
logistic regression
在二元分类问题中,y=0或y=1。因此y取小于0或大于1的值都是无意义的。因此要改变h(x)的形式,使其取值在0~1之间。我们可以设置一个门限,当h(x)取值在门限右侧,即y=1;当h(x)取值在门限左侧,即y=0。h(x)函数:
其中:就称为logistic function或者sigmoid function。
函数图象:
从图中很明显可以看出:z=0时,y=0.5。可以用来做0,1的分界线。
此时h(x)的含义为:
其中,,和之前相同,默认了x0=1。
至于为什么偏偏选择了logistic function即g(z)函数,等到后面学习到generative learning algorithms时会发现,g(z)的选择是很自然的。
g(z)函数的导数是非常有特点的:
既然已经建立了逻辑回归的模型,该如何找到我们需要的θ值呢?根据线性回归中的经验,我们进行概率上的假设,并利用最大似然进行推导。正如之前提到的h(x)的意义:
我们用更简洁的方法表示:
假设m个training examples都是相互独立的,则可得到似然函数:
则log likelihood为:
(取对数后相乘项变为相加项)
我们如何得到最大值对应的θ值呢,同样可以使用梯度下降法,不过更准确的说,应该是梯度上升法(gradient ascent):,注意这里是加号,不是减号,我们是在令一个函数达到最大值。我们先从一个training example开始,应用随机梯度上升法。因此要对l(θ)求导:
(这里应用了前面提到的g(z)函数的导数形式)
将这里得到的结果代入stochastic gradient ascent的θ迭代中:
看起来,现在的形式和之前的线性回归非常相似,但其实区别就在于h(x)的不同。线性回归中的h(x)是一个x的线性组合形式,但这里的h(x)却是logistic function的形式。这就是两种方法的根本区别。至于迭代中相似的式子,将在后面的学习中深入了解原因。
perceptron learning algorithm
这里,我们先介绍另一种算法:如果想强制性地让上面g(z)的取值只能为0或1,则g(z)函数的定义可以修改为:
,然后根据,代入θ的迭代规则中:
,得到的就是perceptron learning algorithm。虽然这个算法看起来和之前并没有太大差异,但事实上这是和最小二乘法,逻辑回归等完全不同的算法,并且很难用概率的意义去解释,也难以利用最大似然得到结果。
- Machine Learning(2)—Lessons by Andrew Ng
- Machine Learning(3)—Lessons by Andrew Ng
- Machine Learning(4)—Lessons by Andrew Ng
- Machine Learning(1)—Lessons by Andrew Ng
- Machine Learning(5)—Lessons by Andrew Ng
- Machine Learning 2014 by Andrew NG (part 2)
- 【机器学习】Machine Learning by Andrew Ng
- Machine Learning by Andrew Ng-----note
- Machine Learning by Andrew Ng --- K-means
- Machine Learning课程 by Andrew Ng
- Machine Learning(by Andrew Ng) 学习笔记
- Andrew NG 《machine learning》week 2,class6 —Parameter learning
- Machine Learning by Andrew Ng --- Support Vector Machine
- Machine Learning by Andrew Ng --- neural network learning
- Machine Learning by Andrew Ng --- Logistic Regression by using Regularization
- Machine Learning by Andrew Ng ---Linear Regression with one variable
- Machine Learning by Andrew Ng---Linear Regression with multiple variables
- Machine Learning by Andrew Ng --- Logistic Regression with two classes
- 【JAVA】使用javax.mail发送邮件
- 安装postgresql
- 200行Python代码实现躲方块游戏
- @Controller和@RestController的区别
- Python自写的一些小函数(一)
- Machine Learning(2)—Lessons by Andrew Ng
- 从零开始学电脑 3.0
- 常用的软件测试工具
- C strtock_s
- 配置IIS--通过多台设备之间建立局域网--测试Application_onStart事件计算当前网站程序在线人数
- [杂题 暴力 ST表] 51Nod1487 占领资源
- 《算法4》符号表以及二叉查找树
- 编程作业50页1题 编写应用程序1!+2!+3!+4!+5!+6!+7!+8!+9!+10!
- 从零开始学电脑 2.0