美文网首页
天池精准医疗大赛——个人赛后总结(三)

天池精准医疗大赛——个人赛后总结(三)

作者: _从前从前_ | 来源:发表于2018-02-27 22:44 被阅读0次

    一、分析数据

     经过了数据观察、数据预处理、特征工程等前期准备后,就要开始构造训练集喂给模型了。向主办方核实了,本次数据中的血糖值均为空腹血糖值,可判断大于7则患糖尿病,小于7则未患糖尿病。对测试集进行预测发现预测值均小于11,明显不符合真实的数据分布。并且本次比赛评价指标为MSE,模型的精度很依赖于对离群点的预测准确度。举个例子,将6预测成5,带来的误差为(6-5)^2/2000,等于0.0005,而将20预测成5,带来的误差为0.1125,为前者的225倍。换句话说,如何准确预测患有糖尿病的患者的血糖值,成为了这次比赛的关键点,似乎由回归问题可以转化为分类问题了。而我们所使用的回归树模型(GBDT、XGBOOST、LGB),在叶子节点的取值均是平均值,是无法预测出那些高值点的。

    二、训练集的构造

    在5642条数据的训练集中,患有糖尿病有458条,占8.1%,这样的数据分布显然会使模型无法准确预测糖尿病患者的血糖值。于是先将问题转化为二分类问题,大于7的样本为正例,小于7的样本为负例,在医疗领域正负例样本数据不平衡也是普遍存在的现象。我们可以采取重新采样,来构造出相对合理的训练集。

    (1)下采样(Undersampling):下采样方法通过减少多数类样本来提高少数类的分类性能,最简单的方法是通过随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类的一些重要信息,不能够充分利用已有的信息,模型只会学习到总体的一部分。再加之本次提供的数据规模较小,不适合采用下采样的方法。

    (2)上采样(Oversampling):上采样方法通过增加少数类样本来提高少数类的分类性能,最简单的方法就是将少数类样本复制多份,缺点也很明显,会使少数类样本重复出现,增加过拟合的风险。为了降低过拟合的风险,也可以使用基于相似性的数据合成的上采样方法——SMOTE。

    (3)SMOTE:smote算法的思想是合成新的少数类样本,合成的策略是对每个少数类样本a,从它的最近邻中随机选一个样本b,然后在a、b之间的连线上随机选一点作为新合成的少数类样本。可以参考一下这篇文章

    https://www.jianshu.com/p/ecbc924860af

    还有具体封装好的代码,可以学习一下文档

    http://contrib.scikit-learn.org/imbalanced-learn/stable/user_guide.html

    自己在这次比赛中,简单上采样、SMOTE和下采样的方法都尝试了,最终根据结果选用了简单上采样的方法,改变正负样本的比例,构造了新的训练集。(过拟合了A榜导致B榜结果不太理想,后面的总结会详细讲述本人对三种采样方法的选择过程,还是太年轻啊!)

    三、验证集的构造

    因为自己采用了简单上采样的方法重新构造了训练集,无法用Sklearn中的kfold交叉验证,所以只能自己重新构造验证集来调参。我将包含5642条数据的测试集划分为6等份,1、2、3、4、5、6,将1作为验证集,2-6合并在一起使用简单上采样作为训练集;再将2作为验证集,1、3、4、5、6合并在一起使用简单上采样后作为训练集,以此类推重复6次,根据结果进行调参。同时还可以改变划分原始训练集为6等份的随机种子,来检验参数的稳定性。

    四、结果

    根据提交得到的成绩来看,重新构造训练集和验证集使模型的精度大大提高。自己也一直稳定在前50,甚至一直在前10徘徊,整天想的都是如何提高模型的性能,如何提高成绩。整个比赛过程中也没有放弃对新特征的探寻和对整个模型的思考,自己也非常享受这个思考的过程,乐在其中。

    相关文章

      网友评论

          本文标题:天池精准医疗大赛——个人赛后总结(三)

          本文链接:https://www.haomeiwen.com/subject/wfgzzxtx.html