- 作者:韩信子@ShowMeAI
- 教程地址:www.showmeai.tech/tutorials/3…
- 本文地址:www.showmeai.tech/article-det…
- 声明:版权所有,转载请联系平台与作者并注明出处
引言
本篇内容我们给大家介绍机器学习领域最常见的模型之一:逻辑回归。它也是目前工业界解决问题最广泛作为baseline的解决方案。逻辑回归之所以被广泛应用,因为其简单有效且可解释性强。
本文的结构如下:
-
第1部分:回顾机器学习与分类问题。回顾机器学习中最重要的问题之一分类问题,不同的分类问题及数学抽象。
-
第2部分:逻辑回归核心思想。介绍线性回归问题及逻辑回归解决方式,讲解逻辑回归核心思想。
-
第3部分:Sigmoid函数与分类器决策边界。介绍逻辑回归模型中最重要的Sigmoid变换函数,以及不同分类器得到的决策边界。
-
第4部分:模型优化使用的梯度下降算法。介绍模型参数学习过程中最常使用到的优化算法:梯度下降。
-
第5部分:模型过拟合问题与正则化。介绍模型状态分析及过拟合问题,以及缓解过拟合问题可以使用的正则化手段。
-
第6部分:特征变换与非线性切分。介绍由线性分类器到非线性分类场景,对特征可以进行的变换如构建多项式特征,使得分类器得到分线性切分能力。
(本篇逻辑回归算法的部分内容涉及到机器学习基础知识,没有先序知识储备的宝宝可以查看ShowMeAI的文章 图解机器学习 | 机器学习基础知识)。
1.机器学习与分类问题
1)分类问题
分类问题是机器学习非常重要的一个组成部分,它的目标是根据已知样本的某些特征,判断一个样本属于哪个类别。分类问题可以细分如下:
-
二分类问题:表示分类任务中有两个类别新的样本属于哪种已知的样本类。
-
多类分类(Multiclass Classification)问题:表示分类任务中有多类别。
-
多标签分类(Multilabel Classification)问题:给每个样本一系列的目标标签。
2)分类问题的数学抽象
从算法的角度解决一个分类问题,我们的训练数据会被映射成n维空间的样本点(这里的n就是特征维度),我们需要做的事情是对n维样本空间的点进行类别区分,某些点会归属到某个类别。
下图所示的是二维平面中的两类样本点,我们的模型(分类器)在学习一种区分不同类别的方法,比如这里是使用一条直线去对2类不同的样本点进行切分。
常见的分类问题应用场景很多,我们选择几个进行举例说明:
-
垃圾邮件识别:可以作为二分类问题,将邮件分为你「垃圾邮件」或者「正常邮件」。
-
图像内容识别:因为图像的内容种类不止一个,图像内容可能是猫、狗、人等等,因此是多类分类问题。
-
文本情感分析:既可以作为二分类问题,将情感分为褒贬两种,还可以作为多类分类问题,将情感种类扩展,比如分为:十分消极、消极、积极、十分积极等。
2.逻辑回归算法核心思想
下面介绍本次要讲解的算法——逻辑回归(Logistic Regression)。逻辑回归是线性回归的一种扩展,用来处理分类问题。
1)线性回归与分类
分类问题和回归问题有一定的相似性,都是通过对数据集的学习来对未知结果进行预测,区别在于输出值不同。
-
分类问题的输出值是离散值(如垃圾邮件和正常邮件)。
-
回归问题的输出值是连续值(例如房子的价格)。
既然分类问题和回归问题有一定的相似性,那么我们能不能在回归的基础上进行分类呢?
可以想到的一种尝试思路是,先用线性拟合,然后对线性拟合的预测结果值进行量化,即将连续值量化为离散值——即使用『线性回归+阈值』解决分类问题。
我们来看一个例子。假如现在有一个关于肿瘤大小的数据集,需要根据肿瘤的大小来判定是良性(用数字0表示)还是恶性(用数字1表示),这是一个很典型的二分类问题。
如上图,目前这个简单的场景我们得到1个直观的判定:肿瘤的大小大于5,即为恶性肿瘤(输出为1);肿瘤的大小等于5,即为良性肿瘤(输出为0)。
下面我们尝试之前提到的思路,使用一元线性函数去进行拟合数据,函数体现在图片中就是这条黑色直线。
这样分类问题就可以转化为:对于这个线性拟合的假设函数,给定一个肿瘤的大小,只要将其带入假设函数,并将其输出值和0.5进行比较:
-
如果线性回归值大于0.5,就输出1(恶性肿瘤)。
-
如果线性回归值小于0.5,就输出0(良性肿瘤)。
上图的数据集中的分类问题被完美解决。但如果将数据集更改一下,如图所示,如果我们还是以0.5为判定阈值,那么就会把肿瘤大小为6的情况进行误判为良好。
所以,单纯地通过将线性拟合的输出值与某一个阈值进行比较,这种方法用于分类非常不稳定。
2)逻辑回归核心思想
因为「线性回归+阈值」的方式很难得到鲁棒性好的分类器,我们对其进行拓展得到鲁棒性更好的逻辑回归(Logistic Regression,有些地方也叫做「对数几率回归」)。逻辑回归将数据拟合到一个logit函数中,从而完成对事件发生概率的预测。
如果线性回归的结果输出是一个连续值,而值的范围是无法限定的,这种情况下我们无法得到稳定的判定阈值。那是否可以把这个结果映射到一个固定大小的区间内(比如0到1),进而判断呢。
当然可以,这就是逻辑回归做的事情,而其中用于对连续值压缩变换的函数叫做Sigmoid函数(也称Logistic函数,S函数)。
Sigmoid数学表达式为