信用卡交易欺诈风险预测
数据来源:
Kaggle数据集
匿名的信用卡交易数据,数据集中包含标签字段区分此交易是否是存在欺诈行为
出于用户隐私的保护的需要,数据中的V1-V28特征可能来自于对用户信息特征和其他敏感特征的主成分分析(PCA)结果
字段属性:
Time: 交易发生时间
V1-V28:PCA处理后的用户信息及其他敏感信息
Amount:交易金额
Class:交易类型标签;1:欺诈型交易;0:非欺诈型交易
学习目标:
1)探索数据
要求:
① 读取数据表
② 查看数据的基本情况
2)针对数据存在的问题,应该采取怎么样的特征工程?
要求:
① 分别查看交易金额和交易时间,并对这两列特征进行处理
② 查看V1-V28这些特征与因变量标签之间的关系
③ 对数据进行共线性筛查
3)数据集是否存在分类不平衡的问题,如果存在应该如何解决?
要求:
① 查看数据标签类别分布是否平衡
② 如果存在不平衡的问题,对样本进行重取样(建议采取随机欠取样的方法),获得平衡分类的数据
随机欠取样:抽取所有的总量较少的类别,然后对总量较多的类别进行随机抽样,抽取和总量较少类别一样多的样本,构成采样均匀的数据集
4)如何进行模型数据预处理?
要求:
① 在平衡取样的数据集上对时间、金额特征进行标准化处理
5)选取不同的模型进行模型训练并对比模型效果、优化模型效果,确定最终预测模型
要求:
① 使用留一法进行数据集划分,验证集比例:30%
② 选取至少两个不同类型的分类算法进行欺诈风险预测模型训练,并对比模型效果(kaggle数据提供方推荐以AUC值来评价模型),选出最佳模型
偏态处理
取log
df[‘Amount’] = df[‘Amount’].map(lambda x: np.log(x) if x>0 else 0)
增加时间特征:小时、分钟
timedelta = pd.to_timedelta(df[‘Time’], unit=‘s’)
df[‘Time_min’] = (timedelta.dt.components.minutes).astype(int)
df[‘Time_hour’] = (timedelta.dt.components.hours).astype(int)
查看其他特征跟欺诈的关系

相关性举证,检查共线性问题
plt.figure(figsize=(48,24))
sns.heatmap(df.corr(),linewidths=0.1,vmax=1.0,
square=True, linecolor=‘white’, annot=True)
plt.show()
未完,待续。。。。
转载:https://blog.csdn.net/qq_40323746/article/details/104521634