算法:线性回归

转载:机器学习算法详解

 

回归问题:主要用于预测数值型数据,典型的回归例子:数据拟合曲线。

 

一、线性回归

 

(1)线性回归的定义:

 

线性回归需要一个线性模型,属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试这个函数是否足够拟合训练集数据,然后挑选出最好的线性函数。

需要注意两点:

A.因为是线性回归,所以学习到的函数为线性函数,即直线函数;

B.因为是单变量,因此只有一个x;(这里我们只讨论单变量线性回归)

 

(2)单变量线性回归模型

 

我们能够给出单变量线性回归模型:

 

 

这里,X为特征,h(x)为hypothesis。

举个例子:

我们想要根据房子的大小,预测房子的价格,给定如下数据集:

 

我们根据以上的数据集画在图上,如下图所示:

 

我们需要根据这些点拟合出一条直线,使得costFunction最小。拟合出的直线大概如下图所示:

 

 

从上面的过程中,我们肯定有一个疑问,怎么样能够看出线性函数拟合的好不好呢?

答案是我们需要使用到Cost Function(代价函数),代价函数越小,说明我们线性回归的越好,和训练数据拟合的越好。(有关代价函数还请读者自行学习)

 

二、逻辑回归(Logistic Regression)

 

 

逻辑回归虽然名字中有“回归”,但实际却是一种分类学习方法,它将数据拟合到一个logit函数或者是logistic函数中,从而能够完成对事件发生的概率进行预测。

 

 (1)逻辑回归出现的背景:

 

线性回归能对连续值结果进行预测,而现实生活中常见的另一类问题是分类问题。最简单的情况是:是与否的二分类问题。比如说:医生需要需要判断病人是否患癌症,银行要判断一个人的信用程度是否达到可以给他发信用卡的程度,邮件收件箱要自动对邮件分类为正常邮件和垃圾邮件等等。

 

当然,我们最直接的想法是,既然能够用线性回归预测出连续值的结果,那根据结果设定一个阈值应该可以结果分类问题。事实上,对于很标准的情况,确定是可以的,这里我们套用Andrew Ng老师的课件中的例子,下图中X为数据点肿瘤的大小,Y为观测结果是否是恶性肿瘤。通过构建线性回归模型,如所示,构建线性回归模型后,我们设定一个阈值0.5,预测>=0.5的这些点为恶性肿瘤,而<0.5为良性肿瘤。下图是我们构建的一个线性回归模型,可以很好的把恶性肿瘤和良性肿瘤分隔开。

 

 

但是在很多实际的情况下,我们需要学习的分类数据并没有这么准确,比如说上面这个肿瘤的例子,如果突然有一个噪点数据出现,如下图所示:

 

那我们的线性逻辑回归模型,就不那么适用了并且你设定的阈值0.5也就失效了,如下图所示。而在现实生活分类问题的数据中,会比例子中的这个更为复杂,这个时候我们借助线性回归和阈值的方式,已经很难完成一个表现良好的分类器了。

 

 

在这样的场景下,逻辑回归就诞生了。它的核心思想是,如果线性回归的结果输出是一个连续值,而值的范围是无法限定的,那么我们有没有办法把这个结果映射为可以帮助我们判断的结果呢。而如果输出的结果是(0,1)的一个概率值,那么这个问题就能很清楚的解决了。

 

(2)逻辑回归基本的知识点:

 

 

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数),函数形式为:

 

 

我们来画出sigmoid函数图像,如下图所示:

 

 从函数图上可以看出,函数y=g(z)在z=0的时候取值为1/2,而随着z逐渐变小,函数值趋于0,z逐渐变大的同时函数值逐渐趋于1,而这正是一个概率的范围。所以我们定义线性回归的预测函数为Y=WTX,那么逻辑回归的输出Y= g(WTX),其中y=g(z)函数正是上述sigmoid函数(或者简单叫做S形函数)。这就是逻辑回归中的预测输出函数。

 

有了预测输出函数,我们考虑一下,为什么逻辑回归就能做到分类问题?其实是逻辑回归根据我们的样本点获得这些数据的判定边界。那什么是判定边界呢?你可以简单理解为是用以对不同类别的数据分割的边界,边界的两旁应该是不同类别的数据。我们在二维直角坐标系中,来看看具体的判定边界是什么样子:

可能是这个样子:

 

还可能是这个样子:

或者是这个样子:

 

我们来思考一个问题:逻辑回归是如何根据样本点获得这些判定边界呢?

根据sigmoid函数,我们发现:

当g(z)≥0.5时, z≥0;对于=g(θTX)≥0.5, 则θTX≥0, 此时意味着预估y=1;

反之,当预测y = 0时,θTX<0;所以我们认为θTX=0是一个决策边界,当它大于0或小于0时,逻辑回归模型分别预测不同的分类结果。

 

先看第一个例子

,其中θ0 ,θ1 ,θ2分别取-3, 1, 1。则当−3+X1+X2≥0时, y = 1; 则X1+X2=3是一个决策边界,图形表示如下,刚好把图上的两类点区分开来:

上边的例子是一个线性的决策边界,当hθ(x)更复杂的时候,我们可以得到非线性的决策边界,例如:

 

这时当x12+x22≥1时,我们判定y=1,这时的决策边界是一个圆形,如下图所示:

 

 

所以我们发现,理论上说,只要我们的设计足够合理,准确的说是g(θTX)中θTX足够复杂,我们能在不同的情形下,拟合出不同的判定边界,从而把不同的样本点分隔开来。

判定边界详细介绍和项目实践例子:

线性判定Python实践例子  地址:http://blog.csdn.net/program_developer/article/details/79163466

非线性判定边界Python实践例子 地址:http://blog.csdn.net/program_developer/article/details/79190616 

 

(3)逻辑回归的代价函数

 

对于线性边界的情况,边界形式如下:

 

构造预测函数为:

函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

 

下面我们根据(1)式,推导出我们的代价函数

(1)式综合起来可以写成:

 

然后取似然函数为:

因为在同一θ处取得极值,因此我们接着取对数似然函数为:

 

(交叉熵代价函数(cross-entropy))

最大似然估计就是求使取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是,在Andrew Ng的课程中将取为下式,即:

 

因为乘了一个负的系数-1/m,所以取最小值时的θ为要求的最佳参数。

 

我们在来看看,梯度下降法求的最小值θ更新过程:

 

 

最终θ更新过程可以写成:

 

补充知识点: 

三、总结

至此,我们把机器学习中的回归算法知识点进行了一个总结。我们再来总结一下线性回归和逻辑回归的区别和联系:

(1)Linear Regression: 输出一个标量 wx+b,这个值是连续值,所以可以用来处理回归问题。

(2)Logistic Regression:把上面的 wx+b 通过 sigmoid函数映射到(0,1)上,并划分一个阈值,大于阈值的分为一类,小于等于分为另一类,可以用来处理二分类问题。

(3)更进一步:对于N分类问题,则是先得到N组w值不同的 wx+b,然后归一化,比如用 softmax函数,最后变成N个类上的概率,可以处理多分类问题。

Reference:

http://blog.csdn.net/han_xiaoyang/article/details/49123419

http://blog.csdn.net/pakko/article/details/37878837

分类与回归区别是什么? -穆文的回答 - 知乎

https://www.zhihu.com/question/21329754/answer/151216012

coursera上吴恩达《机器学习》第三周课程

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值