Santander Customer Transaction Prediction-EDA

 1.1 load data,train和test 都有20万个样本。

train 有202个特征,test 有201 个特征,多的那个target。target 是二进制的,1 是有交易,0 是没有交易。ID_code 是每行独立的特征,对target 没有影响。其他特征被匿名化,用var_0 到var_199标记。没有缺失值。

10.05% 是类别1,89.95%是类别0.

1.2 相关性

训练集和测试集中,从var_0 和var_199 之间的相关性极低。变量之间的最相关性是2.7e-8。最高的相关性是0.00986,target 与其他特征的相关性稍高。最高的是0.08。

1.3 唯一价值计数

最小的唯一值计数是var_68,在训练集中只有451个唯一值,在测试集中只有428个唯一值。可以作为一个分类变量了。

最高的唯一计数是var_45,它在训练集中有169968个唯一值,在测试集中有92058 个唯一值。

唯一值训练集和测试集相差最小的是var_68 ,训练集唯一值计数是451,测试集唯一值计数是428。

相差最大的是var_45,训练集是169968,测试集唯一计数是92058,

而且当特征的唯一值计数增加时,训练集唯一值计数与测试集唯一值计数之间的差异也会增加。

1.4 阳性样本的分布的四分位数

每个特征在阳性样本中的分布都很相似。在第一个四分位数中,有94个特征的百分比最高,在第四个分位数中,有101个特征的百分比最高。

在第二和第三,只有5个特征具有最高的百分比。

在第一个四分位数的阳性样本的百分比为14.35%,85.65% 为负样本,第四个四分位数的阳性样本百分比为13.43%(86.57%为负。),第二个四分位数的阳性样本的百分比为10.34%(89.66%),第三个四分位数的阳性样本的百分比为10.05%,(89.95%)。总的来说就是在第1和4的四分位数的值更有可能是正样本。

1.5 训练和test的特征分布

如果要设计与分布相关的功能,则训练集和测试集应具有相同的分布。但是,训练和测试集的分布并不完全相同。

唯一值计数小于训练集

1.6 特征的目标分布

许多特征有好的分割点和巨大的峰值,这解释了为什么简单的lgb模型可以达到0.9 的AUC。

尾部分布的差异更大。

1.7 结论

数据不平衡是很常见的,过采样或欠采样,由于数据集足够大,因此重采样不会导致拟合不足。

训练集具有比测试集更多的唯一值,因此测试集的某些部分很可能是合成的。

2 特征工程和数据增强

2.1 分离真实和综合测试数据以及魔术特征

用唯一值计数来识别合成的样本,如果在一个特征中至少有一个独立的值,该行为实数,否则为合成的样本,这个方法可以捕获test 中特征分布峰上的异常凸起,magic 特征是从train 和test 中的真实样本的组合中提取的。

2.2 数据扩充

数据不平衡,对数据进行过采样会大大提高CV和LB 得分,方法是来自别人的kernel。

2.3   四分位排名(未使用)

按照四分位数对每个值进行排名,将每个特征的四分位数按照1类百分比排序,之后将1,2,3,4等级 映射到排序的四分位数。 这样特征中具有最高1类分布的四分位数将获得最高排名,对行中的每个值进行排序,然后根据等级进行求和和缩放,

存在的问题: 决策树可以捕获分布,因此在lgb 中不是很有用。

2.4 目标编码(未使用)

是通过特征平均target 值,它计算量每个值的个数和每组的平均值,之后得到的平滑均值来替代特征,target encoding 需要在交叉验证的fold 中使用,否则会泄漏数据。

2.5  KMeansFeaturizer (Not Used)

KMeansFeaturizer 是通过scikit Kmeans 和OneHotEncider 得到的,首先记录通过有target 和没有target 被分到k 个group,

为了使结果可靠,应使用不同的种子多次初始化Kmeans,然后将其混合,这个方法为数据集添加了许多新特征,时间花费大。

2.6 特征转换(未使用)

这割功能用于模拟特征转化,是通过目标分布中的重叠区域来增加信息增益,通过减少重叠区域,lgb 可以进行更好的拆分,转换后的特征可以作为新特征添加到数据集中,也可以根据模型的性能替换旧特征,也可以用其他特征之间的转换和交互的组合。

NN 和lgb 结合。

各类样本不均衡,交叉验证是采用StratifiedKfold ,在每折采样时各类样本按比例采样,采出来的样本,正负例的比例保持不变。

 

3 ref:https://www.kaggle.com/felipemello/step-by-step-guide-to-the-magic-lb-0-922

找magic 

3.1 行不通的方法:特征的加减乘除:+,-,*,/,log,tanh,分布,概率,时间序列,目标编码,数据轮换,遗传编码,过采样,欠采样,不同的模型。

使用train_test_split 来加速内核,而不是kfolds。

通过多个kernel和相关的discussion 发现test 中有虚假数据。

因此我决定使用这两种想法:合并没有假数据的训练集和测试集数据,为每个变量统计了 唯一值的数量然后训练了模型,这个可以打破0.901

3.2 将特征分裂参数设置为1

Feature fraction 是lgb 模型的参数,从0到1,表示在每次训练中使用到的数据的百分比,原来是0.3 ,设置为1 后CV是0.909。

3.3 CV 0.913

值频率的每个新特征只对有些特征有用,但是400个特征需要很长的时间去跑。

一个个跑LB 分数相同,因此每次训练2个特征。

3.4 优化参数 CV0.920 LB

由于模型只需要几分钟去train,因此测试数百个参数变得很容易。lgb 的迭代次数很重要,需要设置early stop。

3.5  为每个特征的结果赋予权重 0.922

根据每列的AUC分数为每列赋予权重。

可以尝试用其他方法来优化这些权重,例如贝叶斯优化器,但是要确保不会过拟合。最好的方法是使用分层 k fold ,然后用权重。

4 双峰分布是正太分布的自然现象。

4.1 某些变量具有许多频率组,这些组的样本量很小,小于100个,

为了避免过拟合,必须每组的test+train 至少2000个样本。

4.2 双峰分布

完成了分组后,他们显示了每个变量的前6个频率最高的pdf,但也不是所有的特征都是双峰的。

后续:1)可以尝试证明对lgb 来说,双峰是没有用的。

 2)由于有200个不同的模型,因此不必为所有变量都使用一组参数,而是可以选择一组最适合它们的参数。

3) 用NN,合并。或者单纯使用纯概率,而不是lgb。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值