第一种情况:从5000个实例中找到包含5个实例的类别 。(血糖超20)
第二种情况:从5000个实例中找到包含100个实例的类别 。(血糖超11.1,尿糖病)
第三种情况:从5000个实例中找到包含1000个实例的类别 。(血糖超6.1,不正常)
【实战天池精准医疗大赛之二_再接再厉】第一种情况下,类中只有5个实例,实例太少,无法取均值,因为只要其中一值太大或太小,都会严重影响均值 。此时,每个实例都很重要,可以考虑使用距离类的算法,比如K近邻 。另外,可以查看这些实例中各个特征与均值的差异,从而构建规则 。
文章插图
第二种情况下,类中有100个实例,占整体的2%,这些实例之间可能有一些重合的特点,可以统计的一些共同特征,一般不止一种模式,可尝试聚类,找到一些规律 。也可以用类的统计特征和整体的统计特征相比较,或者考虑贝叶斯类的算法 。?第三种情况下,类中有1000个实例,占整体20%,这也是最常见的一种情况,它不再是从正常中找异常,而是从正常中找正常,基本属于大地问题了,有1000个实例,量也足够大,必然涵盖了很多种情况,可以考虑分类树比如GBDT类型的算法 。
以上三种情况都是从整体中选出少数实例,里面有一个隐含的特征非常重要:整体的均值,它的作用就像是人的常识一样 。
5. 算法
选择算法上有个误区:非此即彼 。我们希望把每个实例都正确分类,但这往往是不可能的 。比如在本题的情况下,可以先用GBDT的算法做一个 。在改进的过程中,选择一些规则类的算法 。
这里指的规则,比如说,我们只关心血糖高于11.1的(正例),就可以从树分类器上切出一些只含有正例的分枝,而并不关注树的其它部分,从而生成一套规则集 。预测时,符合规则的按糖尿病处理,不合规则的再用预测 。
6. 调参
本题中我试用过SVM, RF, ,,评分最高的还是和,除了速度有些差异以外,结果几乎是一样的,使用的是的cv调参 。
需要注意的是,有的参数还是需要具体问题具体分析,不能只依赖自动调参,比如说,像最小叶节点这种参数,一般为避免过拟合,自动调参会建议5-6,但本问题中血糖超过20的只有4个实例,而且明显不能归为同一类,如果限定了最小叶节点为5,那这种大值就永远预测不到了 。
7. 竞赛方法
一开始觉得技术圈里的交流实在是太少了,和没法比(虽然中的文章和示例也主要在新手学习区) 。后来进了钉钉群,发现还挺热闹的,可能因为群里反馈更快,很多东西就在群里交流了,结果也没能记录下来 。尽管大家不会在钉钉群里详细讲算法,但有时只言片语也有很大的启发作用,尤其是在没有思路的情况下 。另外,有的人会试一些算法,然后公开结论,这样也能少走很多冤枉路 。
另外需要注意的是调整心态,反复被踢出排行榜的心态必然不好,于是很想打回来,不断寻找下一次提交的目标,每天提交两次,每个计划都是8小时以内的,不断寻找部局最优解,微调再微调 。但如果不在整个结构上调整,提分会特别有限 。
- ABAP项目砖家之旅-screen和表单项目实战
- windows服务器被当矿机的问题处理实战-conhosts.exe
- PythonC++相互混合调用编程全面实战
- 一 Django 企业级接口自动化测试平台实战
- django项目实战基于Python实现的飞机票销售系统
- 九 爬虫实战系列:知乎热榜全爬取及词云制作
- Elastic search入门到集群实战操作详解(原生API操作、spring
- 华为交换机——策略路由配置实战
- 如何提高双打发球质量,减少失误[实战经验分享]
- C语言项目实战:《连连看》基础项目丨460 行源码注释