描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302497660
本书还包括:
Ø 在每一章的开头给出了本章所探讨关键主题的详细概要;
Ø 在每一章的结尾会通过一些案例和练习使读者扩大对所现有材料的理解;
Ø 通过具有丰富数据的案例解释数据挖掘技术的各种应用;
Ø 同时还有专门的学习网站,包括20多个数据集、练习和案例学习解决方案,以及相应的教学课件。
本书是一本非常优秀的教科书,适用于数据挖掘、预测分析和商业分析的本科生和研究生课程。本书也是数据科学家、分析师、研究人员和从业人员在管理、金融、市场营销、信息技术、医疗保健、教育和其他数据丰富的领域进行分析的独一无二的资源。
这就是本书(《数据挖掘:商业数据分析技术与实践》)所能给读者提供的。Shmueli教授同她的合著者为学生们提供了这样一个非常有用的学习指南,其中涉及与复杂数据集相关的重要概念和方法。本书作者具有多年的教学经验,为了跟上本科及研究生商业分析课程中的变化,我们已经对早期的版本进行修订。重要的是,新版本集成了SAS研究所用于处理和分析数据的统计工具JMP Pro.。学习分析方法的终目的是通过数据生成一些见解。通过强大的统计工具训练学习者敏捷的思维,是学习过程中必不可少的关键一步。
如果你把目光放在引领数字世界,那么本书将会是你为未来做准备的开始。
Michael Rappa
高级分析研究所
北卡罗来纳州立大学
[美]盖丽特·徐茉莉(Galit Shmueli)
[美]彼得·布鲁斯(Peter C. Bruce)
[美]米娅·斯蒂芬斯(Mia L. Stephens) 著
[美]尼廷·帕特尔(Nitin R.Patel)
阮 敬 严雪林 周 暐 译
Galit Shmueli, Peter C. Bruce, Mia L. Stephens, Nitin R.Patel
Data Mining for Business Analytic: Concepts, Techniques, and Applications with JMP Pro
EISBN: 978-1-118-87743-2
Copyright . 2017 by Galit Shmueli, Peter C. Bruce, Mia L. Stephens, Nitin R. Patel.
Original language published by John Wiley & Sons, Inc. All Rights reserved.
本书原版由John Wiley & Sons, Inc.出版。版权所有,盗印必究。
Tsinghua University Press is authorized by John Wiley & Sons, Inc. to publish and distribute exclusively this Simplified Chinese edition. This edition is authorized for sale in the People’s Republic of China only (excluding Hong Kong, Macao SAR and Taiwan). Unauthorized export of this edition is a violation of the Copyright Act. No part of this publication may be reproduced or distributed by any means, or stored in a database or retrieval system, without the prior written permission of the publisher.
本中文简体字翻译版由John Wiley & Sons, Inc.授权清华大学出版社独家出版发行。此版本仅限在中华人民共和国境内(不包括中国香港、澳门特别行政区及中国台湾地区)销售。未经授权的本书出口将被视为违反版权法的行为。未经出版者预先书面许可,不得以任何方式复制或发行本书的任何部分。
北京市版权局著作权合同登记号 图字:01-2016-9895
本书封面贴有John Wiley & Sons防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话:010-62782989 13701121933
图书在版编目(CIP)数据
数据挖掘 : 商业数据分析技术与实践 / (美)盖丽特·徐茉莉(Galit Shmueli)等著; 阮敬, 严雪林, 周暐译. — 北京:清华大学出版社,2018
书名原文: Data Mining for Business Analytics: Concepts, Techniques, and Applications with JMP Pro
ISBN 978-7-302-49766-0
Ⅰ. ①数… Ⅱ. ①盖… ②阮… ③严… ④周… Ⅲ. ①商业信息 数据处理 Ⅳ. ①F713.51
中国版本图书馆CIP数据核字(2018)第058897号
责任编辑:刘 洋
封面设计:李召霞
版式设计:方加青
责任校对:宋玉莲
责任印制:宋 林
出版发行:清华大学出版社
网 址:http://www.tup.com.cn,http://www.wqbook.com
地 址:北京清华大学学研大厦A座 邮 编:100084
社 总 机:010-62770175 邮 购:010-62786544
投稿与读者服务:010-62776969,[email protected]
质 量 反 馈:010-62772015,[email protected]
印 装 者:三河市铭诚印务有限公司
经 销:全国新华书店
开 本:187mm×235mm 印 张:26 字 数:472千字
版 次:2018年6月第1版 印 次:2018年6月第1次印刷
定 价:118.00元
—————————————————————————————————————————————
产品编号:073707-01
序 言
无论你选择什么职业或工作地点,你的未来肯定会被数据所包围。现代世界由几十亿个键盘和数万亿个卡片刷头所发出的数据脉冲所构成,这些数据来自于电子设备和系统的各种操作,并且能够在全球范围内迅速传播。数据量是难以用数量来衡量的。但这并不在于你拥有多少数据,而是你用它做什么。把握住这个凌乱的数据世界并很好地利用它,将会成为组织运作良好和职业生涯成功的关键,它不仅仅存在于硅谷、谷歌、Facebook这些地方,也存在于保险公司、银行、汽车制造商、航空公司、医院等地方,甚至可以说它几乎无处不在。
这就是本书(《数据挖掘:商业数据分析技术与实践》)所能给读者提供的。Shmueli教授同她的合著者为学生们提供了这样一个非常有用的学习指南,其中涉及与复杂数据集相关的重要概念和方法。本书作者具有多年的教学经验,为了跟上本科及研究生商业分析课程中的变化,我们已经对早期的版本进行修订。重要的是,新版本集成了SAS研究所用于处理和分析数据的统计工具JMP Pro.。学习分析方法的终目的是通过数据生成一些见解。通过强大的统计工具训练学习者敏捷的思维,是学习过程中必不可少的关键一步。
如果你把目光放在引领数字世界,那么本书将会是你为未来做准备的开始。
Michael Rappa
高级分析研究所
北卡罗来纳州立大学
译者简介
阮敬,博士,教授。现任首都经济贸易大学研究生院副院长,兼任中国统计教育学会常务理事兼高等教育分会副秘书长、中国商业统计学会常务理事、中国现场统计研究会理事、全国工业统计学教学研究会理事、北京大数据协会副秘书长等职。近年来主持和省部级科研项目以及国家机关和企事业单位横向课题30余项;在国内外公开发表论文50余篇,出版专著教材6部,先后11次荣获全国统计科学研究优秀成果奖、北京市哲学社会科学优秀成果奖、北京市统计科学研究优秀成果奖等奖励。
严雪林,现任SAS公司JMP事业部亚太区总经理,北京大数据协会副会长。兼任首都经济贸易大学统计学院兼职教授、全国应用统计专业学位研究生教育指导委员会“大数据硕士”兼职研究生导师、上海财经大学统计与管理学院兼职研究生导师,曾任 JMP 大中华地区总经理、SAS 大中华地区市场及渠道总监、上海大学管理学院兼职教授、中央财经大学统计学院兼职教授等职。长期于全球信息技术及数据分析类领导企业担任高级管理职位,在数据分析、商业智能、运营、市场营销、战略、信用及风险、大数据等领域有近20年的研究与实践。曾领导多个国际团队,为财富 500 强企业及中国本土行业领导者提供数据分析战略、市场营销、研发优化、运营、风险等领域的服务,成功帮助客户导入大数据与分析战略,建立起基于数据分析的科学决策与运营体系,实现转型,推动变革与创新。
周暐,硕士。现任SAS公司JMP事业部数据分析专家。兼任中国质量协会六西格玛专家委员会专家委员,上海财经大学统计与管理学院应用统计硕士研究生导师(兼职),曾在西门子(Siemens)通信运营部门工作多年。精通统计学的理念与实践,擅长探索性数据分析(EDA)、实验设计(DOE)、建模预测(Modeling)、生存与可靠性分析(Reliability)、统计过程控制(SPC)、市场调查(Marketing Research)等统计分析方法在实际工作中的应用。2007年年底编著完成《六西格玛管理统计指南》(中国质量协会推荐的专业书籍),积累了统计技术在半导体、电子、医药、汽车、化工、银行、教育等行业应用的宝贵经验,曾受邀为多家著名企业和高等学府辅导统计应用及六西格玛专业知识,并获得广泛好评。
前 言
本书在2007年年初出版。随后,该教材被众多教师在授课中使用,从专用数据挖掘课程到更一般的商业分析课程(包括我们自己超过十年的在线教学和面授经验)。根据MBA、本科、管理课程的教师以及学生的反馈,在第二版中对一些现有章节进行了修订,并增加了两个新的主题:数据可视化和时间序列预测。
这本书是个完全集成JMP Pro. a的版本,而不是Microsoft Office Excel的插件XLMiner。JMP Pro.是一个运行在Mac和Windows系统上的桌面版统计工具,由SAS研究所开发。本书所有案例、特殊主题框、说明和练习都基于JMP Pro 12。专业版的JMP拥有丰富的内置工具,用于交互式数据可视化,分析和建模等 b。
该版本还包含其他重要的变化。个明显的变化是标题:除了新增JMP Pro.外,我们还用“商业分析(BA)”代替“商务智能(BI)”。第二版中的这一更新反映了术语的变化:BI主要指报告和数据可视化(现在正在发生的事情),而BA还包括先进的分析方法,其中包括预测分析和数据挖掘。在这新版本中,我们更新了这些目前普遍使用的术语。
本书新增了一章——组合方法:集成算法和增量模型(第13章)。这一章在第四部分——“预测和分类方法”的后介绍了这两种重要的方法。首先,集成是用以提高预测性能的多种模型的组合。在实际应用和数据挖掘竞赛中,集成算法通常被证明是非常有效的。其次,增量模型是一种改进方法,用于测量干预或处理影响。与其他章节类似,这一新章节包括现实世界的例子和章节末尾的练习。
其他变化包括根据实际数据添加了两个新案例(一个关于政治倾向说服问题和提升建模,另一个关于出租车订单取消),并删除“关联规则”这一章(关联规则是JMP Pro 12中不可用的功能,但将在JMP Pro 13中成为新功能)。
自从第二版问世,课程使用的教材已经得到大大扩展:初,这本书主要用于MBA选修课程,现在用于各种商业分析和学位课程,以及本科生、研究生和高管教育项目。
a JMP Pro., Version 12. SAS Institute Inc., Cary, NC 27513。关于如何获取JMP Pro.信息,请参阅第1章。
b JMP Pro 13中的相关新特性在多个章节中被提及。
这些课程开设的课时和覆盖的范围有所不同。在多数情况下,我们的书适用于多门课程。本书的设计目的是继续用于通用的预测分析或数据挖掘课程,同时也可以在一系列专门的商业分析项目课程中使用。
一般来说,“商业分析”“预测分析”和数据挖掘课程常见于MBA 和本科专业选修课中,包括书中前三部分的全部内容和第四、五部分中的部分内容。教师可以选择用案例作为团队作业、课堂讨论对象或项目。对于两个学期的课程,可以将第六部分考虑在内。在一系列专门的商业分析课程中,可以使用本书第二版。
预测性分析:监督学习在专门的商业分析项目中,预测性分析的主题通常是基于
很多课程的。个课程将涵盖到第四部分,并且教师会根据课程的长度选择部分内容进行讲授。我们建议在这样的课程中增加第13 章的内容。
预测性分析:无监督学习本课程介绍数据探索和可视化、降维、挖掘关系和聚类(第三和五部分)。如果本课程遵循预测性分析:监督学习课程,探索那些继承了有监督和无监督学习的例子和方法是极其有用的。
预测分析:关于时间序列预测的专门课程将在第六部分讲授。
在所有课程中,我们强烈建议组建一个项目,其中的数据要么根据学生的兴趣收集,要么由老师提供(例如从许多数据挖掘竞赛中获取数据集)。根据我们以及其他教师的经验,这些项目能够增强学生的学习效果,并且可以为他们提供一个很好的机会去了解数据挖掘的优势,以及处理数据和解决实际问题所面临的挑战。
致 谢
笔者感谢许多帮助我们改进版并在第二版中帮助进一步改进的人,在现在这个JMP版本中,Anthony Babinec为我们提供了详细和专业的纠正,他在Statistics.com上的数据挖掘课程中一直在使用这本书的书稿。Statistics.com网站团队同样也提供了有价值的校对、纠正和批判,包括教学操作主管Kuber Deokar,助理教师Shweta Jadhav和Dhanashree Vishwasrao。我们也要感谢在Statistics.com上使用本书早期版本并给出评价的学生们。
同样,Dan Toy和John Elder IV对我们的项目充满热情,并就早期版本提出了详细且有用的意见。Boaz Shmueli和Raquelle Azran在前两版中给出了详细的编辑意见和建议;Noa Shmueli对新版本进行了编辑;Bruce McCullough和Adam Hughes在版中做了同样的工作。Ravi Bapna在印度商学院的数据挖掘课程中使用了本书的早期版本,并给出了宝贵的建议和意见。还有一些有用的评价和反馈来自于许多在课堂上使用过这本书的老师。
马里兰大学史密斯商学院的Shrivardhan Lele,Wolfgang Jank和Paul Zantek提供了实用的建议和意见。我们感谢Robert Windle、MBA学生Timothy Roach,Pablo Macouzet和Nathan Birckhead所提供的宝贵的数据集。我们也感谢MBA学生Rob Whitener和Daniel Curtis提供的热力图和地图图表。我们感谢许多MBA学生进行了富有成效的讨论和有趣的数据挖掘项目,这帮助塑造并完善了本书。
如果没有麻省理工学院斯隆管理学院教师的支持,本书不会有今天的成果。我们特别感谢Dimitris Bertsimas,James Orlin,Robert Freund,Roy Welsch,Gordon Kaufmann和Gabriel Bitran。作为斯隆数据挖掘课程的教学助理,Adam Mersereau对本书笔记和案例作了详细的评论,Romy Shioda帮助编写了本书所使用的案例和练习,Mahesh Kumar提供了聚类分析部分的相关资料。我们非常感谢斯隆商学院的MBA学生,因为他们在课堂上的讨论,促成了这些笔记的完善。
Chris Albright,Gregory Piatetsky-Shapiro,Wayne Winston和Uday Karmarkar提供给我们有用的建议。Anand Bodapati提供了数据和建议,Suresh Ankolekar和Mayank Shah
帮助完善了几个案例,并提供了宝贵的教学评论,Vinni Bhandari 帮助撰写了Charles Book Club 案例。
我们要感谢Marvin Zelen ,哈佛大学的L.J.Wei 和Cyrus Mehta 以及普纳大学的Anil Gore,他们就统计学和数据挖掘之间的关系进行了发人深省的讨论。感谢麻省理工学院工程系统部的Richard Larson ,关于在复杂系统建模中数据挖掘的作用,他提出了许多激动人心的想法。他们帮助我们在新兴的数据挖掘领域建立一个平衡的哲学观点。
我们感谢Ajay Sathe 和他的Cytel 同事帮助启动这个项目,他们是Suresh Ankolekar, Poonam Baviskar,Kuber Deokar,Rupali Desai,Yogesh Gajjar,Ajit Ghanekar, Ayan Khare,Bharat Lande,Dipankar Mukhopadhyay,SVSabnis,Usha Sathe,Anurag Srivastava,V. Subramaniam,Ramesh Raman 和Sanhita Yeolkar 。
Wiley 的Steve Quigley 从一开始就表现出对本书的信心,帮助本书以极快的速度顺利出版,同时由于Curt Hinrichs 的鼓励和支持使JMP Pro 版本成为可能。Wiley 的Jon Gurstelle,Allison McGinniss,Sari Friedman 和Katrina Maceda ,以及Thomson Digital 的Shikha Pahuja,在我们完成新版本的JMP Pro 时也给出了帮助和响应。
我们还要感谢马里兰大学人类-计算机交互实验室的Catherine Plaisant ,他给出了数据可视化章节的练习和插图;在时间序列章节给出评论和想法的得克萨斯农工大学的Marietta Tretter ;对数据可视化章节和总体设计提供反馈和建议的Stephen Few 和Ben Shneiderman。
KDNuggets.com 的创始人Gregory Piatetsky-Shapiro 多年以来花费大量的时间对该项目提供宝贵的建议。Ken Strasma 是微目标公司HaystaqDNA 的创始人,同样也是2004 年克里竞选和2008 年奥巴马竞选的主管,他为增量模型部分提供了场景和数据。
后,我们要感谢审稿人对个JMP Pro. 版本的反馈和建议,以及JMP 文档教育和开发团队的成员,感谢他们的支持和耐心,以及对我们所提问题和请求的回应。还要感谢L. Allison Jones-Farmer,Maria Weese,Ian Cox,Di Michelson,Marie Gaudard, Curt Hinrichs,Rob Carver,Jim Grayson,Brady Brady,Jian Cao,Chris Gotwalt 和Fang Chen。重要的是感谢John Sall,他的创新、灵感和无私的奉献,为友好的桌面统计软件JMP 以及本书的出版提供了可能。
译者简介
阮敬,博士,教授。现任首都经济贸易大学研究生院副院长,兼任中国现场统计研究会经济与金融统计分会副理事长、中国统计教育学会常务理事兼高等教育分会副秘书长、中国商业统计学会常务理事、全国工业统计学教学研究会理事、北京大数据协会副秘书长等职。近年来主持和省部级科研项目以及国家机关和企事业单位横向课题40余项;在国内外公开发表论文50余篇,出版专著教材7部,先后11次荣获全国统计科学研究优秀成果奖、北京市哲学社会科学优秀成果奖、北京市统计科学研究优秀成果奖等奖励。
严雪林,现任 SAS 公司 JMP 亚太区总经理,北京大数据协会副会长,兼任首都经济贸易大学统计学院兼职教授、全国应用统计专业学位研究生教育指导委员会“大数据硕士”兼职研究生导师、上海财经大学统计与管理学院兼职研究生导师。曾任 JMP 大中华区总经理、SAS 大中华区市场及渠道总监、上海大学管理学院兼职教授、中央财经大学统计学院兼职教授等职。长期于全球信息技术及数据分析类领军企业担任高级管理职位,在数据分析、商业智能、运营、市场营销、战略、信用及风险、大数据等领域有 19 年以上的研究与实践。曾领导多个国际团队,为财富 500 强企业及中国本土行业领导者提供数据分析战略、市场营销、研发优化、运营、风险等领域的服务,成功帮助客户导入大数据与分析战略,建立起基于数据分析的科学决策与运营体系,实现转型,推动变革与创新。
周暐,硕士。现任赛仕软件(北京)有限公司JMP事业部咨询经理,兼任中国质量协会六西格玛专家委员会专家委员、上海财经大学统计与管理学院应用统计硕士研究生导师(兼职),曾在西门子(Siemens)通信运营部门工作多年。精通统计学的理念与实践,擅长探索性数据分析EDA、实验设计DOE、建模预测Modeling、生存与可靠性分析Reliability、统计过程控制SPC、市场调查Marketing Research等统计分析方法在实际工作中的应用。2007年年底编著完成《六西格玛管理统计指南》(中国质量协会推荐的专业书籍),积累了统计技术在半导体、电子、医药、汽车、化工、银行、教育等行业应用的宝贵经验,曾受邀为多家国内外著名企业和高等学府辅导统计应用及六西格玛专业知识,并获得广泛好评。
目 录
部分 预备知识
1 导论····································································································································002
1.1 什么是商业分析? ····································································································002
1.2 什么是数据挖掘? ····································································································004
1.3 数据挖掘及相关用语 ································································································004
1.4 大数据 ························································································································005
1.5 数据科学 ····················································································································006
1.6 为什么会有这么多不同的方法? ············································································007
1.7 术语和符号 ················································································································007
1.8 本书框架 ····················································································································009
2 数据挖掘概述 ·················································································································013
2.1 引言 ····························································································································013
2.2 数据挖掘的核心思想 ································································································014
2.3 数据挖掘步骤 ············································································································016
2.4 初步步骤 ····················································································································018
2.5 预测能力和过拟合 ····································································································024
2.6 用JMP Pro建立预测模型 ························································································029
2.7 用JMP Pro进行数据挖掘 ························································································036
2.8 自动化数据挖掘解决方案 ························································································037
第二部分数据探索与降维
3 数据可视化······················································································································046
3.1 数据可视化的用途····································································································046 3.2 数据实例····················································································································047 3.3 基本图形:条形图、折线图和散点图····································································049 3.4 多维可视化················································································································056 3.5 特殊可视化················································································································068 3.6 基于数据挖掘目标的主要可视化方案和操作概要················································072 4 降维····································································································································076
4.1 引言····························································································································076 4.2 维度灾难····················································································································077 4.3 实际考虑····················································································································077 4.4 数据汇总····················································································································078 4.5 相关分析····················································································································082 4.6 减少分类变量中的类别数量····················································································082 4.7 将分类型变量转换为连续型变量············································································084 4.8 主成分分析················································································································084 4.9 利用回归模型降维····································································································094 4.10 利用分类和回归树降维··························································································094 第三部分性能评估
5 评估预测效果 ·················································································································098
5.1 引言····························································································································098 5.2 评价预测性能············································································································099 5.3 评判分类效果············································································································101
5.4 评判分类性能············································································································112
5.5 过采样························································································································115
第四部分预测与分类方法
6 多元线性回归 ·················································································································122
6.1 引言····························································································································122
6.2 解释模型与预测模型································································································123
6.3 估计回归方程和预测································································································124
6.4 线性回归中的变量选择····························································································129
7 k近邻法····························································································································142
7.1 k-NN 分类(分类型结果变量)··············································································142
7.2 数值型结果变量下的k-NN 方法·············································································147
7.3 k-NN 算法的优点和缺点··························································································149
8 朴素贝叶斯分类器 ········································································································153
8.1 引言····························································································································153
8.2 使用完全(精确)贝叶斯分类器············································································155
8.3 朴素贝叶斯方法的优点和缺点················································································163
9 分类和回归树 ·················································································································168
9.1 引言····························································································································168
9.2 分类树························································································································169
9.3 生成树························································································································172
9.4 评估分类树的效果····································································································176
9.5 避免过拟合················································································································178
9.6 树中的分类准则········································································································181
9.7 多分类的分类树········································································································182
9.8 回归树························································································································182
9.9 树的优点和缺点········································································································184
9.10 预测方法的提高:组合多棵树··············································································186
9.11 不纯度的提取和度量······························································································188
10 逻辑回归 ························································································································193
10.1 引言 ·······················································································································193
10.2 逻辑回归模型 ·······································································································195
10.3 评价分类性能 ·······································································································202
10.4 完整分析案例:预测航班延误 ···········································································205
10.5 附录:逻辑回归的概括 ·······················································································214
11 神经网络 ························································································································225
11.1 引言 ·······················································································································225
11.2 神经网络的概念和结构 ·······················································································226
11.3 拟合数据 ···············································································································226
11.4 JMP Pro 用户输入·································································································240
11.5 探索预测变量和响应变量的关系 ·······································································242
11.6 神经网络的优点和缺陷 ·······················································································243
12 判别分析 ························································································································247
12.1 引言 ·······················································································································247
12.2 观测值到类的距离 ·······························································································249
12.3 从距离到倾向和分类 ···························································································251
12.4 判别分析的分类性能 ···························································································254
12.5 先验概率 ···············································································································255
12.6 多类别分类 ···········································································································256
12.7 优点和缺点 ···········································································································258
13 组合方法:集成算法和增量模型 ··········································································263
13.1 集成算法 ···············································································································263
13.2 增量(说服)模型 ·······························································································268
13.3 总结 ·······················································································································274
第五部分挖掘记录之间的关系
14 聚类分析 ························································································································280
14.1 引言 ·······················································································································280
14.2 定义两个观测值之间的距离 ···············································································284
14.3 定义两个类之间的距离 ·······················································································288
14.4 系统(凝聚)聚类 ·······························································································290
14.5 非系统聚类:k-means 算法·················································································299
第六部分时间序列预测
15 时间序列处理···············································································································310
15.1 引言 ·······················································································································310
15.2 描述性与预测性建模 ···························································································311
15.3 商业中的主流预测方法 ·······················································································312
15.4 时间序列的构成 ···································································································312
15.5 数据分割和性能评价 ···························································································316
16 回归预测模型···············································································································321
16.1 趋势模型 ···············································································································321
16.2 季节模型 ···············································································································327
16.3 趋势和季节模型 ···································································································330
16.4 自相关和ARIMA 模型 ························································································331
17 平滑法·····························································································································350
17.1 引言 ·······················································································································350
17.2 移动平均法 ···········································································································351
17.3 简单指数平滑法 ···································································································355
17.4 高级指数平滑法 ···································································································358
第七部分案例
18 案例·································································································································372
18.1 查尔斯图书俱乐部 ·······························································································372
18.2 德国信贷 ···············································································································378
18.3 太古软件编目 ·······································································································382
18.4 政治说教 ···············································································································385
18.5 出租车订单取消 ···································································································388
18.6 浴皂的消费者细分 ·······························································································390
18.7 直邮筹款 ···············································································································393
18.8 破产预测 ···············································································································395
18.9 时间序列案例:预测公共交通需求 ···································································398
部分
预 备 知 识
1
导 论
1.1 什么是商业分析?
商业分析是从定量数据到决策的实践和艺术,对于不同的组织其含义不尽相同。接下来研究的是数据分析帮助报纸业在当今大数据时代生存下来如何发挥重要作用的例子。
英国一家拥有工薪阶层读者的小报推出了一款网络版本的报纸,并在主页上做了测试用以确定猫、狗还是猴子的图片哪种能产生更多的点击率。该公司的这个简单应用就可以认为是一种分析。相比之下,《华盛顿邮报》拥有极具影响力的读者,大型国防承包商对此很感兴趣——这可能是一个经常看到航空母舰广告的报纸。在数字环境中,该报可以按照时间、地点和用户订阅信息来追踪读者。众议院和参议院武装委员会中那些将通过五角大楼预算决议的成员认为:在这种模式下,互联网报纸上的航母广告可能只能吸引非常小部分的读者。
商业分析,或更一般所认为的分析,包括一系列的数据分析方法。许多强大的应用只涉及计数、规则检查和基本算法。对于许多组织而言,这就是分析的意义。
商业分析的下一层次便是现在所谓的“商业智能”,具体是指数据可视化的使用和对“发生过的事和正在发生的事”的展示和理解。这都可以使用图像、表格、仪表板显示、检验和探索数据来完成。此前商业智能主要是生成静态报告,而如今商业智能已经演变成更友好、更有效的工具和方法,如创建交互式仪表板。不仅可以使用户访问实时数据,也可以让用户直接与它进行交互。有效的仪表板能够直接连接到公司数据,从而为管理者提供了在复杂数据库中迅速发现不容易看出的数据规律的工具。比如有这样的一个交互显示工具,可以帮助企业管理者将客户订单使用不同颜色和尺寸添加变量来进行二
部分 预 备 知 识
003
维显示。该工具产生了一个2×2的矩阵,显示了客户名称、产品类型、订单大小和生产时间等。
商业分析包括更先进的数据分析方法,包括统计模型和用于探索数据、量化和解释数据之间关系并进行预测的数据挖掘算法,像回归模型就是被用来描述和量化变量均值间的关系(如广告和销售)、预测新的记录(如观测新病人是否会对药物产生有效反应)或者预测未来时间的观测值(如下周的网络流量)。
谁在使用预测分析?
预测分析的广泛使用再加上数据可用性的提升,提高了组织在整个经济环境中的能力。例如:
信用评分:信用评分是一个长期以来广泛使用的商业预测建模技术。信用评分不是武断地判断用户有没有良好的信誉度,它是基于先验数据预测还款行为的一个预测模型。
未来购买:近一个(具有争议性)例子便是塔吉特公司(Target,美国一家超市)使用预测模型将潜在客户划分为“怀孕”和“非怀孕”两类。那些被划分为“怀孕”的顾客在其怀孕早期就能收到对应的促销信息,这给塔吉特公司带来明显的购买客户流。
逃税:美国国税局发现当执法活动基于预测模型时,发现逃税行为的概率是不使用模型时的25倍,该预测模型可以使国税局各部门瞄准有可能发生的税收犯罪活动。(Siegel,2013)
商业分析工具还包括统计实验,其中营销者常见的是A-B测试。它们通常被用于定价决策:
●旅游网站Orbitz发现,Mac用户可能会比Windows用户定更高价格的酒店。 ●网上商店Staples发现,住在离Staples门店较远的顾客会掏更多的钱购买订书机。
注意,分析只是在寻找问题的解决方案:一个经理发现了商业分析和数据挖掘是如今的热点领域,决定了他的组织也要部署这些技术来获取一些隐藏价值。商业分析和数据挖掘的成功使用要求使用者既要了解企业的状况,知道数据该从哪里获得,同时也要了解数据挖掘方法到底是干什么的。
数据挖掘:商业数据分析技术与实践
004
1.2 什么是数据挖掘?
在本书中,数据挖掘是指超越了数值计数、描述性技术、报告以及基于业务规则方法的商业分析方法。虽然我们引入了数据可视化这种步入更高级分析的常用方法,但本书主要侧重于更先进的数据分析工具。具体来说,数据挖掘包括通常以自动化方式给出决策的统计方法和机器学习方法。对于研究个体而言,预测通常是一个重要的组成部分。我们此刻所关注的是应该将什么样的具体广告或推荐产品呈现在特定的网购顾客前,而不是“广告和销售之间的关系是什么”。或者,我们感兴趣的是将顾客分类,并对不同顾客施以不同的营销方法并向他们传播营销景象。
大数据时代加速了数据挖掘的应用。数据挖掘所具备的强大功能和自动性,能够处理大量的数据并提取数据中的价值。
1.3 数据挖掘及相关用语
就应用的广泛程度以及使用高级分析的机构数量而言,分析领域正在快速扩张。结果就是,相关用语的定义存在相当大的重叠和不一致。
数据挖掘对不同的人意味着不同的东西。对于一般公众来说,挖掘广泛的(经常是个人的)数据来寻找有趣的东西,它可能有点模糊和贬义的意思。一个典型的咨询机构会有 “数据挖掘部门”,但其职责却是研究和绘制过去的数据以寻找数据的一般趋势。为了区分,更先进的预测模型分析是“高级分析部门”的职责。其他机构使用的相关用语还可能会是“预测分析”“预测建模”“机器学习”等。
数据挖掘处在统计和机器学习领域(也称为人工智能)的交汇处。用于探索数据和建立模型的各种技术已经在统计学领域广泛使用,例如:线性回归、逻辑回归、判别分析和主成分分析等。但是经典统计学的核心原则——计算困难且数据缺乏——并不适用于数据和计算能力都很充足的数据挖掘应用。
达利·普吉根(Daryl Pregibon)将数据挖掘描述为“规模和速度的统计”(Pregibon,1999)。统计学和机器学习领域之间的另一个主要区别是统计学侧重于从样本到总体的推断,这被认为是一种“平均效应”,如“价格上涨1美元,需求平均减少2单位”。相反,机器学习侧重于预测个体,如“价格上涨1美元,对于甲顾客其预测需求是1单位,而对于乙顾客的预测需求则是3单位”。经典统计中强调的推断(确定在我们的样本中无
论是模式还是有趣的结果可能会发生)在数据挖掘中不存在了。
与统计学相比,数据挖掘以开放的方式处理大型数据集时,不可能像推断所需的那样对所分析问题进行严格的限制。因此,数据挖掘的一般方法容易产生过度拟合,其模型非常接近于可用的数据样本,其不仅仅描述数据的结构特征,而且描述其随机特性。在工程方面,模型会拟合噪声,而不仅仅是拟合信号。
在本书中,我们使用“机器学习”来指代从数据直接学习到的算法,特别是通常以分层或迭代方式从本地数据中学习到的算法。相反,我们使用“统计模型”来指代将全局结构应用于数据的方法,比如:线性回归模型(统计模型)与k近邻算法(机器学习)。在线性回归模型中,一条给定的记录将根据适用于所有记录的线性方程,并通过线性回归来处理。而k近邻算法中,该记录将根据少量附近记录的值来对其进行分类。
然而,许多从业者,特别是来自IT和计算机科学界的人,使用“机器学习”这个用语来指代本书中讨论的所有方法。
1.4 大数据
数据挖掘和大数据紧密相连。大数据是一个相对术语,相比过去,如今的数据量很大,以及可用于处理它们的方法也比之前多得多。大数据呈现的特点通常有4个“V”:体量(volume)、速度(velocity)、多样性(variety)和真实性(veracity)。体量是指数据量;速度是指流速,即生成和改变数据的速度;多样性是指数据生成时的不同类型(货币、日期、数字、文本等);真实性是有机分布式流程(比如数百万人注册服务或免费下载)生成数据的事实。
大多数大型机构都面临着大数据的挑战和机遇,因为现在生成的大多数常规数据可以存储和分析。以沃尔玛数据库为例,相比传统的统计分析,大规模数据(比如15个变量和5 000个记录)可以通过数据可视化的方法呈现。如果你认为传统的统计研究是句子末尾一个片段的大小,那么沃尔玛数据库对你来说就是一个足球场的大小。这可能还不包括与沃尔玛相关的其他数据,比如非结构化文本形式的社交媒体数据。
如果分析的挑战是巨大的,那么分析的回报也是巨大的:
●约会网站OKCupid使用统计模型及其数据来预测什么形式的消息内容有可能产生回应; ●挪威移动电话服务公司Telenor通过使用模型预测哪些客户有可能离开,然后着
数据挖掘:商业数据分析技术与实践
重关注这些用户,从而使用户流失率降低了37%; ●保险公司Allstate,通过纳入关于车辆类型的更多信息,将汽车索赔中预测损害责任的准确性提高到了原先的3倍。
上述例子源于埃里克·西格尔(Eric Siegel)的《大数据预测》(Wiley,2013)。
一些非常有价值的任务在大数据时代以前甚至是不可行的。以Google网页搜索为例,在早期,搜索“Ricky Ricardo Little Red Riding Hood”将会产生与《我爱露茜》(20世纪50年代风靡美国的情景喜剧)有关的各种链接,以及Ricardo作为乐队领导的职业生涯链接,同时还会链接到小红帽的儿童故事。一旦Google数据库积累了足够多的数据(包括用户点击的记录),排在搜索结果前面的便是《我爱露茜》中特定一集,该集由Ricky出演,内容是他为刚出生的儿子创作由西班牙语和英语混合的小红帽漫画。这也就是说,大数据时代的网页搜索结果相关程度更高。
1.5 数据科学
大数据的普遍性、规模、价值和重要性促使一个新的职业诞生:数据科学家。数据科学是统计、机器学习、数学、程序设计、商业和IT领域的结合体。这个术语本身比上述讨论过的其他概念更广泛,这是罕见地将所有组成领域的技术结合起来的一门科学。哈伦·哈里斯(Harlan Harris)在《对分析者的分析》(Analyzing the Analyzers)(与Marck Vaisman,Sean Murphy合著,O’Reilly,2013)一书中写道,大多数数据科学家像一个大写的T,在某个领域研究得很深入,就如字母“T”的垂直线,并较浅地涉足其他领域,正如字母“T”顶部的一横。
在一次大型数据科学会议(2014年10月召开的Strata-Hadoop World)上,大多数与会者认为编程是一项基本技能,尽管有小部分人不这么认为。虽然大数据是数据科学发展背后的动力,但实际上大部分数据科学家并没有真正花费很多时间来处理TB级或更大数量级的数据。
在模型的部署阶段将涉及TB级或更大数量级的数据。而在该阶段存在许多挑战,其中大多数涉及数据处理过程中的IT和编程问题,这些问题涉及数据处理和将系统的不同组件捆绑在一起。在这个阶段之前也有很多工作,也就是本书重点介绍的早期引导和原型开发阶段——开发一个统计和机器学习模型,终将模型运用到所部署的系统中。本书还将讨论以下问题:对于不同的数据和问题,使用什么方法来处理?这些
方法是如何运作的?这些方法的要求、优劣势各是什么?如何评估方法和模型的表现及结果?
1.6 为什么会有这么多不同的方法?
从本书或任何其他关于数据挖掘的资料中都可以看出,有许多不同的预测和分类方法。你可能会问为什么它们可以共存,以及某些方法是否比其他的更好。答案是每个方法都有其优缺点。方法的有用性可以取决于以下因素,包括数据集的大小、存在于数据中的模式类型、数据是否满足方法的某些基本假设、数据噪声有多大以及数据分析的特定目标等。一个简单的示例如图1.1所示,其目标是找到家庭收入水平和家庭房屋占地面积大小的组合,将骑式割草机的购买者(实心圆圈或“ ”)和非购买者(空心圆圈)区分开来。种方法(左图)仅查看水平线以区分购买者与非购买者,而第二种方法(右图)寻找单个对角线。
图 1.1 两种方法区分购买者和非购买者
不同的方法可能导致不同的结果,并且其表现形式也可能不同。因此,在数据挖掘中常用的是使用几种不同的方法并选择适合手头目标的方法。
1.7 术语和符号
由于数据挖掘的混合原因,其从业者经常使用多个用语来指代相同的事物。例如,在机器学习(人工智能)领域,被预测的变量是输出变量或目标变量。但对于统计学家而言,它是因变量或响应变量。以下是使用术语的概要。
数据挖掘:商业数据分析技术与实践
算法 指用于实现特定数据挖掘技术的具体过程,如分类树、判别分析等。
属性 见预测变量。
样品 见观测值。
置信度 在统计学(置信区间)中具有广泛的意义,关于选择一个样本而不是另一个样本导致的估计误差程度。
因变量 见响应。
估计 见预测。
特征 见预测变量。
保留样本 样本数据不用于拟合模型,而是用来评估模型的性能。 本书使用术语验证集和测试集,而不是保留样本。
输入变量 见预测变量。
模型 应用于数据集的算法,并具有其设置(许多算法具有用户可以调整的参数)。
观测值 观测值是指进行测量的分析单位(客户、交易等),也称为实例、样本、例子、样品、记录、模式或行。(每行通常代表一条记录,每列表示一个变量。注意:这里使用的术语“样本”不同于统计意义中的“样本”,统计中的样本是指从大数据源中抽样出来的所有样本数据,而不只是一条记录。)
结果变量 见响应。
输出变量 见响应。
P(A|B) 是事件B发生的情况下,事件A发生的条件概率,读作“假定B已发生A将发生的概率”。
模式 是指关于观测值(如人的身高、体重和年龄)的一组测量。
预测 意味着连续输出变量的值的预测,也称为估计。
预测变量 通常用X表示,也称为特征、输入变量、自变量,或是数据库中的字段。
记录 见观测值。
响应 通常用Y表示,是在监督学习中进行预测的变量,也称为因变量、输出变量、目标变量或结果变量。
得分 指预测值或预测类。对新数据进行评分意味着使用训练集得到的模型预测新数据中的输出值。
成功类 是二元结果中感兴趣的类别(例如购买结果中的购买或没有购买)。
监督学习 指的是提供具有记录的算法(例如逻辑回归、回归树等)的过程,其中
感兴趣的输出变量是已知的,并且算法“学习”如何利用输出未知的新记录来预测这个值。
目标 见响应。
测试数据(或测试集) 指仅在模型构建和选择过程结束时使用的部分数据,通常用来评估终模型对其他数据的拟合效果。
训练数据(或训练集) 指用于拟合模型的部分数据。
无监督学习 是指除了预测感兴趣的输出值之外尝试分析数据的其他信息(如聚类)。
验证数据(或验证集) 指用于评估模型拟合程度的部分数据,用来调整某些模型以及从已尝试的模型中选择模型。
变量 是对记录的测量,包括输入变量(X)和输出变量(Y)。
1.8 本书框架
本书涵盖了许多广泛使用的预测和分类方法以及其他数据挖掘工具。图1.2为本书所讲述数据挖掘的流程及其在本书中对应的章节,内容后的数字为对应的章节号。
图1.2 数据挖掘流程(括号中的数字表示其在本书中所在的章节号)
表1.1提供了一个不同的视角:从数据类型和数据结构来组织数据挖掘过程。
数据挖掘:商业数据分析技术与实践
表1.1 本书根据数据性质组织的数据挖掘方法
有监督
无监督
连续响应
分类响应
无响应
连续
预测变量
线性回归(6)
逻辑回归(10)
主成分分析(4)
神经网络(11)
k近邻(7)
集成方法(13)
神经网络(11)
判别分析(12)
k近邻(7)
集成方法(13)
聚类分析(14)
分类
预测变量
线性回归(6)
神经网络(11)
神经网络(11)
回归树(9)
集成方法(13)
分类树(9)
逻辑回归(10)
朴素贝叶斯(8)
集成方法(13)
注意:括号中的数字表示其在本书中所在的章节号。
主题顺序
本书分为以下五个部分:
部分(第1章和第2章)介绍数据挖掘以及对相关内容进行概述。
第二部分(第3章和第4章)侧重于数据探索的预处理和数据降维问题。
第三部分(第5章)讨论评估问题。虽然它只包含一个单独的章节,但是在这章中我们讨论了从预测性能指标到错误分类成本等许多具体问题。本部分涵盖的内容对于准确评估和比较监督学习方法至关重要。
第四部分包括8个章节(第6~13章),涵盖各种流行的监督学习方法(用于分类或预测)。本部分内容主要根据算法的复杂程度、流行度和理解程度来安排。后一章介绍了集成算法以及这些方法的组合。
第五部分提出了一种非常受欢迎的无监督挖掘方法——聚类分析(第14章)。
第六部分包括3个章节(第15~17章),重点是预测时间序列。第15章涵盖与处理和理解时间序列相关的一般问题。接下来的两章介绍了两种流行的预测方法:基于回归的预测方法和平滑方法。
后,第七部分为一些案例的分析。
虽然本书中的主题可以按照章节的顺序进行,但每章均是独立的。我们建议在学习第四部分和第五部分的章节之前,先阅读部分至第三部分。同样,在学习第六部分时,先学习第15章,再学习接下来的两章内容。
使用JMP Pro—— 一个来自SAS的统计软件
为了有更好的学习体验,本书使用JMP Pro(见图1.3和图1.4)软件。这是一个用于Mac OS和Windows操作系统的桌面统计包,来自SAS(可前往jmp.com/system查看其完整的系统要求)。
JMP有两种主要的版本:JMP(标准版)和JMP Pro(专业版)。标准版JMP是动态和交互的,提供了用于绘图和分析数据的各种内置工具。JMP同时具有用于数据可视化和数据准备的工具,以及用于分类和预测的统计及数据挖掘技术。它提供了各种监督数据挖掘工具,包括神经网络、分类和回归树、逻辑回归、线性回归和判别分析等。同时也提供无监督的算法,如主成分分析、k均值聚类和系统聚类等。
JMP Pro具有标准版JMP的所有功能,但其增加了用于预测建模的高级工具,包括k近邻法、增量建模、高级树、创建神经网络的附加选项以及集成模型等。同时提供了许多用于建模数据预处理的实用程序,包括用于模型验证、模型比较和模型选择的内置工具。基于此,本书使用JMP Pro。JMP Pro需要用到标准版JMP中不具备的模型交叉验证和模型比较的内置工具。但标准版JMP可用于创建本书中介绍的许多图形、分析概要、分析过程和模型呈现。
本书提供了JMP指南供新用户使用。有关使用JMP的技巧,请访问jmp.com/gettingstarted。关于JMP的深入介绍,可阅读《发现JMP》,这本书可在线或在JMP帮助文档中查看(在Help菜单下的Books栏目下)。有关特定主题的其他资源以及视频资源,可以在jmp.com/learn的JMP学习库中找到。有关仅在JMP Pro中提供的功能的其他详细信息,请参阅jmp.com/pro。
在大多数的大学和学院可以通过院系或校园许可获得JMP Pro,在很多机构中也可通过站点许可获得JMP Pro——请向你的软件IT管理员查询软件授权许可和下载信息。如果您无法获得JMP Pro的软件许可,或希望获得更多信息,或希望使用试用版JMP Pro进行课堂教学,可发送邮件至[email protected]。如果您没有资格获得软件的学术用途许可,也可以在jmp.com/trial上申请JMP Pro的试用版。
数据挖掘:商业数据分析技术与实践
图1.3 JMP主窗口(Windows系统中的界面)
图1.4 JMP的数据表(Windows系统中的界面)
2
数据挖掘概述
本章总结了数据挖掘中涉及的步骤,整个过程从明确目标定义开始,并以模型部署结束,一般步骤如图2.1所示。本章还讨论了数据收集、清理和预处理相关的问题,解释了使用训练集测试模型后再使用单独的验证集评估模型性能的数据分割概念,以及讨论如何避免过度拟合等具体问题。本章还会介绍将上述过程应用到实际数据来构建模型的过程。
图2.1 数据挖掘建模过程
2.1 引言
第1章中已经介绍过一般意义上的数据挖掘。本章将介绍数据挖掘的各种方法。本书的核心着重于前文所说的预测分析,即与模式识别类似的分类和预测,这已经成为绝大多数大公司商业分析的关键要素。这些概念将在后文中进行描述和说明。
本书没有涵盖某些时候被认为是数据挖掘的两种较简单的数据库方法:(1)OLAP(联机分析处理);(2)SQL(结构化查询语言)。基于数据库的OLAP和SQL搜索本质上是描述性的(比如在指定邮编中找到满足年花费大于20 000美元、拥有自己的住房并且其全额还款次数超95%的所有信用卡客户),并且基于用户设置的业务规则。虽然SQL查询通常用来获取在数据挖掘工具中使用的数据,但这两种方法不涉及统计建模或自
数据挖掘:商业数据分析技术与实践
动算法。(请注意,在JMP 12中,在File>Database菜单下添加了查询生成器,可用于从SQL数据库中选择和导入数据,而无须编写SQL语句。)
2.2 数据挖掘的核心思想
分类
分类可能是数据分析的基本形式。举例来说:出价的接收者可以分为响应者或不响应者;贷款申请人可分为按时偿还、延迟还款或宣布破产;信用卡交易可以是正常交易或欺诈;网络传输数据包可能是良性的或有威胁的;车队中的公共汽车可以提供服务或不提供服务;疾病患者可能康复、仍然生病或死亡。
数据挖掘中的常见任务是检查未知分类或暂时未知分类的数据,其目的是预测数据属于哪一类或将要分到哪一类。分类已知的相似数据用于研究分类规则,然后将这些规则应用于未知分类的数据中。
预测
预测方法除了试图预测数值型变量(如购买量)而不是分类变量(如购买者或非购买者)之外,与分类类似。当然,在分类问题中,我们尝试预测数据所属的类别,但是本书中的“预测”是指对连续变量的值的预测。(在某些数据挖掘文献中,估计和回归有时用于指代对连续变量的值的预测,预测可以用于连续和分类数据。)
关联规则和推荐系统
客户交易的大型数据库自然地适用于对所购买的项目之间的关联分析,或“什么与什么一起”的分析。关联规则或关联性分析是指,在大型数据库的事项中找出一般关联模式。例如,杂货店可以使用这样的关联信息来放置商品,他们可以使用这种关联模式来进行每周促销或捆绑销售。基于住院期间患者症状的数据的关联规则,可以帮助医院发现“哪个症状伴随着什么其他症状”并帮助预测返院患者的未来症状。
在线推荐系统(例如,Amazon.com和Netflix.com使用的系统)使用协同过滤算法,这是一种基于个体用户给定的历史购买行为、评级、浏览记录或任何其他可衡量的偏好行为甚至其他用户购买历史的方法。与形成群体规则的关联规则相反,协同过滤在单个
用户级别生成 “什么与什么一起买”的购买推荐。因此,协同过滤在许多推荐系统中使用,旨在向具有广泛偏好的用户提供个性化推荐。(请注意:该主题不在本书中讨论。)
预测性分析
分类、预测,在某种程度上与关联规则和协同过滤共同构成了预测性分析的分析方法。但预测性分析有时还包括数据模式识别方法,例如聚类。
数据缩减和降维
当变量数量有限,以及大量样本数据可以被分到同质组时,数据挖掘算法的性能通常会得到改善。例如,一个分析师宁愿将所处理的产品类型进行小规模分组,并为每个组构建单独的模型,也不愿意直接处理成千上万种产品类型。对于营销人员,他们可能希望将客户分群,这必须先将客户归为同质的群体才能对这些群体进行人格定义。将大量数据记录(或样本)划分为较小集合的这个过程称为“数据简化”,减少样本数的方法通常被称为“聚类”。
减少变量数目通常被称为“降维”。降维是部署监督学习方法前常见的初始步骤,旨在提高预测能力、可管理性和可解释性。
数据探索和可视化
处理数据集的初期阶段其中一项便是探索该数据集。探索的目的是了解数据全貌和检测异常值。探索可用于数据清理和操作,以及可视化和“假设的生成”。
数据探索的方法包括以数字和图形方式查看各种数据的聚合以及概要。这包括单独查看每个变量以及查看变量之间的关系。数据探索是为了发现数据模式和异常,通过图表和仪表板创建的数据探索被称为“数据可视化”或“可视化分析”。对于数值变量,可使用直方图和箱线图来了解其值的分布、检测异常值(值),以及找出与分析任务相关的其他信息。类似地,对于分类变量,可使用条形图。也可以对成对的数值变量绘制散点图来了解数据之间的关系和关系的类型,以及检测异常值。通过添加颜色、缩放、交互式导航和数据过滤等功能可大大增强可视化效果。
监督学习和无监督学习
数据挖掘技术之间的根本区别在于监督和无监督方法。监督学习算法是用于分类和
数据挖掘:商业数据分析技术与实践
预测的算法,数据的分类必须是已知的(如购买和非购买)。分类或预测算法中用来“学习”或“训练”预测变量和结果变量之间关系的数据叫做“训练数据”。一旦算法从训练数据中学习出来,再把该算法应用于结果已知的另一数据样本(验证数据)来查看与其他模型相比有何优势。如果尝试了许多不同的模型,则需要保存第三种数据样本,即含有已知结果且可用来考察终选择模型预测效果的测试数据。模型可用于预测分类或预测结果未知的新样本。
简单线性回归是监督学习算法的一个例子(虽然入门统计课程中很少将线性回归称为监督学习算法)。Y是(已知的)结果变量,X是预测变量,绘制一条回归直线使得Y的观测值与预测值之间的离差平方和小。这样得到的回归直线可根据新的X值预测所对应的Y值。
无监督学习算法是没有预测或分类结果变量情况下使用的算法。因此,当结果变量已知的情况下,就不存在从样本中“学习”的情况。关联规则、降维方法和聚类技术都是无监督学习方法。
有时会同时使用监督和无监督方法。例如,无监督的聚类方法用于将贷款申请分为几个风险级别,然后将监督算法分别应用于每个风险级别来预测贷款违约倾向。
2.3 数据挖掘步骤
本书着重于理解和使用数据挖掘算法(如下所述的步骤4~7)。然而,案例分析中严重的一些错误是由于对问题的理解不足,在我们深入分析之前必须对算法有深入的理解。这里列举了一系列典型的数据挖掘工作步骤。
(1)要了解数据挖掘项目的目的。研究的问题是什么?利益相关者会如何使用分析得到的结果?谁会受到结果的影响?分析是一次性的还是一个可持续的过程?
(2)获取分析中使用的数据集。这通常涉及从大型数据库进行随机抽样,获取分析中使用的样本数据。还涉及把来自不同数据库或数据源的数据整合到一起。数据库可以是内部的(如客户过去的购买记录)或外部的(如信用评级)。虽然数据挖掘处理的数据库非常庞大,但通常只需要几千或几万条记录就可以进行分析。
(3)探索、清洗和预处理数据。此步骤涉及验证数据是否合理?缺失数据如何处理?数据值是否在理想的合理范围内?是否有明显的异常值?数据可以用图形方式展示,如散点图矩阵——显示每个变量与其他各变量的关系。我们还需要确保字段的定义、测量
单位、时间跨度等属性的一致性。在该步骤中,新变量也通常可由现有变量来创建。例如,“持续时间”可以用开始日期和结束日期计算得到。
(4)按需降低数据维度。降维包括剔除无用变量、转换变量(比如将“花费”转换为“花费>100美元”与“花费≤100美元”)和创建新变量(比如创建一个记录是否至少一个产品被购买的新变量)。确保要知道每个变量的含义以及它在模型中是否合理。
(5)确定数据挖掘任务(分类、预测还是聚类等)。这涉及将一般问题或步骤1中的问题转化为更具体的统计问题。
(6)数据分割(用于监管学习任务)。如果是监督学习任务(如分类或预测),可将数据集分割成三个部分:训练集、验证集和测试集。
(7)选择要使用的数据挖掘技术(回归、神经网络、系统聚类等)。
(8)使用算法执行任务。这通常是一个迭代过程——尝试多种形式,并且经常使用同一算法的多种形式(在算法中选取不同的变量或设定)。在适当的情况下,使用算法在验证集中的反馈信息来改进算法设定。
(9)解释算法的结果。这包括选择出算法,并且在可能的情况下,在测试集上测试终的算法,测试算法的效果。(每个算法也可出于调试目的在验证集上测试,该方式下验证集成为拟合过程的一部分,可能会低估终所选择模型的误差。)
(10)部署模型。本步骤涉及将模型整合到可操作的系统中并在实际数据上运行来产生决策或行动。比如,某模型可以应用于潜在客户研究中,其采取的行动可以是“如果预测的购买金额大于10美元,该客户可以包括在邮寄宣传册的名单中”。这里的关键步骤是对新记录进行“评分”,或者使用所选择的模型来预测每条新记录的目标值。
SEMMA是一个由JMP母公司SAS开发的体系,上述步骤都包含在SEMMA中。
抽样(Sample) 从数据集中提取样本;将数据集分割为训练集、验证集和测试集。
探索(Explore) 以统计和图形方式考察数据集。
调试(Modify) 变换变量和插补缺失值。
建模(Model) 拟合预测模型(如回归树、协同过滤)。
评估(Access) 使用验证集比较模型。
IBM SPSS Modeler(此前的SPSS-Clementine)中具有类似的体系,称为CRISP-DM(Cross-Industry Standard Process for Data Mining,数据挖掘跨行业标准流程)。
数据挖掘:商业数据分析技术与实践
2.4 初步步骤
数据集的组织
数据集一般都是由作为列的变量和作为行的观测值记录构成并显示出来。在第2.6小节的例子中(2014年波士顿西罗克斯伯里(West Roxbury)的住宅价值),该数据集中包含14个变量和超过5 000个住宅的记录。JMP数据表(West Roxbury Housing.jmp)的每行表示一个住宅——个住宅的评估价值是344 200美元,其税是4 430美元,面积为926平方米,建于1880年,依此类推。在监督学习方法下,这些变量其中之一将会是结果变量,通常结果变量放置在数据中的个或后一个位置(本例的结果变量就是处于列的TOTAL VALUE)。
从数据库中抽取样本
通常,我们希望对少于可用记录总数的样本数据进行数据挖掘分析。数据挖掘算法在记录和变量的数量方面都有不同的限制,这些限制可能源于计算能力、存储容量以及软件限制等。即使在这些限制内,许多算法对于少数量的样本数据执行得更快。
仅用成百上千的数据(本书后续章节会讨论)往往就可以构建精确的模型。因此,在模型构建过程中可对数据抽取子集。
分类任务中稀有事件的过度采样
如果在分类过程中感兴趣的事件发生的概率较小,比如在直邮促销中发生购买行为的顾客、信用卡欺诈交易,在对记录数据进行随机抽样时可能会产生小概率的事件(如购买者),这些事件我们几乎没有任何关于它们的信息。我们终会得到大量关于非购买者和非欺诈性交易的样本数据,在这种数据中很难基于一个模型来区分购买者和非购买者或者欺诈和非欺诈。在这种情况下我们希望在抽样过程中,相对于数量较多的类别(如非购买者或非欺诈者)而言,稀有类别(如购买者或欺诈者)应被赋予较高权重,从而使我们得到一个购买者、欺诈者有益补充的样本。
确保响应样本或“成功”样本的数量足够用来训练模型只是其中的一部分。更重要的因素是误分类的成本,即不正确分类结果产生的成本。当响应率极低时,我们可能更加重视识别响应者而不是识别非响应者。在直接响应商品推广的例子中(无论是通过传
统邮件、电子邮件还是网络广告),每百个记录中可能只遇到一个或两个响应者——找出这种顾客的价值远超接近他/她的成本。在试图识别欺诈交易或不能偿还债务客户时,未能发现欺诈或不还款客户的成本可能远超对合法交易或客户详细审查的成本。
更一般地,我们想以非对称成本来训练我们的模型,以便算法捕获更有价值的响应者,如果我们假设各种分类结果是相同成本的,则可能以“捕获”为代价,将更多的非响应者分类为响应者。这个问题将在第5章中详细讨论。
预处理和清洗数据
变量类型 对变量进行分类有很多方法。变量可以是数值或文本(字符/字符串)。它们可以是连续的(通常在给定范围内可假定任何实数值)、整数型(仅取任何整数值)或分类变量(假设为系列有限数值中的一个)。分类变量既可以编码为数字(1,2,3)也可以编码为文本(经常性开支、非经常性开支、破产)。分类变量也可以是无序类别(称为“名义变量”),如北美、欧洲和亚洲;也可以是有序类别,如高值、低值和零值(称为“有序变量”)。
在JMP中,建模类型被用于区分变量的类型,并在许多平台中被用来确定适当的图形和分析。彩色图标用于反映建模类型(见图2.2):连续变量用连续建模类型(由蓝色三角形表示),无序类别变量用名义建模类型(由红色条形表示),有序类别变量用有序建模类型(由绿色条形状表示)。
…………………………………………………………………………….
图2.2 3种JMP建模类型
改变JMP中的建模类型
JMP中的建模类型应在分析之前确定。要更改建模类型,鼠标右键单击数据表的Columns Panel的按钮,选择Column Info,然后选择正确的建模类型。请注意,对于连续数据,还需要将数据类型更改为数值型。
图2.3显示了Columns Panel窗口以及JMP数据表的一般布局。数据集为Companies,可从JMP样本数据库中获得(样本数据库在Help帮助菜单下)。此图来自jmp.com/learn中的JMP Data Tables单页指南。
数据挖掘:商业数据分析技术与实践
使用连续变量 绝大多数数据挖掘程序都可以处理连续型变量。在JMP软件中,所有监督学习方法都可以处理连续的预测变量。数据挖掘的机器学习源于分类结果问题,统计学的根源在于对连续变量的分析。有些时候需要将连续变量转换为分类变量。对于数值变量映射到决策时(如高于一定水平的信用分数意味着“给予信贷”,高于某一水平的医学测试结果意味着“开始治疗”),这种转换在结果变量中尤为常见,也可以很容易地在JMP中完成。
图2.3 数据集实例,显示了JMP数据表的列面板(左侧)和一般布局
处理分类变量 绝大多数算法都可以处理分类变量,但通常需要进行特殊处理。如果分类变量是有序的(如年龄分组、信用程度等),可用数字(1,2,3,…)对类别进行编码,并将该变量看作是一个连续变量来处理。类别数量越少,它们表示的相等价值增量就越少,这种方法就越有问题,但通常其工作效果很好。
然而,名义变量通常不能按其原样使用。在许多情况下,它们必须被分解为一系列的二元变量,称为“指示变量”或“哑变量”(虚拟变量)。比如,可以将“学生” “失业”“在职”“退休”这样的一个分类变量分成四个单独的指示变量:
学生——是/否
失业——是/否
在职——是/否
退休——是/否
大多数情况下,上述例子只需要使用三个指示变量,如果三个变量值是已知的,则第四个也是已知的。例如,考虑到这四个选项是可能的情况,则如果一个人既不是学生,不是失业,也不是在职,那他/她肯定是退休。在一些算法过程中(如线性回归和逻辑回归)不能使用所有四个指示变量——冗余信息将导致算法失效。JMP有一个实用程序可将分类变量转换为二元指示变量(使用Cols> Utilities菜单下的Make Indicator Columns选项)。但大多数情况下,JMP会根据需要自动将分类变量编码,不需要用户手动创建指示变量。
变量选择 当选择模型的变量时,更多的变量不一定更好。简约、紧凑是理想模型的特征。一方面,模型包含的变量越多,将需要更多的样本来评估变量之间的关系。15条记录的样本足够使我们大致了解Y和单个预测变量X之间的关系。如果想要得到关于Y和15条预测变量X1,…,X15之间关系的信息,15条记录的样本数据是不够的(即每个估计关系将只有一条记录的信息平均值,这将会使得估计结果极不可靠)。此外,基于许多变量的模型由于受到更多的数据质量和可用性问题的影响,通常稳健性不够,因此它们需要在将来收集更多变量,并且需要更多的数据清洗和预处理工作。
多少变量,多少数据? 统计学家给出了在给定数据集和模型下要得到给定可靠的模型时需要多少样本数据的计算方式。这被称为“功效分析”,旨在确保从样本中以足够的精度估计平均总体效应。数据挖掘者的需求通常是不同的,这是因为其重点不在于确定平均效应,而是预测个体记录。这种需求通常比统计推断需要更大的样本。一个很好的经验法则是每个预测变量好有10条记录。另外,根据Delmaster和Hancock(2001,p.68)分类过程所用到的经验,至少需要6 × m × p个记录数,其中m指输出变量的类别数,p指变量个数。
一般情况下,数据挖掘要求模型简约并紧凑。即使在处理一个较少变量的数据集时,我们在创建新变量后经常会得到更多结果(如将一个分类变量转换成一组虚拟变量)。数据可视化和降维方法可以减少变量数,从而避免冗余。
即使我们有足够的数据,也需要充分考虑模型中的每个变量。建立模型前,应咨询相关领域(如业务流程和数据领域)专家,搞清楚变量代表的含义通常对于构建良好模型和避免错误而言是至关重要的。
例如,假设我们试图预测客户花费的总额,现有一些已经编过码的预测变量X1,X2,X3,…,但我们不知道这些编码表示什么意思。我们可能会发现X1是花费总额的预测变量。但如果X1是运费,运费是基于花费总额的百分比计算的,由于运费在交易完成
数据挖掘:商业数据分析技术与实践
之前是未知的。很明显,运费X1不能用于预测客户的花费总额。另一个例子是在客户申请贷款时预测贷款违约情况。如果我们的数据集只包括批准的贷款申请信息,那将无法区分被拒绝的申请人中的违约者和非违约者。因此,仅仅基于批准贷款的模型不能用于预测贷款申请时的违约行为,这样的模型仅在贷款被批准时才能使用。
异常值 处理的数据越多,由于测量误差、数据输入错误及类似原因等导致错误值的概率也越大。如果错误值与数据的其他值处于同一范围内,这可能是没有什么坏处的。但如果错误值远超其他值的范围(如小数点位置错位),则可能会对某些数据挖掘过程造成实质性影响。
远离大部分观测值的数据称为异常值(离群值)。离群这个词是模糊的,因为确定一个数据值是否为异常值的标准较为随意。分析人员往往使用经验法则来确认异常值,如“任何一个跟平均值距离超过3个标准差的值就是异常值”,但没有统计规则可以告诉我们这样的异常值是否就是一个错误的结果。在这种统计意义上,异常值不一定是无效的数据点,它只是一个远离的数据点。
识别异常值的目的通常是为了进一步研究观测值。对于一个小数点位置错误的数据,我们可能会给出相关的解释,但是对于病人温度为178°F的这种数据值,即使知道这个数据值是错误的也给不出相关解释。或者,我们可以得出在可能性的范围之内的观测值可以不用理会的结论。所有这些结论的判断好是由具有诸如直邮、抵押贷款等特定领域知识而不是统计或数据挖掘程序技术知识的人来做出。统计过程很难对需要审查核实的数据记录进行识别。
如果手动审查核实数据可行,则可以识别和纠正一些异常值。在任何情况下,如果具有异常值的记录样本量非常小,则它们可能被处理为缺失数据。我们如何检查异常值?一种方法是绘制所有变量的图形,并查看每个图中非常大或非常小的值。另一方法是使用JMP的列视图(在Cols菜单中)检查每个列的小值和值。对于将每个记录视为一个单元的自动化方法,自动化程序可以用于识别许多变量的异常值。JMP Pro中的Explore Outliers列建模工具提供了几种识别方式。
缺失值 一些记录数据往往存在缺失值。JMP将连续变量的缺失值在单元格中用“.”表示,将分类(名义或顺序)变量的缺失值用空单元格表示。在一些建模过程中,例如线性回归,会忽略具有缺失值的记录数据。如果缺失值较少,这对建模和分析没有太大的影响。但如果有大量的变量,小部分缺失值可能会影响很多的记录数据。假如有30个变量,即使仅有5%的缺失值(在样本和变量之间随机和独立分布),则近80%的记录
将不得不从分析中被忽略掉。(给定记录数据无缺失值的概率是0.9530=0.215)
缺失值的另一种处理方法是基于所有记录中该变量的其他值对缺失值进行替代。例如,在30个变量中,家庭收入在某条特定记录中缺失,我们可以用所有记录中家庭收入的平均值来代替它。当然,这种做法不会增加家庭收入如何影响结果变量的任何信息。插补只是让我们能继续进行分析,也不会丢失这条记录在其他29个变量中的信息。注意,使用这种方法将会低估数据集中的变异性。但是我们可以使用验证集来评估数据挖掘技术的变异性和性能,所以这不是什么大问题。还有更复杂的方法——如使用基于其他变量的回归来填补缺失值。这些方法主要用于获取每个患者或试验对象记录样本数据成本很高的医学和科学研究的分析中。在数据量充分的数据挖掘中,简单的方法就足够了。
某些数据集包含具有大量缺失值的变量,也就是说,对于大量记录的测量缺失。在这种情况下,删除具有缺失值的记录将导致数据大量丢失。同时,因为插补是基于少量现有记录,对缺失值进行插补也可能是无用的。另一种可供选择的方法是检查预测变量的重要性。如果该变量不是非常关键的变量,就可以删除该变量;如果是,则可以使用具有较少缺失值的变量代替。当预测变量被认为至关重要时,解决方案是在如何获取这些缺失数据上下足功夫。
处理缺失数据可能需要消耗大量时间,这是因为并非所有情况都适用于自动化的解决方案。例如,在一个杂乱的数据集中, “0”可能表示两种情况:(1)其值表示为缺失值;(2)其值就是0。在信用行业中,“逾期”变量中的“0”可能意味着完全付清的客户,或者根本没有信用记录的客户——这是两种截然不同的情况。同样,在许多情况下,“999”用于表示缺失值。对个别案例或确定处理这些情况的特别规则需要人工判断。注意,区分缺失值和零值是很重要的。JMP在计算和分析中包括零值,但其忽略分析中的缺失值。如果一个变量包含缺失值的编码,可以使用JPM中的Missing Value Code列属性来对其进行标注。
JMP Pro列菜单(Cols)下的Explore Outliers选项中的列建模工具可用于发现和插补缺失值(该功能仅在JMP Pro可实现),表格菜单(Table)中的Missing Data Pattern选项可用于发现缺失值的模式。在JMP建模平台中,Informative Missing Coding可用于解决缺失值问题。
归一化(标准化)和尺度调整 某些算法要求在能够有效实现算法之前对数据进行归一化。为了归一化变量,我们从每个值中减去平均值,然后除以标准差。这种操作有时也称为标准化。实际上,我们将每个值表示为“远离平均值多少个标准差”,也称为“z-
数据挖掘:商业数据分析技术与实践
得分”。
归一化是使所有变量达到相同尺度的一种方式。另一种流行的方法是将每个变量重新缩放到[0,1]尺度。这是通过减去小值然后除以数据范围来完成的,减去小值将变量的原点移动到零,除以范围将数据收缩或扩展到[0,1]范围内。
要考虑为什么需要将数据进行标准化或缩放到[0,1],首先考虑聚类的情况。聚类通常涉及计算每个记录距离聚类中心或其他记录的距离。如有多个变量,则可能存在不同的计量单位,如天、美元、个数等。如果美元计量单位是千,其他变量的计量单位是十,则美元变量将成为主导距离的变量。此外,将单位从天改成小时或月可以完全改变分析的结果。
包括JMP在内的数据挖掘软件通常都可以在算法中选择是否对数据进行标准化。它通常是算法的一个选项而不是算法的自动特征,因为我们希望每个变量与其原始尺度成比例地对距离测度做出贡献。变量在JMP中也可以使用公式编辑器(Formula Editor),或使用数据表,或任何分析列选项列表中的动态变换特征来进行标准化。
在JMP中标准化数据
JMP通常不需要在进行分析或建模之前标准化数据——它通常自动完成,或在JMP分析平台(需要的地方)中作为默认选项提供。但是,使用JMP中的动态变换功能可以轻松实现标准化:从分析对话框中,右键单击列选择列表中的变量,然后选择Distributional>Standardize。从数据表中,右键单击连续变量的列名,然后选择New Formula Column>Transform>Standardize。
2.5 预测能力和过拟合
在监督学习方法中,一个关键问题是:当预测或分类模型应用于新数据时,其表现如何?我们感兴趣的是比较各种模型的性能,以便我们可以选择一个在实践中实现效果好的模型。一个关键的概念是确保我们选择的模型除了可以运用在我们手头的数据集之外,还可以推广到其他数据集上。为了确保模型的泛化能力,我们使用数据分割的概念并尽量避免过度拟合。接下来我们将描述这两个重要的概念。
数据分割的创建和使用
一般说来,我们可能会选择可以将手头上的数据进行好的预测或分类的模型。然而,当我们使用相同的数据来开发模型并评估其绩效时,我们引入了一种“乐观”偏差。这是因为当我们选择适合数据的模型时,该模型的卓越性能来自两个方面。
●一个本身优秀的模型 ●与匹配其他模型相比,数据匹配所选模型的可能性更高
后者对于不给数据施加线性或其他结构性约束的技术(例如树和神经网络)存在特别严重的问题,并且终会使数据过拟合。
为了解决过拟合问题,我们可简单地将数据进行划分(分割),并仅使用其中的一个部分来开发模型。当有了一个模型之后,可尝试使用其他部分的数据,并用多种方式来查看模型在这些数据上的表现。在分类模型中,我们可以计算错误分类的滞留记录比例;在预测模型中,我们可以测量预测值和实际值之间的残差,即预测误差。这种评估方法有效地模仿了我们的模型被应用在没有“看到”的数据的部署场景。该建模和评估过程统称为“模型交叉验证”。
我们通常处理两个或三个数据分割:训练集、验证集,有时还有一个附加的测试集。根据事先确定的比例随机地或根据一些相关变量(比如,在时间序列预测中,根据数据的时间顺序对数据进行分割)确定地将数据分割成训练集、验证集和测试集。在大多数情况下,应该对数据进行随机分割以避免得到有偏差的数据划分。通过连续分割(例如,将初始数据划分为三个部分,然后对这些部分中的一个进一步分割)也可能(虽然很麻烦)将数据划分为三个以上的部分。
训练集 训练集通常是数据中的分割,包含用于构建各种模型的数据。通常使用相同的训练集来开发多个模型。
验证集 验证集(有时称为测试分割)用于评估每个模型的预测性能,以便比较每个模型并选择模型。在一些算法中(如分类和回归树、k近邻),可以自动用验证集来调试和改进模型。
测试集 测试集(有时称为保证或评估分割)是使用新数据评估所选模型性能的数据分割。
为什么同时有验证集和测试集?当我们使用验证集来评估多个模型,然后选择在验
数据挖掘:商业数据分析技术与实践
证集中效果好的模型时,我们再次遇到过度拟合另一个(较小的)方面的问题——验证集拟合被选择模型的效果比拟合其他模型的效果要好。即,通过使用验证数据来选择模型,所选模型对验证数据的性能将过于乐观。
验证数据的随机特征可增强所选模型的性能,但可能不会存在于应用该模型的新数据中。因此可能会高估所选模型的准确性。测试的模型越多,它们中的一个将更有可能在验证数据中对噪声进行建模时有效。将模型应用于之前没有使用过的测试集时,将得到模型对新数据拟合效果的无偏估计。图2.4为三个数据分割及其在数据挖掘过程中的应用。当我们所关注的是找到好的模型而不是模型的精确度时,可以只使用训练集和验证集。
注意,对于许多算法,例如分类和回归树,模型是用训练集构建的,但验证集用于在训练集上找到模型。因此,验证数据是在JMP中拟合初始模型的组成部分。为了对模型进行独立评估,应使用数据的第三个测试分割——测试集。
图 2.4 三个数据分割及其在数据挖掘过程中的作用
JMP Pro交叉验证的分割数据
JMP Pro列建模工具中的Make Validation Column提供了对数据进行分割的选项。该工具根据指定的分割比例或者数量创建一个新变量——Validation,其值0表示训练集,1表示验证集,2表示测试集。这个新变量指示了数据是如何进行分割的。
过拟合
模型中包含的变量越多,对特定数据建模过拟合的风险就越大。那么,什么是过拟合呢?
表2.1显示了一个时间段内广告支出和后续时间段内销售量的假想数据(数据的散点图如图2.5所示)。我们可以使用平滑但很复杂的函数来连接这些点,这个函数可以完美地包含所有这些数据点,并且没有误差(残差),如图2.6所示。然而,我们可以看到,基于广告支出来预测未来销售的这样一条曲线不大可能是准确的,甚至不大可能是有用的(比如,支出从400美元增加到500美元实际上会降低收益,这是让人难以置信的)。
建模的基本目的是将变量之间的关系用这样一种方式呈现出来,这种方式便是基于未来预测变量的值可以较好预测未来的结果变量的值。当然,我们希望模型能够很好地描述现有数据,但是我们对未来数据的模型拟合效果更感兴趣。
表 2.1 一个时间段内广告支出和后续时间段内销售量的假想数据
广 告 支 出
销 售 收 入
239
514
364
789
602
550
644
1 386
770
1 394
789
1 440
911
1 354
00200400600……..8001 0002004006008001 0001 2001 4001 600
图 2.5 广告支出和销售数据散点
数据挖掘:商业数据分析技术与实践
00200400600……..8001 0002004006008001 0001 2001 4001 600
图 2.6 过拟合:该函数拟合数据时不存在误差
在上面的例子中,在基于广告支出预测未来销售方面,一条简单直线比复杂函数的效果可能更好。相反,我们设计了一个完美拟合数据的复杂函数,在这样做时就可能产生过拟合。我们终对数据中的一些随机差异进行了模型构建,错误地将数据中的噪声标记为有用的信号。
类似地,我们可以利用手头的数据,向模型添加预测变量,以提高其处理手头数据的性能。考虑有100人的数据库,其中一半的人为慈善机构做出过捐赠。根据有关收入、家庭规模和邮政编码的信息就能对某人是否是捐赠者做出预测。如果我们继续向模型添加更多的预测变量,我们可以使用手头上的数据提高模型性能,并将错误分类的概率降低到可忽略的水平。然而,这种低错误率是具有误导性的,因为它可能包括仅对这100人有效但对超出样本的数据无效的伪效应。
例如,数据库中某一个变量可能是身高,在理论上无法支持高个子可能对慈善有更多或更少捐赠的这种说法,但如果样本中有几个高个子刚好捐赠更多,我们的模型可能包括一个身高项——个子越高,捐献就越多。显然,当模型应用于其他数据时,身高很可能就不是一个好的预测变量了。
如果数据量小于预测变量的数量,模型中很可能将出现这样的伪相关。仍然以上述的慈善数据集为例,一个小样本中只有少数几个样本的身高较高,无论这几个样本的贡献水平是多少,算法都很有可能将其原因归结于他们的身高。如果数据量相对于预测变量的数量非常大,则上述情况不太可能发生。在这种情况下,每个预测变量均对结果的预测有帮助,因此某特定变量对少数案例的影响就不明显了。
有些令人惊讶的是,即使我们知道高阶曲线是适当的模型,但拟合模型的数据集不
足够大,则低阶函数(不大可能是拟合噪声)的效果更好。过拟合也可能从多个所选择的具有好效果的不同模型的应用中产生。
2.6 用JMP Pro建立预测模型
让我们再来熟悉一下许多数据挖掘任务中所使用的常用分析过程:多元线性回归。这将有助于读者在本书开始介绍新算法之前了解整个流程。
预测波士顿家庭房产价值
互联网已经革新了房地产业。房地产经纪人如今在网上列出房子及其价格,房屋和公寓价格的估计已经被广泛应用,即使是对没有在市场上销售的房子也可这么做。Zillow(www.zillow.com)是受欢迎的在线房地产信息网站a,他们在2014年收购了主要竞争对手Trulia。2015年,Zillow已经成为查看房价和房地产经纪人发布在线广告的主要平台。曾经令房地产经纪人非常舒适的6%的佣金,为他们带来了可观收益(以及供过于求的经纪人)。现在这些收益正迅速地被持续增长的Zillow广告支出所侵蚀。(这事实上是Zillow商业模型的关键所在——把房地产经纪人6%的佣金转移给自己)。
Zillow从公开的城市住宅数据(用于纳税的资产评估)中直接获得了其“Zestimates”房屋价值的大部分数据。寻求进入市场的竞争对手可能采取相同的方法获得这些数据,所以房地产经纪机构也可能开发出一个替代Zillow的产品。
一个简单的方法是朴素的、无模型的方法——只需使用城市确定的评估价值。然而,这些价值不一定包含所有属性,它们可能也不包括改建、新建等变化。此外,城市所使用的评估方法可能不透明或不可能总是反映市场的真实价值。但是,城市属性数据可以用作构建模型的起点,随后可以向其添加其他附加数据(例如,由其他大型地产经纪机构收集的数据)。
让我们来看看如何用波士顿市的财产评估数据预测家庭住房价值。JMP数据集West Roxbury Housing.jmp中包括位于麻省波士顿西南部的西罗克斯伯里2014年单个家庭自住房屋的数据。这些数据包括各种预测变量的值和目标变量——房屋评估价值(TOTAL VALUE变量)。表2.2为数据集14个变量的描述(完整的数据字典可以从http://goo.gl/
a “Zestimates可能不如你想要的那样正确”,《华盛顿邮报》, 2015-02-07, p. T10, by K. Harney.
数据挖掘:商业数据分析技术与实践
QBRIYF获得。我们修改了一些变量名,并省略了一些变量)。数据集包括5 802个家庭,数据样本如表2.3所示。
表2.2 西罗克斯伯里(波士顿)家庭房屋价值数据集的变量描述
TOTAL VALUE
财产的估计总价值,以千美元计
TAX
根据总评估值乘以税率计算的房产税(以美元计)
LOT SQ FT
房屋总占地面积(平方米)
YR BUILT
物业建成年度
GROSS AREA
总建筑面积
LIVING AREA
住宅物业的总居住面积(平方米)
FLOORS
楼层数
ROOMS
房间总数
BEDROOMS
卧室总数
FULL BATH
浴室总数
HALF BATH
半浴室总数
KITCHEN
厨房总数
FIREPLACE
壁炉总数
REMODEL
房子改建时间(近/旧/无)
标题行下面的每一行代表一个家庭。例如,个家庭的总价值被评估为34.42万美元(TOTAL VALUE),房产税是4 330美元,占地面积926平方米,建于1880年,有2层6个房间,等等。
建模过程
现就使用波士顿家庭房屋价值这个例子来详细描述各建模阶段。
(1)目的。假设该数据挖掘项目的目的是预测西罗克斯伯里的房屋价值。
(2)获取数据。我们将使用西罗克斯伯里2014年的住房数据。该数据集很小,因此我们不需要从中抽样——可以使用整个数据集。
(3)数据探索、清洗和预处理。首先观察变量的描述说明,即“数据字典”,以确保能够理解每个变量的含义。这些描述可以作为数据表中的列注释如表2.3所示(将鼠标放在Columns Panel中的变量名上,就可以显示出列注释)。该数据集中的变量名和描述看起来都很简单明了,但对其他数据而言,事实并非如此,通常变量名是隐藏的,它们的描述可能是不清楚或缺失的。
表2.3 西罗克斯伯里家庭房屋价值数据集的前十个记录
TOTAL VALUE
TAX
LOT SQFT
YR BUILT
GROSS AREA
LIVING AREA
FLOORS
ROOMS
BED ROOMS
FULL BATH
HALF BATH
KIT CHEN
FIRE PLACE
REMODEL
344.2
4 330
9 965
1 880
2 436
1 352
2
6
3
1
1
1
0
None
412.6
5 190
6 590
1 945
3 108
1 976
2
10
4
2
1
1
0
Recent
330.1
4 152
7 500
1 890
2 294
1 371
2
8
4
1
1
1
0
None
498.6
6 272
13 773
1 957
5 032
2 608
1
9
5
1
1
1
1
None
331.5
4 170
5 000
1 910
2 370
1 438
2
7
3
2
0
1
0
None
337.4
4 244
5 142
1 950
2 124
1 060
1
6
3
1
0
1
1
Old
359.4
4 521
5 000
1 954
3 220
1 916
2
7
3
1
1
1
0
None
320.4
4 030
10 000
1 950
2 208
1 200
1
6
3
1
0
1
0
None
333.5
4 195
6 835
1 958
2 582
1 092
1
5
3
1
0
1
1
Recent
409.4
5 150
5 093
1 900
4 818
2 992
2
8
4
2
0
1
0
None
在数据处理过程中停下来思考一下变量的含义以及它们是否应该被包含在模型中是非常重要的。以变量TAX为例,乍一看,房产税通常是其评估价值的函数,因此在模型中会存在一些循环——我们希望使用房产税收作为预测变量来预测家庭房屋价值,但房产税本身是由家庭房屋价值决定的。房产税可以在数值意义上很好地预测家庭房屋价值,但当模型被运用到评估家庭房屋价值时,不能确定变量TAX是否有意义。因此,我们在分析中将剔除TAX变量。
检查可能是错误的异常值也是非常重要的。例如,在根据楼层数降序排列后,FLOOR列(楼层数)如表2.4所示。
表 2.4 西罗克斯伯里数据集的异常值
FLOORS
ROOMS
15
8
2
10
1.5
6
1
6
我们可以立即发现15是一个错误值,因为一个家庭住宅不太可能有15层。所有其他值在1和2之间。这个数的异常可能是因为小数点位置错位,正确的值可能是1.5。
后,我们可以为分类变量创建一个虚拟变量。该数据集中有一个包含3个类别的分类变量:REMODEL。在JMP中,不需要为分类变量创建虚拟变量,因此我们可以直接使用REMODEL变量,无须对其进行虚拟编码。
数据挖掘:商业数据分析技术与实践
(4)减少数据维度。该数据集处于一个低维度——它只有12个潜在的预测变量(不包括TAX变量),而所考虑的单个分类变量只有3个类别。如果我们有更多的变量,在这个阶段就需要应用变量降维技术,如将多个类别缩减为更少的类别,或者应用主成分分析来合并多个类似的数值变量(如LIVING AREA,ROOM,BATH,HALF BATH变量等)。
(5)明确数据挖掘任务。本例中,如前所述,具体任务是使用预测变量来预测TOTAL VALUE的值。
(6)数据分割(针对监督任务)。我们的任务是预测房屋价值和评估预测效果。我们将把数据分割为一个训练集和一个验证集,使用训练集构建模型,使用验证集评判模型效果。
该技术是分类和预测问题中监督学习过程的一部分。这些分类和预测问题是我们事先指导某些数据的类别或预测变量的值,想要使用这些数据在建立一个模型,使其可以运用到类别或预测变量值未知的其他数据中。
JMP Pro中,从Cols菜单栏下选择Modeling Utilities中的Make Validation Column工具,弹出如图2.7所示的对话框a。JMP 12可对数据分割用以下两种方式中的一种来处理。
注:本例中,50%的数据被分割为训练集,50%分割为验证集,0%分割为测试集。
图 2.7 JMP Pro中Make Validation Column工具的对话框
a.对数据进行纯随机分割(简单随机)。
b.基于所选的分层变量或多分层变量,将数据分割为训练集和验证集(分层随机)。
a 在JMP Pro 13中Make Validation Column工具有附加选项。
本例中我们使用简单随机方式将数据平均分割为两个部分:训练集(50%)和验证集(50%)。上述过程会在数据表中产生一个名为Validation的新列,用于说明每条记录所属的分割。训练集用于构建模型,验证集用来查看模型在新数据上的应用效果。虽然我们的案例中不包含测试集,但其他例子中可能会使用测试集。
在对数据进行分割时,可以设置随机种子以便在以后需要时复制相同的随机分割。本例中,可使用先前创建的Validation列并将其存储在数据表中(即后一列)。
注意:Make Validation Column工具和内置模型交叉验证仅能在JMP Pro中使用——这些功能在JMP标准版中不可用。但使用Column Info>Initialize Data>Random功能下的Indicator函数可在JMP中手动创建Validation列。同样地,对于大多数建模方法,可以使用Row菜单中的Hide and Exclude选项手动进行交叉验证。在本书中,我们将使用JMP Pro中的自动交叉验证功能和其他模型构建功能。许多建模技术在JMP标准版中都是原生的。
在JMP中设置随机种子
随机种子重置加载项现可从JMP用户社区中获得(在community.jmp.com中搜索Random Seed Reset)。要安装加载项,请到JMP社区的加载项页面并阅读说明,然后点击附件便可在JMP中打开加载项。在同意安装该附件之后,Random Seed Reset选项便可添加至JMP菜单中。
JMP Pro 13中提供了在创建验证列(Validation)时设置随机种子的选项。该选项也可在JMP Pro 13中的建模平台中使用。
(7)选择分析技术。本例选择多元线性回归。将数据分割为训练集和验证集后,可以用JMP软件以训练集为基础构建多元线性回归模型。我们要在其他所有变量(除TAX之外)的基础上来预测西罗克斯伯里房屋的价值。
(8)使用算法执行任务。JMP中可从Analyze菜单选择Fit Model平台来实现本建模阶段,模型拟合对话框如图2.8所示。TOTAL VALUE变量作为Y变量(即因变量),除TAX和Validation之外的所有其他变量作为模型效应(即输入变量或预测变量)。使用数据分割标识列Validation,对训练集拟合模型。JMP生成标准回归输出,同时提供有关训练和验证的统计量。本书在此暂不讨论输出结果以及分析窗口中的其他可用选项。(有关详细信息请参阅第6章多重线性回归,或JMP中Help菜单下的Fitting Linear Models。)
数据挖掘:商业数据分析技术与实践
图 2.8 使用JMP Pro Fit模型平台进行多元线性回归
在此我们关注的是模型预测和预测误差(残差)。可使用分析窗口中的红色三角形按钮和在Save Columns菜单中选择对应选项将上述信息保存到数据表中,如图2.9所示。
图 2.9 使用拟合小二乘分析窗口中的红色三角形将预测公式和残差保存到数据表
图2.10显示了前10条记录的真实值(验证集中的观测值也被显示),以及预测值和残差(预测误差)。注意,预测值通常被称为拟合值,因为它们是源自所拟合模型的记录。
注:验证集中的观察值以高亮方式显示。
图 2.10 通过保存到数据表中的预测公式对西罗克斯伯里房屋数据中的前10个观测值的预测
可以使用诸如Analyze>Distribution and Analyze>Tabulate的标准JMP平台来比较训练集和验证集间的预测误差。
例如,在图2.11中我们可以看到使用Tabulate可以汇总训练集和验证集的误差结果。在Tabulate中有许多不同的统计概要,图2.11中只选择了平均值、小值和值。
图 2.11 使用Analyze> Tabulate生成的训练集(上)和验证集(下)的误差统计量概要(以千美元为单位)
可以看出,相对于TOTAL VALUE变量的计量单位而言其平均误差非常小。也就是说,在一般情况下,预测值的均值是“无偏”的,这就意味着正向误差和负向误差相互平衡掉了,无法看出这些误差究竟有多大。小值和值(见图2.11)显示了预测误差的范围,但预测误差的测度方法有很多种,这些将在本书第5章予以讨论。
使用验证列时,拟合小二乘(Fit Least Squares)分析窗口默认提供两种预测误差测度方法(见图2.12):RSquare和RASE。RSquare是一种基于误差平方和的,用输入变量解释输出变量变动百分比的测度方法。RASE(或RMSE)是一种更加有用的预测误差测度方法。RASE采用均方误差平方根给出了一种与原始数据相同测度规模的典型误差算法(无论正负)。
图 2.12 用于回归模型的JMP Pro拟合小二乘分析窗口的交叉核实统计量
本例中,验证集RASE(4.27万美元)接近于训练集RASE(4.302万美元)。
(9)解释结果。在本阶段,我们通常会尝试其他预测算法(比如回归树),观测这些算法如何降低误差。我们也可以尝试更改各种模型的设置(比如可以使用多元线性回归中的Stepwise逐步回归选项,选择一组具有较少变量但在验证集中拟合效果较好的模型,或者尝试诸如回归树的不同算法)。对于每个模型我们都将其预测公式保存到数据表中,然后使用JMP Pro中的Model Comparison模型比较平台,比较不同模型的检验统计量。
Model Comparison平台提供了另外一种额外的预测误差测度方法,即AAE(average absolute error)或者叫平均误差(在Analyze>Modeling菜单下),AAE也被称为MAD(mean absolute deriation,平均偏差)或者叫MAE(mean absolute error,平均误差)。
数据挖掘:商业数据分析技术与实践
注意,这种额外的测度方法也可以使用JMP公式编辑器(Formula Editor)手工计算。
在选择模型后(通常来说,模型在验证集上具有较小误差,同时模型要求越简单越好),将模型运用到新数据上来预测输出变量。这些步骤在后续的案例分析中有更详细的说明。
(10)部署模型。模型的总体目的是,在选择模型之后,将模型应用于新数据,以预测那些未知的TOTAL VALUE,即家庭房屋价值。
预测新记录的输出值称为“评分”(scoring)。对于预测任务,评分过程产生预测数值;对于分类任务,评分过程产生类别或倾向。
JMP可以使用已构建的模型对新记录进行评分。为此,我们只需将新行添加到数据表中,并将预测变量的值输入相应的单元格中。当模型的预测公式保存到数据表中时,会自动计算出新行变量中的预测值。图2.13展示了使用保存的线性回归模型对两个家庭进行评分的JMP数据表样例。请注意,所有必需的预测变量列都有值,结果变量没有值。
通过使用模型的拟合小二乘分析窗口中顶部红色三角形中的Save Columns选项,可以添加这些预测值的其他信息(如置信区间)。具有相同预测变量的不同JMP数据表中的数据,也可以通过公式编辑器(Formula Editor)将已保存的预测公式复制到数据表中的列中,并进行评分。
图 2.13 使用存储的线性回归模型对两个记录进行评分
2.7 用JMP Pro进行数据挖掘
本过程要注意的一个重要方面是,重负荷数据分析不一定需要大量的数据记录,JMP通常都可以处理有数百万条记录的数据集。然而,在应用多元线性回归或分类树时,使用样本量为20 000的样本就可能产生与使用整个数据集一样精确的答案。其原理与投票的原理相同:如抽样合理,2 000个选民可以在一两个百分点内估计出总体人口的意见。
(有关进一步讨论,请参阅2.4节中的“多少变量,多少数据”所对应的内容。)
因此,在大多数情况下,每个数据分割(训练集、验证集和测试集)中所需的记录数量都可以由JMP软件来调整。当然,我们需要先将这些记录导入JMP中。JMP具备多种不同格式导入数据,使用查询生成器(Query Builder)连接到外部数据库,以及从外部数据库或SAS数据集中随机抽取样本数据的能力。
2.8 自动化数据挖掘解决方案
在大多数监督数据挖掘应用中,其目标不是对特定数据集进行静态或一次性分析。相反,我们希望开发的是可以持续预测或分类新记录的模型。当发现并定义问题和测试不同的模型时,我们的初始分析是有原型的。这遵循本章前面介绍过的所有步骤。
在这些步骤结束时,我们通常希望所选择的模型能够以自动化的方式来部署。例如,美国国税局(IRS)每年收到几亿个报税单——它不希望将每个纳税申报单都导入Excel表或其他与其主数据库分离的软件中来确定报税欺诈的预测概率。相反,它希望这一决策作为正常税务申报环境和流程的一部分。Pandora或Spotify(两家在线电台和音乐服务商)需要为数百万用户中的每个用户迅速确定下一首推荐歌单,因此没有时间对提取数据进行手动分析。
在实践中,这是通过将所选择的算法构建到其过程或数据库所在的计算设置中来完成的。纳税申报单直接输入到IRS系统,预测算法将立即应用于IRS系统中的新数据上,并且由算法决定预测类别。业务规则将决定该分类的实际意义。在IRS案例中,规则可能是:如果预测出来不是欺诈行为,继续按常规处理;如果预测出是欺诈行为,则会向审查员发出警报并可能实施审查。
这种从数据输入到导入IRS系统,再到通过预测算法将结果返回用户的报税单流程就是“数据流水线”的一个例子。系统的不同组件通过为了传输数据和相关通信而创建本地有效规则的应用编程接口(API)来建立联系。用于数据挖掘算法的API创建预测算法工作所需的元素——准确的预测变量及其顺序、数据格式等。它还将创建连接算法结果的需求。自动数据流水线中所使用的算法需要符合API运行规则。
后,当计算环境设置好并运行时,数据挖掘者的工作并没有完成。模型运行环境通常是动态的,并且预测模型通常具有时效性——资深人士发现他们极少能有效运作超过一年。因此,即使在模型完全部署阶段,模型也必须定期检查和重新评估。一旦效果
数据挖掘:商业数据分析技术与实践
降低,就需要回到原型模式,看看是否可以建立一个新的模型。
本书将重点介绍原型开发阶段——即正确定义模型以及开发和选择模型的所有步骤。但应当提醒读者的是,大多数实施数据挖掘模型的实际工作都处于自动化部署阶段。这项工作大部分都不属于分析领域而属于数据库和计算机科学领域,以确保自动化数据流的每一个细节都能正常运作。
数据挖掘软件工具的市场状况
——赫伯·埃德尔斯坦a
在过去十年中,数据挖掘市场在一些重要方面发生了变化。
重要的趋势是可用信息数量的不断增加,以及云存储和云计算使用的增加,数据挖掘和数据分析的发展已经能够满足这些新的需求。
“大数据”一词反映出了所收集数据的数量和类型的激增。目前仍有大量的交易型数据、数据仓库数据、科学数据和点击流数据。然而,来自非结构数据源(如客户服务电话和图像记录)、社交媒体以及产生大量传感器数据物联网信息等的涌入,增加了传统数据的巨大存储需求。现在几乎每个行业都在向这些领域进行扩展,因此收集这些数据的机构数量也大大增多。
快速的技术变革一直是一个重要因素。数据存储的价格急剧下降,本书成稿时,普通硬盘存储价格已降至约50美元/ TB,固态硬盘约为200美元/ TB。随着存储成本的降低,以更低的成本大大增加了带宽,这使得基于云计算的传播成为可能。
基于云的计算是指利用远程平台进行存储、数据管理和实时分析。因为扩展大数据的硬件和软件基础架构非常复杂,许多机构都将其数据委托给外部供应商。根据《福布斯》杂志报道,的几家云服务提供商(亚马逊、谷歌、IBM和微软)的年报收入均超50亿美元。
管理这么多的数据是一项具有挑战性的任务。虽然传统的关系型数据库管理系统(DBMSs)——如Oracle、微软的SQL Server,IBM的DB2以及SAP的Adaptive Server Enterprise(之前为Sybase)——仍然是领先的数据管理工具,但像Oracle的
a 赫伯·埃德尔斯坦(Herb Edelstein)是两只乌鸦咨询公司(Two Crows Consulting,www.twociuws.coia)的总裁。该公司是一家位于华盛顿特区附近的领先的数据挖掘咨询公司。他是国际公认的数据挖掘和数据仓库专家,关于这些话题,他是一位广为人知的人物。
MySQL之类的开源数据库管理系统正变得越来越受欢迎。此外,非关系型数据存储在存储极大量的数据方面取得较大的进展。例如,Hadoop——一个用于管理大型分布式数据架构的开源工具,已经成为云数据库领域中的重要角色。但Hadoop是面向应用开发人员而不是终端用户的工具。因此,许多数据挖掘和数据分析供应商(如SAS)都构建了面向Hadoop的接口。
所有主要的数据库管理系统供应商都会提供数据挖掘功能,这些功能通常被集成到他们的DBMS产品中。目前领先的产品主要有Microsoft SQL Server Analysis Services,Oracle Data Mining和Teradata Warehouse Miner。嵌入式数据挖掘产品的目标用户是数据库专业人员。这些产品包括了使用DBMS转换变量、在数据库中存储模型、将数据访问语言扩展至模型构建和数据库评分等数据库功能。一些产品还提供了用于构建数据挖掘模型的独立图形界面。当DBMS具有并行处理能力时,嵌入式数据挖掘工具通常会将其充分利用并实现更高的性能。与下面描述的数据挖掘套件一样,这些工具提供了各种算法。IBM不仅在DB2中嵌入了分析功能,而且在收购SPSS之后,还将Clementine和SPSS整合到IBM Modeler中。
市场上仍有大量基于单个算法或基于所谓算法套件的独立数据挖掘工具,其目标用户包括统计学家和商业智能分析师。这些领先的分析套件包括SAS Enterprise Miner、SAS JMP、IBM Modeler、Salford Systems SPM、Statistica、XLMincr和RapidMiner。分析套件的特点是能提供广泛的功能,常通过增强建模能力的图形用户界面来被调用。许多图形用户访问界面的主流做法是提供把数据挖掘步骤和数据分析整合在一起的工作流程接口。
许多分析套件都有优秀的可视化工具和扩展分析功能的统计包,它们还提供交互式数据转换工具以及用于更复杂数据转换的过程脚本语言。分析套件供应商正致力于将其工具更紧密地连接到底层DBMS中。例如,数据转换可能由DBMS处理。数据挖掘模型可以通过生成SQL、过程语言代码(如C 或Java)或称为预测模型标记语言(PMML)的标准化数据挖掘模型语言等导出并整合到DBMS中。
与通用分析套件相反,面向具体应用的专用工具旨在特定的分析用途,如信用评分、客户维系或产品营销。它们的重点可能进一步加强,以满足诸如抵押贷款或金融服务等专业市场的需求。其目标用户是具有对应领域专业知识的分析师。因此,这些分析工具的接口、算法、甚至是专业术语都是为特定的行业、应用或客户定制的。虽然不如通用工具灵活,但专用工具的优点是将专业领域知识纳入产品设计中,并可事
数据挖掘:商业数据分析技术与实践
半功倍地提供解决方案。包括SAS、IBM和RapidMiner在内的数据挖掘公司都提供了垂直市场工具,像Fair Isaac这样的行业专家也是如此。其他公司(如Domo)正致力于为商务智能创建具有分析和可视化功能的仪表板。
随着开源模型构建工具和开核工具的推广,另一个技术转变已经发生。开源软件简单地说就是将工具的源代码免费提供给用户社区,并且可由他们修改或增强功能。这些提交给源码发行方或版权所有者的增强功能,用户可以将其添加到基本软件包中。开放核心是一种更新的方式,这种方式中有些核心功能是开放和免费的,但有一些专有功能不是免费的。
R是重要的开源统计分析软件之一。R软件起源于贝尔实验室一个名为“S”的程序,其商业版本为S 。许多数据挖掘算法以及大量的统计、数据管理和可视化工具已经添加到R中。R本质上是一种编程语言,具有强大的灵活性,但与许多基于图形用户界面(GUI)的工具相比具有更陡峭的学习曲线。虽然R也有一些GUI,但绝大多数情况下都是通过编程方式来使用R的。
Python是一种比C 或Java更易使用、比R软件运行更快的流行编程语言。一些厂商以及开源社区,都在向Python软件添加统计和数据挖掘工具。
如上所述,云计算供应商已经通过提供AaaS(分析即服务)并以交易为基础定价产品的方式进入到了数据挖掘/预测分析业务领域。这些产品更倾向于应用程序开发人员,而不是商务智能分析师。云计算中的数据挖掘,其主要吸引力是无须更多费用、复杂性的存储以及管理大量数据的能力,还可以能够更快速地实现大型分布式多用户应用。如果供应商所提供的分析不能满足用户需要,基于云的数据可被用于非基于云的分析。
亚马逊公司已将亚马逊机器学习(Amazon Machine Learning)添加到亚马逊网络服务(AWS)中,以便将它用到为亚马逊内部使用而开发的预测建模工具上。AWS支持关系数据库和Hadoop数据管理。由于模型是为了应用在存储在Amazon云上的数据上,因此模型是无法导出的。
谷歌公司通过其BigQuery和Prediction APL在云分析领域非常活跃。BigQuery允许使用Google基础架构用类似SQL的界面访问大量数据。Prediction API可以用包括R和Python在内的多种语言来访问,它使用各种机器学习算法并自动选择结果。遗憾的是,这个过程并不透明。此外,与亚马逊一样,Google也无法导出模型。
微软公司也是云分析领域的积极参与者,它有Azure机器学习工作室(Azure
ML)和流分析(Steam Analytics)两个工具。Azure能与Hadoop集群以及传统关系数据库协同工作。Azure ML提供了诸如提升树和支持向量机等广泛算法,并支持R脚本和Python。Azure ML还支持工作流接口,使其更适合于非程序员的数据科学家。实时分析组件旨在对多源数据流进行即时分析。微软公司还收购了Revolution Analytics,这家公司是R分析业务的主要参与者,微软收购其目的在于将该公司的“R Enterprise”与SQL Server、Azure ML进行整合。R Enterprise是R的扩展,其可消除R的内存限制并且可以进行并行计算。
基于云的分析工具的一个缺陷是相对缺乏透明度和用户对算法及其参数的控制。在一些情况下,它所提供的服务就是简单地选择一个对用户来说是黑箱的单一模型。另一个缺陷则是,绝大多数基于云的工具所服务的是精于系统的数据科学家。
数据科学正在发挥核心作用,使得许多组织能够优化从生产到营销过程中的一切。新的存储方式和分析工具提供了更大的性能。选择技术的关键是要适合于组织的特定目标和约束条件。跟以往一样,人的判断是数据挖掘解决方案中重要的组成部分。
本书重点在于对数据挖掘所使用的不同技术和算法的全面理解,而不是对数据挖掘模型实时部署的数据管理需求。JMP的短学习曲线使其成为达成本书目的的理想选择,同时也是数据探索、原型设计和解决方案引导的理想选择。
思考题
1. 假设在如下的情形下使用数据挖掘技术,请确定其任务是监督学习还是无监督学习。
a.根据人口统计和财务数据确定是否向申请人发放贷款(参考以前客户具有类似数据的数据库)。
b.对于在线书店,基于先前交易中的购买模式向客户提出关于购买附加商品的建议。
c.基于与威胁状态已知的其他分组的比较,将网络数据包识别为危险(病毒、黑客攻击)。
d. 相似客户细分。
e. 根据某家公司的财务数据与类似的破产、非破产企业比较,预测该公司是否会破产。
数据挖掘:商业数据分析技术与实践
f. 根据故障单估计飞机所需的维修时间。
g. 通过邮政编码扫描自动分类邮件。
h. 根据您刚刚购买的商品和其他人之前购买的商品,在结账时打印定制优惠券。
2. 描述验证集和测试集所扮演角色的差异。
3. 来自贷款申请人数据库的样本如表2.5所示。简述其随机抽样的可能性,以及是否可能会是一个有用的样本。
表 2.5 来自贷款申请数据库的样本
OBS
CHEK ACCT
DURATION
HISTORY
NEW CAR
USED CAR
FURNITURE
RADIO TV
EDUC
RETRAIN
AMOUNT
SAVE ACCT
RESPONSE
1
0
6
4
0
0
0
1
0
0
1 169
4
1
8
1
36
2
0
1
0
0
0
0
6 948
0
1
16
0
24
2
0
0
0
1
0
0
1 282
1
0
24
1
12
4
0
1
0
0
0
0
1 804
1
1
32
0
24
2
0
0
1
0
0
0
4 020
0
1
40
1
9
2
0
0
0
1
0
0
458
0
1
48
0
6
2
0
1
0
0
0
0
1 352
2
1
56
3
6
1
1
0
0
0
0
0
783
4
1
64
1
48
0
0
0
0
0
0
1
14 421
0
0
72
3
7
4
0
0
0
1
0
0
730
4
1
80
1
30
2
0
0
1
0
0
0
3 832
0
1
88
1
36
2
0
0
0
0
1
0
12 612
1
0
96
1
54
0
0
0
0
0
0
1
15 945
0
0
104
1
9
4
0
0
1
0
0
0
1 919
0
1
112
2
15
2
0
0
0
0
1
0
392
0
1
4. 银行数据库的样本如表2.6所示,这是从较大的数据库中随机选取的训练集。响应变量Personal Loan是指个人贷款的请求是否被接受。计划未来进行类似的招募活动,银行正在寻找一个模型以识别可能的响应者。请仔细检查数据,并指出下一步该做什么?
表2.6 来自银行数据库的样本
OBS
AGE
EXPERIENCE
INCOME
ZIP
FAMILY
CC AVG
EDUC
MORTGAGE
PERSONAL LOAN
SECURITIES ACCT
1
25
1
49
91 107
4
1.6
1
0
0
1
4
35
9
100
94 112
1
2.7
2
0
0
0
5
35
8
45
91 330
4
1
2
0
0
0
OBS
AGE
EXPERIENCE
INCOME
ZIP
FAMILY
CC AVG
EDUC
MORTGAGE
PERSONAL LOAN
SECURITIES ACCT
9
35
10
81
90 089
3
0.6
2
104
0
0
10
34
9
180
93 023
1
8.9
3
0
1
0
12
29
5
45
90 277
3
0.1
2
0
0
0
17
38
14
130
95 010
4
4.7
3
134
1
0
18
42
18
81
94 305
4
2.4
1
0
0
0
21
56
31
25
94 015
4
0.9
2
111
0
0
26
43
19
29
94 305
3
0.5
1
97
0
0
29
56
30
48
94 539
1
2.2
3
0
0
0
30
38
13
119
94 104
1
3.3
2
0
1
0
35
31
5
50
94 035
4
1.8
3
0
0
0
36
48
24
81
92 647
3
0.7
1
0
0
0
37
59
35
121
94 720
1
2.9
1
0
0
0
38
51
25
71
95 814
1
1.4
3
198
0
0
39
42
18
141
94 114
3
5
3
0
1
1
41
57
32
84
92 672
3
1.6
3
0
0
1
5. 用过拟合的概念解释为什么一个模型可拟合训练集时,这些数据的零误差不一定很好。
6.在拟合一个模型用于将潜在客户分为购买者或非购买者时,某公司从含有人口统计和购买信息的内部数据中提取训练数据。将要进行分类的数据是购买自其他数据源的包含人口统计数据(但不是购买数据)的列表。refund issued被发现是训练数据中一个有用的预测变量,但为什么这不是包含在模型中的适当变量?
7.一个数据集有1 000个记录、50个变量以及在所有记录和变量中随机分布的5%的缺失值。分析人员决定删除具有缺失值的记录,你预计会删除多少条记录?
8. 规一化表2.7中的数据,显示计算结果。在JMP软件中确认结果(创建一个JMP数据表,使用公式编辑器或动态变换功能)。
9.各个记录之间的统计距离可以用几种方法测量。以欧氏距离为例,以离差平方的和的平方根来衡量。对于表2.7中的前两个记录,它是
标准化两个在欧式距离上远的数据,会对结果产生变化吗?
10.两个模型用于已分割的数据集。对于训练集,模型A比模型B明显更准确,但
续表
数据挖掘:商业数据分析技术与实践
对于验证集,模型A的准确度略低于模型B。你有可能考虑哪种模型用于终部署?
11.数据集ToyotaCorolla.jmp包含2004年夏天在荷兰销售的二手车数据。它有1 436条记录,包含38个属性的详细信息,包括价格、车龄、里程、马力和其他特征。
a. 使用JMP的数据可视化功能来探索数据,例如,Graph>Scatterplot Matrix and Graph>Graph Builder。哪些变量之间的数据是相关的?(有关如何使用这些平台的基本信息,请参阅Graphical Displays and Summaries选项下jmp.com/learn上的指南和视频。)
表 2.7
车 龄(月)
收 入($)
25
49 000
56
156 000
65
99 000
32
192 000
41
39 000
49
57 000
b.我们计划使用在未来章节中描述的各种数据挖掘技术来分析数据。通过使用JMP Pro软件中的Cols菜单下的Make Validation Column的实用程序创建分割,为监督式学习的数据挖掘技术准备数据集。使用以下百分比进行分割:训练集(50%),验证集(30%),测试集(20%),描述这些分割在建模中扮演的角色。
第二部分
数据探索与降维
3
数据可视化
本章将会介绍一系列用于探索数据集多维性质的图形,包括基本图形(条形图、线图和散点图)、分布图(箱线图和直方图)和基于基本图形以便可视化更多信息的增强图形。本章主要关注不同的可视化及其操作是如何支撑从监督(预测、分类和时间序列预测)到无监督的数据挖掘任务的,并介绍每个数据挖掘任务中所使用的具体可视化技术。本章还将介绍静态图上交互式可视化的优势和适用于具有特殊结构(层次和地理)数据的专用图像。
3.1 数据可视化的用途
俗话说“一图胜千言”,指的是将分散的语言信息压缩到一张紧凑的、能够被快速理解的图形中。数字、数据可视化和数值汇总,为人们既提供了一种强大的工具去探索数据,又提供了一种有效的方式去展示和交流新发现。
到目前为止,可视化技术如何适用在数据挖掘过程中?可视化技术主要用在数据挖掘过程中的预处理阶段。可视化可通过找出异常值(如年龄为999岁或-1岁的患者)、缺失值以及数值全部相同的重复行、列等类似方式来进行数据清洗。可视化技术也可用于变量的生成和选择:它们能够帮助决定哪一个变量应包含在分析中,而哪一个变量是冗余的。它们也有助于选择合适的数据分箱间隔(如数值型输出变量可能需要转化成所需要的形式,如“是”或“否”的二元变量)。可视化技术在构建分类变量中也有重要作用,这也是数据降维过程中的一部分。后,如果数据还没有收集且收集数据又很昂贵时(正如潘多拉项目一开始那样,见第7章),可视化方法可以帮助人们选择一个变量或指标非常有用的样本。
本章主要关注以数据探索尤其是与预测性分析相关的图形展示的用途。尽管本章重点不是数据报告的可视化,但是本章提供了在数据展示过程中的各种有效方法。本章所介绍的图形展示提供了大量的信息,远超过汇总表和柱状图这两种基本形式,并且这些图形都是目前商业环境下流行的数据展示形式。对于使用图表来报告业务数据的一个很好的综合讨论,请参考FEW(2004)。在图形化报告数据挖掘结果方面,本书也都有介绍,这些图形有些是特定分析技术产生的(如第14章中的系统聚类谱系图,第9章中分类和回归树的树形图),也有些是通用的一般图形[如,受试者工作特征曲线(ROC)和第5章中分类的升力曲线]。
无论是否要进行更多其他形式的分析,数据探索都是一个强制性的初始步骤。图形化的探索支持以理解数据结构、清洗数据(如识别意想不到的差距或“非法值”)、识别异常值、发现初始模式(如变量和意想不到的类之间的相关)、产生有趣问题等为目标的自由探索。图形化探索还可以更加专注于特定的感兴趣的问题。在数据挖掘过程中,如下组合是必需的:以支持具体目标为目的进行自由形式的探索。
图形化探索的范围从产生基本的图表到使用诸如数据筛选、交互式聚焦等探索一系列相互关联的图表,这些图表包括诸如颜色、多维面板等高级特点。本章不是一个关于可视化技术的详尽指南,而是想介绍一些用来支持数据挖掘过程的主要原则和特征。我们从描述可视化的不同复杂程度开始,更进一步地展示不同可视化的特点和运行过程的优点。我们的讨论从可视化是如何支持数据挖掘这一视角出发,尤其是将有监督和无监督学习区分开来,在监督学习下,将其更进一步地区分为分类(类别型Y)和预测(数值型Y)。
3.2 数据实例
我们使用两个数据集来说明数据可视化。这两个数据集将会在本书后续章节中使用,方便读者比较后面几章中改进的一些基本图形,并轻松查看高级可视化的优点。
案例1:波士顿房屋数据
波士顿房屋数据(Boston Housing.jmp)包含了波士顿人口普查方面的信息a,其中
a 波士顿房屋数据集来源于Harrison 和Rubinfeld,详见“Harrisson and Rubinfeld,Hedonic prices and the demand for clean air”,Journal of Environmental Economics & Management,vol.5,pp.81-102,1978.
数据挖掘:商业数据分析技术与实践
测量了一些指标(例如犯罪率、师生比),这个数据集一共有14个变量。表3.1给出了每个变量的描述,这些描述在JMP数据表的注释中可看到(将鼠标悬停在Columns Panel中的变量上就可以看到这些描述)。图3.1展示了该数据集的前10条记录。除了原始的13个变量以外,数据集中还包含变量CAT.MEDV,该变量是将房屋价值中位数(MEDV)分成两类后构建而成的,高的值为1,低的值为0。
表 3.1 波士顿房屋数据集中的变量描述
CRIM
犯罪率
ZN
占地面积超过2 323平方米住宅用地的百分比
INDUS
非零售商业用地的百分比
CHAS
查尔斯河虚拟变量(1表示靠近河边,其余情况用0表示)
NOX
一氧化氮浓度(千万分之一)
RM
每间住宅的平均房间数
AGE
1940年以前自建房屋的百分比
DIS
与5个波士顿就业中心区域的加权距离
RAD
径向高速公路的接近指数
TAX
每10 000美元的全额物业税率
PTRATIO
按城镇计算的师生比
LSTAT
低层次人口比例
MEDV
以千美元计的自住房屋价值中位数
CAT.MEDV
MEDV的二元分类编码(MEDV>30 000,为1;否则为0)
考虑如下3种可能的任务:
(1)有监督的预测任务,感兴趣的结果变量是普查中住宅价值的中位数;
(2)有监督的分类任务,感兴趣的结果变量是二元变量CAT.MEDV,该变量表明了该房屋价值的中位数是否高于或低于30 000美元;
(3)无监督任务,目的是对人口普查结果进行聚类。
(MEDV和CAT.MEDV在上述3种情况下均不会被同时使用)
实例2:Amtrak火车乘客人数
Amtrak是美国一家铁路公司,定期收集乘客数据。这里使用从1991年1月到2004年3月的月度乘客数量的连续型数据来预测我们所关心的未来乘客数量。数据及其来源在第15章中描述。因此,我们的任务是数值型时间序列预测。数据可在Amtrak.jmp中获得。
图 3.1 波士顿房屋数据集中的前十个记录,每行代表一个普查区
3.3 基本图形:条形图、折线图和散点图
可以通过JMP图形生成器(Graph > Graph Builder)很轻松地生成3种有效的基本图形,即条形图、折线图和散点图。目前这些图表在商业界被广泛地使用,也应用于数据探索和数据可视化中(饼图也很受欢迎,尽管它们通常是无效的可视化)。基本图表通过同时展示一列或多列数据(变量)来支持数据探索。这在前期对数据结构、变量数目、变量类型、缺失值数量及类型的熟悉十分有效。初始的Graph Builder界面如图3.2所示。
就分配给不同变量的时间和工作量而言,数据挖掘任务的特性和相关专业知识将会影响到基本图表的使用。有监督学习更关注于结果变量,结果变量在散点图中通常用y轴表示。在无监督学习中(为了对数据降维或聚类),能够体现关系(如散点图)的基本图表是有用的。
使用JMP图表构建器
JMP 的Graph Builder是一个在二维空间中,针对一个或多个变量构建基本(和更高级)图表的多功能图形平台。拖拽变量到空白区域(例如,Y或X),再单击顶部的图标以改变图表类型。拖曳图标到图形窗格中来添加额外的图表元素,并可以通过左下方的更改显示选项来选择图表的类型。关闭控制面板,生成终图表,单击“完成”。(见图3.3)
图3.2为使用Graph Builder创建的基本图表的示例,其左上角展示了美国铁路公司客流量的月度时间序列线形图。折线图主要用来展示时间序列数据。图表时间框架以及时间尺度的选择,应该取决于预测任务的范围和数据的性质。
数据挖掘:商业数据分析技术与实践
图 3.2 基本图形:折线图(左上)、散点图(右上)、数值型变量条形图(左下)
和分类变量马赛克图(右下)
条形图用来比较不同组的单个统计量(例如,平均数,计数,百分比)是非常有用的。条形图的高度(或是水平条形图中柱的长度)表示某个统计量的值,不同的柱形对应于不同的组。图3.2的左下方展示了数值型变量的条形图(MEDV),该图将MEDV的均值放在y轴上。独立的柱分别用来表示距查尔斯河较近(CHAS=1)的波士顿房舍,以及距查尔斯河较远(CHAS=0)的波士顿房舍,因此比较了CHAS的两个类别。这同前面提到的第二个预测任务相一致,数值结果放在y轴上,x轴为分类型预测变量a。(注意,条形图的x轴只能是分类型变量,因为条形图中的柱应该是可相互交换顺序的。)
对于分类任务,图3.2面板右下方的y轴是CAT.MEDV,但是它的合计是百分比(也可以是频数)。这个图形是一种堆叠的条形图,叫做马赛克图。x轴上柱形的宽度告诉我们大部分区域(接近85%)不在查尔斯河的边界上(CHAS=0的柱形比CHAS=1的柱形更宽)。注意,此例中y轴的标签可能会令人困惑:y轴只是CHAS = 0和CHAS = 1的
a 我们这里所指的是纵向条形图。同样的原则也适用于水平条形图,只是此时x轴为数值型变量,y轴为分类型变量。
CAT.MEDV的每个类别中记录的百分比。
图 3.3 JMP图表构建器初始显示
图3.2面板右上方展示了MEDV与LSTAT的散点图。这是预测任务中非常重要的图形。注意,MEDV的输出结果再次放在y轴上(LSTAT放在x轴上作为潜在的预测变量)。因为,散点图中的两个变量必须是数值型的,散点图不能用来展示CAT.MEDV和分类任务中的潜在预测变量之间的关系(但我们可以改善这一点,见3.4节)。对于无监督学习,这样的散点图有助于我们研究两个数值型变量在信息重叠以及识别观测对象类别时的关系。
以上4种图表都凸显了数据中蕴含的信息,比如乘客量的总体水平或MEDV、随时间的变化情况(折线图)、子群体之间的差异(条形图和马赛克图)、数值型变量之间的关系(散点图)。
分布图形:箱线图和直方图
在继续使用更复杂的可视化技术之前,我们注意到两个重要的图,它们通常不被认为是“基本图表”,但在统计和数据挖掘领域中是非常有用的。直方图和箱线图是展示数值型变量分布情况的两种图形。虽然平均值是很常见且有用的汇总统计量,但是通过其他统计量(如变量的中位数和标准差)以及数据的分布情况,往往能够得到更多的信息。条形图只能用于单变量的汇总,而箱线图和直方图可以展示数值型数据的完整分布情况。
箱线图用来比较子群体也很有效。并排(比较)箱线图可以对另外一个变量的每个数值展示出一个不同的图形。连续的箱线图可以用来观察随时间变化的分布。在JMP的
数据挖掘:商业数据分析技术与实践
Graph Builder中可以生成单个数值型变量的直方图和箱线图(或Analyze > Distribution中也提供汇总统计量)。比较箱线图可以使用Graph Builder或Analyze > Fit Y by X来实现(同时会生成各组的汇总统计量)。
分布图(直方图和箱线图)在有监督学习中非常有用,用于确定可能的数据挖掘方法和变量转换的方法。例如,如果在需要假定正态性的方法中(例如线性回归、判别分析),使用偏态数值型变量,则可能需要对变量进行转换(例如将变量取对数)。
直方图是用一系列连续的柱形表示所有x值的频率。例如,在图3.4的左侧,中位数(MEDV)在5 000~10 000美元大约有25个。
图 3.4 数值变量MEDV的分布图(左:直方图和箱线图,右:比较箱线图)
箱线图表示在y轴上绘制的变量,当然,图像可以旋转90度,使得箱子与x轴平行(如我们在图3.4中看到的直方图)。在图3.4的右侧,有两个并排的箱子。每个箱子包含了各自50%的数据。例如,在CHAS = 1的箱线图中,一半区域的中位数(MEDV)在20 000~33 000美元。箱子内的水平线表示中位数(50%的分位数)。箱子的顶部和底部分别代表75%的分位数和25%的分位数。箱子上方和下方延伸的线涵盖了数据范围的其余部分,超出这条线的点是潜在的离群点。
在JMP的Distribution平台中,箱线图中显示了一个菱形,其中菱形的中心是平均值(参见图3.4中直方图上方的箱线图)。在Fit Y by X(未显示)中,平均值可以显示为一条直线或一个菱形(取决于你选择的红色三角形选项)。比较平均值和中位数有助于评估数据的偏斜程度。如果数据高度右偏,均值将会远大于中位数。
因为直方图和箱线图都是针对数值型变量的,它们的基本形式对预测任务是有用的。
箱线图还可以通过展示数值型变量(y轴)和分类型变量(x轴)之间的关系来支持无监督学习。为了说明这点,再次看图3.4,左边部分展示了MEDV的直方图和箱线图,表明是偏态分布。将输出变量(MEDV)进行对数变换可能会改进线性回归预测模型的结果。
图3.4中的右边部分展示的并排箱线图,将靠近查尔斯河(1)与远离查尔斯河(0)的房舍进行了比较。我们看到,靠近河边的房舍不仅中位数MEDV高于远离河边的房舍,并且整个分布都偏高(中位数、分位数、小值和值)。我们还看到所有靠近河边的房舍其中位数MEDV都在1万美元以上,不像那些远离河流的房舍。这些信息有助于识别这个预测变量(CHAS)的潜在重要性,并且有助于选择适用的数据挖掘方法,这些方法(例如,树)能够捕获两个分布之间的非重叠区域。应用于数值变量的箱线图和直方图还可以用于发现新变量。例如,它们能够指出如何将数值型变量转化为二分类型变量,或在波士顿住房的例子中,它们有助于选择将MEDV转化为CAT.MEDV的临界值。
后,并排箱线图对于评估数值型预测变量的分类任务是有用的。可以通过将分类型的输出结果放于x轴,将数值型预测变量放于y轴来完成。图3.5中展示了一个实例,其中我们可以看到4个数值型预测变量对CAT.MEDV的影响。这些都可以在Graph Builder的Column Switcher(在红色三角形下>Script)中实现,每次替换一个预测变量。区别明显的两个变量(例如,LSTAT和INDUS)可能是有用的预测变量。
图 3.5 并排箱线图,用于在Graph Builder中使用Column Switcher来创建不同数值预测变量,以探索CAT.MEDV输出变量
基本图表的基本形式(基于相对于轴的位置来编码)其主要弱点在于它们只能展现2个变量,因而无法体现出高维信息。每个基本图表都有2个维度,其中每个维度都只用于一个变量。在数据挖掘中,数据通常是多元的,并且多数分析都是为了获取和测量多变量信息。因此,可视化探索应该包含这个重要的方面。在下一节中,我们将介绍如
数据挖掘:商业数据分析技术与实践
何通过添加特性、采用操作以及整合交互等来将基本图表和分布图扩展到多维数据可视化。然后我们会提供几个专门用于显示特殊数据结构的图表(见3.5小节)。
JMP中的数据可视化工具
在JMP中用于创建可视化的3个流行的工具是“Distribution”“Fit Y by X”(在Analyze菜单)和“Graph Builder”(来自Graph菜单)。Distribution用于生成单变量图形及其统计量(条形图、直方图、频数分布图和汇总统计表)。所得的图形和统计量都基于变量的类型,其他选项可在变量的红色三角形下获得。Fit Y by X用于生成双变量图及其统计量(散点图、箱线图、统计汇总表、马赛克图和交叉表等)。另外,所提供的图形和统计方法基于所选变量,红色三角形给出其他选项。Graph Builder主要是交互式图形平台,为1个、2个或多个变量提供多种图表。
热图(色彩图和单元格图):相关性和缺失值的可视化
热图用于展示数值型数据,其颜色代表数值的大小。在数据挖掘过程中,使用这种图表主要为了相关系数表和缺失数据的可视化。这两种情况都通过二维表格传递信息。我们可以根据数值的大小对其文本或单元格背景进行着色。JMP中相关性和缺失值的可视化热图的两种类型分别是色彩图和单元图。
热图基于这样的事实:扫描颜色编码比扫描数值更容易、更快捷。在探索大量数据时,热图非常有用,但它不能代替更精确的图形,例如条形图或散点图,因为无法准确地感知色差。
基于波士顿住房数据得到的文本着色相关系数表及其相应的色彩图如图3.6所示。在相关系数表(顶部)中给出了13个变量之间的相关性。在色彩图(底部)中,白色到黑色的主题分别用于突出负相关(白色)和正相关(黑色)。注意,该图未显示y轴标签,每行对应于色彩图顶部列出的变量。它可以快速地找出变量间的高相关性和低相关性。该输出结果在Multivariate平台中产生(在Analyze>Multivariate Methods下)。
接下来,我们可以使用色彩图来探索数据(含有n行和p个变量)中的缺失值。在JMP中,可以使用Tables >Missing Data Pattern来进行缺失值分析。此选项生成missing data pattern数据表,该数据表使用原始数据集的二进制编码,其中1表示变量在该处是缺失的,0表示非缺失。该模式能确定数据表中的哪些变量或列是缺失值。例如,5个变
量的00000模式表示没有缺失值,而10100的模式表示个和第三个变量存在缺失值。计数值表明对于特定的变量,有多少观测对象存在缺失值。
图 3.6 颜色编码的相关表和黑白颜色主题的相关性热图(也称为色彩图)
注:该模式显示哪些列是缺失值,运行右上角的脚本可以生成缺失值的树形图或单元格图。
图 3.7 数据缺失模式表
为了详细说明,图3.7显示了一个超过40列和539行的数据集中存在缺失值的部分数据表(来自于JMP样本数据库中Bands Data.jmp文件)。变量是从多个来源合并而来的,并且每个来源的信息并不总是可用的。在图3.7中我们可以看到,对任意列来说,只有277行不存在缺失值,并且有些行缺少一两列的数据。
数据挖掘:商业数据分析技术与实践
下一步是创建一个单元格图,它会在数据矩阵中凸显出缺失值。图3.7展示了我们所用案例的结果。通过在数据缺失模式表左上角脚本提供的快捷方式来创建单元格图。要创建单元格图,请右键单击该脚本,然后选择Run Script。
图形上来看,图3.8中的单元格图用阴影区域显示出特定变量的缺失行,以及行中有缺失值的多个变量(多个变量的阴影区域)。单元格图帮助我们将合并数据文件中的“缺失信息”可视化展示。一些缺失信息模式很容易出现:几乎所有变量的观测对象都存在缺失值,以及存在许多缺失值的行。具有很少缺失信息的变量也是可见的。这些信息可用于决定如何处理缺失值(例如,删除一些变量、删除一些记录、填补缺失值,或通过其他技术)。
注意:探索缺失值的其他选项,包括填补缺失值的选项,从JMP 12 Pro中的Cols >Modeling Utilities>Explore Missing Values可获得。
图 3.8 数据缺失模式单元格图
3.4 多维可视化
JMP中的基本图可以通过颜色、大小和多面板等功能传递更丰富的信息,也可使用诸如调整尺度、聚合、交互、图形与数据表间的动态链接等操作,以及动态筛选出基于其他变量值的数据。这些额外操作允许我们一次查看多于一两个变量的信息。其优点是它们以易于理解的方式有效地展示出复杂的信息。有效的功能是建立在理解视觉感知是如何工作的基础上的(FEW,2009)。目标是使信息更易于理解,而不仅仅是在更高维度
中展示数据(例如,三维图通常是无效的可视化),并且允许多元变量的探索更灵活、更易掌握。
添加变量:颜色、大小、形状、多面板和动画
为了在图中体现出更多变量的信息,我们必须考虑这些变量的类型。为了表示额外的分类信息,好的方法就是使用色调、形状或多面板。对于其他数值型信息,我们可以使用颜色强度或大小、时间信息可以通过动画来添加。
将额外的分类变量和(或)数值变量合并到标准图中,意味着我们现在可以通过这些变量进行预测和分类任务。例如,我们前面提到,基本散点图不能用于研究分类结果和数值型预测变量之间的关系。然而,对于分类来说一个非常有效的图示方法是使用两个预测变量所构成的散点图,该散点图基于分类结果变量的类别被着色编码。图3.9的左半部分展示了一个实例,其中颜色和标记用以表示CAT .MEDV [使用Graph Builder,CAT.MEDV作为overlay(叠加)和color(颜色)标记的变量]。
注:(左:两个数值型预测变量的散点图,用颜色以及分类结果CAT.MEDV标记。右:MEDV的条形图由两个分类预测变量绘制(CHAS和RAD),使用CHAS作为Y变量创建多个面板)。
图 3.9 通过分类变量进行颜色编码和网格化
在预测的过程中,颜色编码可用于探索数值型结果变量(在y轴上)和数值型预测变量之间的条件关系。经过颜色编码的散点图能帮我们评估是否需要将交互项纳入模型中。例如,MEDV和LSTAT之间的关系与房舍离河流的远近是否存在差异?只需使用Graph Builder画出MEDV与LSTAT的散点图,并将CHAS拖动到“overlay(叠加)”区域即可。点击Line of Fit图标可以更深入地探索这种关系。如果所得直线不平行,则很
数据挖掘:商业数据分析技术与实践
好地表明了LSTAT和CHAS的交互项是需要纳入模型中的(例如,LSTAT和MEDV的关系取决于CHAS的值)。
只要类别数量少,颜色也可用于将分类变量添加到条形图中。当类别数量较大时,更好的方法是使用multiple panels。创建多个面板(也称为“网格”)是基于分类变量来拆分观测对象而完成的,并为每个类别创建单独的图(相同类型)。绘制网格图的案例通过图3.9的右半部分展示,其中高速公路可达性(RAD)的平均MEDV条形图被CHAS拆分为两个面板。在这个例子中,CHAS用作Graph Builder中的Group Y变量。对于接近河流的家庭(下图)与远离河流的家庭(上图)来说,不同水平高速公路可达性(RAD)的平均MEDV表现是不同的。这对于RAD = 1尤其显著。当RAD水平为2、6、7时没有靠近河流的房舍。这些信息可能导致我们在RAD和CHAS之间创建一个交互项,并考虑合并RAD中的一些区间。所有这些探索对于预测和分类都是有用的。
Group区域用于创建多个面板,这些面板是垂直或水平对齐的。对于具有多个类别的分类变量,有时好将面板按列排列到多个行中。为了实现这一点,请使用Wrap区域(在Graph Builder的右上角,见图3.2)。这将在Wrap区域内的变量创建一个网格图,它将自动封装以有效地显示多个面板。图3.10显示了使用Wrap的网格图示例。具体来说,我们创建了一个关于NOX和LSTAT的散点图,用颜色编码,并通过CAT.MEDV标记点,然后通过将RAD添加到封装区域来对散点图进行网格化。
图 3.10 NOX与LSTAT的散点图
注意:当数值型变量放置在Wrap区域或Group区域中时,变量会自动分级以创建网格图。
多面板散点图的一个特殊图像是矩阵散点图。在该图中,所有成对散点图都被单独
展示在图像中。矩阵散点图中的面板以特殊方式被组织起来,例如每列对应一个变量,每行也对应着一个变量,从而两者交叉之处就创建了所有可能的成对散点图。在无监督学习中,矩阵散点图用于研究成对数值型变量之间的关系,检测离群值以及识别聚类集群。对于监督学习而言,它可用于检查预测变量之间的成对关系(和它们的性质),以支持变量转换和变量选择(参见第4章中的相关分析)。对于预测来说,也可以用于描述结果变量和数值型预测变量之间的关系。
图3.11给出了矩阵散点图的一个例子,该图描绘了MEDV和3个预测变量的关系。每行中的变量名称表示y轴变量,每列中的变量名称表示x轴变量。例如,矩阵散点图下面一行的y轴都是MEDV(允许研究单独结果变量与预测变量之间的关系)。我们可以通过不同的形状看到变量间不同类型的关系(例如,MEDV与LSTAT之间的指数关系和CRIM与INDUS之间的高度偏斜关系),这些形状对于确定变量的转换方式十分有效。注意,对角线右上方的图是对角线左下方图的镜像,它们是相同的。
注:密度椭圆图以图形方式显示变量之间的相关性和强度。
图 3.11 MEDV和3个数值型预测变量的矩阵散点图
使用色调之后,就可以通过形状和多个面板添加更多的分类变量。然而,在添加多个变量时必须谨慎处理,因为显示可能会变得过于混乱,而视觉感知也会随之消失。
通过尺度来添加数值型变量特别有用,尤其是在散点图中,因此就有了“气泡图”,因为在散点图中,点通常代表个体的观测值。在Graph Builder 和 Bubble Plot中可以添加尺度变量(在Graph菜单下)。在各个观测值汇总的图表(例如箱线图、直方图、条形图)中,大小和色调通常不联合使用。
后,添加时间维度到图像中可以显示信息随时间的变化,这可以通过动画来实
数据挖掘:商业数据分析技术与实践
现。一个著名的例子是Rosling的动画散点图(www.gapminder.org),显示了多年来世界人口的变化情况。在JMP中,这种动画形式在气泡图中是可用的。Data Filter和Column Switcher可提供附加动画图。然而,虽然这种类型的动画目的是“将统计故事化”,但它们对于数据探索往往不是很奏效。
操作:调整尺度、聚合和层次结构、聚焦、过滤
在数据挖掘项目中大部分时间花费在数据预处理过程中。通常,绝大部分的精力用于将数据整理成为数据挖掘算法中适用的格式,我们需要花费更多的时间来处理数据,以提高数据挖掘算法的性能。预处理过程包括变量转换和新变量的导出,以帮助更有效地构建模型。数据变换包括更改变量的尺度,将数值变量分组,合并分类变量中的类别等。以下操作满足预处理步骤,并有助于选择适当的数据挖掘方法。他们通过揭示数据中的隐藏模式来实现。
调整尺度 改变图像的尺度可以增强图像效果且能够更清晰地展现数据中的关系。例如,在图3.12中,我们能看到将散点图(顶部)的两个轴和箱线图(底部)的y轴转换为对数化(取对数)标度后所产生的影响。虽然原始图(左)很难理解,但对数化之后,数据的模式就显而易见了。在散点图中,MEDV和CRIM之间的关系很难在原始标度中
图 3.12 重塑可以增强图像并展示模式(左:原始尺度;右:对数尺度)
确定,因为过多的点“挤”在y轴的附近。调整刻度会消除这种情况,并能更好地查看两个对数标度变量之间的线性关系(表示一种log-log的关系)。在箱线图中,原始单元在x轴上太过密集,我们无法比较两个箱子的大小、位置、较小的离群值以及大部分的分布信息。调整尺度会改变“点在x轴上密集情况”,从而使我们能够对两个箱线图进行比较。(可以通过双击JMP中的轴来改变刻度。)
聚合和层次结构 另一个有用的缩放操作是改变聚合的程度。对于时间尺度,我们可以通过使用不同的时间维度(例如月、日、小时)来聚合,甚至是通过所感兴趣的“季节性”因素,例如一年中的第几月或一周中的第几天。时间序列常用的聚合是移动平均,在一个给定的时间窗口内绘制出相邻值的平均值。移动平均图可以增强整体趋势的可视化(见第15章)。
如果数据中存在一些有意义的层次结构,则非时间类型的变量可以被聚合起来,包括地理位置(波士顿房屋实例中的邮政编码内的区域),组织(单位部门内的人员)等。图3.13展示了铁路客流量序列的两种聚合类型,原始的月度序列展示在左上方,季节性聚合(按一年中月份计算)展示在右上方,其中很容易看到客流量在8月达到峰值,2月和3月达到点。右下方展示了序列按年度进行聚合的情况。这种情况揭示了自1996年以来,客流量的长期趋势以及普遍的增长趋势。
对不同的尺度、聚合或层次结构进行检查有助于执行监督和非监督任务,因为它可以显示不同水平下数据的模式和关系,并从中得到新的变量集合。
JMP中,可以在数据表、Graph Builder或任何分析对话窗口中应用不同形式的聚合和转换。在数据表中,右键单击感兴趣的变量,然后选择New Formula Column选项,并从可用的函数中进行选择。要在图形或分析平台中创建转换变量,右键单击对话框中的变量,并选择感兴趣的函数,这将会产生一个可以在当前图形或分析平台中使用的临时变量。这个转换后的变量(及其公式)可以保存到数据表中以便将来使用。
缩放和平移 将图像中的某些区域进行放大或缩小对于揭示数据模式和识别异常值是非常重要的。对地图而言,缩放手段十分有效(例如通过Graph Builder产生)。我们经常对信息密集之处或特定领域中的某些细节感兴趣。平移是指将缩放窗口移动到其他区域或时间段中。缩放的案例如图3.13的左下方所示,其中客流量序列被扩展到该序列的前两年。缩放和平移通过检测具有不同行为的区域来支持有监督和无监督的方法,这
数据挖掘:商业数据分析技术与实践
种操作可能会产生新的交互项、新的变量,甚至数据子集的独立模型。此外,缩放和平移可以帮助我们在假设全局行为的方法(例如回归模型)和数据驱动的方法(例如指数平滑预测、k近邻分类)之间进行选择,并确定全局或局部行为的水平,诸如k近邻分类中的k值、树的大小或指数平滑中的平滑系数等参数。
图 3.13 使用不同聚合(右图),添加曲线(左上图)和放大(左下图)的时间序列线图
过滤 过滤意味着突出或移除图中(或分析中)的一些观测对象。过滤的目的是将注意力集中在某些特定数据上,同时消除由其他数据带来的“噪声”。类似于缩放和平移,过滤也支持有监督和无监督学习:它有助于识别数据中不同或不寻常的局部行为。JMP中Rows菜单下的Data Filter可用于选择、隐藏或排除某些值。“隐藏”是指从图像中移除观测对象,而“排除”是指从分析和计算中移除观测对象(注:在分析平台中,你需要在移除观测对象后重新运行分析过程)。数据过滤是一个全局过滤,它适用于数据表和所有输出窗口。Local Data Filter(任何输出窗口中的红色三角形>Scripts菜单下可用,或作为工具栏上的快捷方式)选择并仅包含当前(或活动)图形和分析中指定列的值。在图3.14中,我们探讨了在给定另外两个变量CRIM和CHAS的值时,MEDV和LSTAT之间的关系,随着过滤变量值的改变,图形会动态地更新。
图 3.14 使用Graph Builder中Local Data Filter,查看特定范围内CRIM和CHAS值
参考:趋势线和标签 使用趋势线和绘图标签也有助于我们检测数据模式及异常值。趋势线作为一种参考,可以让我们更容易地评估模式的形状。虽然我们可以比较容易地用眼睛看到线性趋势,但更复杂的关系,例如指数和多项式趋势难以通过肉眼观察并进行评估。趋势线在折线图和散点图中非常有用。图3.13的左上方给出了一个案例,其中多项式曲线覆盖在原始折线图上。
在Graph Builder中添加趋势
绘制一个含有二次曲线的图形(如图3.15所示)。
●将连续型变量拖动到Y区域。 ●将连续型变量拖动到X区域。 ●单击Line of Fit图标(图形上方的第3个图标)。这可以拟合出数据的趋势线(阴影带是置信区间)。关于拟合线的一系列选项将出现在变量列表的左下方。 ●在Line of Fit框架下,将Degree从“Linear”更改为“ Quadratic”(也可以选择“Cubic”进行拟合)。 ●将Line图标拖动到图像上,以连接每一个点。
在图3.15中,使用了3个图形元素(点、拟合线和线),这些图标都是阴影的。在图的左下角提供了图形元素的选项。要关闭左侧控制面板并隐藏这些选项,请单击Done。
数据挖掘:商业数据分析技术与实践
图 3.15 在Graph Builder(图形生成器)中添加趋势线
在不混乱或不过分密集的图中,使用绘图标签有助于更好地探测异常值和聚类集群。图3.16中给出了一个示例。不同的公共事业在该散点图上展现出来,其将燃料成本与总销售额进行比较。我们可能对聚类数据感兴趣,并且使用聚类算法来识别在燃料成本和销售方面存在显著差异的集群。图3.16帮助我们对这些集群及其成员(例如,Nevada和Puget明显是低燃料和高销售额群体的一部分)进行可视化。有关聚类的更多信息,请参见第14章。标签作为列和行属性被添加到数据表中,在图3.16中,可以重新定位(手动拖曳)标签以获得间距和视觉效果。
图 3.16 带标签的散点图
在JMP中,可以使用标记、列/行标签标记数据点。要在图形中显示带有绘制值的标记,请将鼠标停在该点上,这将显示一个临时标记。要在图表上固定或保留此标记,
请右键单击标签并选择Pin。要将变量的值添加到标记中,请右键单击数据表中的变量名称,然后选择Lable/ Unlabel。要为特定点添加永久性的变量标签,请选择点并使用Rows> Label/Unlabel选项。
扩展:大数据集
当观测对象(行)的数量较大时,展示每个单独的观测对象的图表(如散点图)可能变得无效。除了使用聚合图表如箱线图,一些替代方法如下所述。
(1)抽样(通过随机抽样并将所得样本用于绘图)。JMP有一个抽样工具,并且可以直接在Graph Builder中进行抽样。
(2)减小标记大小。
(3)使用更透明的标记颜色,并移除填充。
(4)将数据拆分成更小的子集(例如创建多维面板)。
(5)使用聚合(例如气泡图,其大小对应于在某一范围内观测对象的数量)。
(6)使用抖动(通过添加少量噪声来稍微移动标记,以便可以看到个体的标记)。
图 3.17 5 000个记录的散点图,使用小尺度、不同类型的标记,并且着色更透明
第12章(见图12.2)展示了使用大数据集中的一个样本进行绘图的优势。它绘制了5 000条记录的散点图以及使用数据集样本绘制的散点图。Universal Bank.jmp这个数据集将在以后的章节中描述。在图3.17中,我们演示了绘制上述大型数据集的技巧,在这个散点图中,我们使用较小尺度的标记,且不同的类别有着不同的标记,以及更透明的
数据挖掘:商业数据分析技术与实践
颜色(灰色尺度用于打印需要)。我们可以看到,图中较大的区域被灰色类别(空心标记)所占据。黑色类别(实心标记)主要在右侧,而右上方存在许多重叠的部分。
多变量图:平行坐标图
在一个二维图中呈现多维信息的另一种方式是通过专门的图像进行展示,例如平行坐标图。在这个图里纵轴上绘制了每个变量。然后,通过绘制一条连接其不同轴上值的线来表示每个观测对象,从而创建“多元分布”。波士顿住房数据的案例如图3.18所示。在该图像中,为了比较两个类别(对于分类任务)的分布,将CAT.MEDV的两个值分别绘制于单独的面板中。我们看到,相比于不太昂贵的房屋(左侧面板),较昂贵的房屋(右侧面板)有着较低的CRIM和LSAT以及较高的RM水平。该结果给出了有用的预测变量,并提出了一些数值型预测变量可能的合并方式。
平行坐标图也可以用于无监督任务。其可用于揭示数据中的集群、异常值以及变量间重叠的信息。一个比较实用的操作是对数据列进行重新排序,以更好地揭示观测对象所属集群。在JMP 13中,平行坐标图可以通过Graph>Parallel Plots进行创建。
注:每一条线是地段普查信息,x轴的每个变量都是量化到0~100%。两个面板用来区分CAT.MEDV(左面板=房屋价值中位数低于30 000美元的地段)。
图3.18 波士顿房价数据平行坐标图
交互式可视化
与数据挖掘的交互性质相类似,交互有助于提升我们从图形可视化中获取信息的能力,它是JMP的基础。数据可视化的专家Stephen Few (Few,2009)说过这样的话:
“我们从静态可视化图表,例如打印出来的图像中,只能得到有限的信息……如果
我们不能与数据进行交互……那我们就碰壁了。”
所谓交互式可视化,是指符合以下原则的界面:
(1)简单、快速、可逆地改变图像;
(2)多个共存的图像可以轻松地组合并显示在一个屏幕上;
(3)一组可视化图可以相互连接,以便一个显示中的操作可在其他显示中反映出来。
JMP是从头开始设计的,用于支持所有这些操作。让我们考虑一些例子,将静态图表生成器(例如Excel)与交互式可视化界面(即JMP)进行对比。
直方图重组 试想一下我们需要对一个数值型变量分组并绘制直方图。对于每种新的划分方式,静态直方图需要重新绘制图像(Excel中需要手动创建新的组)。如果用户生成多个图,屏幕就会显得混乱。如果重新创建相同的图,那么将很难与其他分组进行比较。相比之下,交互式可视化提供了一种简单的方式来交互地改变组距。当用户改变组距时,直方图会自动快速地重新绘制并展示。JMP工具栏上的手动工具(又名“Grabber”工具)可以轻松地将其实现。(选择Grabber,点击直方图并向上或向下拖动以重新划分区间,或向左向右拖动以重新缩放。)
聚合和缩放 考虑一个时间序列的预测任务,给定一个长序列的数据。为了确定短期和长期模式,需要对多个不同水平的时间进行聚合。缩放和平移用于识别不寻常的时期。静态绘图软件要求用户为每个聚合创建新的数据列(例如,聚合每日数据以获得每周聚合)。在Excel中进行缩放和平移需要手动更改所感兴趣数轴的小值和值(从而失去了在不同区域之间快速移动能力,而不需要创建多个图表)。相比之下,JMP提供了即时的时间层次结构,用户可以轻松地进行切换(如之前讨论的通过动态数列转换)。光标和箭头工具可以用来迅速地移动、拉伸和重新定位坐标轴,因此能够直接进行操作,并迅速地给出反应。
在单个屏幕中展示多个相关联的图像 在之前的部分,我们利用图表来说明可视化的优点,因为一张图胜过千言万语。用语言来表达交互式可视化的优点则更难。知名的信息可视化和界面研究员本·施奈德曼(Ben Shneiderman)说:
“一张图胜过千言万语;一个(交互式)界面胜过千张图片。”
在探索过程中,我们通常会创建多个可视化。这些可视化可以包括并排箱线图、具有趋势线的颜色编码散点图、多面板条形图等。我们可能希望通过选择数据的某些子集(例如某个分类型变量的不同水平)来探索其中可能存在的多维关系(以及识别异常值),并将观测对象定位在其他图表中。在静态界面中,我们必须手动组织感兴趣的图并调整
数据挖掘:商业数据分析技术与实践
它们的大小,以便将它们放在单个屏幕中。另外,静态的界面通常不支持图像的连接,因此,每做一次选择都需要重新生成整组图像。
相比之下,JMP提供了一条更简单的方式来自动组织并调整这些图的大小,使之适应屏幕。所有的图都是动态连接的,并能够链接到数据表,也可以生成带有关联图表、分析和数据过滤的仪表板(使用JMP 12中的Application Builder)。用光标在某个点附近绘制一个方框(或者使用数据过滤)来选择多个观测对象。一幅图中的选择会自动显示在另一幅图上,如图3.19所示。有关在JMP中构建应用程序的更多信息,请在Help栏中搜索Applications。
注意:JMP 13中的Dashboard Builder为创建仪表板提供了一个更具交互性和灵活性的界面。
图3.19 一个仪表板中的相互关联的图像(一个JMP 应用程序)。所有的图表都由Graph Builder生成。这些图形在一个窗口中组合起来创建一个JMP应用程序。Local Data Filte用来选择Chars=0的观测对象。这些观测对象会在所有的图表中自动被选择
3.5 特殊可视化
在本节中,我们会提到一些专门的可视化技术,它们能够展示出一些特殊的数据结构,这些结构既不是标准时间序列,也不是横截面数据——通常难以用普通图表来捕获的特殊类型的关系。特别是,我们会处理3种越来越常见的数据——分层数据、网络数据和地理数据。
网络数据可视化
网络分析技术是由社交网络和产品网络数据的爆炸式增长所催生的。社交网络的例子是eBay上的卖家与买家构成的网络,还有Facebook用户组成的网络。一个产品网络的例子就是亚马逊上的产品网络(由推荐系统相连接)。网络数据可视化可以在各种专业的网络分析软件和一些通用的软件中使用(尽管在JMP中无法直接使用)。
一个网络图由成员以及他们之间的关系组成。“节点”代表成员(例如社交网络中的人、产品网络中的产品),用圆圈来表示。“边”是指节点之间的关系,由连接节点之间的线表示,例如在Facebook这样的社交网络中,我们可以建立一个用户(节点)的列表和用户之间成对的“朋友”关系(边)。或者我们可以将边定义为一个用户不断向另一个用户的FaceBook页面发帖的记录。对于这样的设置,两个节点之间可能会存在多条连边。网络还可以存在多种类型的节点。一种常见的网络结构是具有两种类型的节点。
图3.20显示了一个存在两种类型节点的网络图,其反映出在线拍卖网站www.eBay.com上的卖家和买家网络中的一系列交易[数据来自于施华洛世奇珠宝拍卖,这些拍卖是在几个月内进行的(Jank和Yahav,2010)]。左侧的圈代表卖家,右侧代表买家。圈的大小代表交易的数量,节点(卖家和买家)被包含在这个网络中。连边的粗细代表买卖双方进行交易的拍卖数量(在这里可以用箭头从买家到卖家的直接关系)。我们可以看到,这个市场主要由三四个高销量的卖家主导,并且许多买家与单一卖家进行交易。许多个体产品的市场结构可以通过这种方式快速地进行评估。例如,网络供应商可以使用这些信息来识别可能的合作伙伴,以便与卖家进行合作。
图3.20 施华洛世奇珠子项链的eBay卖家(左边)和买家(右边)的网络图,圆圈大小代表节点处交易的数量。连边粗细代表买家和卖家的交易数量(利用JMP加载项生成。)
数据挖掘:商业数据分析技术与实践
图3.20是使用JMP加载项——Transaction Visualizer生成的。该加载项使用JMP的脚本语言(JSL)开发,它可以在JMP用户社区(community.jmp.com)上免费获得。有关JMP加载项的更多信息,请在JMP帮助中搜索加载项。
分层数据可视化:关于树图的更多内容
树图(可从Graph菜单和Graph Builder中获得)是探索具有分层结构(树形结构)的大型数据集的实用可视化工具。它们允许对数据的不同维度进行探索,同时保持数据的层次结构。图3.21展示了一个例子a,它显示了一大批按照物品类别、子类别和品牌分层排列的eBay拍卖数据。树状图层次结构中的层次可视化显示为包含子矩形的矩形,分类型变量可以通过使用色调来显示。同时可以通过矩形的尺寸和颜色的强度来记录数值型变量(矩形的顺序有时是为了加强尺寸差异的视觉效果)。
在图3.21的示例中,大小用于表示平均收盘价(反映项目价值),而颜色强度代表具有负反馈的卖家的百分比(负面反馈表明,在过去的交易中买家不满意,并且通常表明卖家存在欺诈行为)。考虑基于是否存在欺诈对持续拍卖进行分类,从图中我们可以看出,负面反馈(黑色)比例较高的卖家,主要集中在奢侈品的拍卖中,如劳力士和卡地亚手表。
注:矩形尺寸代表平均收盘价(反映项目价值)。阴影表示具有负面反馈的卖家百分比(较暗意味着较高百分比)。
图3.21 树图显示近11 000个eBay拍卖,按项目子类别和品牌组织
a 在此特别鸣谢Sharad Borle提供的数据集。
树状图的一个交互式在线应用的例子可以在www. drasticdata.nl/drastictreemap.htm上查看。其中一个展示了2014年世界杯运动员水平以及球队水平的数据,用户可以选择探索运动员和球队的数据。类似的树状图可以在JMP 13中产生。
地理数据可视化:地图
如今许多需要进行数据挖掘的数据集都包含地理信息。邮政编码是多类别分类变量中的一个例子,它不能直接产生用于分析的有意义的变量。而且,在地图上绘制数据往往可以揭示那些难以识别的模式。一个地理图像以地图为背景,然后通过颜色、色调以及其他特征来表示分类型变量或数值型变量。JMP支持地图背景下的数据绘制和覆盖图像上的数据(在www.jmp.com/learn上查看),或者也可以在JMP文档中搜索“背景地图”。
图3.22展示了两张由JMP的Graph Builder生成的世界地图,将顶层地图中的教育水平与底层地图中的人均国内生产总值(GDP)进行比较(数据为JMP样本数据库中的WorldDemographic.jmp数据集)。颜色越深意味着数值越高。当以地图为背景时,JMP中Column Switcher和DataFilter等工具能够提供多维可视化。
Average Years of Education of Adults150°W50°N0°N50°SAverage Years121086420Graph Builder100°W50°W0°E50°E100°E150°ETerritory colored by GDP per Capita150°W50°N0°N50°SGDP per Capita$120 000$86 667$53 333$20 000$15 000$10 000$5 000Graph Builder100°W50°W0°E50°E100°E150°E
图3.22 由JMP的Graph Builder生成的世界地图
数据挖掘:商业数据分析技术与实践
谷歌地图提供了API(应用程序接口),允许在谷歌地图上标注数据。虽然谷歌地图很容易获得。
3.6 基于数据挖掘目标的主要可视化方案和操作概要
预测
●在箱线图、条形图、散点图的数轴上绘制结果。 ●通过并列的箱线图、条形图和多个面板,来研究输出结果与分类型预测变量间的关系。 ●通过散点图研究输出结果与数值型预测变量间的关系。 ●使用分布图(箱线图、直方图)来确定结果变量(或者数值型预测变量)可能的转换形式。 ●通过添加的颜色/面板/尺度来检查散点图,以确定是否需要添加交互作用项。 ●使用不同水平的聚合、缩放和过滤来确定具有不同行为数据的范围,并评估全局与局部模式。
分类
●通过条形图数轴上结果的频率或百分比,研究其与分类型预测变量间的关系。 ●通过散点图的颜色编码研究结果与数值型预测变量间的关系(颜色表示结果变量)。 ●通过并排箱线图来研究结果与每个数值型预测变量间的关系:根据结果来绘制一个数值型变量的箱线图。为每个数值型预测变量创建类似的图像。不相似的箱线图表示潜在有用的预测变量。 ●在平行坐标图上使用不同的颜色来表示结果变量。 ●使用分布图(箱线图、条形图)来确定数值型预测变量可能的转换形式。 ●通过添加的颜色/面板/尺度来检查散点图,以确定是否需要添加交互作用项。 ●使用不同水平的聚合,缩放和过滤来确定具有不同行为数据的范围,并评估全局与局部模式。
时间序列预测
●以不同时间水平的聚合方式创建折线图,来确定序列模式的类型。
●使用缩放和平移来检查序列中的部分时间段,以确定具有不同行为数据的范围。 ●通过不同水平的聚合来识别序列的全局和局部模式。 ●识别序列中的缺失值。 ●添加不同类型的趋势线,用以选择适当的模型。
无监督学习
●创建矩阵散点图来识别成对关系并识别观测对象的集群。 ●使用色彩图考察相关系数表。 ●通过不同水平的聚合和缩放来识别序列的全局和局部模式。 ●生成一个平行坐标图来识别观测对象的集群。
问题
1. 家用电器出货量:折线图。文件ApplianceShipments.jmp包含1985年至1989年期间美国家用电器的季度出货量的数据(百万美元)。
a.使用JMP的Graph Builder创建一个格式良好的时间序列图。
b.从图中是否可以看出存在季节模式吗?为了更深入地了解这种模式,请尝试在两个坐标轴上进行不同范围的数据放大。
c.创建一个4行1列的图表,每行图像分别对应于Q1、Q2、Q3、Q4四个季度。这可以通过一个转换变量来实现(右击Graph Builder,然后选择Date TimeQuarter)。然后将这个新列拖动到Overlay,Wrap或者Group Y区域。这四个季度所呈现的模式是否存在差异?
d.基于年度水平的聚合来绘制该序列的折线图(例如,每年总的装运量)。同样,你需要在Graph Builder中创建一个转换变量。
2. 割草机的促销:散点图。制造骑式割草机的公司想要确定一个促销活动的销售前景。特别是,制造商有兴趣根据收入(1 000美元)和房屋占地面积(1 000平方米)将家庭划分为是否可能会购买割草机。市场营销专家对24个随机样本家庭进行了调查,数据存储在文件RidingMowers.jmp中。
a.创建占地面积与收入的散点图,根据结果变量ownership来给出颜色编码。确保获得格式良好的图像,结果应与本书图9.2类似。描述变量ownership(所有权)与占地面积和收入之间潜在的关系。
数据挖掘:商业数据分析技术与实践
b.探索JMP中保存工作结果的不同方法。在JMP文档中搜索“savingwork”,或参阅jmp.com/learn中JMP Learning Library的Using JMP部分。请给出两种方法。
3. 伦敦计算机连锁店的笔记本电脑销售:条形图和箱线图。2008年1月伦敦计算机连锁店的笔记本电脑销售数据,是一个包括了整年销售情况的数据的子集,参见LaptopSalesJanuary2008.jmp。
a.创建一个条形图,显示不同商店的平均零售价(通过商店邮政编码区分)。缩放y轴以放大差异。哪个商店的平均销售水平?哪个?使用Local Data Filter(在红色三角形> Scripts下)将这两个商店分隔开并独立展示。
b.为了更好地比较这些商店的零售价格,绘制商店零售价格的并列箱线图。比较上述两个商店的价格。这两家商店的价格分布是否存在差异?
4. 伦敦计算机连锁店的笔记本电脑销售:交互式可视化。文件LaptopSales.txt是一个逗号分隔的文件,有近30万行数据。欧洲商业和工业统计网(ENBIS)将这些数据作为2009年秋季组织的一场竞赛的一部分。
场景:假设您是Acell(一个销售笔记本电脑的公司)公司的新晋分析师,公司提供给你有关产品和销售的数据。你需要帮助公司实现其业务目标,即制定产品策略和定价方案,以限度地提高Acell在2009年的预期收入。将数据导入JMP中(有关数据导入的信息,可通过在JMP文档或jmp.com/learn中搜索“import text files”获取)。通过检查以确保数据表中的数据和建模类型适用于每个变量,并回答以下问题。
a.价格问题:
i. 笔记本电脑的实际销售价格是多少?
ii. 价格会随着时间的变化而变化吗?(提示:确保日期列的格式是可用的。JMP允许动态的转换,并且可以按照每周或每月,甚至是每周的某一天来聚合数据,以绘制图像。)
iii. 是否与零售店价格一致?
iv. 随着配置的不同,价格呈现出怎样的变化?
b.位置问题:
i. 商店和顾客的位置在哪里?
ii. 哪个商店的销量?
iii. 顾客买一个笔记本电脑需要走多远?
●提示一:你应该通过总数或平均价格来聚合数据。
●提示二:在同一页面中协调使用多个可视化图表来强调所需信息,例如,在一个视图中选择一个商店,以查看另一个视图中所匹配的顾客信息。 ●提示三:研究如何通过过滤器来识别差异。确保过滤器在缩放视图中使用。例如使用“商店位置”作为可选择的方法以动态地比较商店的位置。如果比较50家商店的信息或许对发现异常模式更有用。
iv. 尝试使用另一种方法来查看顾客的行驶距离。通过创建一个新的数据列来计算顾客和商店之间的距离。(有关在JMP中创建公式的信息,请在JMP文档中搜索“Creating Formulas”,或参阅jmp.com/learn。)
c.收入问题:
i. 每个商店的销售量与Acell的收入呈现怎样的相关模式?
ii. 如何通过配置类型来确定的?
d.配置问题:
i. 每种类型的配置细节是什么?这与价格有着怎样的关系?
ii. 所有的商店都出售每种类型的配置吗?
4
降 维
在本章中我们将描述降维的重要步骤。为了使数据挖掘算法能够更加高效地运行,我们会减少数据集的维度,也就是变量的个数。这个过程是数据挖掘的试验/原型阶段的一部分,并且需要在构建模型之前完成。我们提出并讨论以下几种降维的方法:(1)结合专业知识剔除或合并类别;(2)通过数据概要来发现变量之间的信息重叠(并剔除或合并冗余变量或类别);(3)对数据进行转换,例如将分类型变量转换为数值型变量;(4)使用诸如主成分分析(PCA)这样的自动降维技术,来创建一系列新变量(是原变量的加权平均)。这些变量互不相关,并且其中很小的一个子集就包含了原始数据中很大一部分信息(因此我们可以只使用新变量集的一个子集来实现降维)。后,我们提到了一些数据挖掘方法,例如回归模型、分类和回归树,这些方法可以用于剔除冗余变量,以及合并分类型变量中的相似类别。
4.1 引言
在数据挖掘中,常常会遇到数据库中存在大量变量的情况。即使初始的变量的数量较少,但是这些变量会在数据准备阶段中快速扩展(例如数据重编码或进行变量转换的过程)。在这种情况下,变量的子集间可能会高度相关。在分类模型或预测模型中,高度相关的变量或与结果变量无关的变量可能会导致模型出现过拟合现象,并且会影响到结果的准确性和可靠性。变量数目过多会给有监督或无监督算法带来一些计算问题(除了相关性问题)。在模型部署阶段,收集和处理过多冗余变量会使成本有所增加。模型的维度就是模型所使用的独立变量或输入变量的个数。
4.2 维度灾难
维度灾难是通过给多元数据模型添加变量而引起的。随着变量的增加,数据空间变得越来越稀疏,且分类和预测模型也会失效,因为可用数据不足以在这么多变量上提供有用的模型。一个重要的事实是,添加一个变量所带来的困难会呈指数级增长。对于这种现象一种直观的思考方式是可以把它假想为棋盘上物体的位置,它有2个维度和64个方格,或者说64个选择。如果将棋盘延伸为一个立方体,就可以将维度增加50%(从二维到三维),然而位置的选择就增加了800%,由64增加到512(8×8×8)。就统计距离而言,变量的增加意味着加入了太多的噪声,模式和结构也变得不好辨别,因此变量彼此之间的距离也有所增加。这个问题在大数据应用中尤其严重,包括基因组学,例如可能需要对成千上万种不同基因进行分析。因此,数据挖掘的关键步骤之一就是寻找降低维度的方法,同时尽可能少地牺牲信息内容或准确性。在人工智能文献中,降维通常被称为“要素选择”或“特征提取”。
4.3 实际考虑
尽管数据挖掘在很大程度上依赖于自动化方法与专业领域知识,但在数据挖掘的步中,要确保所测量的变量对于手头的任务是合理的,这一点非常重要。与数据提供者(或用户)进行讨论所得到的专业知识可能会使结果更加合理。实际的考虑包括:哪些变量对于手边的任务重要?哪些可能是无用的?哪些变量在测量过程中可能会存在很多误差?如果需要重复分析,那么哪些变量应该在之后的测量中使用(以及测量它们所花费的成本)?在得到结果之前哪些变量可以实际被测量到?(例如,如果我们想要预测一个正在网上进行拍卖的商品的终价格,我们不能使用竞拍的数量作为预测变量,因为在竞拍结束之前价格都是未知的。)
案例1:波士顿的房价
让我们回顾第3章所介绍的波士顿住房的例子(数据存储在Boston Housing.jmp文件中),每个社区都给出了一些变量,例如犯罪率、师生比以及社区的住房单元的中位数等。在表4.1中所给出了这14个变量,图4.1描述了数据的前10条记录,行代表个社区,平均犯罪率为0.006,18%的居住地占地面积超过25 000平方英尺,2.31%
的土地用于非零售业务,且远离查尔斯河边等。
图 4.1 波士顿住房数据前10条记录
表 4.1 波士顿住房数据集变量描述
CRIM
犯罪率
ZN
占地25 000平方英尺以上的住宅用地的百分比
INDUS
非零售业务占用的土地百分比
CHAS
查尔斯河虚拟变量(1表示靠近河边,其余用0表示)
NOX
一氧化氮浓度(百万分之一)
RM
每间住宅的平均客房数
AGE
在1940年以前建造的自用单位的百分比
DIS
到5个波士顿就业中心的加权距离
RAD
径向公路的可达性指数
TAX
每10 000美元的全额房产税率
PTRATIO
按城市计算的学生与教师的比率
LSTAT
低层次人口的百分比
MEDV
1 000美元自住房的价值中位数
CAT.MEDV
道路中自用房屋的中位价值高于30 000美元(CAT.MEDV = 1),低于30 000 美元(CAT.MEDV=0)
4.4 数据汇总
正如我们在数据可视化章节中所看到的那样,数据挖掘的一个重要初始步骤是通过数据汇总(概要)和图像来熟悉数据本身及其特征。这一步的重要性并没有被夸大。因为对这些数据越了解,所构建的模型或数据挖掘所得到的结果就越好。统计概要和图像有助于数据降维,因为他们所提供的信息可以合并分类变量中的不同类别、剔除变量以及评估变量之间信息重叠的程度等。在讨论降维的方法之前,让我们考虑一些有用的统计概要和工具。
汇总统计量
JMP有几个用于汇总数据的平台(大多数在Analyze菜单下),它们提供了各种统计信息概要,用以了解每个变量的特征。统计中常见的就是平均值(或者数学期望)、中位数、标准差、小值和值,对于分类型数据而言是分类的数目和每个类别的计数,这些统计信息给我们提供了关于变量的取值范围和变量类型的信息。小值和值可用来检测值,这些值可能是错误的数据;中位数和平均值给出了变量的中心值,且两者之间的差异能够体现出变量的偏离程度;标准差反映了数据的离散程度;其他的统计量,例如缺失值数能够告诉我们关于缺失值的情况。
要快速汇总数据集中的所有变量,请使用Cols菜单下的Columns Viewer选项。选择变量,然后点击Show Summary。汇总统计适用于数值型(连续)变量,而分类型变量则在N Categories下显示类别值。如果数据缺失了,那么表中就会给出变量中缺失数据(N Missing)的总结。在点击Show Summary之前,需要检查图4.2中后4列所示的统计信息,这些信息由Show Quartiles给出。
图 4.2 通过Columns Viewer得到的波士顿房屋数据描述性统计
我们可以看到不同的变量的取值范围是有很大差异的。同样也可以看到,如果对变量处理不恰当,不同变量间的差异将如何扭曲分析结果。另外个变量(CRIM)的平均值比中位数大很多,这就表明数据分布是右偏的。没有一个变量有缺失值,也没有出现那些由于数据错误输入所导致的值(所有变量的极大值和极小值看起来都是合理的)。
要详细了解特定变量的分布和统计概要信息,请选择变量,然后单击Columns Viewer中的Distribution按钮。Distribution平台(也可从Analyze菜单访问)提供了统计概要信息和基本的图形。图4.3显示了波士顿住房数据中CRIM和CHAS的默认输出。附加的统计概要信息和图形选项可以通过红色三角形选项来实现(例如我们使用顶部红
色三角形的Stack选项来生成水平布局)。
图 4.3 通过Distribution平台得到的CRIME和CHASE基本图形和概要统计信息
接下来我们来考察两个或两个以上的变量之间的关系。对于数值变量,我们可以使用Analyze>Multivariate Methods>Multivariate平台来计算变量两两之间的关系(参考第3章)。这将产生一个完整的相关系数矩阵。图4.4给出了波士顿住房数据中变量子集的相关系数矩阵。我们看到许多变量间的相关性较低并且其中大部分都是负相关的。还可以通过色彩图将相关系数矩阵可视化(参见第3章图3.6中对应于该相关系数矩阵的色彩图)。在相关分析的章节中,我们将分析相关系数矩阵的重要性。
图 4.4 使用Multivariate平台生成的波士顿住房数据相关系数表
制表数据(数据透视表)
另一个JMP中比较重要的数据汇总工具就是Tabulate(在Analyze菜单下)。Tabulate提供交互作用的表格,可以组合来自多个变量的信息,并计算一系列统计概要(计数、平均数、百分比等)。图4.5显示了初的Tabulate窗口。和Graph Builder相似,Tabulate也存在能够在交互式表中拖放变量的放置区域,同样也可以使用传统的对话窗口。
图4.5 初始Tabulate窗口。在列或行的拖放区域中拖放变量,并从提供的列表中选择感兴趣的统计量
一个简单的例子是靠近查尔斯河与远离查尔斯河的社区数量,以及这两个组每组的平均MEDV,这在图4.6的左半部分中给出。该表格是通过将MEDV拖放到列的放置区域,CHAS到行的放置区域,并将统计信息Mean和N拖放到现有统计信息(Sum)之上。单击Done按钮(在图4.5的左边)关闭控制面板并产生表格。对于分类变量,我们通过类别的组合来获取记录的分类。例如,图4.6的右半部分显示了每个数值型变量在CAT.MEDV的两个类别上的平均值,以及这两个类别中临近查尔斯河的社区数量。使用Tabulate有更多的可能性和选项。我们将这些选项留给读者进行探索,要获得更多信息,请在JMP Help中搜索Tabulate。
图4.6 使用Tabulate创建的波士顿住房数据的表格
在分类任务中,其中目标是找到能很好区分两个类别的预测变量,一个好的探索步骤是生成每个类别的概要。这可以帮助识别有用的预测变量,体现出两者之间的一些区别。
数据概要几乎对于所有的数据挖掘任务都是有用的,因此在进一步分析之前,清洗数据和理解数据是非常重要的。
4.5 相关分析
在具有大量变量(可能作为预测变量)的数据集中,变量集合中通常存在有很多重叠的信息。找到冗余的一种简单方法是查看相关系数矩阵(见图4.4)。这揭示了所有变量两两之间的相关性。具有强(正或负)相关关系的一对变量包含大量的信息重叠,通过剔除其中一个变量来实现数据降维。剔除与其他变量密切相关的变量,可以很好地避免模型中可能存在的多重共线性问题(多重共线性是指存在两个或多个预测变量与结果变量共享同一线性关系)。
相关分析也是一种检测数据中冗余变量的好方法。有时,同一变量在数据集中会出现很多次(以不同的名称出现),这可能是因为该数据集由多源数据融合而来,或同样的现象以不同的方式来衡量等。使用相关系数色彩图,如第3章所示,可以更轻松地识别具有强相关关系的变量。
4.6 减少分类变量中的类别数量
当分类变量具有多种类别时,且该变量是一个预测变量,许多数据挖掘方法需要将其转换为多个虚拟变量或指示变量。特别地,具有m个类别的变量将被转换为m或m-1个虚拟变量(取决于使用的方法)。注意,JMP不需要将数据转换为虚拟变量,它会在大多数建模过程和数据挖掘平台的幕后进行。尽管如此,即使原始数据中分类变量的数量很少,也能够大大增加数据集的维度。处理这种问题的一种方法是通过合并相近的类别以减少变量的数量,这通常需要将专业知识和常识考虑进来。表格对于此类任务非常有用:我们可以检查各类别的大小以及响应变量在每个类别中的表现。一般来说,包含较少观测对象的类别对于与其他类别相结合来说具备优势。做法是仅使用与分析相关的类别,将缺失值重新编码为missing,并将其余部分重新编码为other。
在分类任务(具有分类输出结果)中,表格中输出结果的分类标签可用于识别未分类对象所属的类别。这些类别也是纳入“其他”类别的候选。图4.7中的左侧显示了这样的一个示例,我们可以看到,对于ZN = 17.5,90,95和100,CAT.MEDV的分布是相
同的(其中所有邻域的CAT.MEDV = 1),故这4个类别可以合并成1个类别。类似地可以将ZN = 12.5,25,28,30和70(CAT.MEDV = 0)合并。基于类似的条形图可以实现进一步的合并。
注:相似的条表示类的区别性很小,可以组合这些类。
图4.7 以ZN分组的CAT.MEDV分布(暗灰色指示物CAT.MEDV = 1)
创建图4.7中的制表和堆叠条形图:
●将ZN的建模类型更改为“Nominal”。 ●在Tabulate中,将CAT.MEDV拖入列的放置区域,将ZN拖入行的放置区域,然后将Row%拖入结果区域。 ●在顶部的红色三角形选择Make into Data Table。 ●在Graph Builder中,将ZN拖入X区域,将两个类别的Row%列(同时)拖入Y区域,然后单击条形图图标(图形上方)。然后在“Bar”中(左下方)选择“Stacked”。
在时间序列中,可能会存在一个分类变量作为预测变量来体现季节性(例如,一个月或一天中的小时)。可以通过查看时间序列图并确定相似的时间段来减少类别。例如,图4.8中的时间序列图显示了1992年至1995年期间玩具反斗城(Toys“R”us,全球玩具零售商)的季度收入,只有第四个季度表现出不同的结果,因此我们可以将第1至第3季度合并成一个类别。
一个用于合并多种类别的JMP工具是Recode(在JMP 12中的Cols>Utilities菜单下——首先要选择数据表中的列)。例如,我们可以使用recode来创建一个新的数值型类别,它合并了区域12.5、25、28、30和70,如图4.9所示。选择Done>Formula Column将会导致数据在新创建的列中通过所储存的公式被重新编码(因此,如果附加数据被添加到数据表中,这些数据也将被重新编码)。请注意,Recode窗口中的红色三角形下提供了用于分类数据的数据清洗工作的附加项,例如,将相似的值归为一组,处理缺失或者解决大小写问题(这些选项不适用于数值型数据)。
图4.8 1992—1995年玩具反斗城在美国的季度收入 图 4.9 使用Recode进行类别的合并
4.7 将分类型变量转换为连续型变量
有时用区间来表示分类变量中的类别,常见的例子是年龄层或收入层。如果区间值是已知的(例如,类别2的年龄段为20~30岁),我们可以通过组中值(这里是“25”)来替换分类标签(示例中为“2”)。所得到的数值可以被视为连续数据,从而简化分析。
4.8 主成分分析
主成分分析(PCA)是较常用的降维方法,特别是当变量的数量很大时。并且当我们所测量的子集具有相同的尺度且高度相关时,使用PCA是很有意义的。在这种情况下,它提供了一些变量(通常只有3个),它们是原始变量的加权线性组合,并且保留了原
始变量的绝大部分信息。PCA用于定量变量。对于分类变量,则使用其他方法更适合,如对应分析(JMP中的多元对应分析可以通过Analyze>Consumer Research平台实现)。
案例2:早餐谷物
收集到关于77份早餐谷物的营养信息和消费者评价的数据,保存在Cereals.jmp中a。消费者评价是指谷物对消费者是否健康的信息(而不是对消费者的评价)。对于每种谷物,数据包括13个数值型变量,我们希望对数据进行降维。对于每一种谷物,信息是基于一碗谷物而不是一份谷物,因为大多数人只是食用一碗谷物(因此恒定的量是谷物的体积而非质量)。数据如图4.10所示,表4.2给出了不同变量的描述。
我们首先关注两个变量:卡路里和消费者评价。表4.3给出了这些信息,77种谷物包含的平均卡路里是106.88,消费者评价的均值为42.67。两个变量之间的协方差矩阵的估计为
这里,卡路里的方差为379.63,消费者评价的方差为197.32,两者协方差为188.68。可以看出,这两个变量呈强负相关关系,相关系数为
图4.10 来自77个早餐谷物数据集(Cereals.jmm)的样本数据
a 数据集可在http://lib.stat.cmu.cdu/DASL/Stories/HealthyBreakfast.html中获取。
表 4.2 早餐谷物数据集变量描述
变 量
描 述
mfr
谷物制造商(American Home Food Products, General Mills, Kellogg等)
type(类型)
冷或热
calories(卡路里)
每份所含卡路里
protein(蛋白)
蛋白质(克)
fat(脂肪)
脂肪(克)
sodium(钠)
钠(毫克)
fiber(纤维)
膳食纤维(克)
carbo(碳复合)
碳水化合物(克)
sugars(糖)
糖(克)
potass(钾)
钾(毫克)
vitamins(维生素)
维生素和矿物质:0,25或者100,即,FDA推荐的百分比
weight(重量)
每份重量(盎司)
shelf(货架)
展示架(1,2或3,从货架底部开始计数)
cups(杯数)
一份中的杯数
rating(评级)
消费者报告中计算的谷物评价
表4.3 谷物评级和卡路里
Cereal
(谷物)
Calories
(卡路里)
Rating
(评价)
Cereal
(谷物)
Calories
(卡路里)
Rating
(评价)
100% Bran
70
68.402 97
Just Right Fruit&Nut
140
36.471 512
100% Natural Bran
120
33.983 68
Kix
110
39.241 114
All-Bran
70
59.425 51
Life
100
45.328 074
All-Bran with Extra Fiber
50
93.704 91
Lucky Charms
110
26.734 515
Almond Delight
110
34.384 84
Maypo
100
54.850 917
Apple Cinnamon Cheerios
110
29.509 54
Muesli Raisins, Dates &Almonds
150
37.136 863
Apple Jacks
110
33.174 09
Muesli Raisins,Peaches &Pecams
150
34.139 765
Basic 4
130
37.038 56
Mueslix Crispy Blend
160
30.313 351
Bran Chex
90
49.120 25
Multi-Grain Cheerios
100
40.105 965
Bran Flakes
90
53.313 81
Nut & Honey Crunch
120
29.924 285
Cap’n’Crunch
120
18.042 85
Nutri-Grain
Almond-Raisin
140
40.692 32
Cheerios
110
50.765
Nutri-Grain Wheat
90
59.642 837
Cereal
(谷物)
Calories
(卡路里)
Rating
(评价)
Cereal
(谷物)
Calories
(卡路里)
Rating
(评价)
Cinnamon Toast Crunch
120
19.823 57
Oatmeal Raisin Crisp
130
30.450 843
Clusters
110
40.400 21
Post Nat.Raisin Bran
120
37.840 594
Cocoa Puffs
110
22.736 45
Product 19
100
41.503 54
Corn Chex
110
41.445 02
Puffed Rice
50
60.756 112
Corn Flakes
100
45.863 32
Puffed Wheat
50
63.005 645
Corn Pops
110
35.782 79
Quaker Oat Squares
100
49.511 874
Count Chocula
110
22.396 51
Quaker Oatmeal
100
50.828 392
Cracklin’Oat Bran
110
40.448 77
Raisin Bran
120
39.259 197
Cream of Wheat(Quick)
100
64.533 82
Raisin Nut Bran
100
39.703 4
Crispix
110
46.895 64
Raisin Squares
90
55.333 142
Crispy Wheat &Raisins
100
36.176 2
Rice Chex
110
41.998 933
Double Chex
100
44.330 86
Rice Krispies
110
40.560 159
Froot Loops
110
32.207 58
Shredded Wheat
80
68.235 885
Frosted Flakes
110
31.435 97
Shredded Wheat
‘n’Bran
90
74.472 949
Frosted Mini-Wheats
100
58.345 14
Shredded Wheat spoon size
90
72.801 787
Fruit&Dates,
Walnuts&Oats
120
40.917 05
Smacks
110
31.230 054
Fruitful Bran
120
41.015 49
Special K
110
53.131 324
Fruity Pebbles
110
28.025 77
Strawberry Fruit Wheats
90
59.363 993
Golden Crisp
100
35.252 44
Total Corn Flakes
110
38.839 746
Golden Grahams
110
23.804 04
Total Raisin Brans
140
28.592 785
Grape Nuts Flakes
100
52.076 9
Total Whole Grain
100
46.658 844
Grape-Nuts
110
53.371 01
Triples
110
39.1061 74
Great Grains Pecan
120
45.811 72
Trix
110
27.753 301
Honey Graham Ohs
120
21.871 29
Wheat Chex
100
49.787 445
Honey Nut Cheerios
110
31.072 22
Wheaties
100
51.592 193
Honey-comb
110
28.742 41
Wheaties Honey Gold
110
36.187 559
Just Right Crunchy
Nuggets
110
36.523 68
这些数字可以在Multivariate平台中进行确认。大致来说,两个变量的变差的69%实际上是“共同变化”,或一个变量的变化可以由另一个相似变量复制而来的。我们
续表
能用这个事实来实现数据降维,同时限度地使用它们对整体变差的贡献么?由于两个变量包含的信息存在冗余,因此,也许可以将两个变量减少为单个变量,而不会丢失太多信息。PCA的思想是找到两个变量的线性组合,其中包含了大部分信息,即使不是全部信息,这样这个新变量就可以替代两个原始变量。这里的信息指的是数据的变异性:什么可以解释77份谷物中多的变异性呢?这里的总变异性是两个变量的方差之和,在这个例子中总变异性为379.63 197.32 = 576.95,这意味着卡路里占总变异性的66%= 379.63 ÷ 577,然后消费者评价占其余的34%。如果为了降维而舍弃一个变量,那我们至少损失34%的总体变异性。我们能否以一种更加的方式重新分配两个新变量之间的总体变异性吗?如果可以,可能只需要保留一个占总变异性很大一部分的新变量。
图4.11显示了消费者评级与卡路里的散点图。直线Z1是数据点变异性的方向,如果我们决定将数据的维度从两个降低到一个,那么捕获数据中变异性的直线就是Z1这条线。如果我们将数据集中的点进行正交的投影来获取77个值(一维),那么在所有可能的直线中,投影到Z1的值的方差将是的。因此Z1称为主成分,它也是每个点到直线垂直距离平方和小的线。给定Z2轴垂直于Z1轴。在两个变量的情况下,只有一条线会垂直于Z1,它具有第二大的变异性,但其信息与Z1不相关,Z2被称为第二主成分。一般来说,当我们有两个以上的变量时,一旦找到变异的方向Z1,我们就会在Z1所有的正交方向中寻找一个具有次高可变性的方向,也就是Z2。这样做的目的是找到有关这些线的坐标系,并观察它们如何重新分配变异性。
图4.11 使用Graph Builder创建的77份早餐谷物的消费者评价与卡路里的散点图,其中包含两个主成分(方向)
图4.12显示了在这两个变量上运行PCA的JMP输出结果(使用Analyze > Multivariate Methods > Principal Components)。请注意,JMP可以通过相关系数矩阵或协方差矩阵来执行PCA(稍后详细讲解)。对于本例,我们基于协方差矩阵进行了分析(JMP中的默认值是使用相关系数矩阵,但是可以通过平台中的三角形下的个选项来进行更改)。
图4.12 卡路里和消费者评价的主成分分析结果(可以使用三角形选项显示特征值和特征向量)
通过新派生的变量重新分配的方差(在图4.12中的Eigenvalues下展示),我们看到Z1占总变异性的86.3%,Z2占剩余的13.7%。因此,如果我们删除第二个成分,仍然保持了原始数据86.3%的变异性。
特征向量是用来将原始数据投影到两个新方向上的权重。谷物数据的特征向量如图4.12所示。Z1(标记为Prin1)由权重为0.847的卡路里和权重为-0.532的消费者评价构成;对于Z2,它们分别为0.532和0.847。这些权重用于计算每个观测对象的主成分得分,得分是新坐标系中卡路里和消费者评价的投影值(通过减去每个变量的平均值)。图4.13显示了两个维度的主成分得分,列是使用权重(0.847,-0.532)投影到Z1上。第二列是使用权重(0.532,0.847)投影到Z2上。例如,100%麸皮谷物(卡路里值为70,消费者评价为68.4分)的主成分得分是(0.847)(70 – 106.88) (- 0.532)(68.4 – 42.67)= -44.92(分)。
请注意,新变量Z1和Z2的平均值为零,因为我们已经减去了每个变量的平均值(卡路里均值为106.88,评价的均值为42.67 ——该结果可以通过Distribution平台给出)。Z1和Z2的方差分别为498.02和78.93,并且它们的方差之和var(Z1) var(Z2)等于原始变量var(calories) var(rating)的方差之和,因此,个主成分Z1占总方差的
86%。由于它捕获了数据的大部分变异性,所以使用一个变量(主成分)来表示原始数据中的两个变量是比较合理的。接下来,我们将这种思想推广到两个以上变量的情况。
概要图(这是默认输出)下提供主成分分析的图形和数字概要,条形图显示由每个主成分计算的变化(也在特征值表中展示出),得分曲线(图4.12中的顶部中央)有助于解释与主成分相关的数据——靠近在一起的点是相似的。载荷图用于解释变量和它们的“载荷”之间的关系,或将原始变量投影到主成分上。
图4.13 前5个谷物的卡路里和评价进行PCA后,得到的主成分得分结果
主成分
让我们将上述过程规则化,使得它可以更容易地推广到p > 2个变量的情况。记X1,X2,…,Xp为原始p个变量。在PCA中,我们要寻找一组新的变量Z1,Z2,…,Zp,它们是原始变量的加权平均(减去它们的平均值):
Zi = ai, 1(X1-X1) ai, 2(X2-X2) … ai, p(Xp-Xp),i = 1,…,p
新变量Zi两两之间的相关系数为0。然后,通过它们的方差对所得到的Zi进行排序,其中Zi具有方差,Zp具有小方差。JMP计算出权重ai, j,随后将其用于计算主成分得分。
与原始数据相比,主成分的另一个优点是它们是不相关的(相关系数= 0)。当我们使用这些主成分作为自变量来构造回归模型时,不会遇到多重共线性的问题。
让我们回到含有15个变量的早餐谷物数据集,并对13个数值型变量进行PCA。在分析窗口中,单击红色三角形,并选择Components>On Covariances,输出结果如图4.14所示。
请注意,前3个主成分占所有13个原始变量总变差的96%以上,这表明我们可以使用不到原始变量数量25%的变量去捕获数据中大部分的变异。事实上,前两个主成分占总变异的92.9%。然而,这些结果受到变量尺度的影响,下一节将会对这一点进行说明。
注:特征向量表给出前7个主成分的结果。
图4.14 对早餐谷物数据的13个数值型变量进行PCA的输出结果
数据标准化
PCA进一步的用途是理解数据的结构,可以通过检查权重(特征向量)来看到原始变量对不同主成分的贡献情况来实现。显而易见,在我们的例子中,主成分是由谷物的钠含量所主导的:它的权重是的(在这个例子中是正值)。这意味着主成分事实上代表谷物中钠的含量,类似地,第二主成分看起来是钾的含量。由于这两个变量都是以毫克为单位测量的,而其他营养物以克计量,因此这样的数据尺度显然导致了本例中的这一结果。钾和钠的变化(方差)比其他变量的变化(方差)大得多,因此总方差主要由这两部分的方差决定。解决方案是在执行PCA之前对数据进行归一化。归一化(或标准化)意味着用一个具有单位方差的标准化变量替换每个原始变量。这可以通过将每个变量除以其标准差来实现。这种归一化(标准化)的效果是使所有变量在变异性方面具有相同的重要性。
我们应该什么时候对数据进行标准化呢?这取决于数据的性质。当测量单位(例如美元)对于变量是普遍的,并且当变量的尺度反映它们的重要性时(航空涡轮发动机燃料销量,民用燃料油销量),好不要对数据进行标准化(即不需要重新调整数据以使它们具有单位方差)。如果变量单位的差异很大,将不清楚该如何比较不同变量的变异性(例如,有些变量以美元为单位,有些是以百万美元为单位)。或者变量的单位相同,
但数据的尺度无法反映出重要性时(如每股收益、总收入),那么一般建议对变量进行标准化。这样,测量单位的变化就不会改变主成分的权重。在少数情况下,我们可以赋予变量相对权重,并在主成分分析之前,将标准化变量乘以这些权重。
到目前为止,我们通过使用协方差矩阵来计算主成分。另一种方法是使用相关系数矩阵来执行PCA,而不是协方差矩阵。大多数软件程序允许用户在两者之间进行选择。事实上,JMP中的默认选项是使用相关系数矩阵,使用相关系数矩阵意味着你使用的是标准化后的数据。
回到早餐谷物数据,我们对相关系数矩阵进行PCA来达到对13个变量进行标准化的目的,从而解决变量尺度不同的问题。输出结果如图4.15所示,发现需要7个主成分才能解释原始数据90%的总变异性,前2个主成分仅占总变异性的52%,因此将变量的数目减少到2个意味着将会损失大量信息。通过检查权重,我们看到主成分主要测量的是两个量:(1)纤维、钾、蛋白质和消费者评价(较大的正值权重);(2)卡路里和分量(较大的负值权重)。主成分1得分高表示谷物富含大量纤维、蛋白质和钾,同时卡路里低且每碗的分量少。毫无疑问,这种类型的谷物会有较高的消费者评价。第二主成分受每份重量的影响,而第三主成分受碳水化合物含量影响。我们可以用类似的方式标注后续的主成分,以了解数据的结构。
注:特征向量表给出前7个主成分的结果。
图4.15 使用早餐谷物数据集中所有13个数值型变量执行PCA的输出结果,使用相关系数矩阵进行标准化过程
在JMP中进行PCA时,默认显示的得分图给出了不同早餐谷物的前两个主成分得分(见图4.16)。其他主成分的得分图可以通过红色的三角形来实现。如果数据集不太大,可以对这些观测对象进行标注,我们能够看到,当从右(麸皮谷物)向左移动时,谷物卡路里较高且蛋白质和纤维等含量较低时,就不太“健康”了。此外,从底部到顶部,我们会得到份量更重的谷物(从爆米花到葡萄干麸皮)。如果可以发现有趣的聚类现象,这些图就特别有用。例如,在这里我们可以看到儿童谷物位于图像的左中部分且聚集在一起。
提示:要在JMP中标注观测对象,请右键单击数据表中的变量,然后选择Label / Unlabel。当鼠标移动到图像中的这些点上时,将出现标签。要永久标注这些点,选择数据表中的行,然后选择Label/Unlabel(或直接在图中选择点,右键单击并选择Row Label)。
图4.16 基于相关系数矩阵的PAC的第二主成分得分与主成分得分图
使用主成分进行分类和预测
当数据降维的目标是将一组较小的变量作为预测变量时,我们可以进行如下操作:将数据划分为训练集和验证集(隐藏并排除验证数据)。基于训练数据对预测变量进行PCA。通过PCA的输出结果来决定要保留的主成分的数量,并将主成分保存到数据表中(红色三角>SavePrincipalComponents)。这将在数据表中创建新的公式列,每个主成分的权重通过训练数据计算得到。对于使用这些公式的验证集,自动计算每个观察值的主
成分得分。使用验证数据构建模型时,预测变量是主成分列而不是原始变量。
在监督任务中,将主成分分析得到的原始变量的子集作为预测变量,其缺点是,我们可能会丢失非线性的预测信息(例如,预测变量对结果的二次效应或预测变量之间的相互作用)。这是因为PCA产生线性变换,从而仅能捕获原始变量之间的线性关系。
4.9 利用回归模型降维
在本章中讨论了减少数据列数的方法,包括统计汇总法、图像法和主成分分析法。所有这些都是探索性的方法,其中一些方法完全忽略输出变量(例如PCA),而在其他方法中,我们试图将预测变量和输出变量之间的关系结合起来(例如根据y的行为来合并相似的类)。另一种减少预测变量的方法是,通过拟合回归模型直接考虑预测或分类问题。对于预测问题使用线性回归模型(参见第6章),对于分类问题使用logistic回归模型(参见第10章)。在这两种情况下,我们都可以使用子集选择的过程,通过某种算法在更大的集合中选择变量子集(详见相关章节)。
拟合的回归模型可以用来进一步合并相似的类别:系数不显著(拥有高P值)的类别可以与参照类别合并,与参照类别不同的是,它们似乎对输出变量没有显著影响。此外,拥有相似系数值(和相同符号)的类别之间通常会合并在一起,因为它们对输出变量的影响是相似的。参考第10章关于预测航班延误的例子,来阐述回归模型是如何降维的。
4.10 利用分类和回归树降维
另一种减少数据列数和组合分类变量类别的方法是分类和回归树(见第9章)。分类树用于分类问题,回归树用于预测问题。在这两种情况下,算法能够对预测/分类输出变量的预测变量进行二元分割(例如年龄高于或低于30岁)。尽管详细讨论将放到第9章,但是我们注意到,生成的树图可以用来确定重要的预测变量(通过每列贡献)。可以剔除没有出现在回归树中的预测变量(数值型或分类型)。同样地,可以将没有出现在回归树中的类别合并。
问题
1. 谷物早餐 使用第4.8节(cereals.jmp)中早餐谷物的数据,根据以下问题来探索
和概括数据。
a. 哪些变量是连续/数值型的?哪些是有序的?哪些是名义变量?
b. 计算以下统计量:每个连续变量的平均值、中位数、小值、值和标准偏差,每个分类变量的计数,可以使用Cols> Columns Viewer完成。
i. 是否存在明显的值?
ii. 如果有的话,哪些变量是缺失值?
c. 使用Analyze>Distibution绘制每个连续变量的直方图,并生成汇总统计信息。根据直方图和汇总统计信息,回答以下问题:
i. 哪些变量具有的方差?
ii. 哪些变量是有偏的?
iii. 是否存在值?
d. 使用 Graph Builder绘制一个并列箱线图,比较热谷物和冷谷物的卡路里,这个图给了我们哪些信息?
e. 使用Graph Builder绘制消费者评价的并列箱线图,作为货架高度(shelf变量)的函数。如果我们从货架高度来预测消费者评价,是否需要保持所有三个类别的货架高度?
f. 计算连续变量相关系数表并生成矩阵散点图(使用Analyze > Multivariate Methods >Multivariate)。
i. 哪对变量拥有强的相关关系?
ii. 我们如何利用这些相关关系来减少变量的数量?
iii. 如果我们首先对数据进行标准化,相关性会发生哪些变化?
g. 考虑图4.14中特征向量左边的列,简要说明该列所代表的内容。
2. 葡萄酒的化学特性。图4.17展示了标准化数据(相关系数)和非标准化数据(协方差)的PCA输出。每个变量代表葡萄酒的化学特征,每个记录代表不同的葡萄酒。
a. 数据在文件wine.jmp中。考虑标记Eigenvalue(特征值)列的方差,该方差用于基于协方差矩阵的主成分分析。为什么主成分的方差比其他主成分大得多?
图4.17 标准化和非标准化的葡萄酒数据主成分分析结果
b. 评价使用相关系数矩阵与协方差矩阵所产生的效果,如果(在这个例子中)用相关系数代替协方差矩阵来执行PCA,是否会产生显著的变化?
3. 大学排名。美国院校排名(colleges.jmp)的数据集包含了1 302所美国提供本科项目的学院和大学的信息。对于每所大学,有17个测量,包括连续变量(如学费和毕业率)和分类变量(例如按州的位置以及它是私立学校还是公立学校)。
a. 确保变量在JMP(名义、有序或连续)中正确编码,然后使用Columns Viewer来汇总数据。是否有缺失值?有多少名义变量列?
b. 对数据进行主成分分析并对结果进行评价。默认情况下,JMP将使用相关系数矩阵而不是协方差矩阵进行分析,这是否有必要?在这种情况下数据是否需要标准化?讨论上述解决方案的关键因素。
4. 丰田花冠汽车的销售数据。文件ToyotaCorolla.jmp包含在2004年夏天在荷兰销售二手车(丰田Corolla)的数据。数据表有1 436条记录,包含Price, Age, Kilometers, HP以及一些分类和虚拟编码变量。终目的是根据数据来预测二手丰田Corolla的价格。虽然,在JMP中对分类变量进行特殊编码通常是不需要的,但在本练习中我们将探讨如何创建虚拟变量(以及为什么建立虚拟变量)。
a. 标识分类变量;
b. 哪些变量已经被编码为虚拟变量?
c. 考虑变量Fuel Type,需要多少二元虚拟变量来捕获这个变量的信息?
d. 使用Cols> Utilities下的Make Indicator Variables选项将Fuel Type转换为虚拟变量。然后将这些虚拟变量的Modeling Types 更改为“Continuous”,阐述这些派生的二元虚拟变量中不同值的意义。
第三部分
性 能 评 估
5
评估预测效果
在本章中,我们将讨论如何评估数据挖掘方法的预测性能,这在任何分析系统中都是很关键的一步。并且本章会指出训练集的过度拟合问题的危害,以及使用在训练过程中未使用过的数据来测试模型性能的必要性,同时会讨论常用的模型性能评价指标。对于预测来说,指标包括平均误差(AAE)和均方误差(RMSE,基于验证数据)。而对于分类任务,评价指标通过一个混淆矩阵计算得到,包括准确度、特效度、灵敏度以及考虑到错分成本的指标。我们还给出ROC曲线来展示临界值的选择与算法性能之间的关系,该曲线是一种很主流的评价方法,用于评价临界值不同的算法的性能。当目标是对感兴趣或重要的案例进行准确分类,而不是对整个样本进行准确分类时,这种情况即所谓的排序(例如,在所有客户中,10%的客户有可能对给出的报价作出回应,或者在全部的索赔中有5%的索赔有可能属于欺诈),可以使用提升曲线来评估其性能。我们还讨论了对稀有类过抽样的必要性以及如何调整过抽样指标并提高其性能。后,我们提到将基于验证数据的度量与基于训练数据的度量进行比较的有用性,以便检测分析过程是否出现过拟合。训练集中的结果与验证集中的结果出现一些差异属于正常现象,但的差异表示可能存在过拟合。
5.1 引言
在监督学习中,我们感兴趣的是通过新记录自变量数据,来对结果变量进行预测,其结果变量主要有以下几种类型:
预测数值——当结果变量为定量变量(如房价);
预测类别——当结果变量为定性变量(如买和不买);
倾向——当结果变量为定性变量时,属于该类别的可能性是多少(如默认的倾向)。
预测方法用于产生数值型预测结果,而分类方法(“分类器”)用于产生倾向,并对倾向使用临界值,进而生成预测记录的所属类别。
对于分类器有两个不同的用途,一定要注意它们之间的微妙区别。个用途是分类,目的是预测新记录所属的类别;另一个用途是排序,它用于发现一组新记录可能属于哪些感兴趣的类别。
在本章中,我们将研究预测模型性能和整体有用性的评价方法。我们将了解到用于数值预测的模型(第5.2节)、用于类别预测的分类器(第5.3节)和用于排序的分类器(第5.4节)等模型预测性能的评价方法。在第5.5节中,我们将介绍在过采样场景下如何评估模型性能。
模型性能测量方式源于广泛的分类器和预测方法的选择。我们不仅有几种不同的方法,即使在单一方法中,也有许多选项可以导致完全不同的结果。一个简单的例子是在特定预测算法中使用的预测变量的选择。在我们详细研究各种算法以及如何设置这些选项之前,我们需要知道如何衡量模型的成功与否。
5.2 评价预测性能
首先要强调预测准确度不等同于拟合优度。典型的性能评价目标是找出一个在训练集数据中拟合良好的模型。在数据挖掘中,对于给定的新记录的数据,我们感兴趣的是具有高预测准确度的模型。诸如R2和估计的标准误差之类的度量是经典回归模型中常用的指标,在这种情况下,是通过残差来分析、衡量模型对数据的拟合程度。然而,这些措施并不能很好地告诉我们模型对新记录的预测能力。
为了评估预测性能,会采用几项措施。在所有情况下,这些措施都是针对验证集的,它比对训练集的预测准确性进行评价更为客观。这是因为验证集中的记录与未来将要预测的记录更相似,并且没有用它们来进行预测变量的选择或者模型参数的估计。通过使用训练集数据所训练的模型,将其应用到验证集中,来评价它在验证集中预测的准确度以及预测误差。
基准:平均值
预测的基准通常是使用结果变量的平均值(因而忽视所有预测结果的信息)。换句
数据挖掘:商业数据分析技术与实践
话说,对于新记录的预测,仅仅是训练集结果的平均值(y)。一个好的预测模型应该在预测准确度上胜过该基准。
预测准确度的测度
预测误差或者残差来自于实际的y和预测的y之间的差异:ei=yi-yi。下面是一些在计算验证集中预测准确度的测度方法。
●MAE,MAD或者AAE(平均误差/偏差)。这些指标表示了平均误差的大小。 ●平均误差。除了它保留了误差的符号外,该指标和MAE是相似的,所以相同大小的正负偏差会相互抵消。因此该指标也是一种对响应预测结果是高估还是低估的指示。 ●MAPE(平均误差百分比)。这个指标表示了预测值同真实值偏离程度的百分比。 ●RMSE(均方根误差)或者RASE(均方根误差)。该指标除了是通过验证集而不是训练集计算出来的外,它同线性回归的预测误差是相似的。 ●SSE(误差平方和)=i=1e2in。
这些指标可以用于模型的比较以及其预测准确度的评价。当然,JMP Pro提供了下面这些基于验证集所得到的预测准确度的测度指标(训练集中也可以使用其他的方法,当然也可以输出R2):
●RASE(在一些平台中是RMSE) ●AAE(用于模型比较平台)
请注意所有的模型效果度量方式都会受异常值影响。为了检查异常值的影响,我们可以计算基于中位数的测度(与基于均值的测度进行比较)或者画出残差的直方图或箱线图。画出预测误差的分布事实上是很有用的,与单一的指标相比它可以突出更多的信息。为了阐释预测准确度指标的使用以及预测误差的分布图,如图5.1和图5.2中误差指标和图表所示。这个例子是使用丰田汽车价格的预测模型的拟合程度,训练集包括了600辆车的数据,验证集包括了400辆车的数据。图5.1的后一行给出了使用验证集计算出的预测误差(残差),模型的残差被储存在数据表中。验证集的残差直方图、箱线图以及与验证集中所得残差相关的统计量(图5.2的后一行)表示了存在少量异常值,超过半数的残差在[-900,800]之间。平均水平下,该模型过度预测(在验证集上残差的
平均值为-80.7)。
注:行为训练集,后一行为验证集。
图5.1 从丰田汽车价格模型中得出的预测误差指标
图5.2 训练集和验证集上丰田汽车价格的预测误差的直方图、箱线图和统计量汇总
比较模型在训练集和验证集上的效果
基于训练集的预测误差(残差)表示了模型的拟合程度,基于验证集的误差可以测度模型预测新记录的能力。我们希望训练误差与测试误差接近(因为模型是用训练集进行拟合的),模型越复杂,越有可能在所训练的数据中出现过拟合现象(表明了训练集误差和验证集误差存在较大的差异)。在一个的过拟合例子里,训练误差为0(与模型完全匹配),验证集误差是非0且不可以忽视的。因此,问题的关键是比较训练集和验证集的误差图和度量指标(RMSE、平均误差等)。图5.1展示了这种比较:训练集的RASE低于验证集,而R方比验证集要高很多。
5.3 评判分类效果
一个评判分类效果的标准是错分的比例。错分是指本来应该属于某类,但是模型将其分为另外一类。不存在分类误差的分类是完美的,但是现实中这种分类是不太可能出现的,由于“噪音”的影响使得分类不那么准确。怎么使错分的比例小呢?
数据挖掘:商业数据分析技术与实践
基准:朴素的准则
将一个记录划分到m类中某一类的一个简单规则是将其归为多数类,也就是忽略我们可能拥有的所有预测变量信息(x1,x2,…,xp)。换句话说,“将其归为常见的一类”。朴素规则主要用于评估更复杂分类器性能的基准。显然,使用外部预测变量信息(在类成员分配之上)的分类器应该优于朴素规则。
类的分离
如果通过预测变量信息可以很好地将这些类别分离,即使是一个小的数据集也可以找到一个好的分类器,而如果这些类别无法根据预测变量分离,即使是非常大的数据集也不会有帮助。图5.3说明了两类情况。上半部分展示了一个小数据集(n= 24),其包含的两个预测变量(收入和占地面积)用以区分所有者与非所有者(我们感谢Dean Wichern提供本案例,详见Johnson和Wichern,2002)。在这种情况下,预测变量信息似乎是有用的,因为它划分出两个类(所有者/非所有者)。下半部分展示了一个更大的数据集(n= 5000),其中两个预测因子(收入和平均信用卡支出)在大多数较高范围(贷款承受人/非接受者)中并不能清晰地划分出两个类别。
图5.3 使用2个预测变量的两个类别之间的高(上)低(下)区分水平
分类矩阵
事实上,多数模型准确度测算来自于分类矩阵,也称混淆矩阵。分类矩阵汇总了由特定数据集产生的正确分类和错误分类的数量。分类矩阵的行和列分别对应于真实类和预测类。图5.4显示了对3 000个观测使用某个分类器而得到的两类(0/1)分类(混淆)矩阵示例。两个对角线单元格(左上角,右下角)给出正确分类的数量,其预测类与实际观察类一致。非对角线元素给出错误分类数量。右上角的单元格给出被分类为1的“0类”成员的数量(在这个例子中,有25个这样的错误分类)。类似地,左下方的单元格给出错误分类为0的“1类”成员数量(此类观测记录有85个)。
图5.4 基于3 000条记录、2个类别的样本数据的分类矩阵
表5.1 分类矩阵:每个单元格的含义
实际类
预测类
C0
C1
C0
n0,0是C0正确分类数量
n0,1是将C0误分为C1数量
C1
n1,0是C1将误分为C0数量
n1,1是C1正确分类数量
分类矩阵给出了真实分类和错误分类比例的估计。当然,这些只是估计,它们可能是错误的,但是如果我们有足够大的数据集,并且2个类都不是稀少的,那么这种估计将是可靠的。有时,我们可以使用像美国人口普查数据这样的公开数据来估算这些比例。但是,在大多数商业环境中,我们都不会知道这些。
使用验证数据
为了获得对分类误差的可靠估计,我们使用基于验证集数据计算得到的分类矩阵。换句话说,我们首先在随机选择的情况下将数据划分为训练集和验证集,然后使用训练集构建分类器,然后将该分类器应用于验证集中。将会预测验证集中观测变量所属的类别(参见第2章图2.4)。然后,我们在分类矩阵中汇总这些分类结果。虽然我们也可以通过分类矩阵来汇总训练数据所产生的分类结果,由于可能会存在过拟合的情况,所以如果想要得到新数据误判率的真实估计,使用训练集产生的分类矩阵可能并不奏效。
数据挖掘:商业数据分析技术与实践
除了检验验证数据得到的分类矩阵以评估新数据的分类性能之外,我们还会比较训练数据得到的分类矩阵与验证数据得到的分类矩阵,以便检测是否存在过拟合现象:尽管我们预期验证数据的结果可能稍差一些,但训练集和验证集的性能存在较大的差异,这可能意味着存在过拟合情况。
预测精度评估
不同的准确度测度指标均来自于分类矩阵。参考一个二分类的例子,类别是C0和C1(如不买和买)。在表5.1所示的分类矩阵中,ni, j代表将Ci的成员划分成Cj的成员。当然,如果i≠j,则可以计算错误分类的数量。全部观测变量的数量为:n=n0, 0 n0, 1 n1, 0 n1, 1。
一个主要的准确度评价指标是估计误判率,也可以叫作总错误率。
err=
n表示验证集中样本的数量。在图5.4中,我们得到。
我们可以通过查看正确的分类比例来测量准确度以替代错分率。分类器的总准确度的估计为:
在上述例子中,我们可以得到
分类临界值
大多数分类算法的步是估计一个对象分属各个类别的概率。这些概率也称为倾向,通常用于预测成员所属类别(分类)的一个中间步骤,或者对其所属类别的概率进行排序。让我们看一下他们在本节中的次使用。第5.4节讨论了第二次使用。
如果总体分类准确度(涉及所有类)是有意义的,则可以将具有概率的类分配给待分类记录。在许多情况下,某个单独的类是特别感兴趣的,因此我们将重点关注该类,并将记录属于该类的倾向与分析者设置的阈值进行比较。这种方法可以用于两个或两个以上的分类,虽然在这种情况下合并两类是有意义的,以便终得到两个类:感兴趣的类和所有其他类。如果属于兴趣类的概率高于临界值,则将该记录设定为该类别。
临界值
在某些情况下,设置两个临界值是比较有用的,并允许分类器使用“cannot say”(不好说)选项。在二分类情况下,这意味着对于所给定的一个对象,我们可以得出三种预测结果中的一种:该对象属于C0,或者属于C1,或者我们不能做出预测,因为没有足够的信息来确定其属于C0还是C1。分类器不能分类的情况可以通过使用专家判断或通过收集可能更困难或更昂贵的附加信息来丰富预测变量集,以进行更细致的考察。一个例子是对在法律案件中找到的文件分类(文件分类是为了在法律程序中集中于相互披露文件)。在传统的人力审查制度下,需要合格的法律人员去审查成千上万的文件以确定原告、被告与案件的相关性。使用分类器和分类结果,文档可以分为“明确相关的”、“显然不相关的”,以及“需要人工审查的” 文档。这大大降低了这个过程的成本。
二分类的分类器默认临界值为0.5。因此,如果记录为“1类”成员的概率大于0.5,该记录被归类为1。任何估计概率小于0.5的记录将被分类为“0类”。当然,可以使用高于或低于0.5的临界值。临界值大于0.5终将较少的对象划分为“1类”,而临界值小于0.5终将更多的对象划分为“1类”。
在JPM中为分类矩阵更改临界值
要了解准确率或错误分类率如何随着临界值而变化,我们可以更改默认的临界值(0.50),如下所示:
1.拟合模型;
2.将概率值保存在数据表中,这也会保存每类的预测概率以及临界值为0.5时有可能的分类;
3.增加一列,根据所需的临界值,用公式编辑器来创建一个IF条件;(参见图5.6)
4.使用不同的临界值重复上面的步骤;
5.使用Analyze>Tabulate来创建一个基于不同的临界值的混淆矩阵;(参见图5.7)
另一种方法是使用JMP中更换临界值的混淆矩阵的插件,创建一系列临界值的混淆阵,这个插件可以在jmp.com上免费获得。
数据挖掘:商业数据分析技术与实践
如图5.5中的数据所示,基于某一模型所得到的24个对象的真实类别(基于割草机示例)以及其倾向性(Prob [owner])和分类(变量Most Likely Ownership)。为了获得倾向和分类,拟合一个模型,概率公式被保存到数据表中(注意,一系列被隐藏,并且为了说明实际类,列已经从其原始名称“Ownership”改变)。
图5.5 骑式割草机示例:JMP构建分类器给出的24条记录的实际类别以及它们属于Owners的概率
使用0.5作为临界值的Most Likely Ownership的错误分类率为3/24。这在图5.7左边的一个混乱矩阵中进行汇总。如果我们采用0.25的临界值,我们将会把更多非所有者记录分类为所有者,并且错误分类率高达4/24。如果我们采用0.75的临界值,则更多的所有者被归类为非所有者,错误分类率再次上升到4/24,如图5.5后一列所示。所有这些都可以在图5.7中的混淆矩阵中看到(使用Tabulate制作)。
如果临界值会增加错误分类率,我们为什么要使用不同于0.5的临界值呢?答案是:将1正确分类可能比将0正确分类更重要,我们将容忍对后者的错误分类。反之亦然:错误分类的成本可能是不对称的。在这种情况下,我们可以调整临界值,将更多的记录分类为高价值类,也就是接受错误分类成本较低的错误分类。所以在选择好数据挖掘模型后,我们需要考虑错分成本问题而不是去改变这个模型。同样也可以在构建模型之前将成本问题考虑进去。下面将更详细地讨论这些主题。
图5.6 使用条件和比较函数改变分类的临界值
图5.7 骑式割草机示例:当临界值是0.5、0.25、0.75时的分类阵
重要性非平等分类的模型效果
假设将成员正确预测为类1(C1)比预测为类0(C0)更加重要。一个例子是预测企业的财务状况(破产/有偿付能力)。能够正确预测一个企业将要破产远比正确预测一个企业仍有偿付能力要重要得多。分类器基本上用于破产检测预警系统中。在这种情况下,使用总体准确度来评估分类器则不是一个很好的选择。假设重要的类是C1,下面一对衡量准确度的指标是为常见的:
分类的灵敏度是指正确地划分重要类别成员的能力,通过n1, 1 /(n1, 0 n1, 1)可以得出正确分类为C1的概率。
分类的特异度是指可以正确的排除C0成员的能力,通过n0, 0 /(n0, 0 n0, 1)可以得出正确分类为C0的概率。
画出这些测度指标在不同临界值下的对比曲线是非常有用的,这样做目的是找出一个可以均衡这些测度指标的临界值。
ROC曲线
ROC曲线是一种较为流行的方法,可以画出分类的灵敏度和特异度。随着临界值从
数据挖掘:商业数据分析技术与实践
0到1,ROC曲线画出了多组{灵敏度,1-特异度}。更好的性能通过靠近左上角的曲线反映出来。与ROC曲线相切的直线标记出一个好的临界值(假定误分类成本相同)。图5.8展示了割草机这个例子的ROC曲线。ROC曲线可以通过JMP中的红色三角形获得。一个通用的指标是“曲线下的区域(AUC)”,其范围从1(可以完美识别各类别)到0.5(分类效果并没有优于朴素规则)。
图5.8 割草机例子的ROC曲线
误报率和漏报率
灵敏度和特异度从分类机构的角度来衡量分类器的性能(例如,公司对消费者进行分类、医院对病人进行分类),回答了“如何更好地划分出重要类别的成员?”这一问题,还可以从被预测实体的角度出发来评价精确度(如消费者或者病人),比如“什么是属于重要成员的机会?”而且这个是与数据挖掘应用不太相关的。误报率和漏报率有时会错误地被用于描述灵敏度和特异度,这两个指标是从个体的角度出发来评价分类性能,如果C1是重要的一类,被定义为:
误报率等于C1的错误预测百分比:n0, 1/(n0, 1 n1, 1)。请注意这个指标是基于C1所有预测结果得到的比率,也就是它只用于被划分为C1的记录中。
漏报率等于C0的错误预测百分比:n1, 0/(n1, 0 n0, 0)。请注意这个指标是基于C0所有预测结果得到的比率,也就是它只被用在被分类为C0的记录中。
不对称的误分类成本
我们可以使用错误分类率作为评判分类效果的准则。然而在有些情况下,这个测度并不是很合适。有时,将一类错误分成某类的错误比分成其他类的错误要严重。举个例子,当一个家庭属于会对促销报价作出回应的类别,但将其误判为不会对促销报价做出
回应的一类,那么这将会比与之相反的错误分类造成的成本更大(放弃销售的机会成本)。在前一种错分情况中,你可能会错过一次价值为数百美元的促销。而后一种错分的情况,你花费的成本可能只是给一些不会购买的人发送邮件。在这个例子中,使用错误分类率作为判断标准会误导人们的决策。
请注意,我们假设正确分类的成本(或收益)为零。乍看之下,这可能看起来不完整。毕竟,对顾客进行正确的分类所得的收益(负成本)似乎会很可观。在其他情况下(例如,使用新数据对我们的分类算法进行评分以实现我们的决策),考虑每个可能的分类(或误分类)实际净收益带来的影响是适当的。然而,在这里,我们正在尝试根据分类误差来评估分类器的价值,因此如果我们能够捕获错误分类单元中的所有成本/收益信息,那么它将大大简化我们的任务。因此,我们不记录对受访家庭进行正确分类的好处,而是记录未能将其归类为受访家庭的成本。这是相同的事情,我们的目标是成本的小化,无论成本是实际成本还是漏失利益的成本(机会成本)。
考虑如下情况:将促销信息邮寄给随机抽样得到的客户,以构建良好的分类器。假设有1%的家庭接受了该促销。对于这些数据,如果分类器将每个家庭简单地归类为无应答者,则其误报率仅为1%,但该分类器在实践中将是无用的。一个分类器将2%的购买家庭误分类为非购买家庭,并把20%的非购买家庭分类为购买家庭,将具有更高的错误率,但如果销售利润远高于发送促销信息的成本,那这种结果会稍好一些。在这些情况下,如果我们估计两种类型的错误分类成本,我们可以使用分类矩阵来计算验证数据中每种情况下的错误分类带来的预期成本。这使我们能够使用整体预期成本(或利润)来比较不同的分类器。
假设我们正在考虑向1 000个以上的人例行的发送促销信息,其中1%的人作出回应(类1)。将每个人都分类为0,错误率只有1%。使用数据挖掘,假设我们可以生成这样的分类:
预测类别0
预测类别1
实际类别0
970
20
实际类别1
2
8
这个分类器的错误率是,比朴素规则进行分类的错误比率高。
现在假设类1的利润为10美元,发送促销信息的成本为1美元。将每个人分类为0仍然具有仅1%的错误分类率,但产生$ 0的利润。使用例行的数据挖掘,尽管错误分类率较高,但获利为60美元。
评论
还没有评论。