LogisticRegression是一种广义线性分类模型,其可通过模拟数据的伯努利分布(对于二分类问题)和多项式分布(对于多分类问题)参数,对样本所属各分类的概率值进行预测。
1. 模型的主要参数
在sklearn中, LogisticRegression模型的主要参数包括:
模型参数 | Parameter含义 | 备注 |
penalty | 正则项 | 广义线性模型的正则项,可选值包括L1正则项'l1'、L2正则项'l2'、复合正则'elasticnet'和无正则项None,默认值为'l2'。值得注意的是,正则项的选择应与优化求解器相匹配(详见`solver`参数)。 |
l1_ratio | 正则权重系数 | L1正则和L2正则的权重系数,取值空间为0-1。若为0,则相当于为L2正则;若为1,则为L1正则,否则为Elasticnet正则。 |
dual | 对偶问题 | 默认值False,可设为True将问题转换为对偶问题(详见本博客SVM问题中原问题-对偶问题的推导),仅适用于采用L2正则化且求解器为'liblinear’的情况。当样本数少于特征数时,推荐为True。 |
tol | 迭代阈值 | 求解器迭代求解时,停止迭代的目标函数改变阈值。 |
C | 正则化系数倒数 | 注意,其值与正则化强度相反,即C值越小,正则化程度越大。其值必须为正,且默认值为1 |
fit_intercept | 是否预设偏置 | 控制广义线性模型中是否预设偏置值 |
intercept_scaling | 预设偏置值 | 广义线性模型中预设的偏置值,仅当求解器为'liblinear'同时fit_intercept时生效。**注意**:该偏置值会作为新的特征计算其系数,因此也会计入L1和L2正则。 |
class_weight | 样本权重 | 用于处理样本不均衡问题。默认值为None,即各类别样本权重一样,可通过设置字典定义权重系数,或设为'balanced',即根据样本数自动计算权重。若在fit函数中设置`sample_weight`参数,两者作用会叠加。 |
random_state | 随机状态 | LR模型中的随机性主要体现在求解器迭代时对样本的随机选取,适用于当求解器为'liblinear'或'sag'时。 |
solver | 求解器 | sklearn中共提供了5种优化求解器,分别为'liblinear'、'sag'、'saga'、'newton-cg'和'lbfgs'。各求解器的适用条件不同,具体见后文。默认值为'liblinear'。 |
max_iter | 最大迭代步数 | ‘newton-cg’、'sag'和'lbfgs' 求解器所需要的最大迭代步数 |
multi_class | 多分类策略 | 取值可为'ovr'、'multinomial'和'auto'。'ovr'即采用'one vs rest'策略对二分类模型进行集成;'multinomial'即采用'multinomial loss'直接求解多分类问题。默认为'auto',其会在两分类问题或求解器为'liblinear'时选择'ovr',而其它情况下选择'multinomial'。默认值为'auto' |
求解器类型 | 对应参数 | liblinear | sag | saga | newton-cg | lbfgs |
求解机制 | solver | 开源的liblinear库,采用坐标轴下降法 | 随机平均梯度下降 | 线性收敛的随机平均梯度下降,特别适用于稀疏多项逻辑回归 | 牛顿法 | 拟牛顿法 |
正则化适用性 | penalty,C,l1_ratio | 适用于L1和L2正则 | 仅适用于L2正则 | 适用于L1和L2正则 | 仅适用于L2正则 | 仅适用于L2正则 |
偏置项适用性 | fit_intercept,ntercept_scaling | 适用 | ---- | ---- | ---- | ---- |
数据适用性 | ---- | 小数据集 | 大数据集,小数据集会采样过少 | 大数据集 | 中等数据集 | 中等数据集 |
多分类适用性 | multi_class,class_weight | 仅适用'ovr'策略 | 'ovr'策略和'multinomial loss'策略均适用,推荐后者 | |||
收敛性 | max_iter | ---- | 需设置 | ---- | 需设置 | 需设置 |
对偶问题转换 | dual | 当L2正则,且数据量小于特征数时适用 | ---- | ----- | ---- | ---- |
随机性 | random_state | 有作用 | 有作用 | ----- | ---- | ---- |
其它 | ---- | ---- | 支持增量学习 | ----- | ---- | ---- |
2. 模型的主要方法
模型方法 | Parameter含义 | 备注 |
fit | 模型训练 | 可通过sample_weight参数来设置权重。 |
predict | 预测结果 | 返回预测数据的各分类预测值 |
predict_prob | 概率预测 | 返回预测数据的各分类概率预测值 |
predict_log_proba | 对数概率预测 | 返回预测数据的各分类对数概率预测值 |
3. 模型的主要属性
模型属性 | Parameter含义 | 备注 |
classes_ | 预测分类 | 各样本的分类预测值 |
coef_ | 线性系数 | 各特征前的线性系数,若有偏置项也包括该项前的系数。在样本做归一化的前提下,可视作特征的重要性。 |
intercept_ | 偏置项 | 当求解器为'liblinear'时,可输出此值 |
n_iter_ | 最大迭代次数 | 当求解器为'sag','newton-cg'或'lbfgs'时,可输出此值 |
4. 模型的调参
LogisticRegression模型的调参主要涉及两个层面:
(1)求解器及相关参数的选择;
(2)正则项及其系数的调整。