最近开始入坑数据挖掘比赛,总是听圈内大佬们提到后处理涨分。我就一直很疑惑,一直都是数据预处理,怎么又冒出来一个后处理。在网上学习了之后,决定写一篇文章总结一下。
就我目前学习到的数据挖掘的流程来说,一般拿到数据之后
先进行数据的分析,清洗工作,比如去除离群点,填充缺失的数据。
然后对数据进行处理,比如将object转成categorical类型,把房子的x室y厅z卫分成xyz三个属性…
做特征
写模型,选参数
看特征重要性,融模型
出结果
那么直接上我的定义:
后处理,就是对模型预测的结果进行处理。
也就是在56步之间加一步:后处理。
预处理是在模型预测之前对训练集测试集数据进行处理,预处理+特征工程=模型可以逼近对上限。
后处理则是在模型预测之后对预测结果的数据进行处理,这种方法相对少见,网上相关的博客只有一篇。
举一个最笨的方法,逐个数据修改你的模型预测的结果,手动涨分。
这个方法很low,但是在数据量很小的情况下确实可以提一点点分,而且也算是后处理的一种。
后处理的主要操作步骤是:
1.画出预测数据与实际数据的关系图,这样可以清楚的看到预测数据的误差主要在哪里,以便进行后处理。
2.参照图上误差大的地方,对预测的结果进行处理,让预测结果拟合实际数据。在这个过程中,注意寻找实际数据的规律,按规则进行处理。比如说实际数据在某个区间内都会趋近某个值,那么就可以设置判断语句来对预测的结果进行处理,再比如说分类问题,可以调节决策界限,来达到改变预测结果,拟合实际数据的目的。
在博客
https://blog.youkuaiyun.com/xieyan0811/article/details/80549001
中提到了一个例子:
糖尿病预测的初赛,大家都使用GBDT类模型,很多人都预测不出血糖大于10的,几乎所有结果都在5-8之间。这是由于这种迭代模型,追求的是整体误差最小化,为了保证绝大多数预测正确,就牺牲了人少但血糖高的部分。但实际场景中,如果不能预测高血糖,模型就没用了。
这时用到的后处理方法是:
把偏离正常范围值的乘一个系数,手动拉宽预测范围
完。