逻辑回归
2021-08-05 09:52:11 0 举报
AI智能生成
介绍逻辑回归的原理、使用方法、以及制作评分卡过程。
作者其他创作
大纲/内容
评分卡
1、数据预处理
1、去重
drop_duplicates(inplace=True).reset_index()
业务收集数据的时候重复录入
2、查看缺失值占比
df.isnull().sum()/df.shape[0]
df.isnull().mean()
一定要和业务对接,缺失值产生的原因:可能是漏填、故意填等
3、填充缺失值
fillna()填充
df["收入"]=df["收入"].fillna(df["收入"].mean())
随机森林填充
4、异常值
describe([0.01,0.1,0.25,0.5,0.75,0.9,0.99]).T
有的时候异常值是重点分析的,比如:视频播放量超高,分析原因
但是,有些数据很离谱
年龄、收入为负
违约次数超高(一年违约98个月)
如果业务不确定数据产生的原因,删掉
偏态数据
为什么不同意量纲、标准化数据分析?
业务要求,为了让业务理解起来更方便
5、样本不均衡
y.value_coutns()
0占比99%
1占比1%
1占比1%
实际违约的人不多,或者违约的人在后期会把钱还上
上采样后的数据
from imblearn.over_sampling import SMOTE
sm = SMOTE(random_sample=42)
x,y = sm.fit(X,y)
sm = SMOTE(random_sample=42)
x,y = sm.fit(X,y)
2、划分训练集和测试集
将划分好的数据保存为csv数据
3、分箱
4到5个最佳,不能超过10个
IV值用来衡量特征值的信息量
n:分箱的个数
good占比:该分箱中好客户占整体的比值
bad占比:该分箱中坏客户占整体的比值
good占比:该分箱中好客户占整体的比值
bad占比:该分箱中坏客户占整体的比值
IV<0.03 特征几乎不带有效信息,可以删除
IV并非越大越好,平衡IV值和分箱个数
达到的效果
组内差异小,组间差异大
使用卡方检验来对比两个分箱之间的相似性,P值很大,说明他们非常相似,可以合并为一个分箱
df["age_cut"] = pd.qcut(df["age"],retbins=True,q=20)
4、WOE映射到数据中
df2['age'] = pd.cut(df['age'],bins).map(woe_dict)
测试集直接用训练集的区间划分映射
5、建模
from sklearn.linear_model import LogisticRegression as LR
lr = LR().fit()
lr = LR().fit()
模型评估
ROC曲线
纵坐标:TPR
召回率
横坐标:FPR
1-召回率
验证模型预测效果以及模型捕捉到少数类的水平高不高,
随着模型捕捉少数类的水平越来越高,判断错误类的概率就越大
随着模型捕捉少数类的水平越来越高,判断错误类的概率就越大
斜线表示:多判对一个1就要多判错一个0
AUC:曲线构成的面积,面积越大,效果越好
6、制作评分卡
A、B为常数
两个假设
某个特定违约概率下的预期分数
指定违约概率翻倍的分数(PDO)
例如,假设对数几率为1/60的时候,对应的特定分数为600,PDO=20,
当对数几率为1/30的时候,对应的分数为620。带入公式就可以计算A、B的值
当对数几率为1/30的时候,对应的分数为620。带入公式就可以计算A、B的值
基础分
base_score = A-B*lr.intercept_
特征对应的分数
age_score = woe['age']*(-B*lr.coef_[0][0])
年龄的每个分箱对应的分数
base_score+age_score
微信公众号回复《逻辑回归》免费领取
概述
名为回归的分类器
由线性回归变化而来的,一种用于分类问题的回归算法
模型
线性回归
著名的最小二乘法就是用来求解线性回归参数的
sigmod函数
图像及性质:
形状为“S”型曲线;
当x趋近于负无穷大时,y趋近于0;
x趋近于正无穷大时,y趋近于1;
x为0时,y为0.5;
他能够将任意实数映射到0和1之间,使得他可以将任意值函数转为二分类函数
形状为“S”型曲线;
当x趋近于负无穷大时,y趋近于0;
x趋近于正无穷大时,y趋近于1;
x为0时,y为0.5;
他能够将任意实数映射到0和1之间,使得他可以将任意值函数转为二分类函数
逻辑回归
优点:
1、对线性数据拟合很好
2、比其他分类模型(SVM、RFC)计算速度快
3、以类似概率形式返回结果,且在(0,1)之间
1、对线性数据拟合很好
2、比其他分类模型(SVM、RFC)计算速度快
3、以类似概率形式返回结果,且在(0,1)之间
缺点:
1、对非线性数据效果不好
2、类别较多,特征共线性高的数据拟合效果差
1、对非线性数据效果不好
2、类别较多,特征共线性高的数据拟合效果差
参数求解
随机梯度下降求解参数
sklearn
linear_model.LogisticRegression
评估指标
metrics.confusion_matrix
混淆矩阵
metrics.auc_roc_score
AUC_ROC曲线
metrics.accuracy_score
精确度
参数
penalty、C(损失函数)
可选参数:L1、L2,默认使用L2
若选择L1,则solver只能使用 liblinear 和 saga
不求解参数的模型是没有损失函数的,比如:决策树,KNN。大多数机器学习算法是没有损失函数的
为了防止模型过拟合,使用正则化
L1正则化
L2正则化
L1会将参数压缩到0,L2会将参数尽量小,但不会为0
C越小,损失函数会越小,模型对损失函数的惩罚项越重,正则化的效果越强,参数会被压缩的越小
max_iter(随机梯度最大的迭代次数)
随机一个初始点,前进的方向就是该点的梯度方向
梯度:对其自变量求偏导构成的向量
如果没有达到最佳的次数,sklearn会报警告
如果超过最佳参数,迭代会停止
lr.n_iter_ 查看最佳次数
multi_class(分类)
ovr(二分类或者一对多)、multinormal(多对多分类)、auto(自动),默认为auto
solver(参数求解器)
liblinear(坐标下降法)默认值
不支持多分类问题
libfgs、newton-cg、sag、
class_weight(样本不平衡)
标签中的某一类占有很大比例,比如:违约与不违约,犯罪与未犯罪
给少量的标签添加更高的权重,默认为None
balanced,对标签进行均衡
主流使用采样法:重复样本采样,将样本标签比例一致(上采样)
0 条评论
下一页