Machine Learning(Andrew)Week10(上)

本文探讨了如何通过学习曲线判断数据量对模型性能的影响,并对比了不同梯度下降方法(批梯度下降、随机梯度下降、小批量梯度下降)在大规模数据集上的应用效率。重点分析了随机梯度下降的收敛性及其参数选择,以及在线学习的特点和优势。此外,介绍了如何构建和优化在线学习模型,包括特征构建、模型选择与调整策略。同时,阐述了利用Map-reduce和数据并行处理加速梯度下降计算的方法,以及其在大规模数据集处理中的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大数据集的机器学习

问题引出

在Week6(下)中我们曾说过Banko and Brill设计的一个分类器,最后得出了一个结论“It’s not who has the best algorithm that wins .It’s who has the most data”

但是在Week6(上)中我们说对高variance增加数据是有用的,而对于高vias帮助不大。所以什么时候数据多比较好,要用学习曲线来判断。


在Hsuan-Tien Lin的第十一讲说到随机梯度下降,可以去看看。我们先比较下几个梯度下降

Mini-batch gradient descent 

区别:

Batch gradient descent 迭代的时候要使用所有m笔数据

Stochastic gradient descent迭代时随机使用1笔数据

Mini-batch gradient descent 迭代的时候使用b笔数据(通常b在2-100之间)

可以向量化形式提高计算速度

随机梯度下降收敛性

(1)批量梯度下降时,把Jtrain随着迭代次数变化的曲线画出来,判断是否收敛。但是如果数据规模很大,代价就太大了。

(2)随机梯度下降时,每次更新θ,都用代入下式:

每迭代i次,就求这i次代价的平均值,再绘制平均值与i迭代次数的曲线。(比如,第一次迭代就是一次平均,两次迭代就是两次的平均值……)

每迭代k次,横坐标是迭代次数;纵坐标是代价平均:第1次的代价,第1次和第2的代价的平均……k次代价的平均。看收敛情况时,重点看最后一个k次迭代的曲线。所以可以只绘制最后k次迭代的曲线

绘制最后k次迭代的曲线

 

可以看出,我们选了个小的α后,学习曲线下降趋势明显多了

 

对于不平滑的状况,我们可以选用更大的N。左图可以看出,N更大时更平滑。

 

左图蓝色线,抖动明显且不下降,增加迭代次数k看它下降(红色线);如果它没下降,变成绿色的线,就有可能模型有问题

 

选一个小的α

从上面分析,最后k次迭代时,要想代价函数变小,可以增加N,增大迭代次数,减小α。

在Hsuan-Tien Lin第十讲说到,梯度下降时,学习率η(这里的α)越靠近最优解越小。

 

随机梯度要想θ收敛,也要使α越来越小。因此,可以令α随着迭代次数的增加而下降

 

在线学习

在线学习的特点就是数据是一笔一笔进来的,而不是一下子就收集完整的训练数据。

比如你经营一个在线物流网站,一个用户进来时,会提供寄送物件的发送地和目的地。你要提供一个报价,用户考虑要不要使用你的物流服务。(选择y=1,不选择y=0)

所以,机器学习需要构建一个模型,来预测用户接受的概率,以便调整价格。

x用来捕获用户属性,如发送地,目的地和价格。

算法

在线学习一次只算一个用户,算完之后,这个数据并不保存。好处就在于模型是不停的调整着的,不像前面说的方式,模型针对训练数据,训练完成模型就固定了。在线学习的模型更有针对性。每次交易也可不止一笔数据,你可以提供几种方案,让用户选择,看他是否接受其中一种。

再举一个例子

产品查询系统

如用户查询“Android phone 1080p camera”

现在有100部Android phone,结果是要返回用户最可能点击查看的10部。

特征x={features of phone,how many words in user query match name of phone,how many words in query match description of phone,etc}

用户点击y=1,否则y=0。

模型

其他在线学习例子:Choosing special offers to show user;customized selection of news articles;product recommendation;……

Map-reduce and data parallelism

在Hsuan-Tien Lin的第十一讲说到梯度下降,求梯度:

 

是看遍所有数据求梯度平均。所以,对于大规模数据而言,让一台机器求梯度平均,计算代价十分高。

如果能够有很多台机器,每台分担一部分计算量,最后再把所有梯度相加求平均,这样可以变得高效些。

不过,这里需要注意的是,让多台机器分工,最后的结果是线性求和。如果不同机器使用的数据有前后关联性,就不能用这种方式。

举例:

这样的方式就叫做map-reduce,形象图为:

有很多算法都要用到求和,所以这样的算法都可以考虑用map-reduce,但是还是强调数据之间是否有前后关联性(比如机器A入出的数据是否是机器B的输出)。map-reduce也不一定都是多台机器,如果一台机器多核,也可以只用一台机器:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值