第二次参加数据挖掘比赛体验总结

本文是作者参加数据挖掘比赛的总结,分享了从数据预处理、特征工程到模型选择的经验。重点探讨了xgb和lgb模型在处理空值、异常值以及正负样本不均衡上的表现,并提供了模型代码示例。在特征工程中,作者强调了对数据的理解和特征关系的探索,提出了一些建议和技巧。
摘要由CSDN通过智能技术生成

总结写晚了,一个多月过去才想起来写。

言归正传,比赛是行里的预测,给了个人信息、历史贷款等数据,让预测贷款是否逾期的概率。模型我尝试了xgb,lgb。一开始走了很多弯路,包括使用SMOTE和ONE-HOT并且填充多种特殊值进行尝试,后面发现其实xgb,lgb都有自己对空值,对需要进行onehot的行列进行特殊处理。在这篇博客记录一下自己所走的弯路

1.初情况分析

拿到数据后,第一件事是应该先看我们的训练集输入、训练集输出表格的行列数。对于一对多、多对一的表格数据,对于表格内的聚合,表格外的关联与聚合,都要仔细考虑。并且根据列的性质,考虑采用哪几种参数合并计算,进行哪种计算。

在做聚合时,有两种策略,一种是尽可能多的计算参数种类(平均数、中位数、最大值、最小值、极差、方差…等等)。即,在训练模型时建立尽量多的列,可以这样先跑一次模型,后面做featrue score时,取出权重最高的前N列的列名(N的值需要多次尝试,再欠拟合和过拟合之前寻找最佳模型),再拿去喂给模型,使得这些真正影响模型的featrues更高的权重。

例如在agg 多对一的表格时定义以下15种参数计算:

def featureagg(train_history_concat1,features):
    H=pd.DataFrame()
    
    for i in features:
        H['{}_mean'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].mean()
        H['{}_max'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].max()
        H['{}_min'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].min()
        H['{}_std'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].std()
        H['{}_var'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].var()    
        H['{}_median'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].median()
        H['{}_sum'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].sum()
        H['{}_skew'.format(i)]=train_history_concat1.groupby('历史申请编号')[i].skew</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值