项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

1.前言

FTRL(Follow The(Proximally) Regularized Leader)算法是Online Learning的一种常用方法。
传统的机器学习算法,基本的步骤是离线先做数据清洗,ETL,特征工程,然后训练模型上线。模型上线后,一般就是静态的,不会在线上有任何变化。即使是效果不太好,预测误差很大,也只能等下一次更新模型再加以修正。但是一般离线的数据pipeline比较长,而且数据量也比较大,更新模型是个比较费时费力的活。所以传统的训练方式更新模型不是很方便。
Online Learning是一种另外模型训练的方法,与传统的方法不一样,online learning能根据线上实时反馈的数据,快速训练调整模型参数,使模型即使反映线上的数据变化,从而提高模型的效果。与传统训练方法不同,online 的流程一般为:将预测结果展现给用户,然后收集用户的反馈数据,再来训练新模型,跟控制理论中的闭环系统很类似。

2.FTRL

FTRL的主要目的是提高模型的稀疏度,并且提高模型的精度。具体的算法过程直接参考下面的图

上面这张图被很多地方引用,下面我们结合这张图说一下流程。

上面符号比较多,首先解释一下各符号的含义:
α,β,λ1,λ2\alpha, \beta, \lambda_1, \lambda_2α,β,λ1​,λ2​均为模型的超参数(hyperparameters),最终训练可以得出超参数的值。
TTT表示样本的总量,xtx_txt​表示一条样本。
iii表示特征的维度,ddd表示该样本一共有ddd维。

1.初始化参数zi=0,ni=0z_i=0, n_i = 0zi​=0,ni​=0
2.对每条样本遍历
2.1 看xtx_txt​中哪些维度的值不为0,得到集合III
2.2 遍历集合III,得到wt,iw_{t,i}wt,i​
2.3 得到预测概率ptp_tpt​
3 遍历集合III,分别计算gi,σi,zi,nig_i, \sigma_i, z_i, n_igi​,σi​,zi​,ni​

3.分析

算法中提到per-coordinate,核心思想是对特征的每一维分开训练更新,而每一维上有不同的学习率。具体就是包含λ\lambdaλ的那一项。
为什么会是那种形式?简单分析一下,如果有一维特征每个样本都有,学习到的概率大,学习率可以小一些。而如果有一维特征只有很少的样本有,每个包含该特征的样本都很宝贵,这个时候学习率要大一些,让该维特征的学习更充分。

−(β+niα+λ2)−1-(\frac{\beta + \sqrt {n_i}}{\alpha} + \lambda_2) ^ {-1}−(αβ+ni​​​+λ2​)−1
nin_ini​是个正数,如果样本中包含该维特征的样本数越多,迭代过程中nin_ini​越大,那么取倒数越小。这样就达到了特征数越多,学习率越小,特征数越少,学习率越大的目的。

4.计算过程分析

算法计算流程中的一些值,我们简单说明一下意义。
1.ptp_tpt​
ptp_tpt​是用sigmoid函数计算出来的预测值
2.gig_igi​
gig_igi​是指损失函数在某一个特征维度上的梯度,对于Logisti Regression来说
gi=(p−y)xig_i = (p-y)x_igi​=(p−y)xi​

3.σi\sigma_iσi​
是一个中间计算值,没有其他的特殊含义

4.ziz_izi​
也是一个中间计算值,没有其他的特殊含义

5.nin_ini​
从前面的分析我们可知,nin_ini​控制了该维度特征的学习率,与累积的梯度有关系。

小白都能理解的FTRL相关推荐

  1. pythonsuper多重继承_小白都能理解的Python多继承

    前言 本文主要做科普用,在真实编程中不建议使用多重继承,或者少用多重继承,避免使代码难以理解. 方法解析顺序(MRO) 关于多重继承,比较重要的是它的方法解析顺序(可以理解为类的搜索顺序),即MRO. ...

  2. python 录制网易云登陆_小白都能看懂:Python爬取网易云音乐下载教程

    配置基础 Python Selenium Chrome浏览器(其它的也可以,需要进行相应的修改) 分析 如果爬取过网易云的网站的小伙伴都应该知道网易云是有反爬取机制的,POST时需要对一些信息的参数进 ...

  3. python网易云收费_小白都能学会的Python爬虫网易云音乐

    配置基础 python Selenium Chrome浏览器(其它的也可以,需要进行相应的修改) 分析 如果爬取过网易云的网站的小伙伴都应该知道网易云是有反爬取机制的,POST时需要对一些信息的参数进 ...

  4. [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  5. 新手小白都看得懂得光通信知识

    告别不懂装懂,轻松和大神交流.新手小白都看得懂得光通信知识 单模光纤和多模光纤的区别 光通信 单模光纤 &多模光纤 区别OPTICOMBINE 导入-----问题产生 很多刚接触光通信的朋友渴 ...

  6. 红色买绿色出 简单易操作的买卖点公式 散户小白都能看懂

    好久没来csdn了,在最初,CSDN是用来记录我做前端写的笔记,后面在工作期间,接触了产品,就转岗了,慢慢的,csdn就很少写了,但是我觉得这里可以作为我记录心得的一个地方,还是挺好的. 因为产品规划 ...

  7. 兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理

    本文来自:石杉的架构笔记 目录 一.前奏 二.HDFS的NameNode架构原理 一.前奏 Hadoop是目前大数据领域最主流的一套技术体系,包含了多种技术. 包括HDFS(分布式文件系统),YARN ...

  8. 9篇小白都能懂系列博客学完MySQL基础

    博主经过三天的时间整理终于把MySOL基础部分内容总结成了这九篇博客,如果博主漏写了重点的基础部分的内容,或者说博主写的地方有错误还请CSDN的兄弟们提醒(这一点就比较重要了),由于博主的时间比较有限 ...

  9. html是大部分计算机都可以理解的语言,关于胃的静脉回流,哪项错误()。A、胃左静脉汇入门静脉或脾静脉B、胃右静脉汇入门静脉主干C、胃短...

    关于胃的静脉回流,哪项错误().A.胃左静脉汇入门静脉或脾静脉B.胃右静脉汇入门静脉主干C.胃短 更多相关问题 HTML是大部分计算机都可以理解的语言.() 多个人相互可以交换信息,包括计算机.通信线 ...

  10. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

最新文章

  1. ceph 查看是否在恢复_Ceph的最佳实践
  2. 在 Flutter 中使用 NavigationRail 和 BottomNavigationBar
  3. 极客时间《玩转Git三剑客》之GItHub剑客
  4. 【数据结构与算法】之深入解析“二叉树的中序遍历”的求解思路与算法示例
  5. C#字符串的基本操作
  6. centos镜像 from_【CentOS 7.1】使用163的镜像
  7. 一文搞懂ThreadLocal及相关的内存泄露问题
  8. C++工作笔记-3种方法对数据类型进行拆分(可用于各种协议)
  9. c#中关于delegate、委托、事件之间的联系、关系
  10. Effective JavaScript Item 37 认识this的隐式指向
  11. 关于Julia 和Matlab速度的比较!(以偏概全)。
  12. HandlerSocket安装
  13. Ubuntu16.04运行SqueezeSeg_Ros
  14. 通过wait,notify等实现线程通讯
  15. 八猴渲染器4.0基本使用教程及渲染教程
  16. yum 碰到的问题与解决办法
  17. ZYJ7型转辙设备安装调试工法
  18. python青少年趣味编程-青少年趣味编程Python系列课程--2018-07-17
  19. 彻底卸载Tomcat
  20. 正味集团冲刺港股:年营收3.4亿杨声耀夫妇控制64%股权

热门文章

  1. linux下批量查找UTF-8的BOM文件,并去除BOM
  2. 封装dialog弹窗
  3. 稳压电源通过什么样的当时分类,怎么去分类
  4. c语言:新颖的进制灵活应用
  5. [leetcode]Two Sum @ Python
  6. poj1691 Painting A Board
  7. 将给定的字符串划分为所有可能的IP地址 Restore IP Addresses
  8. P2341 [HAOI2006]受欢迎的牛
  9. 邮件服务系列之一基础原理
  10. Webdriver常用的元素定位