博客迁移之天池糖尿病风险检测弃赛总结

2018.07.15
就打了五天的就放弃的比赛,最后居然排名有128/2522 ???
我都以为跌开top10%了
…… 意外收货

该博文于本人在2018.01.11在csdn首发
https://blog.csdn.net/qrfaction/article/details/79039283

现在看过去还有有一部分可改的方式
比如概率密度等… 不过就不加上去了
现在看几个月前的还没形成个初步方法论的自己感觉想法怪嫩的hh

血糖值预测从开始到放弃

这次开开心心的和师兄们组了个队一起去打比赛,开始成绩不错后来成绩真是风云变幻。。。


在比赛官方交流群里一个人无意间透露了一个trick被我注意到了
在我一番尝试后发现了这个trick
然后发现了排名从浮动高潮逐渐走向低潮又转向高潮的原因
然后我愤愤不平的揭露了这个作弊方式
详见
https://tianchi.aliyun.com/competition/rankingList.htm?spm=5176.100067.5678.4.13b54520outEjm&raceId=231638


我最开始是在钉钉交流群揭露这个的
然后莫名其妙被怼 ??????????
我怕是得罪了一些既得利益者
简直莫名其妙

正题

就打了五天 做的事不多

  1. 批量生成加减乘除组合特征扔给树 选择权重前几名的
  2. 根据上述筛选的特征重复更复杂的组合筛选(效果超显著)
  3. 一个全是连续值的比赛 区间按分位数分段两两组合 效果不咋样于是乎没筛选
  4. Box-Cox将血糖值变为正态分布,重新定义xgb && lgb的损失和评估函数效果不咋样
  5. 模型对高血糖值预测无能
     将均方误差改为三/四次项 尝试扩大大样本值预测不准的loss加大模型对他们的关注度(效果不显著)
  6. 高值样本加权,效果不显著

还未实现的idea

  1. 实现特征运算的表达式求值计算器,便于高效率的批量生成特征和筛选
  2. 用线性模型优化特征的组合权重,从而优化树模型
  3. 线性模型拟合Box-Cox后的血糖值,或者将CNN配合Box-Cox逆变换做激活函数拟合血糖值
  4. 树的叶子节点,模型预测值 配合stacking生成一批新特征
  5. LFM尝试拟合乙肝的缺失值(感觉肯定效果不好,因为确实的特征是一列缺大半)
  6. 修改borderline-smote来生成高血糖样本
  7. 大多数特征偏正态,将其概率密度作为特征
  8. 度量学习获取一个不错的距离度量然后聚类特征

比赛中出现的小事故
代码去量纲做错了。。。
特征四则运算组合效果肯定差了很多。。。因此错失了很多强特征 可惜可惜
还有个难点是特征异常值是不能去的,那个决定了能否预测到高血糖值的糖尿病人
很多看似是异常值实际是模型预测高血糖的关键
而且不能z-score标准化 因为会造成数据正负问题
提出初步方案

  1. 特征除以三倍标准差加均值
  2. 特征除以Q3 + 1.5(Q3-Q1)
    已经弃赛了自然懒得修这个bug了

强强的师兄的几个idea
发现比赛方的数据貌似来自北京的某医院…
于是乎把训练集测试集里的日期相关温度全部爬了过来
原因是温度会影响血糖值的大小…
这也是体检日期是一个还不错的特征的原因…
虽然线上效果不明显
但线下略有提升 我相信这肯定是测试集太小的缘故