项目实训写实记录No.12

数据集和模型细节调整

1.数据集调整

将各特征的IV值绘制成图画出
在这里插入图片描述
可以看到RevolvingUtilizationOfUnsecuredLines这个值的IV值很大,超过0.78,所以认为是异常特征,故在接下来的模型训练中将该特征删除。
绘制IV图的代码为

'''根据前文,已经算出了各变量不同分组对应的IV值,现在利用上述公式计算自变量的IV值'''
ivx1=x1.iv.sum()
ivx2=x2.iv.sum()
ivx3=x3.iv.sum()
ivx4=x4.iv.sum()
ivx5=x5.iv.sum()
ivx6=x6.iv.sum()
ivx7=x7.iv.sum()
ivx8=x8.iv.sum()
ivx9=x9.iv.sum()
ivx10=x10.iv.sum()
IV=pd.DataFrame({"可用额度比值":ivx1,
                 "年龄":ivx2,
                 "逾期30-59天笔数":ivx3,
                 "负债率":ivx4,
                 "月收入":ivx5,
                 "信贷数量":ivx6,
                 "逾期90天笔数":ivx7,
                 "固定资产贷款量":ivx8,
                 "逾期60-89天笔数":ivx9,
                 "家属数量":ivx10},index=[0])

ivplot=IV.plot.bar(figsize=(15,10))
ivplot.set_title('特征变量的IV值分布')

2.逻辑回归模型细节调整

逻辑回归模型两个重要参数:
penalty:
字符串型,’l1’ or ‘l2’,默认:’l2’;正则化类型。
  LogisticRegression和LogisticRegressionCV默认就带了正则化项。penalty参数可选择的值为"l1"和"l2".分别对应L1的正则化和L2的正则化,默认是L2的正则化。
在调参时如果我们主要的目的只是为了解决过拟合,一般penalty选择L2正则化就够了。但是如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化。另外,如果模型的特征非常多,我们希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。
  penalty参数的选择会影响我们损失函数优化算法的选择。即参数solver的选择,如果是L2正则化,那么4种可选的算法{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}都可以选择。但是如果penalty是L1正则化的话,就只能选择‘liblinear’了。这是因为L1正则化的损失函数不是连续可导的,而{‘newton-cg’, ‘lbfgs’,‘sag’}这三种优化算法时都需要损失函数的一阶或者二阶连续导数。而‘liblinear’并没有这个依赖。
  
solver :
逻辑回归损失函数的优化方法 solver参数决定了我们对逻辑回归损失函数的优化方法,有4种算法可以选择,分别是:
  a. liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。
  b.lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
  c. newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。
  d. sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候,SAG是一种线性收敛算法,这个速度远比SGD快。
  从上面的描述可以看出,newton-cg, lbfgs和sag这三种优化算法时都需要损失函数的一阶或者二阶连续导数,因此不能用于没有连续导数的L1正则化,只能用于L2正则化。而liblinear通吃L1正则化和L2正则化。
  同时,sag每次仅仅使用了部分样本进行梯度迭代,所以当样本量少的时候不要选择它,而如果样本量非常大,比如大于10万,sag是第一选择。但是sag不能用于L1正则化,所以当你有大量的样本,又需要L1正则化的话就要自己做取舍了。要么通过对样本采样来降低样本量,要么回到L2正则化。
  
模型训练时参数调整如下:

model = LogisticRegression(penalty='l2',dual=False,tol=1e4,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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值