再版前言
自本书第一版出版到现在已经过去近两年。这段时间内,数据挖掘和机器学习领域快速发展,投入到相关领域研究的人员也越来越多,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届计算机系吴泽恒同学本科毕业设计论文的部分内容,他是我指导过的最优秀的学生,感谢吴泽恒同学。感谢选择本书为高校教学参考书的教师在使用过程中提出的反馈意见和建议,作者学习到一些很有价值的思考方式。再次感谢清华大学出版社的编辑老师在出版方面提出的建设性意见和给予的无私帮助,编辑老师一丝不苟的工作态度给我留下很深的印象。感谢购买本书的朋友,欢迎批评指正,你们的批评建议都会受到重视,并在再版中改进。希望第二版的发行能够吸引更多的读者和反馈建议。
编者