Titanic - (XGBoost,RF随机森林,Fastai-tabular_learner)总结

数据处理

从高分code学到很多表格数据处理的方法,主要是以下几种:

  1. fillna Nan值得填充确实会对准确率有小幅度的提升
  2. 数据增强 使用原始数据为基础生成额外的维度
  3. 连续数据转换 将连续数据分段转换成分类数据
  4. one-hot独热编码 通过pandas.get_dummies()可以轻松实现分类数据的独热编码

算法

表格数据集在小数据量的情况下,决策树家族更有竞争力。采取了一些算法的对比使用,放在Titanic-M.ipynb中,代码地址https://github.com/AshenWithoutFire/Kaggle-FastAI.git 。

性能比较
算法 KaggleScore 优缺点
XGBClassifier(Sklearn版本) 0.76555 调参中等,训练集准确率95%,训练无显示,速度快
XGBoost 0.74880 调参多难以调到最优,训练显示,速度中等
RF(随机森林,Sklearn版本) 0.78229 调参少,训练无显示,速度快
Fastai-tabular_learner 0.75119 调参少,训练显示带图形,速度慢,无需实验α

 综合来说:

  1. RF算法在相同的数据下有更好的性能,因为需要调的参数少,也有更大的优化空间,寻找最优超参数的可能性比较大。唯一缺点是没有训练loss显示,Kaggle也不提供测试集的真实样本标签,所以一天也就十次测试机会。
  2. XGBoost算法在小规模数据集上过拟合严重,而控制过拟合的参数众多会有互相影响。且例如gamma之类的参数增大之后,过拟合是减轻了但是收敛速度慢了很多甚至停在局部最优实际效果有时还不如不调参。这种情况在Sklearn版本未知,因为同样没有loss显示。盲猜数据量过小不能体现性能。一些文章有提到xgb在高维大数据量的情况下性能良好。
  3. Fastai-tabular_learner 表现中规中矩,与决策树系的方法差距可以接受。能够自动寻找学习率,盲猜数据量过小不能体现性能。

 

上一篇:新手指导:教你如何查看识别hadoop是32位还是64位


下一篇:3.6 多任务学习方法