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

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

 ~~~
 
 
 
posted @ 2012-11-21 22:25  liyuxia713  阅读(871)  评论(0编辑  收藏  举报