大规模机器学习

注:本文内容来自网友的博客及Andrew NG在coursera上的机器学习公开课,感兴趣的同学可以去看原始视频,此处不提供链接

机器学习在这几年得到快速发展,一个很重要的原因是 Large Dataset(大规模数据),这节课就来介绍用机器学习算法处理大规模数据的问题。

关于数据的重要性,有一句话是这么说的:

It’s not who has the best algorithm that wins.
It’s who has the most data.

然而,当数据量过大时,计算的复杂度会增加,计算成本也会提高。假如数据量是一百万,使用梯度下降算法来训练参数,每走一步,需要对百万数据进行求和计算,这样的计算量是极大的。但现实问题总是有大量数据,比如全国的车辆、网民等等。那么,我们就有必要研究一下如何更好地处理大规模数据。

方案一:Stochastic Gradient Descent

以 linear regression 为例,先开看看我们原来的梯度下降算法:

图中给出了要求的model h(x)、目标函数J、以及梯度下降算法(循环部分)。迭代的过程:每一步使用所有数据计算θ,并重新赋值,然后下一步再使用所有数据和上一步求得的θ更新θ。图中右侧,中心点是最优点,θ从起始点,每迭代一步就像中心点移动一步,最终走到中心点求出θ最优值。这里的问题是,每迭代一步,就需要计算所有数据(如百万数据)。

上述梯度下降算法也叫 batch gradient descent 。下面我们做些改进,以适应大数据的情况。

上图右侧,我们改变了迭代形式。对于训练集中每个数据,fit θ,使得模型符合这个数据,然后用第二个数据走同样步骤,以此类推。也就是说,每个数据都能获得目前为止最优的θ。这样的迭代,我们称为 stochastic gradient descent 。

需要注意:迭代之前,需要 randomly shuffle training example. 因为数据的不同使用次序,得到的结果不尽相同。

下面给出该算法的步骤和演示图:

从演示图可以看出,θ最后可能围绕最优点左右摇摆而达不到最优点。θ甚至可能不会converge。那么,怎么检查θ能否converge呢?

每迭代n个数据(eg.1000),使用目前得到的θ,计算这n个数据的cost,并绘制在横坐标为迭代次数、纵坐标为cost的坐标系中。随着迭代次数增加,坐标系中的曲线越来越长。观察曲线形状,如果一直呈下降趋势,那么说明可以converge,如果一直上下摇摆或者上升趋势,就说明无法converge。对于后者,可以随着迭代次数的增加逐渐减小α(学习速度),就可以保证θ可以converge。

一个应用:Online learning

Online learning 是根据不断涌入的新数据更新θ从而改进我们的model。例如一个货运订单系统,用户输入出发地、目的地,网站会给出价格,用户会选择下单或取消。这里的model就是,给出用户特征和出发地、目的地,通过model得出适当价格。这是一个 logistic regress 问题。每当有一个用户进行上述行为,我们的训练集就动态增加了一个数据,这样就可以使用 stochastic gradient descent 动态优化model。

方案二: Mini-Batch Gradient Descent

在 batch gradient descent 中,我们每次迭代使用全部m个数据。

在 stochastic gradient descent 中,每次迭代使用1个数据。

在 Mini-Batch Gradient Descent 中,每次迭代用b(2-m)个数据,算作一种折中方案。b即为 mini-batch 。

结合上面两个算法,第三个算法很容易理解,如下:

方案三:Map Reduce and Data Parallelism

当数据量很大,我们又希望使用 batch gradient descent 时,可以将数据分割并分布到不同 的机器上进行局部运算,然后汇总。

图中,把迭代式加和的部分分割开,400个数据分布到4台机器上,每台机器同步处理100个数据,
最后将四个结果再相加,得到迭代式中加和项的结果。

总的来说,对于大数据,或者分布到不同机器上同步处理,或者使用单数据迭代的算法。

大规模机器学习:SGD,mini-batch和MapReduce相关推荐

  1. Stanford机器学习---第十三讲.大规模机器学习

    之前一直在看Standford公开课machine learning中Andrew老师的视频讲解https://class.coursera.org/ml/class/index 同时配合csdn知名 ...

  2. 吴恩达机器学习(十五)大规模机器学习(Batch、Stochastic、Mini-batch gradient descent、MapReduce)

    目录 0. 前言 1. Stochastic Gradient Descent 2. Mini-batch Gradient Descent 3. MapReduce 4. 在线学习(online l ...

  3. Stochastic Gradient Descend和mini batch SGD区别

    SGD 是只对一个数进行更新 mini batch SGD 是对一堆数进行更新

  4. 【机器学习】无监督学习--(聚类)Mini Batch K-Means

    1. Mini Batch K-Means概述 Mini-Batch-K-MEANS算法是K-Means算法的变种,采用小批次量的数据子集减少计算时间.这里所谓的小批量是指每次训练算法时所随机抽取的数 ...

  5. 机器学习算法之聚类算法拓展:Mini Batch K-Means算法

    言归正传,先介绍一下 Mini Batch K-Means算法 Mini Batch K-Means算法是K-Means算法的一种优化变种,采用小规模的数据子集(每次训 练使用的数据集是在训练算法的时 ...

  6. 机器学习算法之聚类算法拓展:K-Means和Mini Batch K-Means算法效果评估

    聚类算法的衡量指标 混淆矩阵 均一性 完整性 V-measure 调整兰德系数(ARI) 调整互信息(AMI) 轮廓系数(Silhouette) import time import numpy as ...

  7. 机器学习-mini batch的一些tips

    以下内容来自博客理解! 1.参数更新 将 5000 个子集都计算完时,就是进行了一个 epoch 处理 ,一个 epoch 意思是遍历整个数据集,即 5000 个子数据集一次,也就是做了 5000 个 ...

  8. 干货丨大规模机器学习框架的四重境界(经典长文,值得收藏)

    作者:carbon zhang 1. 背景 自从google发表著名的GFS.MapReduce.BigTable三篇paper以后,互联网正式迎来了大数据时代.大数据的显著特点是大,哪里都大的大.本 ...

  9. 机器学习(十七)大规模机器学习

    文章目录 Log 一.学习大数据集(Learning with large datasets) 1. 举例:易混淆单词分类 2. 大数据集学习的计算问题 二.随机梯度下降(Stochastic gra ...

最新文章

  1. awk3.0 — awk变量
  2. springboot 自动配置
  3. 开发自定义JSF组件(4) 保存状态与恢复状态
  4. 文件“D:\file.txt”正由另一进程使用,因此该进程无法访问该文件。
  5. 将页面中表格数据导出excel格式的文件(vue)
  6. Hive的使用之hwi
  7. Linux系统定时任务Crond
  8. JavaScript开发规范要求
  9. vbb论坛(vBulletin)后台获取webshell
  10. 【python实战】爬取起点中文网自制小说阅读器
  11. ios设备的弹窗页面,光标错位,光标乱跳
  12. 弱口令是什么?有哪些注意事项?
  13. Referenced file contains errors (http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd)
  14. Overleaf (LaTex) 使用笔记(自用)
  15. c语言和mysql实现超市的管理_C语言编写的超市管理系统
  16. Java基础—— Java的语言基础
  17. 【调剂】汕头大学 范衠教授 调剂招收智能控制、 机器人、人工智能等方向研究生...
  18. 轻轻松松学会Python入门十:程序设计方法学
  19. 普通用户如何获取超级管理员权限的步骤
  20. Centos 升级linux内核版本

热门文章

  1. 服务器显示011,011服务器管理制度
  2. 派对语音游戏互动平台
  3. CG5-v1.0-简单光照效果
  4. window下安装tensorflow问题
  5. 使用html5 video标签不自动播放视频问题(静音播放)
  6. SwiftUI 网络请求组件之 使用Combin观察iOS应用程序网络连接状态(中文教程含视频源吗)
  7. java集合Collection,ArrayList,常见方法及演示。
  8. 前端单页面应用分布式部署探索
  9. 今天给大家聊一聊Apple ID的那些事
  10. CodeMix使用教程:扩展