一.流式计算背景

1.概述

其实技术总在更新,做这个行业也是一直要走在学习并适应的路上,这也是人工智能领域最吸引我的地方,其实基础的理论是不变的,但是随着业务的发展,计算能力的发展,上层的实现总是在迭代,今天讲下我对于流计算的一些认知。

先聊下计算引擎的进化,随手画了上面的图。其实第一代分布式计算引擎是Hadoop,这是一个跨时代的创造,人们使用Hadoop的MapReduce框架实现了许多的算法,这些算法也发挥了很大的作用。Hadoop最大的特点是,数据计算依赖于硬盘存储,也就是说很多的计算过程中的结果都需要存在硬盘中,然后再从硬盘拉起,造成性能较低的问题。

Spark好在一点,把数据全部放到内存中进行计算,大大提高效率。但是无论是Spark或是Hadoop解决的都是批计算的问题,也称batch计算。离线计算需要把数据收集起来统一的去算,对于算法来讲,可能收敛会更快,因为参与计算的数据比较多。但是也有暴露一个问题,实时性很差。这个问题就引出了下一代计算引擎-流计算这样一个话题。

2. 流计算

弄明白流计算,首先要搞清楚概念。先来看下流计算(stream compute)以及批计算(batch compute)的计算模型:

  • 流计算:当一条数据被处理完成后,序列化到缓存中,然后立刻通过网络传输到下一个节点,由下一个节点继续处理。

  • 批处理系统:当一条数据被处理完成后,序列化到缓存中,并不会立刻通过网络传输到下一个节点,当缓存写满,就持久化到本地硬盘上,当所有数据都被处理完成后,才开始将处理后的数据通过网络传输到下一个节点。

对于流计算,是不是有一点感觉了。相较于batch compute,stream compute对于业务上一定是更灵活,因为可以跟数据更实时性的相关联(数据的时间周期其实很重要,有机会我也会给大家分享我的看法)。

stream对于业务的优势我举一个例子,比如一个电商平台,有一个推荐系统,推荐模型都是每周根据离线数据做批训练生成的。但是突然有一天,这个电商搞了一个针对特殊人群的定向营销活动,有大量的特殊用户涌入,那针对这部分人群以前的老模型可能就不会起作用,这时候如果有一个实时训练模型的能力就会对这种场景有更快速地响应,这个就有是online learning的概念,那底层依赖的是流计算引擎。

3. 真正的下一代流计算引擎

流计算引擎会是下一代的计算引擎,这里指的不是流计算替代批计算,而是下一代流计算引擎会兼容batch compute和stream compute,做到流批一体,Flink或许是一个答案。

当然流计算的挑战会比做批计算大很多,比如failover机制,批计算所有计算结果都是有存储的,可以回溯,流计算怎么解决宕机问题。比如exactly once机制,如何保证分布式流计算中的数据只被处理一次,而不是被多台机器多次处理。

不过还是相信这些问题会被完美解决,未来的算法也一定是会向流式方向迁移。

二.浅谈FTRL算法(流式逻辑回归算法)

1.流失算法概览

先聊下对于流式算法的一些看法,流式算法就是要实时的去更新模型,所以从易实现的角度分析,不是所有的批计算算法都适合做流式算法,只有那些损失函数易于计算的算法才比较适合做成流式。

常见的两种损失函数的计算方法如下:

(注:这里每个变量的具体含义我就不解释了,如果看不懂的同学,真应该买本书好好补补基础知识了)

流式算法跟批算法最大的不同就在于数据的计算量,批算法和流算法的计算模型如下:

  • 批算法:每次使用全量数据计算损失函数和梯度,然后更新模型

  • 流算法:每次使用1条数据计算损失函数和梯度,然后更新模型

从这个角度来看,因为每次参与训练的数据量变小了,所以对于算法从训练数据稀疏度和数据维度这两给角度来看,有更多的约束和挑战。FTRL算法是由Google提出,目前在online learning这个层面有非常好表现的算法,可以理解为是流计算中的逻辑回归算法,目前FTRL在广告投放、商品推荐等实时计算场景被广泛应用。下面就介绍下FTRL的具体计算流程。

2.FTRL具体推导

首先看下FTRL的迭代公式(可能需要有一些算法背景,大家可以先了解下逻辑回归的迭代方法),逻辑回归的推导在我的书里讲过了,这里就不多说:

针对这个公式做一个具体的解释,

  • 首先w表示的是模型的权重,t表示迭代轮次

  • arg min(f(x))这个函数表示的是使得f(x)取得最小值的,x的集合。在这个公式中表示的是使得每一轮迭代的损失函数最小的w组合,也就是等到收敛,w参数会是一个恒值

  • 表示的是第t轮的原始模型参数

  • 表示的是损失函数

  • 是正则项,防止过拟合

总结一下,FTRL从算法逻辑上来讲跟批算法没有太大改变,只不过经过大量的测试表名FTRL算法在流式的模型训练过程中对于稀疏数据以及大维度模型训练方面有比较好的效果。

有几篇不错的文章介绍FTRL,也推荐给大家。

参考文献:

【1】https://zhuanlan.zhihu.com/p/32903540

【2】http://vividfree.github.io/机器学习/2015/12/05/understanding-FTRL-algorithm

流式机器学习算法的入门和认知相关推荐

  1. PAI通过流式机器学习算法解决实时热点新闻挖掘案例

    打开新闻客户端,往往会收到热点新闻推送相关的内容.新闻客户端作为一个承载新闻的平台,实时会产生大量的 新闻,如何快速挖掘出哪些新产生的新闻会成为成为热点新闻,决定着整个平台的新闻推荐质量. 如何从平台 ...

  2. StreamDM:基于Spark Streaming、支持在线学习的流式分析算法引擎

    StreamDM:基于Spark Streaming.支持在线学习的流式分析算法引擎 streamDM:Data Mining for Spark Streaming,华为诺亚方舟实验室开源了业界第一 ...

  3. 【python】机器学习算法(KNN)入门——手写数字识别

    前言 嗨喽~大家好呀,这里是魔王呐 ! 最近邻 (k Nearest Neighbors, KNN)算法是一种分类算法 1968年由Cover和Hart提出,应用场景有宁符识别.文本分类. 图像识别等 ...

  4. 轻量级大规模机器学习算法库Fregata开源:快速,无需调参

    作者:张夏天,TalkingData首席数据科学家.12年大规模机器学习和数据挖掘经验,对推荐系统.计算广告.大规模机器学习算法并行化.流式机器学习算法有很深的造诣:在国际顶级会议和期刊上发表论文12 ...

  5. “Spark上流式机器学习算法实现”终期检查报告

    自6月底申请项目到现在9月初撰写项目结题报告,眨眼一瞬间两个半月很快成为过去,在这两个半月的时间里,在不断的看文章和调试代码,首先我得感谢和我一起合作的赖百胜同学与我并肩作战,是他给了我一次次战胜bu ...

  6. 流数据机器学习平台SAMOA简介

    流数据机器学习平台SAMOA简介 SAMOA (Scalable Advanced Massive Online Analysis)是由雅虎开源的流数据在线机器学习的框架.和其它绝大多数大数据处理框架 ...

  7. 机器学习算法中的过拟合与欠拟合(转载)

    在机器学习表现不佳的原因要么是过度拟合或欠拟合数据. 1.机器学习中的逼近目标函数过程 监督式机器学习通常理解为逼近一个目标函数(f)(f),此函数映射输入变量(X)到输出变量(Y). Y=f(X)Y ...

  8. 最实用的机器学习算法优缺点分析,没有比这篇说得更好了

    AI技术年度盛会即将开启!11月8-9日,来自Google.Amazon.微软.Facebook.LinkedIn.阿里巴巴.百度.腾讯.美团.京东.小米.字节跳动.滴滴.商汤.旷视.思必驰.第四范式 ...

  9. 盘点|最实用的机器学习算法优缺点分析,没有比这篇说得更好了

    对于机器学习算法的盘点,网上屡见不鲜.但目前,还没人能结合使用场景来把问题说明白,而这一点正是本文的目的所在. 文中作者将结合他的实际经验,细致剖析每种算法在实践中的优势和不足. 本文的目的,是务实. ...

最新文章

  1. SAP的资产负债表、损益表的利润体现
  2. 动态分配的const对象
  3. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案
  4. WebSocket小叙
  5. mysql 5.7 编译_MySQL5.7.20编译安装
  6. JavaScript 邮件正则练习
  7. ES6学习笔记一:let、const、块级作用域
  8. 阿里云ecs 服务器配置 nginx https
  9. 《CLR via C# 》第三版 英文原版电子书下载
  10. python book118_Python3 book118.com文档下载(图片形式)
  11. 总结:form中使用onSubmit=return false防止表单自动提交,以及s...
  12. win10计算机管理界面模糊,Win10电脑屏幕显示模糊
  13. 什么软件测试情侣头像,情侣头像另一半查找器
  14. NShape(开源矢量图形编辑器) 入门(三)
  15. NEC协议红外遥控器
  16. 百家号怎么发送链接,发送自己的链接变成文字等解答
  17. 查询某一日期所在的自然周,以周一为开始
  18. 互联网早报|宠物行业上半年融资吸金超60亿;猿辅导、掌门教育进军素质教育赛道
  19. 计算机开机后黑屏鼠标显示桌面图标,电脑开机后黑屏只有一个鼠标箭头怎么办 电脑黑屏的解决方法...
  20. pageadmin怎么去掉版权_微信怎么在电脑多开一键多开,多个账号_PC端微信多开教程...

热门文章

  1. PAT甲级1023 Have Fun with Numbers:[C++题解]高精度加法和两个vector大小比较
  2. 51Nod - 2142身份证号排序
  3. 图片渲染延迟_前向渲染与延迟渲染
  4. dockerfile构建镜像的命令_编写Dockerfile的最佳实践
  5. python中系列的含义_一篇文章让你彻底搞清楚Python中self的含义
  6. eclipse 用jsp文件连接mysql_用本地navicat去连接阿里云ECS中的mysql
  7. python中不同类型的数据不能相互运算_python数据类型和运算
  8. Qt中的自定义模型类
  9. 增加fast cgi进程数 php7,使用 FastCGI 模式运行 PHP7 教程
  10. 设置代理_ie浏览器一键取消自动检测设置并设置代理