- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于HadoopMapReduce KNN算法
基于HadoopMapReduce KNN算法
摘要 分布式框架Hadoop/MapReduce的逐渐流行,本文针对机器算法K最邻近算法,阐述其在Hadoop/MapReduce上的实现过程,其中对于文本的相似度会利用余弦定理还处理,这样在Hadoop/MapReduce环境下实现K-NN算法对位置类别的文本分类。机器算法在Hadoop/MapReduce上的实现,同时增加了算法的可扩展性和分析文本的能力,适应于当今大规模数据处理的要求。
关键词 K-NN;Hadoop/MapReduce;文本分类;余弦定理;机器学习
中图分类号TP3 文献标识码A 文章编号 1674-6708(2013)82-0203-03
现在的比较流行的机器算法有决策树、朴素贝叶斯、K-Means、SVM、K最邻近算法等等,除了K最邻近算法其他一部分的算法的MapReduce实现已经在Mahout成功实现。
基于Hadoop/MapReduce的分类文本分类技术需要先将采样文本事先上传到HDFS系统当中去,便于Hadoop/MapReduce处理。
1 相关技术介绍
1.1 文本相似度算法-余弦定理
在最近邻学习中,目标函数值可以是离散值的也可以是实值。本文中处理的对象为文本数据,所以距离公式用上面的文本相似度计算公式余弦定理公式代替。
K最邻近算法具体执行如下:
1)将每个训练样例加入到列表training_examples
开始分类:
2)给定一个待分类的文档Docq
3)在training_examples中,用余弦定理公式选出与Docq 得出的文本相似值最大的k个实例,并用Doc1...Dock表示,
4)统计在Doc1...Dock中,各个类别的比例,在这K个文档中,文档数 最大的类别,既是待分类文档Docq的类别
K最近邻算法思想主要靠周围非常有限的邻近的样本,与其他机器学算法不同的是,不是靠判别类域的方法来确定所属类别的,所以对于一般类的交叉或者重叠十分多的待分样本数据说,K最近邻方法较其他方法更为适合。
K最近邻在用途上,不仅可以用于分类,还能用于回归计算等等方面。通过找出一个样本的k个最近邻居,将这些邻近的属性的平均值赋给该样本,就可以得到该样本的属性。其他比较有用的方式是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比等等。
1.3 Hadoop/MapReduce简介
1.3.1 Map阶段
在map task运行是 本地程序会在内存中生成一个环形的内存缓冲区,map task处理后生成的数据会放入这个环形缓冲区,当内存被占用达到一定的比例时候,就启用一个叫做spill的线程进行溢写,也就是将环形缓冲区中的数据写入磁盘,在这个操作前,spill线程会依据当前数据要送达的reduce,将数据划分为对应的分区(partition),每个分区中,线程会按照key进行排序(一般默认调用的快速排序法),当死皮spill线程处理完map task输出的数据后,系统开始用merge函数来合并spill线程生成的文件,如果用户在编写的时候设置的combine函数的话,接下来调用combine函数,来进行本地的合并相同key的数据处理。
1.3.2 Shuffle阶段
简单地拉取数据。Reduce进程启动一些数据copy线程(Fetcher),通过HTTP方式请求map task所在的TaskTracker获取map task的输出文件。
Copy过来的数据会先放入内存缓冲区中,期间执行的merge主要有两种形式:1)内存到磁盘 2)磁盘到磁盘。当内存中的数据量到达一定阈值,就启动内存到磁盘的merge。与map 端类似,这也是溢写的过程,这个过程中如果你设置有Combine,也是会启用的,然后在磁盘中生成了众多的溢写文件。第一个merge方式一直在运行,直到没有map端的数据时才结束,然后启动第二种磁盘到磁盘的merge方式生成最终的那个文件。
1.3.3 Reduce阶段
进入Reduce阶段后,会得到Shuffle阶段merge生成的“最终文件”。这里的“最终文件”可能存在于磁盘上,也可能存在于内存中。默认情况下,这个文件是存放于磁盘中的。当Reducer的输入文件已定,整个Shuffle才最终结束。然后就是Reduce Task执行,执行相应用户定义的处理后,把结果放到HDFS上。
关于MapReduce的map阶段中的map函数和reduce阶段中的reduce函数的输入与输出:Map/Reduce框架运转在 键值对上,也就是说, 框架把作业的输入看为是
原创力文档


文档评论(0)