逻辑回归主要用于解决分类问题,在现实中有更多的运用,
正常邮件or垃圾邮件
车or行人
涨价or不涨价
用我们EE的例子就是:
高电平or低电平
同时逻辑回归也是后面神经网络到深度学习的基础。
(原来编辑器就有分割线的功能啊……)
一、Logistic Function(逻辑方程)
同线性回归,我们会有一个Hypothesis Function对输入数据进行计算已得到一个输出值。
考虑到分类问题的特点,常用的函数有sigmoid方程(又叫logistic方程)
其函数图像如下
可见:
1、输出区间为(0,1);
2、对于所有输入 z<0, g(z) < 0.5 ; 对所有输入 z>0, g(z) > 0.5。
因此我们可以把输出 g(z) 看作是一种概率,
当输入 z > 0 ,概率 g(z)>50% 时, 假设成立。
( 另有tanh函数,输出区间是(-1,1) )
二、Cost Function代价方程
problem:
在逻辑回归中,由于输入和输出不再是线性关系,
如果我们再使用预测值与实际值的欧式距离的均值作为代价方程,
代价方程将会出现多个局部最优点,
这对梯度下降算法来说真是毁灭性的打击。
如图,左边是不理想的cost function ,右边是理想的cost function
(看到右下角的署名没有? 那才是这些图的真正作者啊,膜拜ing~~)
解决方法:
为了解决这个问题,在逻辑回归中,我们使用以下方程作为梯度下降的cost function:(*注释1)
当然这么写还真是不美观,码代码的时候还要加一个逻辑判定语句。
这么些就好多了:
这个函数的叫做 softmax(索夫曼)函数 ,所以在有时候我们又可以把用到这种cost function的回归成为softmax回归。
对应的偏导计算方法如下:
考虑到视频上面没有加上推导过程,但是貌似有公司面试会面这个的推导,我这里放上我无限难看的手写版:
知道了cost function,知道了偏导之后,让我们一起gradient descent吧!
附: Decision Boundary
在坐标系中把数据标出,并作出Htheta(x)=0.5的函数曲线
曲线将大致将数据按照标签分为两部分,这就是数据的decision boundary。
过拟合(overfitting):
实际操作过程中,无论是线性回归还是逻辑回归,其假设函数h(x)都是人为设定的(尽管可以通过实验选择最优)。
这样子就可能出线“欠拟合”或者“过拟合”现象。
所谓过拟合,就是模型复杂度过高,模型很好地拟合了训练样本却对未知样本的预测能力不足。(亦称"泛化"能力不足)
所谓欠拟合,就是模型复杂度过低,模型不能很好拟合不管是训练样本还是其他样本。
例子:
如果输出与输入大致成二次关系,
那么我们用一次函数去拟合,拟合结果过于平缓,跟不上变化,这就是“欠拟合”
用3、4次函数去拟合,则会出现过多的“抖动”,这就是“过拟合”
如图,
线性回归中的“欠拟合”和“过拟合”,可见"欠拟合"不能贴近数据的变化,而"过拟合"产生了过多的"抖动"
逻辑回归中的“欠拟合”和“过拟合”,“欠拟合”不能很好的进行分类,“过拟合”则过多地受到特例的影响,不能给出具有良好泛化能力的方程
实际操作当中,由于过拟合的影响可以通过增大训练数据量来减轻,和正则化
所以一般建模宁over不under。
Regularization(正则化):
正则化希望在代价函数中增加惩罚项来减少过拟合项的系数的大小,以减少过拟合项的影响。
惩罚因子 :
(好难看……)
修改后的代价函数:
线性:
逻辑:
*用本专业的知识可以这么理解:对于一个模型,我们希望尽量用低次函数拟合得到良好效果,尽量少用高次函数(高频抖动囧rz)。
如果一个模型欠拟合,其前面的cost会过高;如果一个函数过拟合,高次函数系数较大,后面的正则惩罚项的cost又会过高。
所以学习过程会自动平衡模型的复杂程度,得到一个对训练样本和未知样本都能良好拟合的模型。(当然得调参)
然后用修改后的代价方程进行梯度下降的计算即可(加多了一项,偏导很容易算吧)