1、学习大数据集

当数据有大量的数据,比如1亿以上的时候,如果想拟合一个线性回归或者逻辑回归时,梯度下降算法的计算量将是非常庞大的。

**预检查:**为什么不用1000个样本,而需要用11亿个?遇到高偏差问题时候,选择合适大小的数据集即可,再增加数据集并不会改善,处理方式为寻找新的模型。如果是低方差的模型,增加数据集的规模可以帮助你获得更好的结果。

那么如何处理大数据样本集情况下的梯度计算?实现梯度下降算法?

2、随机梯度下降

原来的线性回归模型的梯度下降算法: batch gradient descend

随机梯度下降算法:
随机梯度下降算法在每一次计算之后便更新参数 θ ,而不需要首先将所有的训练集求和,在梯度下降算法还没有完成一次迭代时,随机梯度下降算法便已经走出了很远。但是这样的算法存在的问题是,不是每一步都是朝着”正确”的方向迈出的。因此算法虽然会逐渐走向全局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。
![实现过程——这里有3层循环![](https://img-blog.csdnimg.cn/20200826092012729.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzNDkyOTM4,size_16,color_FFFFFF,t_70#pic_center)

3、小批量梯度下降

小批量梯度下降算法是介于批量梯度下降算法和随机梯度下降算法之间的算法,每计算常数b次训练实例,便更新一次参数 θ 。

通常我们会令 b 在 2-100 之间。这样做的好处在于,我们可以用向量化的方式来循环 b个训练实例,如果我们用的线性代数函数库比较好,能够支持平行处理,那么算法的总体表现将不受影响(与随机梯度下降相同)。
具体实例:

4、随机梯度下降收敛

随机梯度下降算法的调试,以及学习率 α 的选取。
在批量梯度下降中,不太可能画出代价函数和迭代次数的图像,因为计算代价函数的代价太大了。
在随机梯度下降中,在每一次更新 θ 之前都计算一次代价,然后每x次迭代后,求出这x次对训练实例计算代价的平均值,然后绘制这些平均值与x次迭代的次数之间的函数图表。

当绘制这样的图表时,可能会得到一个颠簸不平,但是不会明显减少的函数图像(如上面左下图中蓝线所示)。可以增加α来使得函数更加平缓,也许便能看出下降的趋势了(如上面左下图中红线所示);或者可能函数图表仍然是颠簸不平且不下降的(如洋红色线所示),那么模型本身可能存在一些错误。
如果得到的曲线如上面右下方所示,不断地上升,那么需要选择一个较小的学习率α。也可以令学习率随着迭代次数的增加而减小,例如令:

随着我们不断地靠近全局最小值,通过减小学习率,我们迫使算法收敛而非在最小值附近徘徊。 但是通常我们不需要这样做便能有非常好的效果了,对α进行调整所耗费的计算通常不值得。

5、在线学习算法

假使我们正在经营一家物流公司,每当一个用户询问从地点A至地点B的快递费用时,我们给用户一个报价,该用户可能选择接受(y=1)或不接受(y=0)。
现在,我们希望构建一个模型,来预测用户接受报价使用我们的物流服务的可能性。因此报价 是我们的一个特征,其他特征为距离,起始地点,目标地点以及特定的用户数据。模型的输出是:p(y=1)。
在线学习的算法与随机梯度下降算法有些类似,我们对单一的实例进行学习,而非对一个提前定义的训练集进行循环。

一旦对一个数据的学习完成了,我们便可以丢弃该数据,不需要再存储它了。这种方式的好处在于,我们的算法可以很好的适应用户的倾向性,算法可以针对用户的当前行为不断地更新模型以适应该用户。
每次交互事件并不只产生一个数据集,例如,我们一次给用户提供3个物流选项,用户选择2项,我们实际上可以获得3个新的训练实例,因而我们的算法可以一次从3个实例中学习并更新模型。
这些问题中的任何一个都可以被归类到标准的,拥有一个固定的样本集的机器学习问题中。或许,你可以运行一个你自己的网站,尝试运行几天,然后保存一个数据集,一个固定的数据集,然后对其运行一个学习算法。但是这些是实际的问题,在这些问题里,你会看到大公司会获取如此多的数据,真的没有必要来保存一个固定的数据集,取而代之的是你可以使用一个在线学习算法来连续的学习,从这些用户不断产生的数据中来学习。这就是在线学习机制,然后就像我们所看到的,我们所使用的这个算法与随机梯度下降算法非常类似,唯一的区别的是,我们不会使用一个固定的数据集,我们会做的是获取一个用户样本,从那个样本中学习,然后丢弃那个样本并继续下去,而且如果你对某一种应用有一个连续的数据流,这样的算法可能会非常值得考虑。当然,在线学习的一个优点就是,如果你有一个变化的用户群,又或者你在尝试预测的事情,在缓慢变化,就像你的用户的品味在缓慢变化,这个在线学习算法,可以慢慢地调试你所学习到的假设,将其调节更新到最新的用户行为。

6、映射化简和数据并行

将我们的数据集分配给不多台计算机,让每一台计算机处理数据集的一个子集,然后我们将计所的结果汇总在求和。这样的方法叫做映射简化。
具体而言,如果任何学习算法能够表达为,对训练集的函数的求和,那么便能将这个任务分配给多台计算机(或者同一台计算机的不同CPU 核心),以达到加速处理的目的。
我们有400个训练实例,我们可以将批量梯度下降的求和任务分配给4台计算机进行处理:

很多高级的线性代数函数库已经能够利用多核CPU的多个核心来并行地处理矩阵运算,这也是算法的向量化实现如此重要的缘故(比调用循环快)。

机器学习——大规模机器学习相关推荐

  1. SystemML大规模机器学习,优化算子融合方案的研究

    SystemML大规模机器学习,优化算子融合方案的研究 摘要 许多大规模机器学习(ML)系统允许通过线性代数程序指定定制的ML算法,然后自动生成有效的执行计划.在这种情况下,优化的机会融合基本算子的熔 ...

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

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

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

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

  4. 第十七章 大规模机器学习-机器学习老师板书-斯坦福吴恩达教授

    第十七章 大规模机器学习 17.1 大数据集学习 17.2 随机梯度下降 17.3 mini-batch 梯度下降 17.4 随机梯度下降收敛 17.5 在线学习 17.6 减少映射与数据并行 17. ...

  5. TalkingData大规模机器学习的应用

     TalkingData大规模机器学习的应用 width="22" height="16" src="http://hits.sinajs.cn/ ...

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习...

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

  7. 吴恩达《Machine Learning》精炼笔记 12:大规模机器学习和图片文字识别 OCR

    作者 | Peter 编辑 | AI有道 系列文章: 吴恩达<Machine Learning>精炼笔记 1:监督学习与非监督学习 吴恩达<Machine Learning>精 ...

  8. 对于大规模机器学习的理解和认识

    这篇文章,9分转载转述:很少有自己的见解: 首先先露怯:自己真正是去年开始接触机器学习当中的深度学习当中的卷积神经网络当中的前向预测部分: 不过,刚才看完了这里的讨论,(知乎,对于大规模机器学习的理解 ...

  9. 一文带你纵览 200+ 大规模机器学习研究

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:AI科技评论 AI博士笔记系列推荐 周志华<机器学习& ...

最新文章

  1. 火铃游戏Java_敲铃的小班游戏教案
  2. minGW64安装和使用 极简教程
  3. 大数据之-Hadoop3.x_MapReduce_序列化案例需求分析---大数据之hadoop3.x工作笔记0096
  4. 指针4-指针的运算和指针变量占几个字节
  5. 金蝶KIS 11.0专业版账套升级至WISE 13.1版本实施步骤
  6. 面试宝典(二)之经典面试题(含详细答案)
  7. 领导想延长我的试用期,我该怎么办?
  8. softice 常用操作
  9. Linux基础指令入门 2
  10. 显示杂谈(2)为啥选择gamma2.2
  11. c语言中的格式化字符串
  12. uniapp 顶部绝对定位
  13. 问题 sparksql Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
  14. sql server 2008 数据库复原出错 3203
  15. 二氯乙烷(EDC)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. R+VIC模型融合实践技术应用及未来气候变化模型预测/SWAT/HSPF/HEC-HMS
  17. 深度学习 之七 【卷积神经网络 CNN】
  18. Android4.0新的SDK新特性 (汉化)
  19. Java JUC并发编程详解
  20. 5-8:开发社区搜索功能

热门文章

  1. 脱壳工具:反射大师的使用详解
  2. java cucumber_行为驱动:Cucumber + Java - 实现数据的参数化
  3. 淮阳中学2021年高考成绩查询,淮阳中学召开2021届高三高考200天冲刺誓师大会及学生家长会...
  4. DOS操作系统、常用DOS命令简介
  5. AutoRunner如何在对象库中添加新的对象而不改变脚本
  6. labview最小二乘法拟合曲线报表生成,波形拟合最小二乘法
  7. r星服务器在那个文件,gta5修改host文件连接r星服务器方法介绍
  8. 排球计分系统java_排球计分系统|网世技术排球计分系统下载v1.0官方版 - 欧普软件下载...
  9. 浅谈敏捷开发scrum工具leangoo(三)
  10. 数学建模-插值算法(Matlab)