ppd拍拍贷风控大赛数据集实战:信用评估与特征工程全流程

ppd拍拍贷风控大赛数据集实战:信用评估与特征工程全流程 简介一套面向金融风控场景的拍拍贷风控大赛实战数据集适合数据建模学习者、算法工程师和信贷风控从业者。压缩包为7z格式共176个文件约37.37MB以20个CSV数据表、2个XLSX表格和1个IPYNB分析脚本为核心配合67个JPG、28个PNG图表以及HTML/JS/CSS可视化页面覆盖数据清洗、特征探索和模型展示等常见环节。数据集中包含主训练表、用户日志信息表、Kesci 9万级主表等多张核心表整合借款人基本信息、借款还款记录、登录行为日志与信用评估相关字段可用于违约预测、特征工程、异常检测和信用评分模型构建。目前已有1120人学习下载热度较高。借助这份数据可完整演练从数据理解、特征构造、模型训练到效果评估的风控全流程也能支撑特征重要性分析、风险策略制定与模型解释性研究为参赛冲刺和实际业务风控策略落地提供直接参考。 这是一份在很多搞数据竞赛的朋友硬盘里都出现过的经典压缩包ppd拍拍贷风控大赛数据集.7z我当初为了把它玩明白前后花了差不多两个周末踩了不少坑才把整套流程跑顺。先说人话这份数据集解决的是信贷风控里最核心的问题给一个借款用户做信用评估预测他未来会不会逾期或者坏账。无论你是刚接触金融机器学习的新手还是在自己做风控特征工程的老手这套数据都非常适合拿来练手尤其是里面带着时间的用户行为字段很多公开数据集给不到这么细。这篇文章我会从解压这个7z文件开始一直讲到模型评估和常见坑位尽量把我实际操盘的经验都还原出来。1. 这份数据到底在解决什么问题1.1 比赛任务与业务背景拍拍贷举办的这个风控大赛赛题任务往简单说就是二分类根据用户借款申请时的信息、历史还款行为、以及征信相关字段预测该笔借款未来是否会逾期。主办方给出的训练集里包含大量样本每一行是一个用户的借款记录同时带着一个标签列1代表坏样本逾期或违约0代表好样本正常还款。你可能会说这种任务太常见了和网上的信用评分数据集差不多。但其实细节都在业务口径上。比如逾期的观察期是多长30天以上算逾期还是90天以上才算坏账这些直接决定了标签的分布也决定了模型优化的方向。实际比赛中不同口径下坏样本比例可能从3%到10%不等直接套用通用分类流程不一定好用。金融风控领域管这类问题叫申请评分卡业务上要求模型不仅有区分度还要有一定的稳定性和可解释性。这也是为什么后面我会单独讲特征工程和模型评估因为只看准确率会严重失真。1.2 这份数据不可替代的价值市面上有Lending Club、Give Me Some Credit等公开数据但PPD这份数据有几个特色特别适合做深入研究时间切片信息丰富。很多公开数据是已经聚合好的宽表用户只有一行、字段就是最终数值你完全没法做时间窗口衍生。而这份数据里很多行为统计字段是按周期拆开的比如过去3个月、6个月、12个月的逾期次数和金额都有这种结构给特征工程留了巨大的空间。特征维度覆盖全面。既有借款层面的金额、利率、期限也有个人信用层面的历史成功借款、历史逾期还有额度使用、征信查询次数等信息玩起来很过瘾。坏样本比例相对合理。不需要像处理某些极端不平衡数据集那样一上来就要做复杂的采样策略你可以专注在设计特征和调模型上。我的建议是如果你只想快速证明自己会用LightGBM确实跑个baseline就够了但如果你真想理解风控建模的完整链路一定要在字段理解上多花时间把每一列的业务含义搞透。2. 拿到手的第一步解压7z与数据概览2.1 7z压缩格式与解压实操文件名后缀是.7z这种格式很多人不熟悉。7z是一种开源的高压缩率归档格式比zip能多压出不少空间特别适合存放几百MB甚至几个GB的表格数据。代价就是你常用的Windows资源管理器默认不支持打开需要借助外部工具。Windows下我推荐直接安装7-Zip安装后右键压缩包选择提取到当前目录即可。如果你想用命令行可以这样操作7z x ppd拍拍贷风控大赛数据集.7z -o./datamacOS用户如果装了Homebrew可以执行brew install p7zip这样同样能用7z命令。不想装命令行的用The Unarchiver把文件拖进去解压也很方便。Linux用户直接sudo apt install p7zip-full就完事了。解压之前千万要注意磁盘空间。7z压缩率高解压后体积往往要翻好几倍我见过有人只给C盘留了不到1G结果解压到一半磁盘写满直接失败。所以在解压前先看下目标盘的剩余空间这是新手最容易忽略的地方。如果你不想解压到本地想在Python里直接读可以简单封装一下import py7zr with py7zr.SevenZipFile(ppd拍拍贷风控大赛数据集.7z, moder) as archive: archive.extractall(path./data)解压完成之后一定要检查解压出的文件数量和大小最好和赛题说明核对一下。我有一次解压显示成功但里面有个文件是0字节读数据时直接崩了。这种破损文件在下载中断后很容易出现。2.2 核心字段与业务含义不同年份的比赛数据字段可能略有不同但整体维度基本一致。就我实际摸过的数据来看大致可以分几类主键字段UserID、ListingID这类标识字段建模时不作为特征但用来关联和去重。借款信息字段借款金额、借款利率、借款期限、借款类型、还款方式等。这一组直观表达了这笔贷款长什么样是模型判断风险的基础。历史行为字段历史成功借款笔数、历史逾期笔数、历史逾期金额、历史正常还款次数、当前逾期天数等。这部分是风控模型的灵魂直接反映用户过往的还款意愿和能力。征信相关字段授信总额、额度使用率、征信查询次数等。这些字段能体现用户的负债压力和对资金的渴求程度一般和风险呈正相关。时间窗口统计字段类似近3个月逾期率、近6个月平均借款金额这类。它们把行为扩展到了时间维度是最容易做出区分度的地方。目标标签是否逾期也就是我们建模要预测的Y。看完字段别急着开始建模我建议先跑一下df.describe()和df.info()把每一列的缺失率、均值、分布都摸一遍。有很多坑藏在数据里比如某个字段全为0、某个字段异常大、某两个字段高度相关这些都会在后续建模时给你添乱。3. 从清洗到建模的完整实操3.1 数据清洗与预处理细节拿到一份真实赛题数据第一步不是建模而是把数据彻底洗干净。我先做了三件事重复值检查、缺失值统计、类型压缩。重复值方面重点看主键列是否有重复如果有要确认是同一笔借款重复出现还是同一用户的多笔借款这个必须分清楚。缺失值方面我先按列统计缺失率超过50%的字段会严重影响模型稳定性通常直接删除缺失率在10%到50%之间的字段我会保留并构造一个“是否缺失”的指示特征缺失率很低的用中位数填充就可以树模型本身也能处理缺失但填充后特征利用更充分。类型压缩是很多新手会忽略的优化。赛题数据动辄上百万行如果不做处理光是读入就会占用好几个G内存后面训练LightGBM就被卡得动弹不得。我通常这样做import pandas as pd df pd.read_csv(train.csv, encodinggbk) for col in df.columns: if df[col].dtype float64: df[col] df[col].astype(float32) elif df[col].dtype int64: df[col] df[col].astype(int32)这样转换之后内存占用能降一半左右训练速度也会明显提升。如果你的机器内存不太够这一步一定要做。还有一个特别容易踩的坑读入CSV时编码问题。有的文件是UTF-8有的文件是GBK或者GB2312pd.read_csv默认UTF-8直接读就会出现乱码或者报错。如果报UnicodeDecodeError就试着换成encodinggbk或者encodinggb18030读取时多试几个编码总没错。3.2 建模前为什么不能跳过特征工程风控领域的特征工程和其他领域不太一样核心是处理好三件事历史行为统计、时间窗口聚合、比率类特征。历史行为统计是最基础的。直接用原始字段比如历史逾期笔数、历史逾期金额、历史成功借款笔数等模型也能学到一些规律但泛化性通常有限。我习惯在此基础上做比率类特征比如逾期笔数占比、逾期金额占借款金额的比例、成功借款比例这类特征比绝对数值更稳定对不同类型的用户来说也更具可比性。时间窗口聚合是这份数据里最值得玩的地方。因为原数据本身就包含不同时间周期的统计字段我会把它们组合成新的特征比如近6个月的成功借款次数和近12个月的成功借款次数做差就能反映用户最近是不是在频繁借款。再比如近3个月逾期次数除以近12个月逾期次数能看出逾期是偶发还是持续恶化。这类趋势特征在实际业务中非常管用。交叉特征也值得一试。例如借款利率和授信使用率的交叉利率高且额度用满的人往往资金紧张风险偏高。借款期限和月还款额的组合能反映用户的短期偿债压力。不需要做太多复杂的数学变换先把业务逻辑想清楚再做交叉往往更有效。这里特别提醒一下做特征工程时一定要控制特征数量不要一上来就生成几千个特征。特征太多不仅训练慢还容易过拟合。我一般先做一轮核心特征跑模型看特征重要性再逐步迭代增加新特征保持特征集的可解释性。3.3 模型选型与评估指标建模阶段我的标配是“逻辑回归LightGBM”两者配合使用。逻辑回归作为baseline和可解释性参考LightGBM作为主力模型提升效果。如果你的经验比较丰富也可以加XGBoost或者CatBoost做对比但从实际效果看LightGBM在这类表格数据上基本是最优解训练快、调参少、效果稳定。怎么评估模型呢准确率这个指标在风控场景里基本可以忽略因为样本本身是高度不平衡的如果你预测全部为0准确率也可能超过90%但这个模型没有任何实际价值。重点关注AUC和KS这两个指标。AUC反映的是模型对好坏用户的排序能力0.5代表随机0.7以上已经有不错的区分度0.8以上在风控竞赛里就算很优秀了。KS的计算逻辑是累计坏样本占比和累计好样本占比的最大差值业务上更直观地表示能区分出多少风险。在评估代码里我一般这样同时计算AUC和KSfrom sklearn.metrics import roc_auc_score, roc_curve auc roc_auc_score(y_valid, y_pred) fpr, tpr, _ roc_curve(y_valid, y_pred) ks max(tpr - fpr) print(fAUC: {auc:.4f}, KS: {ks:.4f})训练LightGBM的时候我用5折交叉验证配合早停防止过拟合。核心参数不需要一开始就精调先用一组默认偏保守的参数跑通import lightgbm as lgb params { objective: binary, metric: auc, learning_rate: 0.05, num_leaves: 31, max_depth: -1, feature_fraction: 0.8, bagging_fraction: 0.8, bagging_freq: 1, verbose: -1, } model lgb.LGBMClassifier(**params) model.fit(X_train, y_train, eval_set[(X_valid, y_valid)], callbacks[lgb.early_stopping(100)])跑完基线之后再根据特征重要性做特征筛选以及针对num_leaves、min_child_samples等参数做简单调优。我个人的经验是在这个数据集上特征工程带来的提升通常比盲目调参大得多。4. 常见问题与实操心得4.1 我实际遇到过的四类坑第一个坑是训练集和测试集的时间窗口不一致。有人用全部数据做训练结果线上分数很低因为测试集来自更晚的时间段用户行为已经发生了漂移。正确做法是尽量按时间切分验证集而不是随机切分。第二个坑是数据泄露。我在做特征的时候不小心把某个字段用到了未来的信息导致本地验证AUC高达0.95线上却只有0.7。所以每次做特征之前都要反复确认这个特征在预测时点是否真的已知。第三个坑是内存爆掉。原始CSV直接用pandas读进来加上特征工程后内存直接满了训练进程崩溃。后来我把中间特征分块保存成parquet再用的时候按需读取问题才解决。如果你用的是32位Python还要考虑内存上限的问题。第四个坑是中文文件名和列名的编码乱码。解压后所有文件名是中文在Linux环境下经常显示乱码处理起来很麻烦。我后来习惯先批量重命名成纯英文字母再进入建模流程能省下不少烦心事。4.2 给新手的几条建议如果你正准备拿这份数据集做练习我给你几个实际的建议。第一先跑通一个简单baseline再考虑复杂的特征和模型。很多人一上来就拼命造特征、调模型结果一旦出错根本不知道问题出在哪。先把最基本的数据读入、清洗、训练、预测流程走通拿到一个AUC基线再逐步迭代提升这才是科学的节奏。第二重要的不是AUC最后刷到多少而是能不能讲清楚每个特征为什么有效。面试官问起这个项目的时候你如果说“我用LightGBM跑了一个0.8的AUC”对方没什么感觉但你要是能说清楚某个时间窗口特征捕捉了用户资金状况的恶化趋势效果完全不一样。第三保存好你的数据预处理和特征工程pipeline。每次迭代都要重新跑特征如果脚本组织混乱改一个参数就要从最前面重来非常浪费时间。我现在习惯把每一个特征函数化数据字典和版本号都记录下来方便回溯。第四多去看看相关的竞赛方案分享。很多选手喜欢在比赛结束后公开自己的特征工程思路哪怕只是读别人的文字描述也能打开你的思路少走很多弯路。5. 实战中的扩展方向这份数据集的价值远不止完成一次模型训练。如果你有余力可以接着往下延伸几个方向。一个是模型解释性分析用SHAP值去分析特征对预测结果的影响方向验证是不是和业务常识一致。比如授信使用率越高、预测风险越大如果模型学出来的方向相反说明特征或者标签可能有问题。我每次用这份数据自我训练时都会过一遍这个检查流程能发现不少之前忽略的细节。另一个方向是模型融合与阈值选择。把LightGBM、XGBoost、逻辑回归的输出做加权融合然后再结合业务坏账成本去选择最优概率阈值。很多人把模型输出当成最终结果但其实在真实风控场景里阈值的选择直接决定坏账率和通过率之间的平衡这同样值得练手。还有一点是用这份数据做一个端到端的“申请评分卡”分析。不仅能训练模型还可以把概率值转换为标准评分比如转换成300到850分之间的信用分。这个过程涉及分数刻度设计、变量分箱、WOE转换等虽然比直接用LightGBM麻烦但能让你真正理解传统风控模型的构建逻辑对职业发展很有帮助。我个人在反复处理这份数据的过程里最大的体会是数据竞赛和真实风控建模最大的区别不在于模型有多复杂而在于你有多懂数据和业务。ppd这份数据集之所以经典就是因为它把真实业务里会遇到的问题浓缩进了一个压缩包。把这份数据研究透你的特征工程能力、识别数据陷阱的敏锐度都会比只刷公开benchmark的人高出一截。本文还有配套的精品资源点击获取