打胶机厂家
免费服务热线

Free service

hotline

010-00000000
打胶机厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

进入kaggle竞赛前2的秘诀_[#第一枪]

发布时间:2021-06-07 17:30:39 阅读: 来源:打胶机厂家

训练集与试验集特征趋势的比较

Featexp计算了在这些图上显示的两个指标,这些图有助于测量噪声:

趋势相关(见测试图): 如果一个特性在训练集和评估集上不具有相同的趋势w.r.t.目标,它会导致过度拟合。这是因为模型正在学习一些在测试数据中不适用的东西。趋势相关性有助于理解 训练集 / 训练集趋势的相似性,并用于计算训练集和测试集的平均目标值。上述特征具有99%的相关性。似乎不是噪声!

趋势变化: 趋势方向的突然重复变化可能意味着噪声。但是,这种趋势变化也可能发生,因为该柱子表示的人群在其他特性方面具有非常不同的特征,因此,它默认的违约率无法和其他人群相比。

下面的特征不具有相同的趋势,因此具有低的趋势相关性85%。这两个指标可以用来去掉噪声特征。

噪声特征示例

当有很多特征并且它们彼此相关时,降低-低趋势相关特征效果很好。它可以减少过拟合和其他相关特性,避免信息丢失。不要删除太多重要的特性也很重要,因为这可能导致性能下降。另外,您不能使用特性重要性来识别这些有噪声的特性,因为它们可能相当重要,但仍然非常有噪声!

使用来自不同时间段的测试数据会更有效,因为这样您就可以确定特性趋势是否会随着时间的推移而保持不变。

featexp中的get_trend_stats()函数会返回一个具有趋势关联和每个特性变化的dataframe。

from featexp import get_trend_stats

stats = get_trend_stats(data=data_train, target_col='target', data_test=data_test)

get_trend_stats() 返回Dataframe

让我们尝试在数据中删除趋势相关性较低的特征,看看结果如何改进。

使用趋势相关不同特征选择下的AUC

我们可以看到,特征趋势相关阈值越高,特征下降,排行榜上(LB) AUC越高。不删除重要的特性进一步将AUC提高到0.74。有趣的是,测试AUC的变化没有 排行 AUC大。完整的代码可以在featexp_demo 笔记本中找到。

3.特征工程

通过查看这些图,有助于创建更好的特征。仅仅是对数据有更好的理解就可以产生更好的特征工程。但是,除此之外,它还可以帮助您改进现有的特征。让我们看看EXT_SOURCE_1的另一个特征:

特征 与 EXT_SOURCE_1的目标图

EXT_SOURCE_1的高价值客户的违约率很低。但是,第一个柱(大约8%的默认值)没有遵循特征趋势(先上升后下降)。它只有-99.985左右的负值,而且人口众多。这可能意味着这些值是特殊值,因此不遵循特征趋势。幸运的是,非线性模型学习这种关系不会有问题。但是,对于逻辑回归这样的线性模型,这些特殊的值和空值(将作为一个单独的 柱 显示)应该由一个具有相似违约率的 柱 赋值,而不是简单地用特征均值进行赋值。

4. 重要特征(特征选择)

Featexp还帮助您判断特征的重要性。DAYS_BIRTH和EXT_SOURCE_1都有很好的趋势。但是,EXT_SOURCE_1的种群集中在特殊的值柱子中,这说明它可能不如DAYS_BIRTH重要。基于XGBoost模型的特征重要性,DAYS_BIRTH实际上比EXT_SOURCE_1更重要。

5、特征调试

查看Featexp的图可以通过以下两种方式帮助您捕获复杂特征工程代码中的bug:

零变异特征只显示一个柱子

1、检查特征的总体分布是否正确。我个人曾多次遇到过类似于上述的极端情况,都是由于小的bug引起的。

2、在查看这些图之前,总是假设特征趋势是什么样子。特征趋势看起来不像您预期的那样,可能会提示一些问题。坦率地说,这种假设趋势的过程使得构建ML模型更加有趣!

6、遗漏特征检测

从目标到特征的数据遗漏将导致过拟合。 遗漏的特征一般具有很高的重要性。但是,理解为什么在一个特征中发生泄漏是困难的。查看特征图可以帮助您实现这一点。

下面的特征在' null ' 柱子中有0%的默认值,在所有其他的柱子中有100%的默认值。显然,这是遗漏的极端情况。这个特征只有在客户默认时才有值。那么这个特征是什么,这可能是由于一个bug,或者该特征实际上只是为默认用户填充的(在这种情况下,它应该被删除)。了解遗漏特征的问题将导致更快的调试。

理解为什么一个特征是应该要去掉的

7、模型的监控

由于featexp计算两个数据集之间的趋势相关性,因此它很容易用于模型监控。每次重新训练模型时,新的训练数据可以与经过良好测试的训练数据进行比较(通常是首次构建模型时的训练数据)。趋势相关可以帮助您监控特征w.r.t.是否有任何变化,它与目标的关系。

· · ·

做这些简单的事情总是帮助我在现实生活和kaggle比赛上建立更好的模型。使用featexp需要15分钟来查看这些说明文档,这绝对是值得的,因为在那之后你就不会找不到方向了。

对于探索特征,您还发现了什么其他有用的技巧和提示?我一直在寻找反馈。在评论中让我知道,或者通过abhayspawar@gmail.com联系我。感谢您的阅读!雷锋网雷锋网

想要继续查看该篇文章相关链接和参考文献?

长按链接点击打开或点击【进入Kaggle竞赛前 2% 的秘诀】:

http://ai.yanxishe.com/page/TextTranslation/1201

AI研习社每日更新精彩内容,观看更多精彩内容:

这 25 个开源机器学习项目,一般人我不告诉 Ta自学习 AI 智能体第二部分:深度 Q 学习机器学习 2019:AI 发展趋势分析领域自适应发展回顾:2017

等你来译:

2018.11十大机器学习热门网文AI出错孰之过?永远不要盲目相信ML/AI如何用机器学习创造价值?机器学习一旦学会了识别电影吸烟镜头,还怕它识别不了别的吗?

其他行业展会

银行点钞机货源

冷轧板卷批发