前言
如果想了解线性回归的知识,可以看一下博主的前一篇博客线性回归,逻辑回归这一篇是承接着上一篇的。
逻辑回归虽然名字叫做“回归”,但是却实打实是个分类算法,而且是最基础也很重要的一类分类算法,这一点一定要注意。
问题引入
在现实生活中,分类问题无处不在,比如垃圾邮件(是/否),肿瘤是否是恶性的等,这里就可以用0:负类,1:正类来表示分类结果,那么在我们收集了诸多数据,如邮件里广告词的数量、邮件代码里css代码的数量、敏感词的数量以及其对应的标签,或者肿瘤的大小、颜色的深浅程度、体内肿瘤的数目以及其对应的标签这些数据以后,如何根据这些已有的数据来构建一个模型(或者叫假设函数),当得到新的特征值,比如有新的邮件或者有新的病人资料时,通过把这些数据输入到模型中,从而得到精确的预测结果?
当然大多数人首先想到的肯定是利用前面学到的线性回归,但是根据线性回归的假设函数得到的结果如下:
在这种情况下,线性回归表现尚好,但是考虑一下情况:
当出现一个异常点时,整个假设函数就会出现巨大的变化,从而使结果显得很离谱,而且因为我们的目的是预测得到1或者0,线性回归得到的值肯定会有很多远大于1或者远小于0,即使设置阈值也不会有明显的好效果,所以线性回归显然不适合这种分类问题。
sigmoid/logistic 函数
为了使假设函数的输出值在0-1之间,这里要对线性函数的假设函数的输出裹上一层sigmoid函数,先来介绍一下这个函数,其函数表达式为:
函数图像为:
由此可见,其函数性质有如下几点:
- 这是一个单调递增函数
- 当x=5时,y=0.99330,当x=-5时,y=0.00669,也就是说,当x>5时,y逐渐无限趋近于1,或者x<-5时,y无限趋近于0.
- 当x=0时,y=0.5。
还有一点很重要,就是这个函数的导函数:
这个性质在后面会很有用。
假设函数
逻辑回归的假设函数是在线性回归假设函数的基础上再套上一层sigmoid函数,形式如下:
这里的hθ(x)的值就被压缩在了0-1之间,这里我们假设hθ(x)>0.5时,预测为1,hθ(x)<0.5时,预测为0,也就是>0时,预测为1,<0时,预测为0。
根据假设函数,就可以确定决策边界,也就是在不同样本间画出分割不同样本的平面或者超平面。
代价函数
如果逻辑回归也使用和线性回归一样的代价函数,就会出现一个问题,这种代价函数是“非凸函数”,有许多个局部最优点,这在后面利用梯度下降进行最优化时就找不到全局最优点,所以要换一种代价函数的形式:
对于这个代价函数,当训练集中y=1时,函数图像如下:
因为hθ(x)的值域为(0,1),所以当训练集中y=1时,如果hθ(x)趋向于1,那么损失函数就很小,反之就会很大。
当训练集中y=0时,函数图像如下:
当训练集中y=0时,如果hθ(x)趋向于1,那么损失函数就很大,反之就会很大。
**但是对于这样的函数,对其进行最优化是很困难的,**所以要想办法把其合并在一个函数中,形式如下,这个函数还有另一个名字,叫做交叉熵代价函数:
这个函数从数学角度上来说就是一个凸函数,所以可以使用梯度下降对其进行优化,得到的梯度下降过程如下:
注意到这个公式和前面的线性回归的公式几乎一模一样,但是需要清楚的是这里的再这两种算法中可是完全不一样的,在线性回归中,只是各特征和参数的线性组合,但是在逻辑回归中,又在外面加了一层,也就是对其结果又进行了一次sigmoid函数的处理,所以是完全不同的。
通过最优化寻找到使损失函数最小的向量θ,然后如果出现了新的样本,就可以根据其特征值进行分类了,即假设函数的输出值如果大于0.5,那么就预测为1,小于的话就预测为0,当然这个输出值也可以代表其为1的概率。
多分类
这个领域个人感觉逻辑回归的用武之地不大,所以不做介绍了,附上链接