详解逻辑回归Logistic Regression

详解逻辑回归Logistic Regression

什么是回归

简单来说,回归就是根据输入预测一个值。

从线性回归到Logistic回归

线性回归模型是求出输出变量 Y 和输入特征变量 X 之间的线性关系系数 θ,使其满足 Y = Xθ ,这里的 Y是连续型的,如果想要使 Y 是离散型的(分类变量),那么就需要对 Y 进行一次函数变换(映射 : g),得到的 g(Y),使得当 g(Y) 值在某个实数区间时样本的输出值为一类别,而当在另一个实数区间时对应样本的输出值为另一类别,当只有两个类别时,就得到了一个二分类模型,我们就从线性模型过度到了Logistic回归模型。

由线性回归模型引出Logistic回归分类模型示意图:
在这里插入图片描述

什么是逻辑回归

简单来讲,逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

包含了5个点 1:逻辑回归的假设,2:逻辑回归的损失函数,3:逻辑回归的求解方法,4:逻辑回归的目的,5:逻辑回归如何分类。

逻辑回归假设

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

logistic函数

在这里插入图片描述

logistic函数求导

在这里插入图片描述

逻辑回归的损失函数

对数损失函数与平方损失函数

在逻辑回归的推导中,我们假设样本是服从伯努利分布(0-1分布)的,然后求得满足该分布的似然函数,最终求该似然函数的极大值。

整体的思想就是求极大似然函数的思想。而取对数,只是为了方便我们的在求MLE(Maximum Likelihood Estimation)过程中采取的一种数学手段而已。

常见的损失函数

在这里插入图片描述

详解损失函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二元Logistic回归模型常规步骤:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logistic回归的优缺点:

优点:
(1)速度快,适合二分类问题,不需要缩放输入特征;
(2)简单易理解,模型的可解释性非常好,从特征的权重可以看到不同的特征对最后结果的影响;
(3)易更新模型吸收新数据;
(4)训练速度较快。分类的时候,计算量仅仅只和特征的数目相关;
(5)资源占用小,尤其是内存。因为只需要存储各个维度的特征值。

缺点:
(1)不能用Logistic回归去解决非线性问题,因为Logistic的决策面试线性的;
(2)高度依赖正确的数据表示;
(3)对多重共线性数据较为敏感;
(4)准确率并不是很高。因为形式非常的简单(非常类似线性模型),很难去拟合数据的真实分布;
(5)很难处理数据不平衡的问题;
(6)逻辑回归本身无法筛选特征。有时候,我们会用gbdt来筛选特征,然后再上逻辑回归。

Logistic回归与线性回归的区别与联系:

在这里插入图片描述

为什么逻辑回归是一个分类算法,但是又叫回归?

在这里插入图片描述

逻辑回归的多标签分类

我们讨论了逻辑回归模型(Logistic Regression),但是我们发现,逻辑回归模型解决的是二分问题。在现实情境下,我们的训练集往往包含多个类,那我们可不可以把把多分类问题转化为二分类问题呢?答案是肯定的。

多分类问题的基本思想就是,将多分类任务拆解为若干个二分类任务求解。

拆分策略(四种)

一对一拆分(OvO)

基本思想:
将N个类别两两匹配,每次使用2个类别的数据训练分类器,从而产生N(N−1)/2个二分类器。使用时,将样本提交给所有的分类器,得到了N(N−1)/2个结果,最终属于哪个类别通过投票产生。

实例
假设我们要解决一个分类问题,该分类问题有三个类别,分别用△,□和×表示,每个实例(Entity)有两个属性(Attribute),如果把属性 1 作为 X 轴,属性 2 作为 Y 轴,训练集(Training Dataset)的分布可以表示为下图:
在这里插入图片描述
One-Vs-One 是一种相对稳健的扩展方法。对于三分类问题,我们像举行车轮作战一样让不同类别的数据两两组合训练分类器,可以得到 3 个二元分类器。

三角形与 x 训练得出的分类器:
在这里插入图片描述
三角形与正方形训练的出的分类器:
在这里插入图片描述
正方形与 x 训练得出的分类器:
在这里插入图片描述

假如我们要预测的一个数据在图中红色圆圈的位置,那么第一个分类器会认为它是 x,第二个分类器会认为它偏向三角形,第三个分类器会认为它是 x,经过三个分类器的投票之后,可以预测红色圆圈所代表的数据的类别为 x。
在这里插入图片描述
任何一个测试样本都可以通过分类器的投票选举出预测结果,这就是 One-Vs-One 的运行方式。

分类器个数
N(N−1)/2个

特点
分类器较多,且每个分类器在训练时只使用了2个类别的样本数据。

当然 One-Vs-One 的优点很明显,它在一定程度上规避了数据集 unbalance 的情况,性能相对稳定,并且需要训练的模型数虽然增多,但是每次训练时训练集的数量都降低很多,其训练效率会提高。

一对多拆分(OvR)

基本思想
每次将一个类作为样例的正例,其他所有均作为反例,得到N个分类器。也就是说,每个分类器能识别一个固定类别。使用时,若有一个分类器为正类,则就为该类别;若有多个分类器为正类,则选择置信度最高的分类器识别的类别。

三角形所代表的实例全部视为正类,其他实例全部视为负类,得到的分类器如图:
在这里插入图片描述
把 X 视为正类,其他视为负类,可以得到第二个分类器:
在这里插入图片描述

第三个分类器是把正方形视为正类,其余视为负类:
在这里插入图片描述
对于一个三分类问题,我们最终得到 3 个二元分类器。在预测阶段,每个分类器可以根据测试样本,得到当前正类的概率。即 P(y = i | x; θ),i = 1, 2, 3。选择计算结果最高的分类器,其正类就可以作为预测结果。

分类器个数
N个

特点:
相比OvO分类器较少,且每个分类器在训练时使用了所有样本数据。

优点:普适性还比较广,可以应用于能输出值或者概率的分类器,同时效率相对较好,有多少个类别就训练多少个分类器。

缺点:很容易造成训练集样本数量的不平衡(Unbalance),尤其在类别较多的情况下,经常容易出现正类样本的数量远远不及负类样本的数量,这样就会造成分类器的偏向性。

多对多拆分(MvM)

基本思想:
每次将若干个类作为正例、若干个类作为反例。显然OvO、OvR都是其特例。MvM的正、反类设计必须有特殊的设计,常用的一种技术:”纠错输出码”,简称ECOC。

ECOC是将编码的思想引入类别的划分,并可能在解码过程中具有容错性。
ECOC工作过程主要分为两步:

1.对N个类做M次划分,每次划分将一部分作为正类,一部分划分反类,从而形成一个二分类训练集。一共产生M个训练集,训练出M个分类器。

2.M个分类器分别对测试样本进行预测,这些预测标记组成一个编码。将这个预测编码与每个类各自的编码进行比较,返回其中距离最小的类别作为最终结果。
在这里插入图片描述
分类器个数:
M个

特点:
对同一个学习任务来说,ECOC编码越长,纠错能力越强。然而编码越长所需要的训练的分类器越多,计算存储开销都会增大;另一方面对于有限类别码长超过一定范围就没有意义了。对于同等长度的编码,理论上来说,任务两个类别之间的编码距离越远,则纠错能力越强。

Softmax

基本思想:
在二元的逻辑回归模型中,我们用 Sigmoid 函数将一个多维数据(一个样本)映射到一个 0 - 1 之间的数值上。
在这里插入图片描述
使所有概率之和为 1,是对概率分布进行归一化。

定义了新的假设函数(hypothesis function)之后,我们要得到其对应的代价函数(cost function)。
在这里插入图片描述
对该代价函数求最优解同样可以使用如梯度下降之类的迭代算法,其梯度公式如下:
在这里插入图片描述
有了偏导数,就可以对代价函数进行优化,最终求解。

本质上讲,Softmax 回归就是 logistic 回归进行多分类时的一种数学拓展,如果让分类数为 2 带入 softmax 回归,会发现其本质上和 logistic 回归是一样的。

在处理一些样本可能丛属多个类别的分类问题是,使用 OvO 或 OvR 有可能达到更好的效果。

Softmax 回归适合处理一个样本尽可能属于一种类别的多分类问题。

类别不平衡问题

我们在之前讨论的分类问题中,往往都是假设样本是平衡的,也就是正类与反类的样本个数相近。但实际中,很有可能正类与反类个数差别悬殊。我们假设有这种情况,训练数据有反例998个,正例2个,模型是一个永远将新样本预测为反例的学习器,就能达到99.8%的精度,这样显然是不合理的。

解决方法1:欠采样法

对训练集里的反例样本进行“欠采样”,即去除一些反例使得正反例数目接近,再进行学习。由于丢弃很多反例,会使得训练集远小于初始训练集,所以有可能导致欠拟合。所以提出以下策略

代表算法:EasyEnsemble

利用集成学习机制,每次从大多数类中抽取和少数类数目差不多的重新组合,总共构成n个新的训练集,基于每个训练集训练出一个AdaBoost分类器(带阈值),最后结合之前训练分类器结果加权求和减去阈值确定最终分类类别。

解决方法2:过采样法

增加一些正例使得正反例数目接近,然后再学习。需要注意的是不能只是对初始正例样本重复采样,否则导致严重的过拟合。所以提出以下策略

代表算法:SMOTE

合成新的少数样本的策略是,对每个少类a样本,从最近邻中随机选一个样本b,在a、b之间连线上随机选一点作为合成新样本。

解决方法3:再缩放思想(操作不现实)

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
logisticregression函数是sklearn.linear_model库中的一个函数,用于实现逻辑回归算法逻辑回归是一种广义的线性回归模型,用于解决二分类或多分类问题。该函数的常用参数包括: - penalty:正则化项的类型,默认为"l2",可选"l1"或"none"。 - C:正则化强度的倒数,默认为1.0,较小的值表示更强的正则化。 - solver:优化算法的选择,默认为"lbfgs",可选"newton-cg"、"sag"、"saga"或"liblinear"。 - max_iter:最大迭代次数,默认为100。 - multi_class:多分类问题的处理方式,默认为"auto",可选"ovr"或"multinomial"。 - class_weight:类别权重的设置,默认为None,可选"balanced"或自定义权重。 - random_state:随机数种子的设置,默认为None。 通过调用LogisticRegression函数并设置相应的参数,可以实现逻辑回归算法的训练和预测。 #### 引用[.reference_title] - *1* [逻辑回归Logistic Regression)](https://blog.csdn.net/weixin_55073640/article/details/124683459)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Logistic regression](https://blog.csdn.net/qq_41669468/article/details/108514776)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [逻辑回归Logistic Regression)详解](https://blog.csdn.net/weixin_60737527/article/details/124141293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值