据AI科技点评,Kaggle Home信用违约风险大赛日前落幕,总奖金7万美元,一等奖3.5万美元,二等奖2.5万美元,三等奖1万美元。比赛从2018年5月17日持续到2018年8月29日,共吸引了7198支队伍,竞争异常激烈。迈克尔·贾勒率领的阿洛恩队获得了第一名。
引入竞争
很多人很少或根本不用信用卡,所以很难获得贷款,这些群体往往被不可信的借款人所利用。家庭信贷希望为没有银行账户的群体提供合法和安全的贷款服务。为了判断这类群体的贷款是否合法合理,家贷使用了不同来源的数据(电话和交易记录等)。)来预测这些人的偿债能力。基于上述原因,住房信贷发起了一场预测卡格尔贷款偿付能力的竞赛,并提供了丰富的数据。
本次比赛的评价指标为AUC,要求参赛选手或参赛团队对测试集中的每个SK_ID_CURR预测TARGET(还清贷款)的概率,并以文档的形式提交给Kaggle平台。
冠军队成员之一博扬·通古兹在卡格尔上公布了这支球队的具体计划。以下是雷科技评论对该计划的编写。
竞赛冠军团队计划
向前
根据我之前在信用担保方面的经验,不得不承认这个问题是应用机器学习领域最复杂的问题之一。这个领域的数据一般都是非常混杂的,比如数据是在不同的时间段采集的,来自不同的途径,在采集数据的过程中可能会发生变化。此外,很难找到合适的目标变量,这需要深厚的专业知识和优秀的业务分析能力。
顺带一提的是,Home Credit和Kaggle提供的这个数据集非常好,不会泄露用户隐私,很容易机器学习。
基于对信用担保的理解,一般来说,很明显这类机器学习问题需要构建一个好的竞争模型。有两个重要的想法:1。好的特征集;2.不同的基线算法。我们主要有四个充满多样性的数据源,以及少量的二级特征数据源。
数据和特征工程
我们使用的第一个大型特性集在许多内核中都有。这些特点在多对一表上以不同的形式聚合,也有贷款申请时间。我们总共使用了大约700个特征。
特色工程
和很多人一样,对于每个SK_ID_CURR,我们只是基于SK_ID_PREV和SK_ID_BUREAU的特征来构建基本模型。此外,我们还基于除法和减法从application_train.csv中构造了许多特征。最有效的除法运算是用EXT_SOURCE_3除,这对于我们的CV(通过局部交叉验证得到的分数)有一点改进,也带来了列表排名的提升。我们还发现,对类变量使用类编码器可以得到相当好的提升。我为application_train.csv中的所有类变量和previous _ appplication.csv表中的LAST应用程序中的所有类变量构建了类编码器。除了聚合SK_ID_PREV和SK_ID_BUREAU,我还使用数据的不同部分来计算聚合特征。
Previous_application.csv汇总最近3、5次和前2、4次的申请信息。这些应用中的每个变量都经过了交叉验证,使得CV评分得到最大的提升。分期付款. csv汇总最新的2、3、5期贷款还款信息。我在num _ installation _ numer上汇总了第1期、第2期、第3期和第4期,汇总了从days _ installation中筛选出的最新的60、90、180和365天_分期付款,并汇总了所有过期的分期付款。如果ENTRY_PAYMENT的值大于days _ default,则逾期变量定义为1;否则,它被定义为0。POS _ cash _ balance.csv、credit _ card _ balance.csv和分期付款_payments.csv采用相同的方法进行特征聚合。我还使用了来自previous_application.csv的滞后功能。对于每个SK_IDCURR,我在到达最后五个应用程序时使用了滞后功能。
奥利弗:我想大多数参赛者都知道我的特点和数据集。除了公核,我尝试计算年利率,对模型的影响非常明显,也是促使模型获得高分的特点之一。我也尝试在一些表上(查询表和以前的申请表)做预测,但是由于某些原因,我们的模型并没有像其他团队一样得到改进。加上其他在特征工程方面有经验的团队成员,我们的CV/LB有了很大的提升,所以我把精力放在了模型融合上。
菲尔:我做的功能按照重要性从高到低排序(基于对LGBM模式的推广):
1)邻居_目标_平均值_500
2)区域_id
3)债务_信用_比率_无
4)信用_年金_比率
5)prev _ PRODUCT _ COMPONENT
6)天数_信用_平均值
7)信用_商品_价格_比率
8)最后_有效_天数_信用
9)信用_预付款
10)年龄_智力
11)分期_付款_比例_ 1000 _均值_均值
12)年金_至_最大_分期_比率
杨:我对特色的理解是,有些特色来自公众讨论方案,包括过去3、5、10年的信用卡贷款申请、分期付款时间、pos机使用记录,但我修改了时间段,引入了更大的特色差异。同时,我应用加权平均(使用时间段作为权重)来生成一些与养老金、信用卡和支付相关的特征。我觉得这些特征对提取个人信用卡习惯很有帮助。想到的最后一个有趣有用的特性是根据收入、支付和时间生成一些KPI。
博扬:特征选择和压缩
这个比赛也需要特征压缩。各种特征生成方法通常会导致成千上万的特征集,并且大多数特征是冗余的、有噪声的或者同时是冗余和有噪声的。
我尝试了一些简单的方法来减少特征的数量,使用数字频率编码来分类特征,然后使用岭回归来运行一个非常简单的正向特征选择。我过去在图元特征上使用过这种技术,但这是我第一次尝试在原始特征上使用这种方法。令人惊讶的是,这项技术非常有效。
我可以把1600多个原始特征压缩到240个左右。然后奥利弗在基本集上增加更多特征的时候,我就直接把这些特征加到240个特征上,最后达到了287个特征。有了这287个特征,CV评分约为0.7985,LB评分约为0.802-0.803。
当新成员加入团队时,尝试将他们提供的功能与我们的结合起来尤为重要。奥利弗花了很大的精力来区分菲尔的哪些特征与我们的互补。最后,合并了700多个特征集。瑞安和杨加入我们的团队时,重复这样的工作花费了太多的时间和精力。我们只是粗略地比较了哪些特征是不同的,然后将这些不同的特征添加到它们的特征集中。
最后,杨的基础集是所有功能中最好的。他的一个Kernel在私铅板可以得0.802分,在公铅板可以得0.803分,这是最后阶段的前20名。我们想把所有其他特征集的特征和杨的基本特征集结合起来,但是因为时间的原因,我们大概做到了。我们最后留下了1800-2000的特征。我们有一些合并的集合,当我们训练自己的模型时,我们也单独组合特征。
基本模型
我们所有的模型都经过50%的交叉验证。我从一开始就选择了这个,没有任何特别的原因,最后以此为默认值。
奥利弗:我用了LightGBM,FastRGF,试了FFM,但是CV结果比预期低很多(0.76AUC)。
Bojan:我用的是XGBoost,LightGBM,CatBoost,简单回归模型。我在XGB上使用了一组超级参数,在LightGBMs上使用了大约三组不同的参数。大部分的XGB模型都是用gpu_hist在GPU上训练的,而LightGBM模型是在CPU上训练的。CatBoost型号不太好,训练时间长。我认为它们只是帮助元特征的多样性。
Ryan和Yang:我们在工程数据集以及工程数据集和剩余数据集的组合数据集上训练了几个LightGBM模型。瑞安抱着碰运气的心态尝试了FFM,但效果并不好。
Michael Jahrer(神经网络等。):和大多数人一样,我在论坛上看过很多讨论。就AUC而言,神经网络模型不如集成树模型(LGBM,XGB)有效。比赛中如果用神经网络,一开始不会达到0.785,用LGBM可以超过0.79。当精度达到一定水平时,神经网络是一种流行的模型融合的选择,所以我尽量做好。特征工程不是我的强项。一开始我做的很差。团队合并后,我可以使用大家的特征集,效果显著。所有数据集上的结果都是相似的,DAE+NN优于仅NN(高0.005左右)。DAE代表降噪自编码处理,它是神经网络的输入,是一种无监督的技术,可以更好地表达数据。原始功能的数量在100-5000之间,这意味着DAE需要非常大,以确保表示受到过度约束且未被完全占用。最初尝试的几个DAE型号都具有10000-10000-10000的拓扑结构,这意味着功能数量扩展到30,000个。监督神经网络的拓扑是1000-1000,这是我的标准建议,在这里可以正常使用。尝试了更多的神经元后,分数反而下降了。
以下是一些参数设置:
Dae:交换噪声= 0.2,1000历元。监督神经网络:lRate=2.5e-5,dropout = 0.5,约50个历元(直到过拟合),优化对数损失函数。ReLU、SGD优化器、minibatchsize=128和小lRateDecay用作隐藏单元。在GTX 1080Ti上,完全运行50%的交叉验证需要一整天的时间,而DAE占用的时间最多。原始数据用秩高斯归一化,缺失值用0代替。比赛结束时,我尝试减少和增加DAE中的隐藏层数,我认为这样会更好。在这种情况下,得分最高:DAE只包括一个隐藏层,有50,000个神经元,然后连接到一个1000-1000拓扑的监督神经网络,在我们六个人的所有特征集的并集上运行,得分CV=0.794961,public=0.80059,private=0.79433。
在神经网络没有优化的情况下,学习率小的简单LGBM模型优于所有的神经网络模型。LGBM模型得到的最高CV分为0.8039,AUC比神经网络高0.01左右。我觉得神经网络在这里起次要作用。我觉得这里神经网络分数比LGBM差的原因是数据归一化的问题,但是最后对于0.0001的提升,神经网络还是很重要的,就是Kaggle。
模型集成
我们的模型集成分为三个阶段。
每天,当我们得到一个新的基线预测时,我们生成L1密集矩阵,并将其输入到第一层堆栈器(NN、XGBoost、LightGBM和Hillmember线性模型)。我们最终实现了90多项基线预测。随着基线预测次数的增加,玩家排行榜的排名和CV评分的相关性越来越大。我觉得迈克尔的神经网络单独使用的时候不是很好,但是对于稳定CV评分和球员排名的关系很有帮助。
一段时间后,CV评分和排名的提升速度放缓,显然进入了下一阶段。
第二层模型包括一个卷积神经网络、一个提取树和一个爬山线性模型。这时候Silogram建议我们在堆叠模型之前,先添加原始特征。
最后的预测是三个预测的平均权重融合。
迈克尔:我们的神经网络模型是一个成功的堆垛机。这里我用的是一个普通的有监督的神经网络,有一个隐藏层和500个ReLU单元。这里的诀窍是找到一个合理的初始值:lRate=1e-3,lRateDecay=0.96(乘以每个纪元后的Rathy)。压差=0.3也很重要。
菲尔:ExtraTrees L3模型是一个非常浅的模型(max_depth=4)。七个L2模型只增加了一个原始特征AMT_INCOME_TOTAL,这是高度正则化的(min_samples_leaf=1000)。分数为cv: 0.80665,lb: 80842,Pb: 80565。
其他的
如上所述,我们在参数调整上没有投入太多时间。我尝试在XGB参数和LightGBM模型上运行Oliver提供的优化脚本,但是本地结果令人沮丧。当时,我们一直非常依赖模型集成,我们的想法是在不同的超参数上训练几个不同的模型,以避免生成一个高度优化的模型。
Phil发现了一件事,我在论坛上看到有人提到,在训练集和测试集中,有可能把预测结果调整到0.98 AUC以上。这个我们是最后发现的,当时已经没有了。(有人确信,一些排名靠前的团队其实是在探索某种方式来对抗认证和假标签。).
我们也尝试开发了一个预测模型来区分EXT_*特性的发挥程度,那些特性的AUC达到了0.78,但是对于提高CV和公共LB列表的排名没有任何帮助。基于我们的分析,我们认为可能是因为这些特征在训练集和测试集中是一致的,所以虽然公共排行榜上的分数高于本地CV模型,但在其中并没有起到很大的作用。
比赛结束后,我仔细看了看我们的基本模型。结果表明,我们的三款最佳车型可以排在前10名,平均可以达到第一名。在我看来,这说明在这类竞争和问题中,特征工程和特征选择是最重要的。因为我们没有优化最佳特征集,也没有调整训练模型的超参数,所以我觉得很有可能创造出一个可以超越我们之前所有模型整合效果的单一模型。
Via:Kaggle,雷锋的AI科技评论编译。
1.《installment 干货 | 吸引 7198 支队伍参赛,看 Kaggle 信用预估比赛冠军方案》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《installment 干货 | 吸引 7198 支队伍参赛,看 Kaggle 信用预估比赛冠军方案》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/fangchan/1024347.html