拍拍贷风控大赛数据集解析:从原始数据到风控模型实战 简介面向金融风控学习与竞赛实战的ppd拍拍贷风控大赛数据集适合数据科学初学者、信贷风控从业者及Kaggle/科赛类竞赛选手用于练习信用风险评估、用户违约预测等建模任务。压缩包共176个文件以20个csv核心数据文件为主辅以xlsx表格、ipynb分析脚本、png/jpg图表及html/css/js页面素材整体约37.37MB可直接用于建模训练与特征工程复现。目前已有1120人学习/下载。通过这份数据可以体验从特征工程、模型构建到风控策略制定的完整流程参考notebook中的建模思路尝试逻辑回归、随机森林或深度学习方案并利用AUC-ROC等指标评估模型区分违约用户的能力兼顾模型可解释性与业务落地需求是入门金融风控与备赛的实用资料。 做数据竞赛或者信贷风控这行的估计都绕不开一个名字ppd拍拍贷风控大赛。这个比赛当年在圈子里热度很高原因很简单——它是国内少有的、真正开放真实信贷业务数据的比赛不是那种随便造点合成数据糊弄人的。我手头这份“ppd拍拍贷风控大赛数据集.7z”压缩包不大但里面装的东西够一个新手从零开始走完一整套风控建模流程也够老手拿来验证自己新的特征工程思路。这篇东西我想好好拆一下这个数据集里面到底有什么、每张表能挖出什么信息、怎么从原始数据一步步走到一个能用的风控模型以及我在实际跑这个数据集时踩过的坑。无论你是准备入门金融风控、想练手特征工程还是想复现一下当年优胜者的思路这篇应该都能帮上忙。1. 赛题背景与数据集全貌1.1 拍拍贷风控大赛到底在干什么拍拍贷是国内最早做P2P网贷的平台之一业务模式说白了就是撮合借贷。平台上借钱的人成千上万平台方最关心的问题就一个这笔钱借出去对方能不能按时还所以风控就是P2P平台的命门而这个大赛的核心任务就是让参赛者基于平台提供的真实脱敏数据去预测借款用户是否会逾期。具体到建模目标这是一个典型的二分类问题——预测用户“逾期”还是“非逾期”。但这个数据集的难点不在于算法多复杂而在于特征极其稀疏、极其碎片化。用户的还款能力、还款意愿都藏在各种行为记录里需要你去拼凑、去解读。所以这个比赛本质上考的是特征工程能力和对业务的理解而不是谁会用更花哨的深度学习模型。1.2 压缩包内文件结构与数据表解压.7z之后你会看到几个csv文件这就是整个数据集的核心资产。不同渠道流出的版本表结构可能略有出入但大体上包含以下几张表表名大致内容核心价值user_info用户基本信息年龄、性别、教育程度等用户画像底座user_repay历史还款记录评估历史信用行为user_loan借款记录金额、期限、利率等借款行为画像bill_detail账单明细应还、实还、还款时间还款能力与习惯login_info登录日志登录频次、时间段行为活跃度与稳定性你要注意这些都是脱敏后的数据字段名和值都做过匿名化处理。比如年龄可能是一个区间区间学历是编码后的数字用户ID是随机字符串。所以别指望直接从字段名读懂一切很多时候需要你通过数据分布去反推字段的业务含义这也是比赛的一半乐趣所在。2. 数据内容深度拆解与业务洞察2.1 千奇百怪的字段怎么判断一个字段有没有用拿到数据后第一件事不是急着建模而是遍历每一个字段看分布、看缺失率、看和目标变量的相关性。这个数据集里有大量字段是类别型编码值域可能是0、1、2这样的小整数也可能是几百上千的ID类编码处理方式完全不同。我一般分三步走先看缺失率超过90%的字段基本可以直接扔掉再看取值个数如果字段只有两三个取值多半是类别标记直接做编码如果取值非常多且无规律可能是ID类或文本编码要么不建模要么做频次统计。最后看目标相关性单个字段的区分度如果太低就考虑做组合特征或跨表聚合。那时候比赛群里有个共识这个数据集跨表聚合特征比单表字段好用得多。比如“过去30天内登录次数的标准差”、“历史借款金额的均值与最大值的比值”这些特征是从login_info和user_loan两张表聚合出来的信息量远大于原始字段本身。2.2 一张表的秘密从user_repay看用户还款习惯user_repay这张表很有意思它记录了用户每一期的还款情况。很多人一开始只盯着“逾期标签”却忽略了这张表里积累的历史行为模式。我举个例子两个用户最终都没逾期但一个是每个月都是最后一天卡点还款另一个是每个月账单日出账当天就还。这两种人虽然结果一样但信用质量和资金紧张程度天差地别。这种差异性怎么捕捉可以在user_repay里计算“实际还款日与应还日的时间差”然后统计均值、最晚时间差、准点率等。还有一点这个数据集中某些版本包含“提前还款”标记这在国内信贷场景里其实是很好的信号——提前还款的人往往资金充裕或者对利息敏感逾期概率相对更低。这类细节文档里不会明说得自己去翻数据才能发现这也正是这场比赛真正的乐趣。3. 从原始数据到风控模型的完整实操3.1 环境准备与数据预处理既然压缩包是.7z格式第一步自然是解压。Windows用户用7-Zip就能解压Linux或macOS用户直接用命令行解压就行。解压之后按表分门别类放好建议用pandas直接读取编码注意用utf-8或gbk看情况。数据预处理的管道我按这个顺序来检查各表主键确认user_id可以关联去掉全空列和单一取值列填充缺失值——数值型用中位数类别型用众数或单独标记为-1统一日期格式把时间戳转成标准datetime便于后续做时间窗口的聚合数据合并——多以user_info为基底表其他的按需join进来。这里有个容易踩的坑多张表join之后行数会膨胀比如user_loan是“一用户多借款”的结构直接join会让每笔借款重复用户基本信息造成严重的样本重复。正确的做法是先把跨表特征聚合好再拼接到主表而不是盲目地合并原始表。3.2 特征工程从三张表里榨出有效信息特征工程才是这个赛题的主战场。我基于多方经验和当年比赛的讨论整理一份常用特征清单基础画像特征年龄区间、性别、学历编码、注册时长。借款行为特征历史借款总金额、平均每笔借款金额、最大借款金额/最小借款金额、平均借款期限、借款次数。还款行为特征历史逾期次数、最长逾期天数、平均还款时间差、准点还款率、提前还款次数。登录行为特征总登录次数、平均每日登录次数、登录天数占比、最近一次登录距今天数、夜间登录比例。组合特征借款金额增幅、最近三个月借款占历史总借款的比例、还款能力系数月均流水/月均应还。这些特征的产出要写成可复用的脚本因为你后面大概率要反复调。建议分成两层第一层是单表聚合第二层是跨表拼接这样方便排查问题。3.3 模型选型与训练验证这类表格型数据经典机器学习模型的表现往往不比深度学习差而且训练快、可解释性强。我用过的靠谱组合是LightGBM或者XGBoost树模型天然能处理缺失值和类别特征且不用做太复杂的特征缩放。训练时要注意样本不均衡问题。逾期用户占比通常只有百分之几如果直接训练模型会倾向把所有样本预测成“非逾期”——准确率虚高但没有实际用处。对策有三一是用AUC评价别死盯accuracy二是在训练时给少数类加样本权重三是用SMOTE或NearMiss做过采样/欠采样但树模型里更推荐调权重简单有效。验证方案上如果比赛数据是按时间切分的最好也用时间序列切分来验证模型稳定性否则你拿随机切分的验证集分数去评估很可能高估模型在真实场景中的表现。4. 常见问题与排查技巧实录4.1 7z解压与数据读取阶段的坑这个数据集用的是.7z压缩格式如果你电脑上没有装7-ZipWindows自带的解压工具是解不开的会一直报“压缩文件格式未知或损坏”很多人第一反应是文件坏了其实是工具不对。注意不是所有.7z都要解压后才能读取如果你熟悉Python可以直接用py7zr库读取压缩包内的文件但为了操作方便我还是建议先解压到本地再处理。解压后读取csv要注意内存问题。这个数据集总共也就几百MB理论上内存够了但如果你pandas读取时类型推断太智能可能会把某些ID列当int64白白浪费内存。建议read_csv时用dtype参数指定列类型能省不少内耗。4.2 特征拼接与跨表关联的经典翻车点这个比赛里最常见的报错就是join之后数据行数暴增或大量NaN。比如你要用user_repay的还款记录构建用户特征如果直接用mean、max等聚合方式正常不会有问题但如果你不小心把user_loan的多条借款记录join到了user_info上每一行用户信息会重复出现多次后续特征计算就会失真。我自己的排查思路join完以后先看行数如果行数等于主表行数说明没出问题如果行数变多就用groupbyagg重新聚合。另一个翻车点是对时间窗口的处理。如果数据集里用户注册时间和账单时间跨度不一致必须在聚合时先按时间筛选再做统计否则会把未来的信息泄露给模型导致线下验证分数虚高、线上却表现崩塌。4.3 数据泄露问题必须时刻警惕风控赛题最忌讳的就是数据泄露。这个题目中有几个可能的泄露源一是直接用了“当前已经逾期”作为标签去训练而测试集不允许这种信息二是用用户还款记录汇总特征时不小心把目标期之后的还款信息也算进去了三是用了用户ID类的编码直接作为特征这在监督学习里风险极高因为模型可能靠“记住”某些ID来预测完全没有泛化能力。解决方案也简单特征构建时统一按时间截止点做窗口截断训练集和测试集用同一套特征工程代码以及去掉高基数ID字段。比赛里很多队伍线下分数能刷到很高线上却崩得一塌糊涂十有八九就是没处理好泄露问题。5. 个人经验与扩展思考这个数据集虽然已经过去几年但我一直认为它是国内信贷风控入门最好的素材之一。原因有三数据真实脱敏规范字段丰富度刚好在你“跳一跳够得着”的水平。比起很多比赛动辄上亿样本的操作这个数据集的人量级更适合快速迭代思路也适合配合Kaggle上的经典信贷风控赛题一起对比着看。我在实际跑这个数据集时最有感触的一点是模型能给你的提升是有限的特征工程才是决定排名上限的那只手。我当时花了一个周末的时间把一个“历史借款金额均值”拆成“最近三个月均值”和“更早历史均值”就这一拆线下AUC直接涨了0.01。这种收益靠调参是换不来的。如果你已经把这个数据集跑通了我建议你再做两件事一是模仿评分卡的逻辑把LightGBM的训练结果转成标准评分卡看看业务上能否解释得通二是尝试引入一些外部公开的宏观经济数据或地区数据看看能不能进一步提升模型的区分度。这个数据集的上限还有不少挖掘空间。最后给大家一个实在的建议别只盯着跑分把特征工程的过程记录下来写成文档下次遇到类似数据集你就能直接套用套路。毕竟风控这个行业看的是你能不能在有限的特征里尽可能还原出一个人的还款意愿和还款能力。这个数据集就是最好的练手场。本文还有配套的精品资源点击获取