机器学习笔记(十)大型数据集的学习

第十章、大型数据集的学习

1.很多时候数据是越大越好,所以处理大量数据的时候就会很费时,

但是在确定数据的时候,一定要先想一下,如果只使用部分数据(不是很大),就能替代整体数据,那么还是选择部分数据

或者这是一个欠拟合的问题,而需要先修改。

2.随机梯度下降stochastic gradient descent :可以通用在使用梯度下降法的算法中。

原来的梯度下降称为Batch gradient descen批处理梯度下降,下图左部

新的算法如右部所示,它的每一步都是只考虑当前的一个数据,theta是在不断的变化原来的是总数除以m,现在一个个的算,不除以m,相对变化比较快。

但是它的最终结果会停在最值周围,可能永远到不了最值(就是因为它每步只考虑尽可能使当前数据的代价cost最小)。

因为它变化比较快,所以一般只要重复1-10次就能达到好的效果。

 计算步骤:

  • 使所有数据随机排列(因为在这种方法中,不同的数据排列会得到不同的结果,可能很好,可能很差)
  • 梯度下降

3.迷你批处理梯度下降Mini-Batch Gradient Descent 

优点:相比批处理梯度下降更快;使用好的向量化(并行处理)比随机梯度下降(一次只处理一个,没有并行性)效果好。(有并行处理能力时最好用)

缺点:多了一个参数b需要选择。(一般经常使用10,b一般在[2,100]之间)

4.检验随机梯度下降是否收敛

在批处理梯度下降中,我们使用的是每步plot那个代价值J,看是否下降;

随机梯度下降以为每步只处理一个数据,所以使用每1000步输出一个平均值的方式查看。

可能的图像及解释:

  • 正常情况(红色表示使用小的alpha)

  • 正常情况(红色表示每5000步plot一次,蓝色表示每1000步plot一次)

  • 讨论(红色表示每5000步plot一次,蓝色表示每1000步plot一次,粉色的表示算法有问题)

  • 异常情况(可能alpha太大造成)

5.随机梯度下降alpha的选择:使用4中的方法选择一个alpha常数。

一种优化的方法是:

优点:在最后会更加靠近最值,因为最后幅度变小了;

缺点:需要确定两个常数的值(解决了一个,出来两个orz)

一般情况下是直接使用不变的alpha,因为也是很接近的,可能优化不了多少。

6.在线学习Online Learning

随机梯度下降算法是每一步只处理一个数据。类似这个思想,对于一个在线的网站,不断地有数据进入,那么可以每产生一个数据,就使用这个数据进行学习,用这个数据来更新参数theta,这个数据使用一次后,就不再使用:

优点:如果用户的习惯变了,那么这个算法同样会慢慢的适应改变,慢慢的修改参数。

7.Map Reduce and Data Parallelism  映射分割和数据并行

原理:就是将可以合并的运算分到多个机器或CPU上分别计算不同部分,之后再进行合并,加快速度。(多台电脑的话,受网络延迟影响)。

如果有多核的话,某些线性代数函数库会自动使用并行技术,不需要Map Reduce。然而不是所有的函数都会使用并行。

原文地址:https://www.cnblogs.com/sbaof/p/4142423.html