轻松玩转 Scikit-Learn 系列 —— 逻辑回归是回归 ?

简介: 逻辑回归,咋一听这名字,真的跟一个正儿八经的回归模型似的,实际上从原理上讲他是一个如假包换的分类器,英文名是 Logistics regression,也叫 logit regression,maximum-entropy classification,或者 log-linear classifier。

前言


逻辑回归,咋一听这名字,真的跟一个正儿八经的回归模型似的,实际上从原理上讲他是一个如假包换的分类器,英文名是 Logistics regression,也叫 logit regression,maximum-entropy classification,或者 log-linear classifier。


在逻辑回归中,会将样本的所有特征与样本属于某个种类的概率联系起来,即使每个特征都对应一个模型参数,通过训练不断修正模型参数,最后使用 logistic function (也叫 sigmoid 函数,该函数使输入从(-inf, inf)映射到输出(0,1),其图形如下)建模求出样本属于某个种类的概率。

17.jpg


下图是 Kaggle 上出现的统计在各个行业使用机器学习方法的使用率的情况。从图中可以看出,逻辑回归以领先第二名13.6%的绝对优势牢牢地占据了第一位。逻辑回归之所以能够坚挺在 C 位,绝对有与之相匹配的实力,我们会在代码实战中看到相关证明。

18.jpg



在 scikit-learn 中封装的逻辑回归,可以用来解决二分类和基于 OvR 和 OvO 的多分类问题。逻辑回归的损失函数是一个凸函数,存在全局最优解,为避免模型过拟合,常需要对模型进行正则化。所以,scikit-learn 中逻辑回归的实现的损失函数常加有惩罚项来对模型正则化。加上 L1 正则化项的损失函数为:

19.jpg

加上 L1 正则项的损失函数为:

20.jpg


实战


下面我们就用代码具体的展示下 scikit-learn 中,逻辑回归的使用、性能、以及进行一定的调参后的表现。

21.jpg

21.jpg22.jpg


默认模型的表现好像很差劲呐,还不如去抛硬币呢!那我们接下来就介绍下 scikit-learn 中封装的逻辑回归的一些超参数,并进行一定的调整,看看能提高多大程度的性能。


可调整的超参数:

penalty: str 类型,可取 ‘l1’ 或者 ‘l2’,默认值为 ‘l2’,用于明确损失函数惩罚项的正则类型;

tol: float 类型,默认值为 1e-4,表示容差,用于决定是否停止搜索;

C: float 类型,默认值为1.0,表示正则项的系数,用来决定模型需要正则化的程度;

solver: str 类型,默认取 'liblinear',可取{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’} 中任一个,表示在优化过程中所使用的算法;

max_iter: int 型,默认取100,表示在优化收敛的过程中最大迭代的次数;


更多超参数,更详细的说,请小伙伴们查阅官方文档。我们先变化下两个超参数,令 C=0.1,penalty='l1' 试试:

23.jpg


这精度还是不行,稍微分析下数据可知,样本的标签值是与样本的特征有多项式关系,这就很容易想到可以用 scikit-learn 中的 PolynomialFeatures 类对数据进行预处理,这个过程可以用 Pipeline 进行简化处理。实现如下:

24.jpg


这回还不错,模型的精度达到了97%,为了进行比较,我们又引入两个其他模型———kNN 和 ANN,虽然都有两个 NN ,但这两个模型的确是没什么血缘关系,唯一的共同点估计就是都在分类领域有着不错的性能了吧!kNN 是 k 近邻算法,ANN 是人工神经网络,下面我们先看下 kNN 的表现。

25.jpg


kNN 精度还不错,再看 ANN 的:

26.jpg


经过100轮(EPOCHES=100)的训练,ANN的精度为 85%,还行,但不是特别的出色,相比已经达到百分之九十多的 kNN 和多项式回归来说。不过当训练500轮时,模型的准确率可以达到100%,但随之增长的是计算代价。

27.jpg28.jpg

这次分享就到这里,小伙伴们下次再见。

相关文章
|
5天前
|
机器学习/深度学习
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC(下)
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC
72 7
|
5天前
|
机器学习/深度学习 数据可视化 计算机视觉
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC(上)
数据分享|R语言逻辑回归、线性判别分析LDA、GAM、MARS、KNN、QDA、决策树、随机森林、SVM分类葡萄酒交叉验证ROC
16 4
|
5天前
|
机器学习/深度学习 算法 数据挖掘
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
|
5天前
|
机器学习/深度学习 算法 数据挖掘
数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
20 6
|
7天前
|
机器学习/深度学习 算法 数据挖掘
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病-1
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
17 5
|
7天前
|
机器学习/深度学习 算法
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病-2
R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
24 5
|
12天前
|
机器学习/深度学习 存储 算法
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例(二)
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例二)
20 0
|
12天前
|
机器学习/深度学习 并行计算 算法
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例(一)
【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例(一)
20 0
|
12天前
|
数据可视化 Python
Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING,GBR回归训练和预测可视化
Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING,GBR回归训练和预测可视化
18 0
Python进行多输出(多因变量)回归:集成学习梯度提升决策树GRADIENT BOOSTING,GBR回归训练和预测可视化
|
6月前
|
机器学习/深度学习 存储 算法
逻辑回归模型
逻辑回归模型
62 0

热门文章

最新文章