1.二元回归与多元回归:重要参数
1.1 solver & multi_class
之前对逻辑回归的讨论,都是针对二分类的逻辑回归展开,其实sklearn提供了多种可以使用逻辑回归处理多分类问题的选项。比如说,我们可以把某种分类类型都看作1,其余的分类类型都为0值,和”数据预处理“中的二值化的思维类似,这种方法被称为"一对多"(One-vs-rest),简称OvR,在sklearn中表示为“ovr"。又或者可以把好几个分类类型划为1,剩下的几个分类类型划为0值,这是一种”多对多“(Many-vs-Many)的方法,简称MvM,在 sklearn中表示为"Multinominal"。每种方式都配合L1或L2正则项来使用。 在sklearn中,我们使用参数multi_class来告诉模型,我们的预测标签是什么样的类型。 multi_class 输入"ovr", “multinomial”, “auto"来告知模型,我们要处理的分类问题的类型。默认是"ovr”。 ‘ovr’:表示分类问题是二分类,或让模型使用"一对多"的形式来处理多分类问题。 ‘multinomial’:表示处理多分类问题,这种输入在参数solver是’liblinear’时不可用。 “auto”:表示会根据数据的分类情况和其他参数来确定模型要处理的分类问题的类型。比如说,如果数据是二分类,或者solver的取值为"liblinear",“auto"会默认选择"ovr”。反之,则会选择"nultinomial"。
之前提到的梯度下降法,只是求解逻辑回归参数 的一种方法,并且我们只讲解了求解二分类变量的参数时的各种原理。sklearn为我们提供了多种选择,让我们可以使用不同的求解器来计算逻辑回归。求解器的选择,由参数"solver"控制,共有五种选择。其中“liblinear”是二分类专用,也是现在的默认求解器。
| 求解器 | liblinear | lbfgs | newtown-cg | sag | Saga |
|---|---|---|---|---|---|
| 求解器对应的求解方式 | 坐标下降法 | 拟牛顿法的一种,利用损失函数二阶导数矩阵(海森矩阵)来迭代优化损失函数 | 牛顿法的一种,利用损失函数二阶导数矩阵(海森矩阵)来迭代优化损失函数 | 随机平均梯度下降,与普通的梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度 | 随机平均梯度下降的进化,稀疏多项逻辑回归的首选 |
| 支持的惩罚项 | L1,L2 | L2 | L2 | L2 | L1,L2 |
1.2样本不平衡与参数class_weight
使用参数class_weight对样本标签进行一定的均衡,给少量的标签更多的权重,让模型更偏向少数类, 向捕获少数类的方向建模。该参数默认None,此模式表示自动给与数据集中的所有标签相同的权重,即自动1: 1。当误分类的代价很高的时候,我们使用”balanced“模式,我们只是希望对标签进行均衡的时候,什么都不填就可以解决样本不均衡问题。
但是,sklearn当中的参数class_weight变幻莫测,大家用模型跑一跑就会发现,我们很难去找出这个参数引导的模 型趋势,或者画出学习曲线来评估参数的效果,因此可以说是非常难用。我们有着处理样本不均衡的各种方法,其 中主流的是采样法,是通过重复样本的方式来平衡标签,可以进行上采样(增加少数类的样本),比如SMOTE, 或者下采样(减少多数类的样本)。对于逻辑回归来说,上采样是最好的办法。在案例中,会给大家详细来讲如何 在逻辑回归中使用上采样。