最近挤出时间,用python在kaggle上试了几个project,有点体会,记录下。
EDA,也就是对数据进行探索性的分析,一般就用到pandas和matplotlib就够了。EDA一般包括:
在这步完成之后,要对以下几点有大致了解
数据预处理,就是将数据处理下,为模型输入做准备,其中包括:
理论上来说,特征工程应该也归属于上一步,但是它太重要了,所以将它单独拿出来。kaggle社区对特征工程的重要性已经达成了共识,可以说最后结果的好坏,大部分就是由 特征工程 决定的,剩下部分应该是 调参 和 Ensemble 决定。特征工程的好坏主要是由 domain knowledge 决定的,但是大部分人可能并不具备这种知识,那么只能尽可能多的根据原来feature生成新的feature,然后让模型选择其中重要的feature。这里就又涉及到 feature selection , 有很多方法,比如backward,forward selection等等。我个人倾向于用 random forest的feature importance , 这里 有论文介绍了这种方法。
Model Ensemble有 Bagging , Boosting , Stacking ,其中Bagging和Boosting都算是 Bootstraping 的应用。 Bootstraping 的概念是对样本每次有放回的抽样,抽样K个,一共抽N次。
最后是我的两点心得吧
这篇文章是参加kaggle之后的第一次总结,描述了下kaggle的步骤,通用的知识点和技巧。希望在未来一个月中,能把xgboost和stacking研究应用下,然后再来update。希望大家有什么想法都能跟我交流下~~
update: 更新了关于类别特征的处理方式以及Boosting和Bagging的看法,还有stacking的内容。