特征工程、模型选择和评估

然后就是做特征工程了,一般来说大家可能觉得很难,但只需要告诉电脑哪个是 Label,其他的直接默认配置就好了。但天下没有免费的午餐,特征简单处理,我们要有更强的模型,所以我们用了线性分型分类器。

一般来说,推荐系统中会有离散特征和连续特征,当我们用逻辑回归这种宽的离散线性模型的时候,我就会遇到一个很大的问题,就是我需要对特征进行分段,这样才能学到连续特征的非线性结构。比如说用户年龄对点击率的影响,它并不是线性上升的,它可能会上升到 30 岁,然后就下降了,甚至有更复杂的模式,这些是非线性的特性。所以我们可以用机器对连续的特征做自动搜索分段,这样的预处理效率就大大提高了。线性分形分类器就是做的这样的事情,基本上我花了不到 5 分钟,就跑出了 0.796 的 AUC。

AUC 代表了一个模型对样本的排序能力。如果这是一个完美的排序,点击率高的 100% 排到了点击率低的前面,那 AUC 就是 1。如果是随机瞎排,那 AUC 就是 0.5。所以 AUC 越接近于 1,就代表了整体的排序能力越强。现在的 AUC 是 0.796,比论文的 0.801 稍微差一点,我只做了这么点就到了这个成绩,我觉得还是可以的。
当然这里进一步说一下,评估上线的时候,不能只是看 AUC。例如说,我要看的是 User AUC,或者每一刷的 AUC,因为模型的排序能力,一部分来自于对每个用户个性化的识别能力,另一部分来自于对用户本身的识别能力。比如说有些用户就是什么都爱点,什么都点,而有些用户基本只看标题不点开。我们把这样的人分开,对个性化推荐是有帮助的。所以我最终应该看的是,在每一个用户身上的 AUC,甚至是每一次展现的 AUC,当然先知也提供了工具,就不多赘述了。特征组合
但我还是想让这个模型更好,怎么办呢?在做推荐系统的时候,特征工程最重要的同志可能正好相反。我把等级作为一个特征,可能两边的喜好不同导致最终这个特征整体对点击率的影响和一个随机数一样,它就不是好的特征,没有预测能力。
但如果我把这些特征组合起来,我就对这些空间有更细致的分割能力,我就会做出很好的效果。性别、用户 ID 和新闻等级组合起来,是新闻推荐非常有用的特征。进一步说,假如我们有 100 个特征,那么特征两两组合的空间,就是 一万个,这是个很大的工作量。
传统的手段是,通过业务经验和实验去筛选好的组合。但是工具可以帮我们做得更快更好,先知的 FeatureGo 功能,可以通过一系列的配置和优化目标设定,自动搜索出好的特征组合,大大节省我们的工作时间,让人的工作由机器来完成。然后我就跑了 FeatureGo,找到了 18 和 28,33 和 34 这些组合特征就不错。而如果计算资源足够,那你还可以搜索 3 阶的特征,这是由人来做非常难的事情。

在用机器完成自动特征组合后,调参其实也可以自动化的。我们知道机器学习就像炼丹,炼丹就是调参,调参就是在参数空间里,根据我们的经验去搜索一下,看什么参数是好的。我们也有好的工具,可以自动搜索到好的参数。当把这些设定好之后,我就去睡觉了。第二天醒来后发现,这个模型的 AUC 达到了 0.802,已经超过了论文的效果。由于这篇论文还是今年比较有名的论文,我还是很满意的。


模型上线
设计好模型后,一般是用 Restful API 的模式服务的。比方说根据这个 API,就可以给不同的内容进行打分,打分后根据倒排后的结果,响应推荐的内容。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-77174-3.html
人家做生意上来先给你个大金戒指
把辽宁号航母派过去
看看岛礁建设中还存在什么不足之处