实战美年健康 AI 大赛之二 _ 相关问题与思考

#算法实战

1. 说明

  上次把钉钉号写回复里了,最近就有不少师兄加我,问一些关于比赛的问题,五一后可能也没啥时间回复了,下面就把常见的问题统一总结一下,只是我个人理解,欢迎大家纠正指导。

2. 你用了哪些方法做到 0.286?

  说出来可能有人不信,我只用了五折的 lightgbm,参数都没怎么调,去缺失值,去噪,特征选择,归一化,模型融合,目前为止都没做,所有时间都花在 NLP 上了,其中很多试尝还在进行中,还未加入模型,也不知最终能不能提分。

  目前的方案中,一方面是把一些数值字符混合型数据变成数值型代入模型,另外还有在做 NLP 时发现的一些关键性的字段,提取出了其中是否含有某个关键字作为新的特征,总共涉及不到 10 个特征。

3. 怎么提分?

  常被问到的一个问题是被卡在某一瓶颈了,怎么提分?我觉得大多情况是特征不足。如果以数值为主,要多看看自然语言处理,再找些特征,毕竟特征决定了上限,而优化模型只能是不断接近该上限。

4. 不做 NLP 最高多少分?

  这要看如何区分数值特征和文本特征,我的数值特征有 2000 多个,去掉缺失值多的也有 1000 多。

  是否使用 NLP 是很抽象的界限,像“详见纸质报告”和数值中的“单位”,“增大”,“减少”,对它们进行处理后数值变量会增加很多,这种处理算不算 NLP 呢?有人说用纯数值能到 0.3 以下,我觉得主要还是看怎么判定数值特征。

5. 从文本提取特征的方法都有什么?

  有的文本特征我处理成:一个旧列对应一个新布尔列/数值列/枚举列,有的是一个旧列对应几个新列,主要还是和文本内容相关。

  特征有两千多列,确实不能一一分析,但仔细看一下,去掉可转成数值和枚举的特征之后,纯文本的特征顶多一百来个。

6. 特征多好,还是特征少好?

  我觉得这就好比破案,线索肯定是越多越好,但真正用得上的,其实没几个.不是多少的问题,是质量的问题.

  一开始肯定要通过搜索,组合的方式寻找更多的特征,尤其像双高这种赛题,包含在文本中的特征太多了.但是在后期代入模型时,去掉一些无用和干扰的特征,速度和质量都会提高.

  在大数据集中的无用特征,会降低性能;在小数据集中的干扰特征,会过拟合测试集.美年数据相对比较多,加了无用特征降分的影响其实不是太大,就是比较花时间(降也降不了太多)。

  所以我觉得应该是:寻找更多高质量特征,去掉低质量特征."模型狗代言人"在糖尿病比赛 top2 技术分享贴(在天池精准医疗大赛的技术圈),"北方的郎"在盐城上牌答辩上(在往期直播中),都介绍了特征筛选方法及其效果.

7. 有什么自然语言处理相关的书籍?

  乔姆斯基是现代语言学的泰斗级人物,传说他著作的引用率排名人文领域的前 10 位(仅次于马克思,列宁,莎士比亚,圣经,亚里士多德,柏拉图和弗洛伊德,排在黑格尔和西塞罗之前).他的书就是所谓"经典著作":人都希望已经读过,但却没人愿意去读.比较学术性,需要花大量时间和精力。中文译本也不多,他的理论在研究过程中不断进化,如果想看,建议看他后期的作品。反正我是读不下去:P

  我比较喜欢史蒂芬•平克,他的书可以归类为:自然语言,生物科学,心理学,或者人工智能.幽默且文笔非常好,看起来比较轻松.做自然语言处理,推荐看他写的《语言本能》.如果有空,推荐看他的"语言与人性"三部曲:《语言本质》,《思想本质》,《心智探奇》,都是大而厚的书.

  从技术的角度,推荐《Python 自然语言处理》,以 NLTK 为核心,其中有很多实例和习题,可以边看边做.不过主要针对英文.

如果,各位师兄有什么好的推荐,请给我留言.

8. 常见的坑

  大家都希望构建一个对所有特征都可用,且简单明了的处理逻辑。但我觉得自然语处理相关的问题,并没那么简单,它更像是建立一棵树,我们把不同情况归类,对各个类别使用不同的处理方式。大家很多时候是卡在找不到一种通用的处理方法,而不是完全没有思路。而通用的方法可能根本就不存在。

9. 为啥比赛?

  之前试过同时打几个比赛,有时候一天几套代码来回切.但是效果非常不好,回头看就是哪个都没能深入.我希望自己在每个比赛中都有不同的提升,不是名次的提升.

  比如糖尿病的核心的 GBDT 模型和特征工程,双高是自然语言处理,汽车上牌是时序问题,之后还想找些神经网络和图片的.但是有时候不自觉的,用习惯一种模型就变着法得往里代入.

  参加比赛的目的是什么?不可能每个人都排名前十,排行榜除了激励作用,其它名次还有啥用?虽然我在竞争过程中,也不自觉地刷名次.

  重要的还是在研究问题过程中的积累吧,我以文章的方式积累,也有积累代码的,积累人气的……至少想清楚,积累什么?否则很容易被环境左右,弄得挺闹心的。

10. 是菜鸟还是大牛?

  加好友,常被问到的问题有:学弟 or 学长?毕业了吗?你多大?在哪个城市?工作了吗?工作几年?——各种标签.先评价一下能力,毕竟这不是个交友的平台,合作就要看水平;然后,看一下是不是一路人;再决定交流的态度;其实不用那么麻烦.

  劝一句:新来的同学,有什么问题,客气点直接问,毕竟加了好友,一般知道的,能说的,都会说.像比较核心的,或者占用大量时间和精力的,需要的亲密关系也不是一半天能建立起来的.搭顺风车和走捷径也并不容易.

  再劝一句:大神,您也尽量保持谦虚和开放的心态.谁说大牛都得德艺双馨、有问必答,还都得回答正确?能帮上忙的不妨搭把手,不想说不想做,就客气的说 NO 好了,无需解释,也无需想太多.

 (我既不是大神,也不是菜鸟)

  如果我跟你说“大神,以后我有问题就找你了啊!”,你啥感受?

  之前旁听过一段佛教《中观》课,里面的同学无论男女老幼都互称师兄,第一次被一位大爷叫师兄的时候心里毛毛的,后来就习惯了.在说话前先称呼别人师兄的时候,也会不自觉地代入一种谦虚、朴素的心态.

  并不是想假装小学妹,只是觉得这样交流比较舒服。咱们互为师兄,相互学习。

  您说呢,师兄?