基于Mahout 命令的电影聚类分析与实现

来源 :计算机时代 | 被引量 : 0次 | 上传用户:never03330
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 研究使用mahout命令进行电影聚类分析,介绍了聚类算法、分类算法及推荐过滤算法等。同时结合mahout的特点,分别呈现两种算法即K-means与Canopy+K-means的原理,并采用从电影网站中爬取的几十条数据对算法进行测试与实现,两种算法最终都直观地得出此聚类所代表的电影信息。
  关键词: Mahout; 聚类分析; 大数据; 电影
  中图分类号:TP393 文献标志码:A 文章编号:1006-8228(2017)11-54-04
  Implementing the clustering analysis of movies with Mahout
  Ye Huixian, Huang Weigang
  (Fujian Agricultural Vocational and Technical College, Fuzhou, Fujian 350007, China)
  Abstract: This paper studies the clustering analysis of movies using mahout, and introduces the clustering algorithm, classification algorithm and recommendation filtering algorithm. At the same time, combining with the characteristics of mahout, shows the principle of two kinds of algorithms respectively, i.e. K-means and Canopy+K-means, and the algorithms are tested and implemented with dozens of data climbed from movie website, both algorithms intuitively show the information of the movies represented by the cluster.
  Key words: Mahout; clustering; big data; movie
  0 引言
  互联网娱乐在大数据浪潮中迎来了新的挑战,如何在各种网站海量的视频中找到感兴趣的内容就成了新的难题。中国电影产业正处于高速发展期,据中国电影产业《2017-2022年中国电影行业深度调研及投资前景预测报告》数据中显示:国产电影2016年我国共生产故事片772部,动画片49部,科教片67部,记录片32部,特种片24部,总计944部,超过前十年峰值,2016年国产电影放映率仅40%,相比美国100%上映率,资源严重浪费[1]。电影票房惨淡可能导致前期的巨大投入无法收回,因此电影人必须谨慎考虑每个因素对票房的影响,到底什么类型的电影才能卖得好?这是本文数据分析要解决的问题。电影网站上的数据非常庞大,抓取到的文本信息甚至需要以TB为单位来存储,所以在进行大数据量的代码实现之前,要先对小数据集进行测试,以验证算法的可行性。
  1 聚类概述
  聚类顾名思义是将同一类事物或数据归到同一类型中,同一个类中的对象有很大的相似性,不同类之间的对象有很大的差异性。在机器学习中,要把大量的数据划分为不同的类型通常采用建模的方法。聚类是搜索类的无事先规则与分类的标准的学习过程。与分类不同,聚类是无规则的学习,不依赖预先定义的类或带类标记的实例,由聚类学习算法自动确定标记,而分类学习的实例或数据对象有类别标记[2]。聚类分析是一种探索性的分析,不同分析者对于同一组数据进行聚类分析,所得到的聚类数未必一致。
  2 应用背景
  本文将从电影网站上爬取到的电影类型匹配到所建数据库中。利用数据清洗中的去重,将没有匹配到任何电影类型信息视为无用文本数据将其删除。最后保留电影名称,匹配到的类型,词与词之间用空格分开。然而这样的文本向量是无法在分布式文件系统上进行处理的,因此需要通过TF-IDF加权的方法,将词文本进行转换,得到可处理的数据向量。
  TF-IDF是一种统计方法,即一个词语在在一篇文章中或一个文件集或一个语料库中出现次数越多,同时在所有文档中出现次数越少,越能够代表該文章。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF词频(term frequency)是指某一个给定的词语在该文件中出现的次数[4]。词频公式如图1所示。
  单纯使用TF还不足,需要进行权重的设计即:一个词语预测主题的能力越强则权重越大,反之权重越小。IDF逆向文件频率(inverse document frequency)就是在完成这样的工作,某一特定词语的IDF,是由总的文件数目除以包含该词语之文件的数目,再将得到的值用log取对数得到。逆文档频率公式如图2所示。
  在IDF中用一个语料库(corpus)来模拟语言的使用环境。如果一个词很常见,那么分母就越大,逆文档频率就越小越接近0。为避免分母为0用加1法即:所有文档都不包含该词。TF-IDF公式如图3所示。
  从图3可得出,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比,即提取关键词的算法为计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。
  3 Mahout算法
  Mahout算法大致分为聚类、协同过滤和分类三种。聚类分析是当下科学研究中一个很活跃的领域,常用聚类算法有:canopy聚类,k均值算法(k-means),模糊k均值,层次聚类,LDA聚类等[3]。Mahout算法分析有以下几种:   3.1 K-means聚类
  在将电影类型向量转换为HDFS可处理的数据后, 便可以进行基于文本词频与TF-IDF的k-means聚类。
  K-means算法是基于划分的聚类方法,首先选择用户指定的参数个数K为初始质心,然后将事先输入的n个数据对象划分为k个聚类以便使所获得的聚类满足[5]:同一聚类中的对象相似度较高,而不同聚类中的对象相似度较低。聚类相似度是利用各聚类中对象的均值所获得一个“中心目标”来进行计算的。通常采用以下方法来实现:①与层次聚类结合;②稳定性方法;③系统演化方法。
  K-means算法试图找到使平凡误差准则函数最小的簇,当潜在的簇形状是凸面的,簇与簇之间区别较明显,当簇的大小相近时,其聚类结果较理想。该算法时间复杂度为O(tKmn),与样本数量线性相关,所以,对于处理大数据集合,该算法效率高,且伸缩性较好。但该算法除了要事先确定簇数K和初始聚类中心外,经常以局部最优结束,同时对“噪声”和孤立点敏感[6],并且该方法不适用于发现非凸面形状的簇或大小差别很大的簇。
  3.2 Canopy算法
  Canopy主要思想是把聚类分为两个阶段:第一阶段,通过使用一个简单、快捷的距离计算方法把数据分为可重叠的子集,称为“canopy”;第二阶段,通过使用一个精准、严密的距离计算方法来计算出现阶段中同一个canopy的所有数据向量的距离[7]。这种方式和聚类方式不同的地方在于使用了两种距离计算方式,同时因为只计算了重叠部分的数据向量,所以达到了减少计算量的目的。
  Canopy算法的优势在于可以通过第一阶段的粗糙距离计算方法把数据划入不同的可重叠的子集中,然后只计算在同一个重叠子集中的样本数据向量来减少对于需要距离計算的样本数量。
  4 算法与实现
  在影视网站上的数据十分庞大,本文从豆瓣网上收集了30条电影信息,其中10条是戏曲类型电影,10条是爱情类型电影,10条是动作类型电影,每一个电影信息都用一个txt文件保存,编码格式为UTF-8。由于已知这30个测试数据集应聚成三类,将可直接进行k-means算法的实现,也可以进行Canopy结合K-means的算法实现,下面分别呈现两种方法的代码与结果[8]。
  4.1 k-means实现
  ⑴ 环境准备
  使用的Mahout版本为apache-mahout-distribution-
  0.12.2,使用的Hadoop版本为hadoop-2.4.1。
  将30个txt文件压缩后上传至远程虚拟机,解压至一个本地目录。如/tmp/movie/txt。使用Mahout命令将文本文件转换成SequenceFile,同时会将这么多小文本文件合并成一个Sequence,执行成功后,在本地的/tmp/movie/txt-seq目录下生成了chunk-0文件,该文件格式为SequenceFile,将文本文件转换成SequenceFile,Mahout提供了相应API。将转换好的SequenceFile上传至分布式文件系统上的/tmp/movie/txt-seq/目录中。
  ⑵ 解析SequenceFile,转换成向量表示
  Mahout聚类算法使用向量空间(Vectors)作为数据,接下来在Hadoop上,使用之前生成的SequenceFile,转换成向量表示。
  ⑶ 运行K-Means
  使用tf-vectors作为输入文件,即根据关键词出现的频率来进行聚类。
  输出1,初始随机选择的中心点;
  输出2,聚类过程、结果。
  ⑷ 查看聚类结果
  由于Mahout的clusterdump命令只能在本地运行,因此需要将聚类结果从HDFS下载到本地,其运行命令如表1所示。
  将文件下载到PC端本地并用notepad+查看dump出来的结果如表2所示。
  可以看出,一共有三个Top Terms,即聚成了三类:第一个聚类,文本的形式是词=>词频,在每个聚类中,出现次数越高的词排名越靠前;第二个聚类,排名最高的词汇是“动作类型”词频为0.9,说明在K-means聚类下,该聚类收敛的效果非常好;第三个聚类,排名在第四位的是“戏曲类型”电影,说明该聚类是关于戏曲类型的,但是电影类型并不是词频为0.9,说明该聚类中还有其他电影的信息,而对比第一个聚类,发现第三个聚类中的确有一部分是重合的,说明聚类结果看似不理想,却完全符合现实情况[9]。在运行K-means时使用的是tf-vectors,即基于词频进行聚类,这是当已经提取了关键词后,每一个词都是重要的,不会存在高频无用词,若使用tfidf-vectors,即基于词频-逆向文件频率进行测试,运行命令/结果几乎相近。此处略。这说明TF-IDF相比TF加权方法,更能提取出文本的特征值,从而使聚类效果理想。
  4.2 Canopy+K-means实现
  K-means算法是基于TF与TF-IDF加权方法的实现,Mahout的K-means算法提供了另一种选择,即如果提供了初始化聚类中心,随机从输入向量中生成K个点,采用canopy算法将能得到初始化聚类中心,并且mahout也有相应封装好的jar包,直接从命令行进行操作[10]。
  ⑴ 运行Canopy
  使用tfidf-vectors进行测试,因为TF-IDF方法更为有效地生成了一个聚类结果,这个聚类结果将直接用作初始化聚类中心。
  ⑵ 运行K-Means
  这里只采用tfidf-vectors作为输入向量,并且在-c后面用canopy聚类结果。运行命令如表3所示。
  ⑶ 查看聚类结果   用dump将聚类结果下来,下载到PC端使用Notepad++查看如表4所示。
  以上数据显示Canopy+K-means算法起到很好的聚类结果,虽然关键词的排序以及权重与K-means的结果有细微不同,这正说明了两种方法过程的不同,但都收敛到了很好的聚类效果。
  5 结束语
  本文阐述了K-means算法适合于已知聚类数的测试数据;Canopy+K-means在基于TF-IDF加权技术下适用于对未知聚类数的情况进行聚类。两个方法最后都能有效地将电影类型排序出聚类结果,可以直观地看出这一个聚类代表的是哪一种电影类型[11]。每一个聚类中,根据权重的排序也可以很直观地得到与该电影关联度最大的类型。这样的映射是来源于数以万计的大数据中电影信息的综合评估,是客观的,是符合大数据挖掘机器学习核心理念的。本文用的是测试数据的实现,由于实际应用中数据的复杂性,多样性,特别是对于多维数据和大型数据的情况下,参数会有变化。大量无关的属性使得在所有维中存在类的可能性几乎为零,同一部电影会出现许多不同的类型,会使电影类型的权重下降,导致无法在聚类结果中直观地看出这一类代表的是哪一类电影,因此需要人为地提高电影类型的权重,让电影类型在文本词向量中重复若干次,相当于提高词频,而逆向词频频率不变,以此提高电影类型的TF-IDF权重。
  参考文献(References):
  [1] 袁义龙.基于Mahout的电影推荐引擎的设计与实现[D].北京
  邮电大学硕士学位论文,2014.
  [2] 孙天昊,黎安能,李明,朱庆生.基于Hadoop分布式改进聚类
  协同过滤推荐算法研究[J].计算机工程与应用,2015.15.
  [3] 赵伟,李俊锋,韩英,张红涛.Hadoop云平台下的基于用户协
  同过滤算法研究[J].计算机测量与控制,2015.6.
  [4] 刘文峰,顾君忠,林欣,陈鹏.基于Hadoop和Mahout的大数
  据管理分析系统[J].计算机应用与软件,2015.1.
  [5] 路秋瑞.基于Hadoop的大規模数据排序算法研究[J].信息与
  电脑(理论版),2015.17.
  [6] 戴中华,盛鸿彬,王丽莉.基于Hadoop平台的大数据分析与
  处理[J].通讯世界,2015.6.
  [7] 张效尉,陈亚峰,秦东霞.基于Hadoop的云存储系统研究与
  实现[J].商丘师范学院学报,2015.9.
  [8] 黄学峰.基于Hadoop的电影推荐系统研究与实现[D].南京
  师范大学,2015.
  [9] 窦志成,文继荣.大数据时代的互联网分析引擎[J].大数据,
  2015.3.
  [10] 路小瑞.基于Hadoop平台的职位推荐系统的设计与实现[D].
  上海交通大学硕士学位论文,2015.
  [11] 李龙飞.基于Hadoop+Mahout的智能终端云应用推荐引
  擎的研究与实现[D].电子科技大学硕士学位论文,2013.
其他文献
传统的教学模式课堂教学时间主要花在知识的传授上,学生被动聆听主讲教师讲课,没有足够的时间发挥学生学习的主动性。文章分析了MOOC出现以来涌现的大量优质的、名校名师的MO
在分析了国内外大多数网络通信与监控软件的基础上,提出了一种采用多线程、用Winsock 实现网络连接的网络通信与监控的新模式。系统设计采用集成与开发并重的方式。基于COM
期刊
肺结核是由结核杆菌引起的一种常见慢性传染病,而咯血又是肺结核常见的严重并发症,如抢救不及时可在数分钟内发生窒息,甚至危及生命。因此,对大咯血患者的治疗与护理十分重要,护理
护理学是一门实践性很强的应用性学科,操作技能是护理工作中极为重要的一个方面.护校学生通过临床实习进行操作技能的训练,结合在学校学到的医学理论知识,不断积累临床经验,
目的观察茴拉西坦对轻中度阿尔茨海默病(AD)的疗效。方法将64例轻中度阿尔茨海默病患者随机分为2组,分别给予茴拉西坦和吡拉西坦治疗。于治疗前、治疗后6月采用简易智力状态量
电作为日常生活中的重要动力资源,不仅带动了社会经济的稳定发展,还促进了人类生活方式的进步。并且随着社会的快速发展,各行各业对电能的需求量都在不断地增加,从而无形中对
目的探讨低分子肝素和红花注射液联合用药治疗心绞痛的临床疗效与安全性。方法152例心绞痛患者随机分为治疗组83例,对照组69例。治疗组给予低分子肝素5000IU,q12h,皮下注射,连用7
狂犬病又称恐水症,是由狂犬病毒引起的一种人兽共患传染病,人感染狂犬病最常见的方式是通过感染狂犬病毒的犬、猫、野生食肉动物咬伤、抓伤等而感染。狂犬病毒主要通过破损的皮
为了克服传统的等级保护测评项目实施过程中人工分析和计算工作量大,报告编制任务繁重等问题,文章设计了基于Delphi7开发平台的等保测评项目管理及报告生成系统,旨在汇总测评信