博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习_10】十大基础算法:分类_逻辑回归
阅读量:5138 次
发布时间:2019-06-13

本文共 2893 字,大约阅读时间需要 9 分钟。

边阅边写

1.官方文档

逻辑回归,尽管名字带有“回归”,但它实际是一个分类模型而不是回归模型。在文献上,逻辑回归又称logit回归、最大熵分类或对数线性分类器。在这个模型中,使用逻辑函数对单次实验结果的可能性进行建模。

在scikit-learn中实施逻辑回归可以通过 LogisticRegression这个类。此实施可适用于二元、一对多或多远逻辑回归,并有可选的L2或L1正则化。
作为一个优化问题,二元类L2惩罚逻辑回归最小化以下成本函数:
1253211-20190219133502705-1092149674.png
同样的,L1正则化逻辑回归解决一下优化问题:
1253211-20190219133536696-1194444685.png
注意,在这种表示法中,是假设实验次数i的结果yi是在-1到1的集合中。
在LogisticRegression类中的求解器是“liblinear”, “newton-cg”, “lbfgs”, “sag” and “saga”这四个:
“liblinear”求解器使用坐标下降(CD)算法,并依赖于scikit-learn附带的优秀的C++ LIBLINEAR库。但是,在liblinear中的实现的CD算法无法学习真正的多项(多类)模型;相反,这个优化问题以一种“一对一”的方式分解,因此为所有类训练单独的二元分类器。这些操作发生在幕后,所以LogisticRegression实例使用这个求解器表现为多元分类器。对于L1惩罚,sklearn.svm.l1_min_c允许计算C的下界为了获得一个非空(所有特征权重为0)模型。
“lbfgs”, “sag” 和 “newton-cg”求解器只支持L2惩罚,而且发现对一些高维数据更快收敛。使用这些求解器设置multi_class为“multinomial”可以学习真正的多项回归模型,这意味着它的概率估计比默认的“一对一”设置更好地校准。
“sag” 求解器使用随机平均梯度下降,它在大样本维度多的大数据集中比其他求解器更快。
“saga”求解器是 “sag” 的变体,因此也支持无平滑惩罚L1选项,这个是稀疏多项逻辑会员的首选求解器。
“lbfgs”是一种近似于Broyden-Fletcher-Goldfarb-Shanno的优化算法,属于准牛顿算法。这个算法推荐适用于小数据集,在大数据集中性能会受到影响。
这下面的表格总结了每种求解器支持的惩罚:
1253211-20190219141418567-2111992764.png
惩罚:
多项式+L2惩罚
一对一+L2惩罚
多项式+L1惩罚
一对一+L1惩罚
表现:
惩罚截距
在大数据集更快
在非标准数据集稳健
“lbfgs”由于稳健,在参数选项中是被默认的。对于大数据集,“saga” 求解器通常更快。对于大数据集,也可以考虑使用SGDClassifier对数损失,这个甚至会更快但需要更多调整。

** 举例 **在逻辑回归中的L1惩罚和稀疏性https://scikit-learn.org/stable/auto_examples/linear_model/plot_logistic_l1_l2_sparsity.html#sphx-glr-auto-examples-linear-model-plot-logistic-l1-l2-sparsity-pyL1-逻辑回归的回归路径https://scikit-learn.org/stable/auto_examples/linear_model/plot_logistic_path.html#sphx-glr-auto-examples-linear-model-plot-logistic-path-py绘制多项式和一对多逻辑回归https://scikit-learn.org/stable/auto_examples/linear_model/plot_logistic_multinomial.html#sphx-glr-auto-examples-linear-model-plot-logistic-multinomial-py多项稀疏逻辑回归在新组20中https://scikit-learn.org/stable/auto_examples/linear_model/plot_sparse_logistic_regression_20newsgroups.html#sphx-glr-auto-examples-linear-model-plot-sparse-logistic-regression-20newsgroups-py使用多项逻辑+L1的MNIST分类
** 与liblinear的不同 **LogisticRegression使用solver=liblinear 或LinearSVC与外部liblinear库之间直接获得的分数可能存在差异,此时 fit_intercept=False拟合coef_(或)要预测的数据为零。这是因为对于具有decision_function零的样本 ,LogisticRegression并且LinearSVC 预测负类,而liblinear预测正类。请注意,fit_intercept=False具有decision_function零且具有多个样本 的模型可能是欠装,坏模型,建议您设置fit_intercept=True并增加intercept_scaling。
** 注意:使用稀疏逻辑回归进行特征选择 **具有L1惩罚的逻辑回归产生稀疏模型,并且因此可以用于执行特征选择,如基于L1的特征选择中详述的 。

LogisticRegressionCV使用内置交叉验证实施逻辑回归以找到最优C参数。由于热启动,“newton-cg”, “sag”, “saga”和“lbfgs”求解器均被发现对于大数据集更快。对于多类情况,如果multi_class选项设置为“ovr”,则为每类获得最佳C;并且如果multi_class选项设置为“多选”,则通过最小化交叉熵损失来获得最优C。

** 参考文献 **[5] Christopher M. Bishop:模式识别和机器学习,第4.3.4章[6] Mark Schmidt,Nicolas Le Roux和Francis Bach:用随机平均梯度最小化有限和。[7] Aaron Defazio,Francis Bach,Simon Lacoste-Julien:SAGA:一种支持非强凸复合目标的快速增量梯度法。[8] https://en.wikipedia.org/wiki/Broyden%E2%80%93Fletcher%E2%80%93Goldfarb%E2%80%93Shanno_algorithm[9] “Lbfgs与其他求解器的性能评估”

2.实例理解

LogisticRegressionCV文档

一个字母一个字母地重敲一遍代码

数据集:

后者在kaggle里找:

posted on
2019-02-19 14:33 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/everda/p/10400905.html

你可能感兴趣的文章
[Docker]Docker拉取,上传镜像到Harbor仓库
查看>>
javascript 浏览器类型检测
查看>>
nginx 不带www到www域名的重定向
查看>>
记录:Android中StackOverflow的问题
查看>>
导航,头部,CSS基础
查看>>
[草稿]挂载新硬盘
查看>>
[USACO 2017 Feb Gold] Tutorial
查看>>
关于mysql中GROUP_CONCAT函数的使用
查看>>
OD使用教程20 - 调试篇20
查看>>
Java虚拟机(JVM)默认字符集详解
查看>>
Java Servlet 过滤器与 springmvc 拦截器的区别?
查看>>
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
企业级应用与互联网应用的区别
查看>>