还是转译KDNuggets的文章。微软的Dmitry Petrov介绍的如何用Spark ML来处理超过内存大小的数据。原文的 Link
这里侧重的是数据的大小远远超过单机的内存大小。原来这样的分析都是要用分布式的系统(比如hadoop)上来实现,而这篇文章里介绍的是单机如何通过Spark来实现分析。不过自己做了很多的migration,所以就算是原创啦。
本文所要介绍的案例的目的是要建立一个预测模型来基于帖子的标题和内容来预测一个帖子的标签(Tag)。处于简化代码的目的,文章里会把这两field组合成一个文字列来处理,而不是分别处理。(译者注:很明显,标题里的文字对于预测标签的权重应该更大,所以现实工作中,我们应该是分别对待这两个列)。
很容易理解这个预测模型对于stackoverflow.com这样的网站的价值。用户输入一个问题,网站会自动的给出标签的建议。假定我们需要尽可能多的正确的标签,这样用户可以删掉那些不相关的标签。基于这样的假定,我们就可以使用recall来作为检验模型好坏的最重要的依据了。
首先是要找这样的一个数据,文章里用的是在aXive上的stackflow的posts.xml文件,链接是https://archive.org/details/stackexchange。同时作者也提供了一个小文件来给大家做练习,链接在https://www.dropbox.com/s/n2skgloqoadpa30/Posts.small.xml?dl=0,(需要注意的是,是国内访问不了这两个网站,所以我把第二个小文件放到云盘里面供下载,地址:http://pan.baidu.com/s/1jGJFtQI,链接。第一个文件需要大家自己