zoukankan      html  css  js  c++  java
  • 【Stanford Machine Learning Open Course】机器学习中的大数据处理

    这里是斯坦福大学机器学习网络课程的学习笔记。课程地址是:https://class.coursera.org/ml-2012-002/lecture/index

    本节内容对应第十周,Lecture17.  回到总目录

    ~~
    实践证明,数据的重要性并不亚于算法本身,所以也有了这句话:
    It's not who has the best algorithm that wins, It's who has the most data.
     
    机器学习的算法对大数据是很适用的,那么,如何让算法在大数据上高效运行呢?
    答案其实就是:并行计算。 
     
    梯度下降法的并行实现算法:
    前面介绍的机器学习算法中,几乎都用到了梯度下降方法,我们来看下:

     这个算法,每次迭代时需要计算求和项 

    对于海量数据而言,这个计算会变得很慢。 
    那么如何改善呢?答案之一就是把一个求和改成多个求和,让多个机器同时计算
     
    我们将上述每次迭代在全部训练集取sum的方法叫Batch Gradient Descent
     
    我们可以将BGD算法改成,每次迭代对一个训练样本计算,这个算法叫Stochatic Gradient Descent (SGD),公式如下

    有时一个一个样本计算,迭代次数可能会很多,也可以考虑每次对数个样本进行迭代,这个方法叫做Mini-Batch Gradient Descent,公式如下:

    我们改了算法,那么新的算法是否能收敛呢?
    有时并不能收敛到精确的全局最优点,但会在全局最优点附近,也就是会有较小误差。
    当然,也可以达到全局最优点,就是每次迭代时将alpha减小,则迭代步长越来越小,趋近于0,就能保证收敛到全局最优点。
     
    下面再考虑下如何分析SGD:
    1. 用小alpha的话,收敛可能放慢,但效果可能会更好。(红色为小alpha)

    2. 当将b从1000增加到5000时,cost变化曲线会变得更加光滑。(红色为b较大情形)

    3. 有时cost并不递减,
      但增加b,又会降低,因为b太小,波动厉害
      增加b,也可能cost仍然不降低,此时你的算法需要去review了

    4. 有时cost会增加,用smaller alpha
     

     
    并行计算实践:
    上面讲了并行计算的方法了,
    并行计算一般用Map-Reduce的方法去执行,这里就不再展开,感兴趣的可以查看这里入门。
     
     
    何时使用大数据?
    在想用大数据,想用并行计算前,需要确定,你的模型已经由于缺少训练样本而影响效果了,
    否则还是在算法上进一步迭代。
     
    什么情况下需要增加训练样本呢? 其实前面也讲到过,比如过拟合问题就通过增加训练样本可以提升效果。 

    那么如果你的算法还处在欠拟合状态,则需要通过增加特征,达到样本不够用的状态后再考虑用大数据提升效果。
     

     ~~~
     
     
     
    转载请注明出处: http://www.cnblogs.com/liyuxia713/
  • 相关阅读:
    那些容易忽略的事4-(正则表达式反向引用 )
    那些容易忽略的事3-(变量提升和函数提升)
    那些容易忽略的事(2)
    那些容易忽略的事(1) -变量与运算符+
    call()与apply()传参需要注意的一点
    CSS凹型导航按钮
    动态的99乘法表
    js中的for-of循环遍历数组
    交换2个变量的值
    gl.disableVertexArray P77 关闭location指定的attribute变量
  • 原文地址:https://www.cnblogs.com/liyuxia713/p/2781611.html
Copyright © 2011-2022 走看看