转自:知乎 https://zhuanlan.zhihu.com/p/43323121

正文

最优单模已在kaggle分享,本地CV为7993,线上最终的私榜成绩为7996,我们最终融合的成绩为8012,欢迎大家帮我在kaggle点赞。https://www.kaggle.com/xucheng/cv-7993-private-score-7996/

刚刚结束了kaggle竞赛Home Credit Default Risk,在长达2个月的不懈努力下,终于拿到了kaggle的第一块kaggle金牌(23/7265)。18年初拿下toxic第一块银牌,随后拿下了talkdata的银牌和如今home credit的金牌,6个月时间master成就快速达成。哈哈,自我陶醉下,好了,接下来分享一下home credit的参赛心得吧。

home credit在7月的争夺战中曾经一度爬上了榜首,但最终因为本身实力不足,8月里PB未能有任何提升,最终掉至23位。好了,废话到此打住,现在说说本文的宗旨:数据驱动下的Home Credit Default Risk。

一、比赛简介

因为在知乎的专栏写的文章,所以我谷歌翻译了下,感兴趣的朋友可以直接点这阅读原文。比赛目标就是预测一个用户的违约概率。

二、比赛的数据

HOME CREDIT一共提供了7张表,一共218个字段,细心的队友对这些字段进行了翻译,但是这些字段的含义,直到比赛结束我仍然是不明不白的。通过模型输出的重要性,依稀可以分辨出哪些字段对于预约逾期特别重要,但是始终没有一个清晰的认识。真正的风险控制专家肯定明白各个字段的真正含义,以及它对于客户的违约概率意味着什么。创建模型肯定也是从业务经验出发,提取更多业务上可解释的特征。

数据科学真正强大的地方也正是如此,让一个业务小白从数据出发,最终的模型也能达到一个业务专家的业务水平。

三、如何快速达成比赛

优秀的可扩展的代码框架

kaggle是一个相对于国内更OPEN的社区平台,每次比赛都有kaggler提供优秀精巧的开源代码,因此在无任何业务经验的大前提下,有一个优秀的可扩展的代码框架,无疑可以达到事半功倍的效果,本次比赛我是从一个开源的PB成绩0.774的代码框架开始做的,这份代码让我了解到了以下几件事情:

1、哪些特征的重要性非常高,比如说EXT_SOURCE_1~EXT_SOURCE_3、AMT_ANNUITY、AMT_CREDIT等,因此下意识的工作自然是对于这些TOP特征做一些交互的操作,比如说比值,乘积等,看是否能交互出更优秀的特征。

2、接下来的工作,我该从哪里出发,开源的代码提炼的特征虽然不多,但是框架搭的特别棒,一些开源代码未做的特征统计,可以在这个基础上进一步尝试,看线上反馈带来的效果。

通过这些尝试,你的模型在评价效果上将会有一个大幅度的提升。

更多维度的尝试

时间维度的尝试:HOME CREDIT中期的一个提升,就来源于在时间维度的尝试,这个其实也非常容易理解,对于客户的近期行为和远期行为,对于客户违约逾期肯定有着不同的影响,在各张表上都进行了30天、90天、120天、365天不同时间段的数据统计。

行为次数维度的尝试:部分表在行为次数维度上进行了尝试,比如最近5次,10次,15次的行为数据的数据统计,2种维度的统计方法进行了混用,最终选择了一套在PB上表现更优秀的划分策略。

但是随之而来也引入了一个问题,就是特征的共线性问题,通过对特征的共线性统计,存在大量的相关系数为1的特征,虽然LIGHTGBM对于共线性特征不是特别的敏感,但是去掉共线性特征后,PB有一定程度的提升。

数据驱动的模型,这应该是一个必然的过程,因为对特征字段的不了解,盲目暴力的引入特征,导致特征共线性严重,这样的特征在LR或者SVM模型下,表现必然是一塌糊涂,好在干部(XGB,LGB)系列的模型拯救了我们。

更细致的调整参数

通过测试发现,开源模型的参数和自己调优的模型参数,在本地CV上存在相当大的差异,可乐大佬提供的模型参数,CV表现上比原始参数高4个千分点,以往的比赛中往往更注重特征的提取,但是在KAGGLE这样竞争异常激烈的比赛中,显然只怼特征是远远不够的,这也从侧门反映了团队作战的好处。

特征字段的交互

对于一些多个表中都存在的字段,我尝试进行了一些交互操作,因为并不真正了解字段的含义,因此也是采用了暴力测试的手段,因此一不小心又整了一大堆特征出来,最后从中选择了一些特征重要性比较高的特征,但是自己也无法理解暴力交互出来特征的业务含义。最终特征数量在3200个左右,基本是自己这台联想启天商务机的极限了。

STACK,kaggle比赛的屠龙技

Kaggle比赛想要达成更优秀的结果,stack这步操作是离不开的,因为不同模型的侧重点各有不同,通过STACK的操作,可以有效的提升模型的得分,这次比赛我们采用了常规的stack操作,这里就不在赘述了。

运气

本次比赛开榜后震动非常大,金牌区可以说是大洗牌,最终我们能挂在金牌区边缘拿下金牌,运气自然是非常重要了,感谢来自超越妹妹的祝福。

博主笔记

1.发现大部分东西都是基本套路,可以发现一个master或者说比赛得奖,其实就是在于用心和坚持,他是在公开区用的别人的代码为基地开始做提升[从开源的别人搭好的框架开始,能事半功倍]:

(1).从源码中重要度高的特征里面做了变换,这些TOP特征做一些交互的操作,比如说比值,乘积等,看是否能交互出更优秀的特征(尝试)

(2).做一些开源没做到的统计特征,还会有提升(有提升)。

(3).时间维度特征的尝试,在各张表上都进行了30天、90天、120天、365天不同时间段的数据统计(尝试 且有提升)

(4).行为次数维度的尝试:在行为次数维度上进行了尝试,比如最近5次,10次,15次的行为数据的数据统计,2种维度的统计方法进行了混用[时间和行为],最终选择出一套在PB上表现更优秀的划分策略 (大量方式尝试,有提升,很费劲、费事的)

2.对特征的进一步处理:

(1) 造出的大量特征之间共线性的问题,去除共线性高得特征,记住没用的、冗余的特征会干扰模型,影响模型结果[lgb同样会被影响]。 (共线性问题是在对特征字段不了解情况下,盲目一套走,引入大量特征的附带的大问题,这样的有高共线性的特征对于LR或者SVM势必有非常大的影响)

(2) 特征筛选问题,这里他直接使用了特征重要度高的特征,我认为他在说的是 用模型做筛选,通过暴力做特征[各种交互、统计]这样,得到了好几千特征,最后确定下来做了一些筛选,特征数量在3200左右吧。

3.模型上应该是用了树模型方案,加Stacking融合就ok了。 多模型融合会有所进一步的提升,方法上没任何创新。

可以看出关键词:暴力造特征[统计、交互、时间、行为次数(其实相似问题的比赛,对这种特征套路都有很明白的揭露)]、去除共线性、特征筛选【如何从大量特征中提取有效的强特,这是很重要的问题】、Stacking。

kaggle竞赛 - Home Credit Default Risk金牌心得相关推荐

  1. Kaggle:Home Credit Default Risk 特征工程构建及可视化(2)

    博主在之前的博客 Kaggle:Home Credit Default Risk 数据探索及可视化(1) 中介绍了 Home Credit Default Risk 竞赛中一个优秀 kernel 关于 ...

  2. kaggle数据挖掘竞赛Home Credit Default Risk讲解

    1.从常理来说这种预测的结果应该是0,1,也就是分为欺诈和不欺诈两种,一般衡量指标为accuracy,但是如果这样会有缺点,因为可以预测所有人都是不欺诈的,这时accuracy的值就会很大,但这样的方 ...

  3. Kaggle竞赛介绍: Home Credit default risk(一)

    请点击上方"AI公园",关注公众号 本文选自Kaggle 作者:Will Koehrsen 编译:ronghuaiyang Kaggle的信用卡违约风险预测竞赛,非常有参考价值,做 ...

  4. Home Credit Default Risk 违约风险预测,kaggle比赛,初级篇,LB 0.749

    Home Credit Default Risk 结论 背景知识 数据集 数据分析 平衡度 数据缺失 数据类型 离群值 填充缺失值 建模 Logistic Regression LightGBM Fe ...

  5. Home Credit Default Risk(1) — 背景介绍

    总体介绍   Home Credit Default Risk是Home Credit公司在kaggle上的一个信贷风险评估竞赛.其提供的数据文件描述及文件间关联关系如下: 有些金融专有名词尤其是一些 ...

  6. home credit default risk捷信消费金融违约风险模型复现(论文_毕业设计_作业)

    你能预测每个申请人偿还贷款的能力吗?由于信用记录不足或不存在,许多人难以获得贷款.而且,不幸的是,这些人经常被不可靠的贷方利用,例如高利贷,校园贷. 捷信努力为没有银行账户的人群扩大金融包容性.为了确 ...

  7. home credit default risk(捷信违约风险)机器学习模型复现(论文_毕业设计_作业)

    你能预测每个申请人偿还贷款的能力吗?由于信用记录不足或不存在,许多人难以获得贷款.而且,不幸的是,这些人经常被不可靠的贷方利用,例如高利贷,校园贷. 捷信努力为没有银行账户的人群扩大金融包容性.为了确 ...

  8. Home Credit Default Risk(2) —初步探索

      上篇中已经给出了application_{train|test}.csv数据表字段的基本含义,本篇对其进行基本的数据分析,包活异常数据处理,特征变换等,最后给出仅考虑此数据文件,应用logisti ...

  9. 业界 | 如何达到Kaggle竞赛top 2%?这里有一篇特征探索经验帖

    本文作者 Abhay Pawar 多次参加 Kaggle 竞赛,并在 Instacart Market Basket Analysis 竞赛中拿到 top 2% 的名次.他在多年竞赛中总结出了一套特征 ...

最新文章

  1. openssl证书及配置
  2. k8s mysql 配置文件_k8s配置文件模板
  3. 微服务之consul(一)
  4. 比特币一种点对点的电子现金系统是哪一年诞生的_庆比特币诞生12周年|带你回顾比特币的前世今生...
  5. 【优化算法】原子搜索优化算法(ASO)【含Matlab源码 1541期】
  6. windows java 进程_windows下java -jar 后台运行以及杀死后台进程的操作
  7. 汉字编码:区位码、国标码、机内码
  8. 人机大战!人工智能轻松打败美国空军
  9. proteus仿真微型计算机,微机原理与接口技术——基于8086和Proteus仿真(第3版)...
  10. win11 无声音,且扬声器无插座信息 解决方法
  11. js压缩图片到指定大小
  12. [附源码]计算机毕业设计Node.js老薛男生服装网(程序+LW)
  13. html 列表 表格 form表单 文本域 label
  14. php源码 运费计算,php – Woocommerce:获取运输邮政编码以计算运费
  15. APS 与 MES 的区别是什么?
  16. “发烧请假”是面照妖镜,聊聊我以前遇到的奇葩领导
  17. 从信息传递的角度来看Android中的广播和Binder
  18. 【rmzt:动漫俺修罗酷爱主题】
  19. Oracle 10g Scheduler 特性
  20. [Bug Fix]Messy Audio语音电话不清晰问题

热门文章

  1. batocera笔记本调节亮度教程
  2. 什么是极客?听听他们怎么说
  3. poi word转html 根号,根号算法 - 作业部落 Cmd Markdown 编辑阅读器
  4. 金蝶 EAS 编码规则 新增显示且不允许断号
  5. 逆讯图驴企业版,这一次颜值更高
  6. (转)Openbravo ERP架构分析
  7. JSP与Servlet 基础知识
  8. radius pap 加/解密算法实现-golang
  9. 新媒体运营师含金量高吗
  10. 获得PMP证书之后该如何获取续证PDU?