再 版 前 言
自本书第一版出版到现在已经过去近两年。这段时间内,数据挖掘和机器学习领域快速发展,投入到相关领域研究的人员也越来越多,Weka爱好者队伍也随之逐年发展壮大,Weka学习讨论群所讨论内容的技术含量也日渐丰富。
第二版的修订工作以Weka 3.7.13版本为准,为此,全书重新截图,按照Weka新版本重新修订正文内容。此次再版修改了第一版中一些表述不清楚的陈述、前后不一致的术语,还新增了以下内容:第1章1.3节新增无法连接包管理器的解决办法,第2章2.7节新增边界可视化工具和代价/收益分析可视化及相关实验内容,第4章4.2节新增拆分评估器可视化参数内容,新增完整的第9章机器学习实战,丰富了Weka实践内容。
修订后的第二版共分9章。第1章介绍Weka的历史和功能、数据挖掘和机器学习的基本概念、Weka系统安装,以及示例数据集;第2章介绍探索者(Explorer)界面的使用,主要内容包括图形用户界面、预处理、分类、聚类、关联、选择属性,以及可视化;第3章介绍知识流(KnowledgeFlow)界面,主要内容有知识流介绍、知识流组件、使用知识流组件,以及实践教程;第4章介绍实验者(Experimenter)界面,主要内容有实验者界面介绍、标准实验、远程实验,以及实验结果分析;第5章介绍命令行界面,主要内容有命令行界面介绍、Weka结构、命令行选项、过滤器和分类器选项,以及Weka包管理器;第6章介绍一些Weka的高级应用,主要介绍Weka的贝叶斯网络、神经网络、文本分类和时间序列分析及预测;第7章介绍Weka API,说明使用Java源代码来实现常见数据挖掘任务的基础知识,并给出一个展示如何进行数据挖掘的综合示例;第8章通过对NaiveBayes学习方案的源代码进行分析,深入研究Weka学习方案的工作原理,为开发人员提供实现学习算法的编码基础;第9章介绍如何使用Weka工具挖掘实际的大型数据集,以精选的两个KDD竞赛数据集为例,使读者能够快速进入实际的案例场景,应用所学数据挖掘知识来面对大数据的挖掘问题,考验自己完成难度较大的挖掘项目的动手能力。
第二版改动的内容较多,总体工作量很大,花费了很多时间。从酝酿第二版内容开始,至其杀青,历时超过一年。作者的感觉是:比编写第一版还要辛苦些。且不说Weka版本变动导致的修改,重新截图、重新梳理文字、重新改写API文档等,费时费力。因时间变化引起的一个小小的技术变动,就让人费力应对。例如,怀卡托大学后来不再提供包管理器元数据,导致第一版所述的解决办法不再有效,只能重新寻找解决包管理器无法连接的替代方法。又如,新版本Weka的NaiveBayes源代码有一些变动,作者不得不修订第8章的内容以适应新的版本变化。再如,第一版提供的网络链接有的已经不再有效,出版社编辑老师测试了所有的链接,保证了第二版提供的网络链接的正确性。当然,由于世界变化太快,无法保证在一两年后这些链接不会失效,这是无可奈何的事,作者只能保证书中叙述的方案在交稿时可行。
最耗费心力的应该是第9章的编写。早在第一版的写作中,曾经就有编写一个章节专门讲述Weka综合应用案例的设想,但苦于手上没有合适的实验对象。理想的应用案例必须满足如下要求:第一,难度适中。不能太简单,过于简单的小儿科案例会违背编写综合应用的初衷;也不能太难,如果应用的技术方案太偏或难以理解,就达不到锻炼读者实际动手能力的意义。第二,领域不能太窄,应该让绝大多数人都能理解。第三,运算量不能太大,应该满足普通计算机能够处理的要求。这就限制了目标数据集文件大小为数十兆字节至数吉字节范围以内,实例总数在数十万条至数千万条之间,一台计算机能够在两周左右运行完毕。作者花费了很长时间寻找满足以上要求的案例,最后选中KDD Cup 1999和KDD Cup 2010竞赛数据集,前者共有42个属性,10%数据子集文件的大小为45MB,样本数为494021,完整的数据集文件大小为743MB,样本数为4898431;后者有两个数据集,本书选中的是较大的数据集,共有21个属性,训练数据集文件大小为5.29GB,样本数为20012498。认真的读者会发现,完成这两个案例的实验将会很辛苦,花费的精力和时间会远超预期。作者想象出这么一个画面:读者按照书中的实验方法工作至深夜,硬盘灯不停闪烁,CPU利用率一直高居95%,读者担心心爱的计算机会突然崩溃但仍然坚持,直至最终胜利。作者预先恭喜那些能够独立完成实验的读者,因为你们有足够的能力和毅力应付技术挑战,胜任要求极高的挖掘工作。
尽管在写作中付出了很多艰辛的劳动,但限于作者有限的能力和精力,书中肯定还存在一些缺陷,甚至错误,敬请各位读者批评指正。作者感谢修订工作的贡献者,昆明理工大学计算机系吴霖老师审阅了本书第9章内容,提出了很多建设性建议,感谢吴霖老师的贡献。昆明理工大学2014级研究生卫明同学参与了第1章和第2章的修订工作;光荣与梦想、弦月、Brady、海、__末瞳.夫、不说再见!等网友对第一版提出了宝贵的建议,作者在第二版中采纳了这些建议,感谢这些朋友的贡献。第9章参考了昆明理工大学2014届计算机系吴泽恒同学本科毕业设计论文的部分内容,他是我指导过的最优秀的学生,感谢吴泽恒同学。感谢选择本书为高校教学参考书的教师在使用过程中提出的反馈意见和建议,作者学习到一些很有价值的思考方式。再次感谢清华大学出版社的编辑老师在出版方面提出的建设性意见和给予的无私帮助,编辑老师一丝不苟的工作态度给我留下很深的印象。感谢购买本书的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在再版中改进。希望第二版的发行能够吸引更多的读者和反馈建议。
编 者
第一版前言
当代中国掀起了一股学习数据挖掘和机器学习的热潮,从斯坦福大学公开课"机器学习课程",到龙星计划的"机器学习Machine Learning"课程,再到加州理工学院公开课"机器学习与数据挖掘"课程,参加这些网络课程学习的人群日益壮大,数据挖掘和机器学习炙手可热。
数据挖掘是数据库知识发现中的一个步骤,它从大量数据中自动提取出隐含的、过去未知的、有价值的潜在信息。机器学习主要设计和分析一些让计算机可以自动"学习"的算法,这类算法可以从数据中自动分析获得规律,并利用规律对未知数据进行预测。数据挖掘和机器学习这两个领域联系密切,数据挖掘利用机器学习提供的技术来分析海量数据,以发掘数据中隐含的有用信息。
数据挖掘和机器学习这两个密切相关的领域存在一个特点:理论很强而实践很弱。众所周知,理论和实践是研究者的左腿和右腿,缺了一条腿的研究者肯定难以前行。有的技术人员花了若干年时间进行研究,虽然了解甚至熟悉了很多公式和算法,但仍然难以真正去面对一个实际挖掘问题并很好地解决手上的技术难题,其根本原因就是缺乏实践。
本书就是为了试图解决数据挖掘和机器学习的实践问题而编写的。本书依托新西兰怀卡托大学采用Java语言开发的著名开源软件Weka,该系统自1993年开始由新西兰政府资助,至今已经历了20多年的发展,功能已经十分强大和成熟。Weka集合了大量的机器学习和相关技术,受领域发展和用户需求所推动,代表了当今数据挖掘和机器学习领域的最高水平。因此,研究Weka能帮助研究者从实践去验证所学的理论,显然有很好的理论意义及实践意义。
本书共分8章。第1章介绍Weka的历史和功能、数据挖掘和机器学习的基本概念、Weka系统安装,以及示例数据集;第2章介绍Explorer界面的使用,主要内容包括图形用户界面、预处理、分类、聚类、关联、选择属性,以及可视化;第3章介绍KnowledgeFlow界面,主要内容有知识流介绍、知识流组件、使用知识流组件,以及实践教程;第4章介绍Experimenter界面,主要内容有Experimenter界面介绍、标准实验、远程实验,以及实验结果分析;第5章介绍命令行界面,主要内容有命令行界面介绍、Weka结构、命令行选项、过滤器和分类器选项,以及Weka包管理器;第6章介绍一些Weka的高级应用,主要介绍Weka的贝叶斯网络、神经网络、文本分类和时间序列分析及预测;第7章介绍Weka API,说明使用Java源代码来实现常见数据挖掘任务的基础知识,并给出一个展示如何进行数据挖掘的综合示例;第8章通过对一个学习方案的源代码进行分析,深入研究Weka学习方案的工作原理,为开发人员提供编写学习算法的技术基础。
在阅读大量相关文献的过程中,作者深深为国外前辈们的理论功底和实践技能所折服,那些巨人们站在高处,使人难以望其项背。虽然得益于诸如网易公开课和龙星计划等项目,我们有机会和全世界站在同一个数量级的知识起跑线上,但是,这并不意味着能在将来的竞争中占据优势,正如孙中山先生所说"革命尚未成功,同志仍须努力",让我们一起共勉。
在本书的编写过程中,作者力求精益求精,但限于作者的知识和能力,且很多材料都难以获取,考证和去伪存真是一件时间开销非常大和异常困难的工作,因此书中肯定会有遗漏及不妥之处,敬请广大读者批评指正。
作者专门为本书设置读者QQ群,欢迎读者加群,下载和探讨书中源代码,抒写读书心得,进行技术交流等。
本书承蒙很多朋友、同事的帮助才得以成文。特别感谢Weka开发组的全体人员,他们将自己20年心血汇聚的成果开源,对本领域贡献巨大;衷心感谢清华大学出版社的编辑老师在内容组织、排版,以及出版方面提出的建设性意见和给予的无私帮助;感谢昆明理工大学提供的宽松的研究环境;感谢昆明理工大学计算机系教师缪祥华博士,他为本书的成文提出了很多建设性的建议,对本书的改进帮助甚大;感谢昆明理工大学计算机系海归博士吴霖老师,他经常和作者一起讨论机器学习的技术问题,为本书的编写贡献了很多智慧;感谢昆明理工大学现代教育中心的何佳老师,他完成了本书部分代码的编写和测试工作;感谢国内外的同行们,他们在网络论坛和博客上发表了众多卓有见识的文章,作者从中学习到很多知识,由于来源比较琐碎,无法一一列举,感谢他们对本书的贡献;感谢理解和支持我的家人,他们是我写作的坚强后盾。感谢购买本书的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在再版中改进。
编 者