栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Machine Learning - Coursera 吴恩达机器学习教程 Week10 学习笔记(Learning With Large Datasets)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Machine Learning - Coursera 吴恩达机器学习教程 Week10 学习笔记(Learning With Large Datasets)

sanity check(合理性检查)

大数据量带来高计算代价,所以首先得确定,是不是大数据量有帮助?

检查Jcv 和 Jtrain 的学习曲线。

如果如左图,有高方差,则说明过拟合了,增加数据量有帮助;
如果如右图,增加数据量没有太大帮助。

随机梯度下降法(Stochastic Gradient Descent)

普通的梯度下降,当m很大时,下面蓝色方框的计算会耗时很高。

普通的梯度下降,又称为batch gradient descent,每次都需要读取所有数据。

这里就引出了随机梯度下降法。

    随机shuffle数据集每次考虑一条数据,向着这个数据进行一点梯度下降,来更好地fit它。

批量梯度下降每次都考虑全部数据集,相比之下,随机梯度下降少了一次求和操作(左侧红色方框),它随机地慢慢地改善。进一寸有一寸的欢喜。

梯度下降的方向,每次都没那么完美,但在曲折中前进,最终还是朝着全局最优解的方向去(虽然最终可能达不到全局最优):

通常这个过程(外部循环)重复1到10次。当m足够大时,1次就够了。

Mini-batch 梯度下降

介于随机梯度下降和批量梯度下降之间。每次用小批量b的数据来做梯度下降,比如 b = 10,通常取2到100。


相比随机梯度下降,mini-batch仅在向量化计算时才有优势,相当于并行计算了b个数据。

每隔一定的数据范围,画出代价函数,观察学习曲线,可能有以下结果。

左上:有时使用较小的学习参数α,会得到微小的改善;
右上:在更大的范围内计算平均代价值,能得到更平缓的曲线;
左下:看到代价函数并不收敛,可能在更大范围内计算能看出下降,也可能看出并没下降,需要调参或重新建模
右下:代价函数在发散,需要减小α

可以通过不断减小α,来使随机梯度下降收敛到全局最优解,越到最后,步子越小:

在线学习(online Learning)

当数据流很大且源源不断时,每次用最新的一个数据来更新θ,用完就扔掉。

在线学习能跟踪用户喜好的变化。

再比如,商品搜索的例子,需要计算CTR(click through rate)用户点击的概率。每次用户搜索时,都会给用户推荐top10的结果;接下来再根据用户的实际点击情况,把这10个结果作为训练集输入,调整模型的θ。

也有其它例子,如:岗位推荐、新闻推荐、商品推荐等。

这种情况下,往往全量数据过大,没有必要每次都用全部数据计算,在线计算是不错的选择。

map-reduce

可以使用map-reduce进行分布式计算,分批计算,汇总结果:

即使只有单机,也能多进程并行计算:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/744818.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号