大型数据集的学习(Learning With Large Datasets)

如果我们有一个低方差的模型, 增加数据集的规模可以帮助你获得更好的结果。

我们应该怎样应对一个有 100 万条记录的训练集?

以线性回归模型为例,每一次梯度下降迭代,我们都需要计算训练集的误差的平方和,如果我们的学习算法需要有 20 次迭代,这便已经是非常大的计算代价。

首先应该做的事是去检查一个这么大规模的训练集是否真的必要,也许我们只用 1000 个训练集也能获得较好的效果,我们可以绘制学习曲线来帮助判断。

—————————————————————————————————————————————————————————

随机梯度下降法(Stochastic Gradient Descent)

如果我们一定需要一个大规模的训练集, 我们可以尝试使用随机梯度下降法来代替批量梯度下降法。

在随机梯度下降法中,我们定义代价函数为一个单一训练实例的代价:

随机梯度下降算法为:

首先:对训练集随机“洗牌”;

然后:

随机梯度下降算法在每一次计算之后便更新参数 θ, 而不需要首先将所有的训练集求和。

在梯度下降算法还没有完成一次迭代时, 随机梯度下降算法便已经走出了很远。

但是这样的算法存在的问题是,不是每一步都是朝着”正确”的方向迈出的。

因此算法虽然会逐渐走向全局最小值的位置,但是可能无法站到那个最小值的那一点,而是在最小值点附近徘徊。

—————————————————————————————————————————————————————————

小批量梯度下降(Mini-Batch Gradient Descent)

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

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

—————————————————————————————————————————————————————————


在线学习(Online Learning)

一种新的大规模的机器学习机制,叫做在线学习机制。

今天,许多大型网站使用不同版本的在线学习机制算法,从大批的涌入又离开网站的用户身上进行学习。

特别要提及的是, 如果你有一个由连续的用户流引发的连续的数据流,进入你的网站,你能做的是使用一个在线学习机制,从数据流中学习用户的偏好,然后使用这些信息来优化一些关于网站的决策。

在线学习算法指的是对数据流而非离线的静态数据集的学习。

许多在线网站都有持续不断的用户流,对于每一个用户,网站希望能在不将数据存储到数据库中便顺利地进行算法学习。

在线学习的算法与随机梯度下降算法有些类似, 我们对单一的实例进行学习, 而非对一个提前定义的训练集进行循环。

一旦对一个数据的学习完成了,我们便可以丢弃该数据,不需要再存储它了。

这种方式的好处在于,我们的算法可以很好的适应用户的倾向性,算法可以针对用户的当前行为不断地更新模型以适应该用户。

这些问题中的任何一个都可以被归类到标准的,拥有一个固定的样本集的机器学习问题中。

或许,你可以运行一个你自己的网站,尝试运行几天,然后保存一个数据集,一个固定的数据集,然后对其运行一个学习算法。

但是这些是实际的问题,即大公司会获取如此多的数据,真的没有必要来保存一个固定的数据集, 取而代之的是你可以使用一个在线学习算法来连续的学习,从这些用户不断产生的数据中来学习。 这就是在线学习机制。

然后就像我们所看到的,我们所使用的这个算法与随机梯度下降算法非常类似,唯一的区别的是,我们不会使用一个固定的数据集,我们会做的是获取一个用户样本,从那个样本中学习, 然后丢弃那个样本并继续下去, 而且如果你对某一种应用有一个连续的数据流,这样的算法可能会非常值得考虑。

当然,在线学习的一个优点就是,如果你有一个变化的用户群,又或者你在尝试预测的事情,在缓慢变化,就像你的用户的品味在缓慢变化,这个在线学习算法,可以慢慢地调试你所学习到的假设,将其调节更新到最新的用户行为。

————————————————————————————————————————————————————————

Map Reduce and Data Parallelism

Map Reduce and Data Parallelism对于大规模机器学习问题而言是非常重要的概念。

之前提到, 如果我们用批量梯度下降算法来求解大规模数据集的最优解,我们需要对整个训练集进行循环,计算偏导数和代价,再求和,计算代价非常大。如果我们能够将我们的数据集分配给不多台计算机,让每一台计算机处理数据集的一个子集,然后我们将计所的结果汇总在求和。这样的方法叫做MapReduce。

具体而言,如果任何学习算法能够表达为,对训练集的函数的求和,那么便能将这个任务分配给多台计算机(或者同一台计算机的不同 CPU 核心),以达到加速处理的目的。

例如, 我们有 400 个训练实例, 我们可以将批量梯度下降的求和任务分配给 4 台计算机进行处理:

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

Map Reduce and Data Parallelism
Map Reduce and Data Parallelism

机器学习13大规模数据集相关推荐

  1. 机器学习:sklearn数据集与机器学习组成

    机器学习组成:模型.策略.优化 <统计机器学习>中指出:机器学习=模型+策略+算法.其实机器学习可以表示为:Learning= Representation+Evalution+Optim ...

  2. 机器学习实战的数据集在哪找_在哪里找到很棒的机器学习数据集

    机器学习实战的数据集在哪找 Good machine learning research starts with an exceptional dataset. There is no need to ...

  3. 23 个优秀的机器学习训练公共数据集

    Iris 数据集的那些示例你是不是已经用腻了呢?不要误会我的意思,Iris 数据集作为入门用途来说是很不错的,但其实网络上还有很多有趣的公共数据集可以用来练习机器学习和深度学习.在这篇文章中,我会分享 ...

  4. 【机器学习】sklearn数据集获取、分割、分类和回归

    sklearn数据集 1.数据集划分 1.1 获取数据 1.2 获取数据返回的类型 举个栗子: 1.3 对数据集进行分割 举个栗子: 2. sklearn分类数据集 3. sklearn回归数据集 1 ...

  5. 23个优秀的机器学习训练公开数据集,一文全知道!

    作者 | Nikola M. Zivkovic   转自AI前线 译者 | 王强 策划 | 凌敏 对于学习机器学习的朋友,一般都会用到那些常用的机器学习数据集,这里一篇文章一网打尽,大家可以一次性下载 ...

  6. [当人工智能遇上安全] 7.基于机器学习的安全数据集总结

    您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...

  7. python怎么导入数据集keras_keras使用Sequence类调用大规模数据集进行训练的实现

    使用Keras如果要使用大规模数据集对网络进行训练,就没办法先加载进内存再从内存直接传到显存了,除了使用Sequence类以外,还可以使用迭代器去生成数据,但迭代器无法在fit_generation里 ...

  8. Dataset:机器学习中常用数据集下载链接集合之详细攻略

    Dataset:机器学习中常用数据集下载链接集合之详细攻略 目录 机器学习中常用数据集下载链接集合之详细攻略 sklearn.datasets数据集所有csv文件集合 seaborn-data数据集所 ...

  9. R语言 RevoScaleR的大规模数据集决策树模型应用案例

    RevoScaleR中的rxDTree函数使用基于分类的递归分区算法来拟合基于树的模型得到的模型类似于推荐的ř包rpart包产生的模型支持分类型树和回归型树.; 与rpart包一样,差异由响应变量的性 ...

最新文章

  1. Python 虚拟环境 virtualenv
  2. centos 开发php扩展,【PHP扩展】centos给PHP安装扩展
  3. cmd 关闭进程及查看本机端口
  4. 推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者
  5. Python基础—10-常用模块:time,calendar,datetime
  6. Leetcode每日一题:530.minimum-absolute-difference-in-bst(二叉搜索树的最小绝对值)
  7. snmp信息的查询命令snmpwalk
  8. 如何在Python中实现尾递归优化
  9. JDK、SDK、JRE、JVM概念详解
  10. Exchange 2010 证书续期
  11. RAW格式转存PNG图片
  12. (转帖)Spring循环依赖的解决办法
  13. android仿微信录制短视频并播放视频
  14. 浩辰CAD给排水2021安装教程
  15. unity+Cardboard SDK VR开发Cardboard Unity SDK讲解
  16. linux环境下查看进程,Linux下查看进程(程序)启动时的环境变量
  17. Solidity基础教程2——Safemath
  18. 前端---HTML设置圆角边框
  19. document在方法外获取对象无法获取数据
  20. 计算机的算数运算符号位参与计算吗,C语言算术运算符和算术表达式

热门文章

  1. 【C++ grammar】引用
  2. Opencv——查找并绘制凸包、凸包与轮廓的关系
  3. 数据科学和统计学_数据科学中的统计
  4. ONGC的完整形式是什么?
  5. Python字符串格式:%vs.format
  6. java uuid静态方法_Java UUID equals()方法与示例
  7. java jar包示例_Java包getSpecificationVendor()方法和示例
  8. ffmpeg-AVFrame分配内存问题
  9. python连接数据库mysql错误1045_django 连接数据库出现1045错误的解决方式
  10. 每日一题:leetcode80.删除有序数组中的重复元素贰