阿里近几年公开的推荐领域算法可真不少,既有传统领域的探索如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公众号,查看更多专业文章

大家都在看

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

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

  1. 推荐系统遇上深度学习,9篇阿里推荐论文汇总!

    作者 | 石晓文 转载自小小挖掘机(ID: wAIsjwj) 业界常用的推荐系统主要分为两个阶段,召回阶段和精排阶段,当然有时候在最后还会接一些打散或者探索的规则,这点咱们就不考虑了. 前面九篇文章中 ...

  2. 推荐系统遇上深度学习(一三七)-[阿里]广告精排和创意优选联合优化

    今天分享的是阿里在SIGIR2022中稿的一篇短文,主要关注点在于对广告推荐链路中精排阶段和创意优选阶段的优化,一起来看一下. 1.背景 广告系统中,创意(如标题和图片)包含了丰富的产品信息,能够帮助 ...

  3. 推荐系统遇上深度学习(一三九)-[阿里]商品属性变化感知的分层注意力演化网络CAEN...

    今天给大家带来Recsys2022上阿里中稿的一篇文章.商品的属性如价格,评分等对于用户在电商场景下的行为决策起着较为重要的作用,但过往的推荐系统大都关注用户历史行为的建模,而对于商品属性的变化很少关 ...

  4. 推荐系统遇上深度学习(九十二)-[腾讯]RecSys2020最佳长论文-多任务学习模型PLE

    今天介绍的是腾讯提出的一种新的多任务学习个性化推荐模型,该论文荣获了RecSys2020最佳长论文奖,一起来学习下! 1.背景 多任务学习通过在一个模型中同时学习多个不同的目标,如CTR和CVR,最近 ...

  5. 推荐系统遇上深度学习(八十七)-[阿里]基于搜索的用户终身行为序列建模

    本文介绍的论文是<Search-based User Interest Modeling with Lifelong Sequential Behavior Data for Click-Thr ...

  6. 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!

    推荐系统中的核心是从海量的商品库挑选合适商品最终展示给用户.由于商品库数量巨大,因此常见的推荐系统一般分为两个阶段,即召回阶段和排序阶段.召回阶段主要是从全量的商品库中得到用户可能感兴趣的一小部分候选 ...

  7. 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现

    学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...

  8. 推荐系统遇上深度学习(十九)--探秘阿里之完整空间多任务模型ESSM

    欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答.求职一站式搞定! 对商业智能BI.大数据分析挖掘.机器学习,python,R等数据领域感兴趣的同学 ...

  9. 推荐系统遇上深度学习(二十)--探秘阿里之完整空间多任务模型ESSM

    笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值,找寻数据的秘密,笔者认为,数据的价值不仅仅只体现在企业中,个人也可以体会到数据的魅力,用技术力量探索行为密码,让大数据 ...

最新文章

  1. PyQt5初级——2
  2. 从基础概念到数学公式,这是一份520页的机器学习笔记(图文并茂)
  3. vagrant网站中box下载方法
  4. Swift 里集合类型协议的关系
  5. RGBA alpha 透明度混合算法实现和测试
  6. android Fragments (Android官方文档中文版)
  7. svn admin 详细介绍
  8. 抖音及其他app对xp框架的检测原理刨析和反制方法
  9. 移动端中的vMin和vMax
  10. 如何将YouTube和其他网络视频投射到Kodi(例如Chromecast)
  11. 青龙面板 Nolan 诺兰 2.4 安装教程
  12. Linux下gcc/g++中-I(i的大写)、-L和-l
  13. iOS UIButton文字与图片交换位置
  14. (环境搭建+复现)CVE-2020-1472 NetLogon 域内提权漏洞
  15. 将等号作为键值的js字符串转json
  16. Javaweb学习笔记——Javaweb概述
  17. 2010 我的求职经历(1)
  18. Vue-什么是vuex
  19. 一位上海女生所经历过的N次感情,对80 90后的朋友具有深刻的教育意义。如果你真的看懂了,那么表示你可以真正开始谈恋爱了...
  20. 什么是资产管理系统 EAM资产管理系统的作用

热门文章

  1. 深度学习attention原理_深度原理学习–Redis集群
  2. python 随机数_python 随机数
  3. 计算机启动需输入两次密码,为什么我的电脑要2次启动才能启动我电脑设置了启动密码后就一定要2 爱问知识人...
  4. 优麒麟 使用samba的windows打印机_优麒麟 19.10 将于本月结束生命周期
  5. Centos7 修改主机名
  6. Ubuntu安装时怎样分区
  7. MVC(Java , C# ,php)
  8. 查找数组连成环形的和最大的连续子数组
  9. vim golang 插件
  10. eclipse clean和build作用