Sklearn.linear_model.LogisticRegression各类求解器

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

如果“multi_class”选项设置为“ovr”,则训练算法使用一对静止(OvR)方案,如果“multi_class”选项设置为“multinomial”,则使用交叉熵损失。(目前)“多项式”选项仅由“LBFGS”、“SAG”和“牛顿CG”求解器支持。

“liblinear” 应用了坐标下降算法(Coordinate Descent, CD),并基于 scikit-learn 内附的高性能 C++ 库 LIBLINEAR library 实现。不过 CD 算法训练的模型不是真正意义上的多分类模型,而是基于 “one-vs-rest” 思想分解了这个优化问题,为每个类别都训练了一个二元分类器。因为实现在底层使用该求解器的 LogisticRegression 实例对象表面上看是一个多元分类器。 sklearn.svm.l1_min_c 可以计算使用 L1 罚项时 C 的下界,以避免模型为空(即全部特征分量的权重为零)。

这个类使用“libli.”库,“newton-cg”、“sag”和“lbfgs”求解器实现正则化逻辑回归。它可以处理密集和稀疏输入。使用包含64位浮点的C顺序阵列或CSR矩阵来获得最佳性能;任何其他输入格式将被转换(并复制)。

“牛顿CG”、“SAG”和“LBFGS”解算器仅支持L2正则化与原始公式。“线性”解算器支持L1和L2正则化,仅对L2罚分具有双重公式。对某些高维数据收敛更快。这些求解器的参数 `multi_class`设为 “multinomial” 即可训练一个真正的多项式 logistic 回归 [5] ,其预测的概率比默认的 “one-vs-rest” 设定更为准确
“sag” 求解器基于平均随机梯度下降算法(Stochastic Average Gradient descent) [6]。在大数据集上的表现更快,大数据集指样本量大且特征数多。

“saga” 求解器 [7] 是 “sag” 的一类变体,它支持非平滑(non-smooth)的 L1 正则选项 penalty="l1" 。因此对于稀疏多项式 logistic 回归 ,往往选用该求解器。

一言以蔽之,选用求解器可遵循如下规则:

CaseSolver
L1正则“liblinear” or “saga”
多项式损失(multinomial loss)“lbfgs”, “sag”, “saga” or “newton-cg”
大数据集(n_samples)“sag” or “saga”

“saga” 一般都是最佳的选择,但出于一些历史遗留原因默认的是 “liblinear” 。

对于大数据集,还可以用 SGDClassifier ,并使用对数损失(’log’ loss)。

”newton-cg”, “sag”, “saga” 和 “lbfgs” 在高维数据上更快,因为采用了热启动(warm-starting)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值