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。如果我们对这样一个分类问题依然使用之前的线性回归算法,会发现拟合的效果是很差的。如图:
logistics
当训练集只含有前面八个点时,我们利用线性回归拟合出红线表示的结果,但一旦训练集中添加了绿色框中的点时,线性回归拟合的结果变成了蓝线。比较两者门限(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)函数:
g函数
其中:g(z)就称为logistic function或者sigmoid function。
函数图象:
sigmoid
从图中很明显可以看出:z=0时,y=0.5。可以用来做0,1的分界线。
此时h(x)的含义为:
p
其中,这里写图片描述,和之前相同,默认了x0=1。
至于为什么偏偏选择了logistic function即g(z)函数,等到后面学习到generative learning algorithms时会发现,g(z)的选择是很自然的。
g(z)函数的导数是非常有特点的:
derivative
既然已经建立了逻辑回归的模型,该如何找到我们需要的θ值呢?根据线性回归中的经验,我们进行概率上的假设,并利用最大似然进行推导。正如之前提到的h(x)的意义:
这里写图片描述
我们用更简洁的方法表示:compact
假设m个training examples都是相互独立的,则可得到似然函数:
likelihood
则log likelihood为:
log
(取对数后相乘项变为相加项)
我们如何得到最大值对应的θ值呢,同样可以使用梯度下降法,不过更准确的说,应该是梯度上升法(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)函数的定义可以修改为:
gnew,然后根据这里写图片描述,代入θ的迭代规则中:
这里写图片描述,得到的就是perceptron learning algorithm。虽然这个算法看起来和之前并没有太大差异,但事实上这是和最小二乘法,逻辑回归等完全不同的算法,并且很难用概率的意义去解释,也难以利用最大似然得到结果。

阅读全文
0 0