本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
逻辑回归是一个简单的模型,但这种简单只体现在算法原理的学习上
在实际建模时,我们需要根据逻辑回归的特性,配以一系列相关操作,提高建模的实用性
本文讲述逻辑回归完整的建模流程,完整代码见《逻辑回归建模完整代码》
本节先描述逻辑回归比较常用的整体建模流程
逻辑回归建模流程概述
逻辑回归模型虽然简单,但整体建模流程并不简单
逻辑回归的建模流程如下:
一、数据预处理
1.1.输入输出线性化
1.2.输入变量归一化
二、模型训练
2.1.使用逐步回归进行建模
2.2.使用正则化进行训练(可选)
三、模型评估
3.1.模型评估
3.2.模型系数检查
本节对逻辑回归的建模流程里的每一步骤进行详细解说
逻辑回归的数据预处理
对于逻辑回归,除了缺失值填充等等一般的数据清洗外,
逻辑回归在建模前还需要进行的数据预处理主要有两点:
1. 线性关系化
需要将入模的单个变量与y的关系处理为线性相关
即使不能做到完全线性,也至少保障x与y是单调的
变量与y的线性处理可以通过数据分箱来完成
2. 数据归一化
逻辑回归在训练前需要将数据进行归一化,主要原因有两方面,
一方面是将数据归一化更有利于训练算法(例如梯度下降算法)对模型系数的求解
另一方面,如果训练时使用正则化,那么归一化有利于各个系数惩罚的平等
归一化公式如下,它把数据缩放到[0,1]之间:
✍️ 逻辑回归是一个简单的模型,它对输入变量的数据质量是非常敏感的
所以数据的预处理非常重要,特别是输入变量应尽量与y保持线性关系
逻辑回归的建模方式-逐步回归式建模
使用逻辑回归建模时,建议使用逐步回归的方式进行建模
逐步回归建模对逻辑回归的意义
逻辑回归的过拟合主要来源于过多的特征,
在保障模型效果的前提下应尽量选择更少的特征,
以逐步回归的方式可以起到这个作用,减少变量的使用,
从而使逻辑回归模型在一定程度上减少过拟合
逐步回归的具体流程
逐步回归采用逐个变量入模的方式进行建模
逐步回归的具体流程如下:
1. 历遍所有变量,将单个变量与目标建模,把模型结果最好的变量作为第一轮选择变量
2. 在第一轮选择变量的基础上,添加第二个变量,
历遍剩余变量,添加哪个变量能令模型结果最好,就将其作为第二轮选择变量
3. 在第二轮的基础上,添加第三个变量......
......
直到变量不再对拟合结果带来明显贡献时,就不再添加变量
✍️关于正则化
在建模过程中,可以选择在是否在损失函数中添加正则化进行训练
加了正则项可以避免系数过大,但同时会牺牲一定的求解精确度,
因此我们最好把加L2和不加任何正则项都尝试一下,哪种效果更好,就用哪种
sklearn训练时默认会加L2正则项penalty='l2',取消正则化只需将其修改为penalty='none'
逻辑回归的模型评估
逻辑回归模型评估
逻辑回归建模完成后,我们需要对模型的效果进行评估
逻辑回归一般选用AUC(或者KS)作为模型的评价指标
一般来说,AUC达到0.65模型才开始有区分度,达到0.70以上才开始有价值
上述只是一个经验值,具体看业务
关于AUC详细可看《二分类:ROC曲线与AUC值》
系数审查
建模仅是从数据角度去寻找一组最佳的系数,并不能系数在业务角度是合理的
因此,在用数据训练好逻辑回归模型之后 ,需要将模型系数打印出来
然后从业务角度去审查每个变量的系数是否符合业务逻辑
逻辑回归系数合理性的常用审查项如下:
👉1. 系数的正负符号是否合理
👉2. 系数权重是否合理
👉3. 系数绝对值是否过大等等
✍️老饼的经历
笔者曾有两次遇到系数与业务逻辑不符合,最后发现是因为没有对数据进行归一化,
做了归一化后,训练出来的结果又符合业务逻辑了
老饼有话说
✍️关于测试数据
要不要留测试数据验证模型泛化能力,对于逻辑回归,与正则项一样,是把双刃剑
在变量选择较好,模型训练合理的情况下,逻辑回归几乎不会过拟合
留出数据验证模型是否过拟合,很多时候是多此一举
(逻辑回归模型简单,就是一个S型的模型,没有任何跌宕可言),
如果不留数据,有可能会造成过拟合(几率很小)而不知道,
而留数据,则又减少了训练数据(训练数据越多,模型肯定越好),的确是一把双刃剑
在此情况下,留不留检验数据,还依据建模师根据自己的实际情况选择
总而言之,逻辑回归不一定非要留检验数据不可
老饼的建议是只留一小部分检验数据,不必留太多
End