介绍

MLR算法是alibaba在2012年提出并使用的广告点击率预估模型,2017年发表出来。

如下图,LR不能拟合非线性数据,MLR可以拟合非线性数据,因为划分-训练模式。

讨论,非线性拟合能力:

数据划分规则如下公式,特征分片数m=1时,退化为LR;上图MLR中m=4。m越大,模型的拟合能力越强,一般m=12。

基础知识

优化方法:

1)剃度下降:

大小:一阶导数,方向:导数负方向。由目标函数的泰勒一阶展开式求得

2)牛顿法:

大小:一阶导数,方向:-海信矩阵的逆。由目标函数的泰勒二阶展开式求

3)拟牛顿法(LBFGS):牛顿方向通过约等替换,每个样本保存下面三个参数:delta x ,delta剃度 和p:

增量替换,计算牛顿方向D

LBFGS方法通过一阶导数中值定理,避免了计算海信矩阵(复杂度太大)。但是L1范数不能求导,所以需要OWLQN方法。

4)OWLQN:

(1)次梯度定义如下,

(2)不可导点取左or右次梯度,如下 

直观解释,当你打算用左偏导时,说明是在负象限,因此要加上一个负值,使得更新之后参数更往负象限前进,这样就避免了跨象限;当打算用右偏导数时,说明在正象限,一次要加上一个正值,使得更新之后参数更往正象限前进,从而避免跨象限;否则,只能直接设置subgradient为0。

(3)象限搜索line search:

x不在0点时,line search在x_i所在象限搜索;如果模型参数在0点,就要在(2)次梯度约束的象限内进行line search.

MLR算法

算法公式如下:

0计算边界下降方向d:

1计算梯度大小:theta在0处不可导,取sign符号函数dij。

2计算最终下降方向p:

3象限内梯度下降,同OWLQN,line search:

paper介绍,MLR与LBFGS有三点不同:

1)OWLQN需要计算次梯度,MLR需要计算方向导数;

2)计算最终下降方向p时,MLR也要进行象限约束;

3)象限搜索line search,与OWLQN相似。

分布式框架实现

分布式

User特征共享

个人理解是为了加快运算速度,具体特征划分如下所示。其中,c是用户特征,nc是非用户特征。

实验结果

    实验截图略,具体图表可以查看参考paper

纵坐标是内存使用率,特征共享技巧使速度提高了三倍。

参考paper:Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction

MLR算法[Paper笔记]的更多相关文章

  1. 读paper笔记[Learning to rank]

    读paper笔记[Learning to rank] by Jiawang 选读paper: [1] Ranking by calibrated AdaBoost, R. Busa-Fekete, B ...

  2. C / C++算法学习笔记(8)-SHELL排序

    原始地址:C / C++算法学习笔记(8)-SHELL排序 基本思想 先取一个小于n的整数d1作为第一个增量(gap),把文件的全部记录分成d1个组.所有距离为dl的倍数的记录放在同一个组中.先在各组 ...

  3. Manacher算法学习笔记 | LeetCode#5

    Manacher算法学习笔记 DECLARATION 引用来源:https://www.cnblogs.com/grandyang/p/4475985.html CONTENT 用途:寻找一个字符串的 ...

  4. 《Algorithms算法》笔记:元素排序(4)——凸包问题

    <Algorithms算法>笔记:元素排序(4)——凸包问题 Algorithms算法笔记元素排序4凸包问题 凸包问题 凸包问题的应用 凸包的几何性质 Graham 扫描算法 代码 凸包问 ...

  5. 《Algorithms算法》笔记:元素排序(3)——洗牌算法

    <Algorithms算法>笔记:元素排序(3)——洗牌算法 Algorithms算法笔记元素排序3洗牌算法 洗牌算法 排序洗牌 Knuth洗牌 Knuth洗牌代码 洗牌算法 洗牌的思想很 ...

  6. 《Algorithm算法》笔记:元素排序(2)——希尔排序

    <Algorithm算法>笔记:元素排序(2)——希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

  7. MIT算法导论笔记

    详细MIT算法导论笔记 (网络链接) 第一讲:课程简介及算法分析 (Sheridan) 第二讲:渐近符号.递归及解法  (Sheridan) 第三讲:分治法(1)(Sheridan) 第四讲:快排及随 ...

  8. Johnson算法学习笔记

    \(Johnson\)算法学习笔记. 在最短路的学习中,我们曾学习了三种最短路的算法,\(Bellman-Ford\)算法及其队列优化\(SPFA\)算法,\(Dijkstra\)算法.这些算法可以快 ...

  9. 某科学的PID算法学习笔记

    最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...

随机推荐

  1. json_encode()中文不转码

    php使用json_encode()把数组转换为json的时候,总会把中文进行转码,转码后从json数据上我们无法看出其中的中文文字.php5.4以后,当json_encode()的第二个参数赋值为J ...

  2. Linux crontab定时器设置(定期执行java程序)(转)

    Crontab 语法 Crontab语法一个crontab文件用五个段来定义:天,日期和时间,和一个要定期执行的命令代码. *    *  *  *   *  command to be execut ...

  3. Leetcode题解(九)

    28.Implement strStr()-------KMP算法(*) 题目 这道题目其实就是实现KMP算法,并且该算法也是比较经典的算法,需要很好的掌握: 贴上几个介绍字符串匹配的算法说明链接 h ...

  4. 脑残手贱:被NFS祸害的调度系统

    建议:任何时候,都要三思而后行!!! 事请的缘由 系统中采用slurm调度系统来进行并行计算.但是在GPU节点上,无论如何都无法启动slurmd,报插件初始化错误的故障. 因此需要编译新的munge和 ...

  5. 混合app

    cordova run android            把应用发送到手机   ionic serve        电脑浏览器调试命令   创建: cordova create hello co ...

  6. Pandas常用函数入门

    一.Pandas Python Data Analysis Library或Pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的.Pandas纳入了大量库和一些标准的数据模型, ...

  7. Unity 游戏框架搭建 (十九) 简易对象池

    在Unity中我们经常会用到对象池,使用对象池无非就是解决两个问题: 一是减少new时候寻址造成的消耗,该消耗的原因是内存碎片. 二是减少Object.Instantiate时内部进行序列化和反序列化 ...

  8. KODExplorer可道云-轻松搭建属于自己/团队的私有云网盘服务

    如今国内各大网盘关停的也快差不多,百度网盘限速严重.国外大牌的如 Dropbox 或 Google Drive又在长城之外,在各种VPN都被封禁的大背景下,科学上网也困难重重,麻烦到要死.那么,除了购 ...

  9. MyBatis 一、二级缓存和自定义缓存

    1.一级缓存 ​ MyBatis 默认开启了一级缓存,一级缓存是在SqlSession 层面进行缓存的.即,同一个SqlSession ,多次调用同一个Mapper和同一个方法的同一个参数,只会进行一 ...

  10. ANDROID基础ACTIVITY篇之Activity的生命周期(一)

    首先我们先来看一下官方的Android的生命周期图: 根据这个流程图我们可以看到Activity的生命周期一共有7个方法,那么接下来我们就来聊聊这些方法执行过程. 首先在两个Activity(Main ...