大数据集的梯度下降算法
主要内容包括:
- 批量梯度下降法Batch Gradient Descent(BSD)
- * 随机梯度下降Stochastic gradient descent ( SGD) *
- 小批量梯度下降 Mini-Batch Gradient Descent
- online learning
-Map-reduce 并行化计算
回顾
梯度下降算法
Jtrain(θ)=12m∑mi=1(hθ(x(i))−y(i))2
批量梯度下降法Batch Gradient Descent(BSD)
每次迭代的时候,都对全部样本进行计算
随机梯度下降Stochastic gradient descent ( SGD)
先将样本数据随机打乱顺序,然后在每次迭代中,只是用一个样本数据
优点:节约计算成本
缺点:不是每次迭代都会是J变小,可能陷入局部最优解
为了确保SGD收敛(Convergence),在使用第i个样本更新
θ
之前,先计算cost,也可以选择将结果plot画出来,来感受算法的效果,如果cost振幅很大而且不变小,试试换个learning rate 或者增加feature,如果反而增大,试试减小learning rate(
α
)
一般情况下learning rate(
α
)都保持恒定;如果希望最终得到全局最优解,可以试试逐渐减小learning rate(
α
):
α=const1iterrationNumber+const2
,但那样你又多了两个参数要调,所以通常还是用恒定learning rate(
α
)的多。
小批量梯度下降 Mini-Batch Gradient Descent
每次迭代使用b个样本,b通常取值范围2~100,Angrew经常用的是10
借助octave的向量化计算函数,Mini-Batch 的 性能会优于 SGD;但多了一个参数b要调
online learning
当你的网站有很多访问量,有很多免费的数据,来一个数据,计算一次,丢弃这个样本,使用onlinelearning。如果你的网站数据量很小,那还是把数据保存下来慢慢train 比较好。
online learning 可以很好的使用用户的变化,比如经济危机的时候用户可能会价格更加敏感。
举一个搜索引擎学习CTR的例子
Map-reduce 并行化计算
就是将批量梯度下降算法的求和计算分配给整个集群
将训练集分成若干份,每一份在一个slave机器上跑,再汇总到master机器上
如果机器学习算法中有求和计算,就可以考虑用MapReduce进行优化
Mapreduce可以用于集群,数据中心,也可以用户多核的单机