第十九节逻辑回归之优化点(4)算法
上一节中咱们讲解了逻辑回归导函数求解的问题,一步步推导出交叉熵损失函数的梯度。非常不容易,这节中咱们一块儿看下逻辑回归的优化有哪些点?app
第一点关于逻辑回归优化:和多元性回归是如出一辙。要不要设置w0?好比下图:函数
而对于逻辑回归来讲,一样如此。若是设置w0,意味着有更多的可能性去找到最优解的分界线,而后把已有的数据分开;若是不设置w0,意味着分界线必须得穿过原点,不可能找到完美的把红绿两个类别分开。 咱们设置截距w0的方式是手动的为数据集x增长一列全1。所以第一点:逻辑回归的优化或者也能够把它泛化成多元线性回归的优化,就是设置截距w0。优化
第二点关于逻辑回归优化:若是碰到线性不可分的问题,咱们能够考虑进行升维。怎么来看它究竟是不是线性不可分呢?咱们能够把数据集放到逻辑回归里面去,算个模型出来,若是那个模型的准确率差了八丈远,颇有可能会产生线性不可分的问题,你调整数据就好了。没有必要说拿到数据,先看数据的分布,看它是否是线性不可分的。好比下图:spa
若是作分类,要找到分界线,横轴是x2,纵轴是x1,两个维度,咱们能不能在二维里面找到一个线,对已有的数据进行很好的分割?答案是不能,为何要强调线?由于逻辑回归,它就是θTx,只不过是对它进行一步缩放。设计
因此逻辑回归的本质仍是线性的,若是用逻辑回归基于如今的数据点不动,咱们就必定得找个直线,对二维的数据点进行分割,可是这是线性不可分的状况。不可能找到直线对数据进行分割。因此直线不行,能不能找一个曲线,对已有数据进行分割?固然能够,可是用曲线的话就不叫逻辑回归,就叫其它的算法了。若是非要用逻辑回归,将data数据带到agorithm算法里面,开发结果是模型。若是算法保持不动,为了让模型拟合的更好,或者是分类更好,咱们就要改数据。以前在多元线性回归改变数据叫升维,好比说年龄和收入它不是线性变化的,那么给x数据里面多加一个age的平方,再多加一个维度进来。3d
这个地方思路也是同样的,升维。经验告诉咱们是相乘,就是再多加一个维度,计算机模拟以后这个加的维度是x1*x2。固然若是用多项式回归对原来数据集加上x1^2+x2^2+x1*x2也能够,因此当维度少的状况下,能够人为地去升维,添加新的维度;维度多的状况下,直接多项式回归。blog
咱们用几何图示表示,把点投影到高维空间中去,也就是升维,好比下面这张图:element
会发现当再多一个维度的话,原来的数据点就得把它映射到更高的维度里面去,这里面多了一个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,那咱们能够把它调高或者调低,根据需求来定。