专栏首页人工智能LeadAI推荐系统遇上深度学习(十七)--探秘阿里之MLR算法浅析及实现

推荐系统遇上深度学习(十七)--探秘阿里之MLR算法浅析及实现

阿里近几年公开的推荐领域算法可真不少,既有传统领域的探索如MLR算法,还有深度学习领域的探索如entire -space multi-task model,Deep Interest Network等,同时跟清华大学合作展开了强化学习领域的探索,提出了MARDPG算法。从本篇开始,我们就一起来探秘这些算法。这里,我们只是大体了解一下每一个算法的思路,对于数学部分的介绍,我们不会过多的涉及。

算法介绍

现阶段各CTR预估算法的不足

我们这里的现阶段,不是指的今时今日,而是阿里刚刚公开此算法的时间,大概就是去年的三四月份吧。

业界常用的CTR预估算法的不足如下表所示:

那么挑战来了,如何设计算法从大规模数据中挖掘出具有推广性的非线性模式?

MLR算法

2011-2012年期间,阿里妈妈资深专家盖坤创新性地提出了MLR(mixed logistic regression)算法,引领了广告领域CTR预估算法的全新升级。MLR算法创新地提出并实现了直接在原始空间学习特征之间的非线性关系,基于数据自动发掘可推广的模式,相比于人工来说效率和精度均有了大幅提升。

MLR可以看做是对LR的一个自然推广,它采用分而治之的思路,用分片线性的模式来拟合高维空间的非线性分类面,其形式化表达如下:

其中u是聚类参数,决定了空间的划分,w是分类参数,决定空间内的预测。这里面超参数分片数m可以较好地平衡模型的拟合与推广能力。当m=1时MLR就退化为普通的LR,m越大模型的拟合能力越强,但是模型参数规模随m线性增长,相应所需的训练样本也随之增长。因此实际应用中m需要根据实际情况进行选择。例如,在阿里的场景中,m一般选择为12。下图中MLR模型用4个分片可以完美地拟合出数据中的菱形分类面。

在实际中,MLR算法常用的形式如下,使用softmax作为分片函数:

在这种情况下,MLR模型可以看作是一个FOE model:

关于损失函数的设计,阿里采用了 neg-likelihood loss function以及L1,L2正则,形式如下:

由于加入了正则项,MLR算法变的不再是平滑的凸函数,梯度下降法不再适用,因此模型参数的更新使用LBFGS和OWLQN的结合,具体的优化细节大家可以参考论文(https://arxiv.org/pdf/1704.05194.pdf).

MLR算法适合于工业级的大规模稀疏数据场景问题,如广告CTR预估。背后的优势体现在两个方面:

端到端的非线性学习:从模型端自动挖掘数据中蕴藏的非线性模式,省去了大量的人工特征设计,这 使得MLR算法可以端到端地完成训练,在不同场景中的迁移和应用非常轻松。

稀疏性:MLR在建模时引入了L1和L2,1范数正则,可以使得最终训练出来的模型具有较高的稀疏度, 模型的学习和在线预测性能更好。当然,这也对算法的优化求解带来了巨大的挑战。

算法简单实现

我们这里只是简单实现一个tensorflow版本的MLR模型,通过代码来了解一下模型的思想。

代码的github地址为:https://github.com/princewen/tensorflow_practice/tree/master/recommendation/Basic-MLR-Demo

所使用的数据下载地址为:http://archive.ics.uci.edu/ml/datasets/Adult,该数据是一个二分类的数据,所预测的任务是判断一个人是否能够一年挣到50K的钱,数据介绍如下:

数据处理

数据中存在连续特征和离散特征,所以我们先要对数据进行一个简单的处理,处理包括将离散特征转换为one-hot以及对连续特征进行标准化。有一个需要注意的地方,训练集和测试集中离散特征出现的个数可能不一样,因此需要先将数据合并,然后转换成one-hot,最后再分开,代码如下。

数据处理完后,特征的维度是108维。

MLR的实现

MLR的实现需要两组参数,分别是聚类参数和分类参数:

随后,我们要计算我们的预估值:

损失函数我们刚才介绍过了,在tensorflow中,我们选择FtrlOptimizer作为优化器,可以给我们的损失函数加上正则项:

随后,我们就可以进行试验了。

实验结果

本文对比了在当前给出的数据集下,m=5,10,15,25 以及lr算法的效果,结果如下:

可以看到,lr的效果是最好的,随着m的增加,模型的效果越来越差。当然,这并不能说明mlr效果不如lr好,只是我们的数据实在是太少了,哈哈。

参考文献

1、https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247485097&idx=1&sn=6dbc197e67e8a2ba3ee78786b13d894d&scene=21#wechat_redirect

2、Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction

原文链接:https://mp.weixin.qq.com/s/_bRwX0MlKrI9-reek4ixSw

查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”: www.leadai.org

本文分享自微信公众号 - 人工智能LeadAI(atleadai)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 深度学习优化器总结

    每次更新我们需要计算整个数据集的梯度,因此使用批量梯度下降进行优化时,计算速度很慢,而且对于不适合内存计算的数据将会非常棘手。批量梯度下降算法不允许我们实时更新...

    用户1332428
  • 基于Text-CNN模型的中文文本分类实战

    转眼学生生涯就结束了,在家待就业期间正好有一段空闲期,可以对曾经感兴趣的一些知识点进行总结。

    用户1332428
  • JAVA回调机制(CallBack)详解

    什么是回调函数(Callback Function) 回调的应用场景非常广泛,在spring中可以看到很多应用了回调的地方,以调用相应的库函数为例子,当程序跑...

    用户1332428
  • 教程 | 算法太多挑花眼?教你如何选择正确的机器学习算法

    机器学习既是一门科学,也是一种艺术。纵观各类机器学习算法,并没有一种普适的解决方案或方法。事实上,有几个因素会影响你对机器学习算法的选择。

    机器之心
  • 算法太多挑花眼?教你如何选择正确的机器学习算法

    机器学习既是一门科学,也是一种艺术。纵观各类机器学习算法,并没有一种普适的解决方案或方法。事实上,有几个因素会影响你对机器学习算法的选择。

    CDA数据分析师
  • Machine Learning-模型调优备忘录

    之前讲了一些机器学习的算法和特征工程的东西,相信大家如果有一些数据也是可以建立出自己的模型了,但是,模型的效果却没有想象中那么好,那么,应该怎么做呢?

    Sam Gor
  • 机器学习:算法及工具

    算法及工具 ? 说明 编程语言:Python 机器环境:Windows 参考书籍:《Python机器学习实践指南》《机器学习实战》 为什么使用Python 1....

    企鹅号小编
  • 一文介绍机器学习模型调优的"解题思路"

    之前讲了一些机器学习的算法和特征工程的东西,相信大家如果有一些数据也是可以建立出自己的模型了,但是,模型的效果却没有想象中那么好,那么,应该怎么做呢?

    石晓文
  • 还在暴力调参?机器学习模型调优的“解题思路”

    选自 Machine Learning Performance Improvement Cheat Sheet

    Datawhale
  • 一文介绍机器学习模型调优的“解题思路“

    之前讲了一些机器学习的算法和特征工程的东西,相信大家如果有一些数据也是可以建立出自己的模型了,但是,模型的效果却没有想象中那么好,那么,应该怎么做呢?

    Sam Gor

扫码关注云+社区

领取腾讯云代金券