码迷,mamicode.com
首页 > 其他好文 > 详细

大白话5分钟带你走进人工智能-第十九节逻辑回归之优化点(4)

时间:2019-05-01 12:06:11      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:拖拽   img   生成   ali   因此   经验   cte   理财产品   多元线性回归   

                                                                                      第十九节逻辑回归之优化点(4)

上一节中我们讲解了逻辑回归导函数求解的问题,一步步推导出交叉熵损失函数的梯度。很是不容易,这节中我们一起看下逻辑回归的优化有哪些点?

第一点关于逻辑回归优化:和多元性回归是一模一样。要不要设置w0?比如下图:

技术图片?

          之前说多元性回归是做拟合,假如现在要分类的话,我们知道分类对于一维来说是找一个点,对于二维来说是来找条线。如果根据现在已知的点,利用多元线性回归做分类,找到比较好的分界线就是w1*x1+w2*x2+b=0这条线,它肯定会有截距,并且截距不为零。如果不设置w0的话,就意味着要找的线,它必须得过原点。所以说在多元性回归里面,设置w0,就意味着有更多找到最优解的可能性。下图是有w0和无w0的对比:

技术图片?

而对于逻辑回归来说,同样如此。如果设置w0,意味着有更多的可能性去找到最优解的分界线,然后把已有的数据分开;如果不设置w0,意味着分界线必须得穿过原点,不可能找到完美的把红绿两个类别分开。 我们设置截距w0的方式是手动的为数据集x增加一列全1。因此第一点:逻辑回归的优化或者也可以把它泛化成多元线性回归的优化,就是设置截距w0

第二点关于逻辑回归优化:如果碰到线性不可分的问题,我们可以考虑进行升维。怎么来看它到底是不是线性不可分呢?我们可以把数据集放到逻辑回归里面去,算个模型出来,如果那个模型的准确率差了八丈远,很有可能会产生线性不可分的问题,你调整数据就行了。没有必要说拿到数据,先看数据的分布,看它是不是线性不可分的。比如下图:

技术图片?

如果做分类,要找到分界线,横轴是x2,纵轴是x1,两个维度,我们能不能在二维里面找到一个线,对已有的数据进行很好的分割?答案是不能,为什么要强调线?因为逻辑回归,它就是θTx,只不过是对它进行一步缩放。

所以逻辑回归的本质还是线性的,如果用逻辑回归基于现在的数据点不动,我们就一定得找个直线,对二维的数据点进行分割,但是这是线性不可分的情况。不可能找到直线对数据进行分割。所以直线不行,能不能找一个曲线,对已有数据进行分割?当然可以,但是用曲线的话就不叫逻辑回归,就叫其它的算法了。如果非要用逻辑回归,将data数据带到agorithm算法里面,开发结果是模型。如果算法保持不动,为了让模型拟合的更好,或者是分类更好,我们就要改数据。之前在多元线性回归改变数据叫升维,比如说年龄和收入它不是线性变化的,那么给x数据里面多加一个age的平方,再多加一个维度进来。

这个地方思路也是一样的,升维。经验告诉我们是相乘,就是再多加一个维度,计算机模拟之后这个加的维度是x1*x2。当然如果用多项式回归对原来数据集加上x1^2+x2^2+x1*x2也可以,所以当维度少的情况下,可以人为地去升维,添加新的维度;维度多的情况下,直接多项式回归。

我们用几何图示表示,把点投影到高维空间中去,也就是升维,比如下面这张图:

技术图片?

会发现当再多一个维度的话,原来的数据点就得把它映射到更高的维度里面去,这里面多了一个x1x2的轴,这样我们能不能给它分割?我们知道一维的情况下,如果找到分界,一个轴的分界就是一个点;二维的情况下是个平面,如果要找到分界,对于线性回归来说是条直线;如果是三维的话,如果把一个立体分成两部分,我们需要一个平面。变成三维之后生成一个维度,原来线性不可分的就变成线性可分的了,就是去找一个平面,把两个不好分的类别很好的分开。这就意味着我们可以再一次去应用线性的模型逻辑回归去找一个平面,相当于改变数据点,去升维来做分类了。

第三点关于逻辑回归优化:改变阈值。之前灌输的概念是0到1的区间,我们拿0.5来作为分界,大于0.5的就是1这个类别;小于0.5的就是0这个类别。但是0.5这个阈值可以调可以变,根据需求来变。如果是0到1这个区间范围内,把0.5作为一个分类的阈值的话,你觉得对正例和负例进行分类是公平的。什么叫不公平?就是把阈值从0.5调到0.3,小于0.3的才是负例,大于0.3的才是正例。

我们看个生活中的例子,假如模型是来判别某个病人它是否得了癌症,如果病人是癌症,模型给它判定成不是癌症,这件事情很明显是判错;还有一种情况如果病人它没有得癌症,模型判别是癌症,也是判错了。这件事情哪一个更不能接受,就要看需求,看医院算法工程师告诉你的需求是什么,假如医院告诉我的需求是如果病人是癌症,模型给它判定成不是癌症这种情况不可饶恕。你就要把这种错误发生的概率给它变小。什么情况判定为不是癌症?是和不是就是一个正例和一个负例。如果想要避免上面这种情况发生,我们可以把阈值从0.5调成0.3,换句话说就是模型判别的结果?小于0.3,我们认为没有得癌症,如果大于0.3,就认为得了癌症,也就是尽可能的多判断些癌症病人出来,使如果病人是癌症,模型给它判定成不是癌症这种情况少发生点。因为?大于0.3就说你得癌症了,其实很多人没有得癌症,所以错误率变大就是代价。虽然整体的错误率大了,但是规避一些不能接受的风险。这风险按需求来定。

事实上阈值调整经常发生,比如你设计一个模型,公司让你用这个模型去炒股,如果是0.5的话就意味只要大于0.5,认为这支股票会涨;只要小于0.5,就告诉公司会跌很高了。实际上大于0.5的情况很多,0.51大于0.5,0.99大于0.5,0.49小于0.5,0.01小于0.5。所以那些股票的软件它通常都是把这个阈值大于0.8,它会告诉公司说这支股票会涨,小于0.2才会告诉公司这支股票会跌。根据调整阈值可以来规避一些不能接受的风险。因为51%会涨,49%会跌,这个风险还是很大的。比如说去银行里面买理财,它首先会让我到一个表,之后她说我是最保守型用户,意味着理财产品大于0.95的时候我才会去买,小于0.95的都不会去买。其实就是它通过填表,获取到了你这个人心中的一个阈值。所以阈值是可以来调的。

阈值是在什么时候来调的?就是θ已经算出来了,你要去使用这个模型,θ和x带到1/(1+e-θTx)公式里面来,然后会得到一个?,是0到1之间的一个值,在使用?的时候,你不再跟0.5进行判别了,而是跟0.3进行判别。特意强调一下,阈值0.5和0.3是在使用的时候才会去改,在训练的时候其实和阈值没关系。因为训练时候,正例就是1.0的概率,负例就是0.0概率,所以它在训练的时候没有这样的阈值,只有在使用的时候才有阈值。 

我们总结下逻辑回归优化:

第一点是设置w0,最好加上,多元性回归里面同样也可以加上w0,为了有更多的模型的可能性。

第二点是升维, 升维在多元性回归里面,是为了更好的拟合非线性的数据,在逻辑回归里进行升维是为了解决线性不可分的问题。

第三点是为了去规避一些风险,在使用模型的时候可以去调一下阈值,默认二分类阈值就是0.5,那我们可以把它调高或者调低,根据需求来定。

 

大白话5分钟带你走进人工智能-第十九节逻辑回归之优化点(4)

标签:拖拽   img   生成   ali   因此   经验   cte   理财产品   多元线性回归   

原文地址:https://www.cnblogs.com/LHWorldBlog/p/10799450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!