查看原文
其他

心法利器[14] | 任务方案思考:人工特征机器学习

机智的叉烧 CS的陋室 2022-08-08

【前沿重器】


全新栏目,本栏目主要和大家一起讨论近期自己学习的心得和体会,与大家一起成长。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有


往期回顾

0 小系列初衷

自己接触的项目大都是初创,没开始多久的项目,从0到1的不少,2020年快结束,感觉这个具有一定个人特色的技术经验可以在和大家分享一下。

计划篇章:

开始我把这个自从学了统计学习方法以来,参加了很多的项目,也用到这个方法,但是问题大都比较零散比较小,但是也有一些工业级用到的技巧,这次给大家简单总结一下吧。

1 机器学习的场景

很多常规的问题,都是从规则来的,当规则足够多了,大家就会开始尝试把这些规则通过特征的形式汇总起来,找到更加模糊泛化的边界,于是机器学习方法就可以开始被应用,来举个比较常见的例子:

  • 推荐系统的排序。

我们都知道推荐系统里最重要的信息可以说是点击了,然而推荐系统项目前期往往没有足够的点击数据供我们训练,因此会用规则来过渡,随着数据的增加,我们肯定要用更加泛化的方法,而由于原来的规则对排序优化起到很重要的作用,因此这些变成特征也是理所当然了,机器学习的特征也就有了。

2 方案选型

2.1 特征层面

机器学习的效果好坏很大程度和特征有关,甚至有“特征选不好,调参调到老”的说法,比赛里面,构造一个好的特征对充分也非常有好处,因此选择好的特征也就有很重要的作用。此处在特征层面的技巧,我列举一下:

  • 交叉特征。很多机器学习其实却不到“且”这种特征,因此做一些交叉其实很好处。
  • 绝对值变相对值。最常用的就是归一化,但是更多的有的时候我们可以算一些相对值来辅助计算,例如增长率之类的。

当然,要升级整个体系,我这里再介绍一个:离散化onehot,这种方式甚至能让机器学习的效果再升一个台阶。

  • 连续的特征离散化,例如经纬度(用geohash)、时间(直接离散)、距离(等距分桶)。
  • onehot。离散特征统统onehot。这种方式从经验来看,能大幅提升对非线性问题的解决能力,因此模型能够分多个情况来处理哥哥区间上特有的问题,参考CART树。

2.2 模型

模型一直是机器学习里,在学习阶段,最为关键的一环,统计学习方法也好,西瓜书也好,大家都抱着啃了很久,包括我在内,但是实际运用中我们只选择我们认为最合适、最高效的几个,换句话,选最稳定的方案,我这里推荐两个。

  • LR,逻辑斯蒂回归。
  • XGBOOST,一度被认为是比赛神器。

用来做分类的baseline绰绰有余,效果不好的时候多看看特征。

然后,在这些基线建立起来后,再根据场景进一步去挖掘适合自己的新方案。

3 优化手段

其实上面离散化+onehot是一个有效的提升手段,但是个人认为这个方法可以在基线开发时就考虑进去,因此写在上面,剩下的我列在下面。

  • 一些统计特征,用户点击、曝光之类的,可以加入特征,另外一些用户偏好就是通过统计特征计算得到的。
  • 深度学习等到用户量再上一个台阶,且发现一些需要魔性特征才能解决的问题时再来整,如点击序列信息。
  • 高低频分开,这里指的包括用户、物料以及特征。
    • 新用户、新物料往往信息少,还拿来训练反而影响整体效果,不如分开处理,高频用户物料机器学习,低频的走规则、试探甚至都会还不错。
    • 特征也是如此,距离地点特征,冷门地点的计算其实并不完全,效果不好,不如直接归到“冷门地点”的特征里,效果可能会不错。

任何方法都有其适用场景,因地制宜是方案选择的核心标准,而方法积累多了,选择的空间也会变大,我和大家一起积累学习。

4 小结

人工特征的机器学习任务,相比NLP的任务,具有更加多的应用场景,有好的特征其实更容易出好的效果,而且数据依赖性比深度学习低太多,之前甚至看过NLP领域用统计特征+机器学习的方式超过深度学习(不是TF-IDF),所以花点时间探索不失为一条路子。‍

5 系列小结

一连4周时间总结了自己4个方向的基线方案,这些方案都不算高级,但是实用,也都是我在日常工作中用到过得东西,已经内化成了“自己的东西”,而不是舶来品,拿来主义,在2020年结束之际总结下来,也算是对自己思路的一个梳理,但这不是终点,未来我还会探索跟过更有用的方法,适时升级自己的知识库,或者说升级方法库,手里的武器多了,能应对的敌人就多了起来,而手里的武器厉害了,也就能够应对更强的敌人。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存