大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
关注微信公众号【Microstrong】,我写过四年Android代码,了解前端、熟悉后台,现在研究方向是机器学习、深度学习!一起来学习,一起来进步,一起来交流吧!
回归问题:主要用于预测数值型数据,典型的回归例子:数据拟合曲线。
一、线性回归
(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上吴恩达《机器学习》第三周课程
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171759.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...