机器学习系列04:逻辑回归
现在我们学习一个很简单但是很有效的,适用于二分类任务的线性分类算法:逻辑回归(Logistic Regression)。这也是工业界广泛使用的算法之一。
虽然名字里带有“回归”,但是这是一个分类算法。
逻辑回归算法工作流程如下:

逻辑回归和条件概率
逻辑回归是一个适用于二分类任务的概率模型。首先我们先了解一下什么是几率(odds),定义概率 p := p(y = 1 | x),表示在给定特征 x 的条件下,类别 y = 1 的概率。对于二分类任务,y = 1 表示类别为 positive,y= 0 表示类别为 negative。那么几率就是 p / (1 - p)。
我们再定义一个 logit 函数(对几率取自然对数):

这就将原本取值范围在 [0,1] 的概率映射到了任意实数。
我们知道对于二分类任务,我们对样本的每个特征做加权和后会得到一个实数,我们定义:

现在我们借助于 Sigmoid 函数(也被称为 S 型函数)将上面的实数值重新映射为取值范围在 [0,1] 的概率。


![]()
这样我们就能根据样本 x 特征的加权和获得这个样本属于类别 1 的概率了。

等价于

逻辑回归算法处理 Iris 数据集分类任务
scikit-learn 提供的 LogisticRegression 类实现了逻辑回归算法,我们可以指定 multi_class 参数来处理多分类任务,目前这个参数的默认值是 auto,我们先用默认值看一下它处理 Iris 数据集的多分类任务性能如何。
首先还是沿用 《机器学习系列03:训练监督学习算法的主要步骤》 的主要步骤中的数据预处理步骤

而 《机器学习系列03:训练监督学习算法的主要步骤》中的感知机算法结果如下

训练完模型后,我们检测一下模型预测测试集中前 3 个样本所属类别,不过直接调用 predict 方法,模型返回的是类别编码,所以我们需要调用 LabelEncoder 的 inverse_transform 方法将数字编码的类别转回文字。

可以看到模型在训练集上的表现要优于模型在测试集上的表现:

过拟合
一般像模型在训练集上的表现优于模型在测试集上的表现,我们就说模型出现了过拟合(overfitting)或者是 high variance。此时可能是模型参数过多导致模型过于复杂了,从而学到了不属于训练集数据本身的特征(比如直接记住了训练集中每个样本所属类别)。
欠拟合
还有一种是欠拟合(underfitting)或者是叫作 high bias,此时模型在训练集和测试集上表现都不佳。此时可能是模型过于简单,导致模型无法从训练集中捕获到全面的知识。

过拟合和欠拟合都是机器学习任务中常见的问题。
对于欠拟合,我们可以选择更复杂的模型(尽管我们现在只见识到了感知机和逻辑回归这2个简单的模型)等。
对于过拟合,我们可以通过正则化方法控制模型复杂度。我们通过将模型复杂度加到模型的损失函数中,实现控制模型复杂度的目的。通常正则化都有一个系数来控制模型复杂度在损失函数中的占比。
常用的正则化方法有 L1,L2 正则化。
正则化项系数的值一般在 [0,1],在 scikit-learn 提供的 LogisticRegression 实现中,我们通过 C 来传入正则化项系数的倒数。

LogisticRegression 默认使用的 L2 正则化。
通过正则化,我们优化了模型的过拟合问题。

LogisticRegression 还有很多其他的参数,读者可以去官网自行查看。
https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)