zoukankan      html  css  js  c++  java
  • 机器学习笔记(十)大型数据集的学习

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

    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。然而不是所有的函数都会使用并行。

  • 相关阅读:
    jQuery之$().each和$.each的区别(转)
    js获取非行间样式--有bug,忧伤
    js之数组方法
    js之检测对象类型
    for-in枚举对象属性
    jq 处理select 下拉框
    阿里大鱼短信发送服务应用实例(PHP SDK)
    php RSA 非对称加解密实例
    JS HTML table 生成 Excel文件
    php RSA 加解密实例
  • 原文地址:https://www.cnblogs.com/sbaof/p/4142423.html
Copyright © 2011-2022 走看看