正版图书 真实库存欢迎选购 套装图书先联系再下单 套装图书请先咨询客服再下单
¥ 16.11 1.8折 ¥ 89 九品
仅1件
作者宋云生
出版社电子工业出版社
ISBN9787121338618
出版时间2018-07
装帧平装
开本16开
定价89元
货号1157761763845455878
上书时间2024-11-28
前言
什么是规范化的数据挖掘流程
人总是被自己日常从事的工作所蒙蔽双眼,看不到事态发展的整体面貌,为了手里的工作而工作,这就是所谓的迷失吧。一个数据挖掘项目不仅仅是数据挖掘工程师手中的一部分工作(虽然它是工作的核心),作为一个力求向上的人,要跳出来看看项目的全貌。只有对项目全程有了足够的了解,才能更加有效地使用数据挖掘、机器学习、数据分析的工具。
数据挖掘项目一般可以分为问题边界、清洗整理、数据探索、算法评估、结果提升、结果报告、系统集成和系统测试8个主要的模块。一般而言,可以尽量将这些模块合并,但无论怎么合并,它们在项目中都是不可或缺的(当然,有些项目并没有其中某些模块的需求,比如市场研究项目,它们可能就不需要系统集成)。从右图中可以看到数据清洗、数据探索、算法评估占据了项目的大部分时间,这也说明它们是项目的核心内容,缺了这3项,就不能再称为是数据挖掘项目了。
数据挖掘项目流程如下图所示。
问题边界
问题边界一般是项目的开头部分,可以分为4点。首先要和业务部门细致沟通,从业务背景中提炼出对业务问题的描述,限定项目要解决的问题,便于组织力量集中对这些问题设计解决方案。然后根据解决构想将业务问题转换为数据语言,限定将要使用的数据界限,搞清楚要牵涉哪些数据。之后为了吸引业务部门必须整理出业务效用,告诉业务部门如果解决这些问题能够得到哪些改善,完成业务部门哪些具体目标。最后要将以上问题整理成一个可行的解决方案。很多人忽略了这个阶段,其后果就是业务部门觉得挖掘出来的结果不是他们想要的,或者节外生枝补充各种相关的或不相关的业务问题,最终扭曲了项目本身,使工作反复无常。所以,在项目实施之前,非常仔细地沟通并制定一个完善的问题边界非常重要。
清洗整理
清洗整理是数据挖掘工程师非常熟悉的工作,但是,很少有人认识到这是项目中花费时间最多的部分,很多人会以为算法评估部分才会花费最多的时间。其实不然,如果数据清洗进行得不顺利,则将直接影响后面的工作和模型的效果。首先要设计畅通、高效的数据抽取程序,将数据从各种数据平台抽取出来供数据挖掘工具使用,然后进行数据清洗,将数据转化为数据挖掘工具便于处理的对象类型(在R里指list、data.frame、arrary等),再进行质量清洗,包括处理缺失值、异常值、其他污点(在文本挖掘中多如牛毛)等。之后要对数据整形,包括一些统计变化,例如中心化、标准化、降维等,更重要的是数据形状的变化。
还有一项就是数据抽样,面对大数据,在数据处理阶段就要进行抽样,不能因为要清洗一个点就清洗全量的数据,那样会花费大量的时间。不如抽取小样本进行测试,等进行完数据清洗程序后,再进行全量数据的整体清理,这样反而更加省时省事,这里的样本量需要尽量保证抽到足够多的问题数据,同时要让程序运行起来非常轻松、高效。
数据探索
数据探索要完成两个目标:变量转换和变量筛选。其中变量转换既包括变量的重新计算变形,也包括概念变量的构建,比如,在客户流失预警项目中要定义什么样的客户是流失客户,就会产生出一个新的变量。如果这个变量的定义不能用业务进行合理解释,那么下面的工作就是“瞎子点灯白费油”了。有些变量不仅不会对模型产生正向的影响,而且除了影响速度,还会降低模型的效果。显然进行变量筛选就非常重要了。谷歌预测流感模型筛选变量足以证明数据探索多么重要,而且在大数据环境下,数据探索已不再是一件轻而易举就能完成的事情了。
算法评估
算法评估是数据挖掘项目的灵魂。算法评估首先要求我们充分了解算法或模型的参数意义,然后需要预留测试数据集。模型评估不是仅仅比较模型结果的准确性是否存在差异(别忘了统计学教导我们比较差异时要判断差异的显著水平),所以,模型比较是对不同模型准确性均值的比较。算法筛选完成后,工作就告一段落了,这时要和业务部门一起对结果进行业务解释,不能进行业务解释的数据挖掘结果就是为了数据挖掘而数据挖掘,这显然就是迷失在了项目中,遗忘了项目要解决的问题边界。最后要对结果进行完整的评估报告。评估报告是必需的,因为除了将它给领导看,更重要的是它能帮助你总结发现这个过程中可以改善的节点。
结果提升
首先要判断是否需要调整算法或模型,包括更换算法或调整参数。如果模型调整没有必要,那么就要考虑使用模型融合提高模型效率。模型融合的方法包括装袋(Bagging)和提升(Boosting)等,有些方式可能用业务解释起来比较困难,这也是数据挖掘工程师要考虑的问题之一,显然,有些问题选择可解释模型比较好。在项目中对一些极端情况最好另做处理。
结果报告
“丑媳妇也要见公婆,”分析结果报告最终要给业务部门的同事学习,教他们如何使用数据挖掘的结果进行业务分析和部署,其中主要成果要突出,吸引他们的眼球,一定要联系业务具体的困境或具体的业务情景,即所谓的对症下药。规律和结果必须通过易读的方式传达给受众,充满技巧的数据可视化是不二之选,将美妙的可视化图表嵌入具体的应用情景中进行宣讲,往往能达到事半功倍的效果,因此,在此处无论多么努力都不为过。SWOT分析是业务部门最喜欢的分析方式,我们当然不能放过,以对方熟悉的方式表达自己的诉求,是交流的法宝。
模块固化这一步工作的快慢取决于之前的工作,如果之前已经考虑到后面要进行模块固化,那么就会将代码写得比较规范、注释良好,这种情况下就很容易将数据清洗、数据整形、变量转换、模型构建、结果输出等模块的内容固定下来,成为一个数据有进口及有出口的脚本文件。
系统集成
将固化下来的模块按照一定的秩序集成在一起,就成为一个分析的脚本体系。在这个体系中,有输入就有产出,中间不需要人工干预,是一个有序的自动化脚本体系。这一步考验数据挖掘工程师对每一步任务的理解。良好的模块集成可以提升整个系统的速度,减少后期维护的时间和次数。
模块集成后要与其他系统集成在一起,首先要和数据平台(数据库、Hive、Hadoop)对接,为分析模块提供数据来源和存储分析结果,同时要和前台展示对接,将结果可视化,让结果真正接触受众,即所谓的为决策者提供支持。
系统测试
这么一个“五脏俱全”的系统需要维护在所难免,总有一些极端情况会导致数据分析模块宕机,所以,代码一定要写得尽量规范,注释要尽量清晰,否则在维护时会有一种再造系统的感觉。关于规范请参看Google's R Style Guide。
序言
提纲挈领式心诀:一名数据挖掘工程师的成长之路
我的学习之路
不知不觉毕业两年多了,有一些大音如霜工作室的读者总想了解一下我是怎么学习数据挖掘、数据分析的,下面就综合大家常见的问题分享一下自己的经历、经验。
我不是学数学的,也不是学计算机的,研究生的专业是植物学,而且方向是植物分类,可以说很难和数据挖掘、市场研究等领域扯上关系。唯一能扯上关系的也就是我的舍友是做生物信息学研究的。
说一句丢人的话,在读本科时上的SPSS课我都不知道在讲什么。那时没考过计算机等级考试,原因是我每分钟打汉字的速度都不过关,讲这么多,只是为了告诉读者,我的基础并不扎实。
需要说明的是,我的英语还不错,在大一和大二分别通过了英语四、六级考试(而其他科目则学得比较一般,因为我每学期只有一两个主要学习目标),在大四我读了很多英文文献。因为在读研究生期间需要查阅大量文献,我需要给这些文章建立一个数据库,于是年少无知的我就选择了Access。选择Access的原因并不是我比较熟悉它,而是我的老师用它,我至今也不会太多的操作。这应该算是我开始接触数据分析了。
使用高级语言时,记不住函数不要紧,但是你要有很强的搜索能力。
之所以讲这一段经历,不是为了说明我起步晚,而是为了说明建立Access文献数据库锻炼了我的英文搜索能力。我一碰到问题,就在Google里搜索,很快就能找到答案。于是Google几乎成了我的眼睛,真正做到了用Google搜索、发邮件、社交、阅读和写作。在公司里曾经传说,如果是连我都搜不到的内容,那么别人更不可能搜到。有些年轻人就怕英文,我并不是崇洋媚外,客观地想一想,现在的很多知识都是从欧美起源的,如果你连这门世界语言都不掌握,那么你获得的资料永远都是二手资料。另外,无论你是找函数还是找包、模块,抑或是为问题寻找答案,使用Google进行英文搜索会为你节省很多时间。掌握这门语言并不需要你听、说、读、写样样精通,而是将其作为一种工具,应用起来比较方便就可以了。
要善用英文搜索,原因很简单,你所用的编程语言或软件大多是外国人构建的,并且在国外已经普及,相关的问答社区早已完善,你碰到的问题可能早就有人解决了。
在搜索文献的过程中,我喜欢上了《经济学人》的Graphic Details栏目,发现其绘制的图表非常漂亮、专业,于是我就开始学习Excel,尽自己所能将Excel图表做得更漂亮、更专业,这些经历为我日后做数据可视化打下了坚实的基础:我知道了商务色彩搭配及图表要简洁、易读等原则,我知道怎么使自己的图表特色鲜明。后来看了大前研一先生的著作,了解了专业精神,我曾经写下这样一句话,以勉励自己:
所谓专业,即每一个细节都经得起推敲。
有一天,舍友看到我用Excel作图,嘲笑我孤陋寡闻,推荐我学习R语言,然后我就开始搜寻一些R语言入门读物进行阅读,慢慢地知道了关于这门语言的粗浅知识。
这个时候已经到研二下半学期了,我需要为自己未来的工作做打算了:是步入园林行业还是就此转行?必须做一个决断。我发现自己真的对植物分类不感兴趣,而我做家教的学生的妈妈是星空传媒的一个经理,平时待我很好,她说毕业可以介绍我去做市场研究。我了解了一下市场研究,发现其中涉及一些数据分析的内容(现在看起来很简单),于是,我从此决定踏上数据分析这条“不归路”。
为了快速上手、熟悉统计学知识,我并没有马上深入地学习R语言,而是像以往一样懒懒散散地学习(后悔当时没有实战学习)。我通过搜索发现,市场研究的岗位大多将熟练使用SPSS作为硬性要求,偶尔也会要求熟悉R语言,但SPSS对我来说更容易上手,于是就开始学习SPSS。SPSS帮助我巩固了统计学知识,当学习完简单的统计学知识后,我发现SPSS不够灵活,很多功能不够用,做出的图表很难看(这对于我来说是无法忍受的),因此,网络上有一些人鄙视SPSS,但很推崇R语言。于是我决定要深入地学习R语言。我先将SPSS的功能在R中做了一遍,有了一些自己的理解后,我开始在自己的论文里做一些数据分析的内容。
现在想来,如果我直接在实战中学习可能会节省更多的时间。
实战更能锻炼技能水平。
研二快结束了,开始找工作了。我找工作的目的很明确,如果工作不是做数据分析、数据研究的,那么我宁愿放弃这个工作的机会。非数据研究的岗位我也不去面试,这样又省下了大量的时间学习。
在工作中学习
2013年毕业后,我去了一家医药市场研究公司,当时的工作并不太忙,我有大量的时间学习。但这时也暴露了我的弱点,公司的数据并不是很规整(raw data)的,往往需要标准化等,而且数据规模也不再是之前练习时那么小,在面对这些脏数据、大一点的数据时,我的数据清洗水平显得捉襟见肘。周围的人都是Excel高手,如果跟着他们学,估计也能成为高手,但是我一定要在R中做数据清洗整理,反正公司的工作不是很多,我就一点点地学习和积累,这样我的数据处理能力就逐渐扎实起来了。其间我用两天读完了《异类》这本书,感触很深,阅读经历已经写成一篇文章在我们的公众号里分享了。
任何一个工具在刚开始学习时都会觉得它很糟糕,其实这并不是工具的问题,而是自己的知识体系跟不上节奏,或者是它的很多方法与自己原有的认知相反,这时不要急于否定它,而是要深入地学习它。知识体系是一个积累过程,为自己准备一万个小时计划吧。
我们公司当时在做BI(商业智能),于是我接触了市面上常见的BI工具,包括Tableau、QV等,我熟悉它们的优、劣势,也熟悉它们的数据可视化效果。因为需要将R语言的页面融入BI中,所以我熟悉了shiny包,做了一些页面,但我渐渐看到R语言在做这些通用语言的工作时所暴露的缺点,于是开始接触Python。
后来,我们的合作公司的总经理听说我比较熟悉R语言,就向我请教,我们一起讨论了R语言和数据挖掘。得知他们在做文本挖掘,于是在我闲暇时间开始学习中文文本挖掘的内容。没有成型的数据和书,我就看帖子,去一个个地实现,然后积累经验,这时我对R的操作算得上非常熟练了,从实现到速度优化(并行计算等)等也已经非常熟练,积累的代码也非常多了。
后来,那个经理找我做医院处方数据挖掘工作,之后,他请我去负责法院文本数据挖掘,我没去,但成了他们的外援,仍然没收过钱,他们搭建的一台服务器也帮助我了解了不少Linux的知识。
刚开始,锻炼自己的机会远远比钱重要,反正自己闲着也是闲着,但是这种情况只适用于刚开始。
后来,我们公司推出了微信公众号平台,我开始给公司的公众号写文章。其间我为公司的公众号写了多篇关于综合排名的文章,阅读量最高达到4万多人次,当时公众号的粉丝才2 000人左右。后来我又制作了评价医院市场趋势的综合指标体系,现在公司也一直在沿用这套指标,这些工作中的小点子都是我在公交车上想出来的。
除要把工作当成一种谋生手段外,还必须有极大的兴趣,要么不做,要么做好。
另外,我在公交车上读完了Data Mining with R learning by case studies、Machine Learning for Hackers、R Graphics Cookbook等书籍,之所以提这三本书,是因为我不止读过一遍,这三本书很有特色,第一本帮助我学习了各种算法,第二本帮助我接触了实际应用中的知识,第三本帮我熟练了ggplot的函数及图表元素结构。我开始学会利用零散的时间,坚持积累,也开始学习高度自律。
古之成大事者,不唯有超世之才,亦必有坚韧不拔之志。
——苏轼
其实,我一直幻想着有一个自己想写什么就写什么的平台,于是,我和小伙伴们开通了微信公众号,直到现在,我们更注重文章的可读性、趣味性,而不仅仅是技术,但是每一篇文章都可以作为一个小项目让希望学习数据分析的读者能锻炼一下自己的技能。
经常有读者问学数据分析就一定要学编程吗?以及为什么要看英文资料?针对这两个问题,我写下了这样一段对话,希望你能在对话中找到答案。
为什么学习数据分析?
赚钱!
什么样的人容易赚钱?
技能比别人高的!
英语是不是一般人的难关?是不是大家都想学习傻瓜式操作软件?
是!
那么如果大家都这么想,你应该怎么做?
很明显,你要做其他人不愿意做的事情,才能赚到别人不能赚的钱!
作为数据分析师,一定要将自己和技术区分开,分析数据、挖掘数据本质上是探寻数据背后的人心,挖掘人们的欲望、需求、态度等,所以数据分析师还要尽量拓宽自己的视野和知识结构,尽自己所能博览群书。
我的经历大体如此,中间会有各种迷茫、各种苍白无力,但是如果你缺少什么,就去搜集资料,做出判断,努力去争取,这一点总不会错,千万不要一味地否定你不了解的东西,这也是我对待未知领域的态度。
作为一名技术人员,要让自己的知识时刻在进步!这是一种宿命。
宋云生,中山大学生命科学学院硕士毕业,混迹于医药商业、汽车制造等多个行业,先后从事市场研究、BI(商业智能)、质量控制等多个领域的数据研究和落地应用,现主攻自然语言理解领域的实际应用。
张坚洪,华南农业大学数学与应用数学本科毕业,先后从事汽车、金融等行业,主要工作方向为数据仓库、数据挖掘在互联网金融领域的应用。
黎新年,中山大学生命科学学院博士毕业,主要研究方向为基因组的进化、群体演化和系统发育。
第1章 万事不只开头难 1
1.1 工欲善其事,必先利其器:安装 1
1.1.1 安装R和RStudio 1
1.1.2 安装数据包 3
1.1.3 数据包加载、卸载、升级,查看帮助文档 5
1.1.4 什么样的R包值得相信 7
1.2 了解R的对象 8
1.2.1 如何进行常见的算术运算 8
1.2.2 R语言的三大数据类型 10
1.2.3 向量及其运算 12
1.2.4 因子变量鲜有人知的秘密 15
1.2.5 矩阵相关运算及神奇的特征值 17
1.2.6 数据框及其筛选、替换、添加、排序、去重 18
1.2.7 与数组(array)相比,表单(list)的用处更加广泛 22
1.2.8 如何进行数据结构之间的转化 23
1.3 R语言的重器:函数 26
1.3.1 自编函数 26
1.3.2 有用的R字符串函数 29
1.4 控制流在R语言里只是一种辅助工具 31
1.4.1 判断 32
1.4.2 循环 33
1.5 数据的读入与输出 35
1.5.1 常见数据格式的输入/输出(CSV、TXT、RDATA、XLSX) 35
1.5.2 数据库连接:Oracle、MySQL及Hive 37
1.5.3 乱码就像马赛克一样让人讨厌 39
第2章 数据探索,招招都是利器 41
2.1 不要在工作后才认识“脏数据” 41
2.1.1 以老板信服的方式处理缺失数据 42
2.1.2 异常值预警 48
2.1.3 字符处理正则表达式不再是天书 49
2.2 数据透视、数据整形、关联融合与批量处理 50
2.2.1 还忘不掉Excel的数据透视表吗 50
2.2.2 你能给数据做整形手术吗:long型和wide型 52
2.2.3 关联合并表 54
2.2.4 数据批处理:R语言里最重要的一个函数家族:*pply 55
2.3 一招完成数据探索报告 58
2.4 拯救你的很多时候是基础理论 61
2.4.1 参数检验及非参检验 62
2.4.2 学了很多算法却忘了方差分析 68
2.4.3 多因素方差分析及协方差作用 70
2.4.4 很多熟悉的数据处理方法已经成笑话,工具箱该换了 73
第3章 从商务气质的数据可视化说起 84
3.1 说说数据可视化的专业素养 84
3.1.1 数据可视化历史上有多少背影等你仰望 84
3.1.2 商务图表应该具有哪些素质 87
3.1.3 那些你不知道的图表误导性伎俩 94
3.1.4 如何快速解构著名杂志的图表 98
3.2 ggplot2包:一个价值8万美元的态度 103
3.2.1 一张图学会ggplot2包的绘图原理 105
3.2.2 基础绘图科学:ggplot2包的主题函数继承关系图(关系网络图) 127
3.2.3 基础图表一网打尽 132
3.2.4 古老的地图焕发新颜 151
3.3 将静态图转为D3交互图表:plotly 156
3.4 从基础到进阶的变形图表 157
3.4.1 马赛克图(分类变量描述性分析) 157
3.4.2 Sankey图和chordDiagram图 158
第4章 分位数回归模拟股票指数风险通道 163
4.1 用线性回归预测医院的药品销售额 163
4.2 多项式回归及常见回归方程的书写 168
4.3 Lasso回归和回归评价的常见指标 170
4.4 分位数回归拟合上证指数风险通道 175
第5章 时间序列分析 181
5.1 时间序列分析:分析带有时间属性的数列 181
5.2 不是所有序列都叫时间序列 181
5.3 时间序列三件宝:趋势、周期、随机波动 183
5.3.1 趋势 183
5.3.2 周期 184
5.3.3 随机波动 186
5.4 预测分析 186
5.4.1 指数平滑法 186
5.4.2 ARIMA模型预测 188
第6章 选择什么算法也有一套流程 192
6.1 重新审视一下这几个模型 192
6.1.1 Logistic回归 192
6.1.2 我要的不是一棵树,而是整座森林:随机森林 195
6.1.3 神奇的神经网络 196
6.2 银行信用卡评估模型之变量筛选 197
6.2.1 变量构建 197
6.2.2 Logistic回归变量筛选 198
6.2.3 随机森林变量筛选 203
6.2.4 人工神经网络建模 204
6.3 必须面对的模型评估 204
第7章 深入浅出十大算法 208
7.1 C5.0算法 208
7.1.1 一个重要的概念:信息熵 208
7.1.2 非列变量选择的实例 209
7.1.3 C5.0算法的R实现 210
7.2 K-means算法 212
7.2.1 K-means算法的R实现 212
7.2.2 怎么确定聚类数 213
7.3 支持向量机(SVM)算法 213
7.3.1 通俗理解SVM 214
7.3.2 SVM的R实现 216
7.4 Apriori算法 216
7.4.1 举例说明Apriori 217
7.4.2 Apriori算法的R
探寻数据背后的逻辑:R语言数据挖掘之道
九五品成都
¥ 27.22
探寻数据背后的逻辑:R语言数据挖掘之道
九五品天津
¥ 15.65
探寻数据背后的逻辑:R语言数据挖掘之道
九品天津
¥ 12.70
探寻数据背后的逻辑:R语言数据挖掘之道
九五品天津
¥ 15.65
探寻数据背后的逻辑:R语言数据挖掘之道
九品天津
¥ 17.50
探寻数据背后的逻辑:R语言数据挖掘之道
九五品保定
¥ 15.65
探寻数据背后的逻辑:R语言数据挖掘之道
九五品上海
¥ 20.32
探寻数据背后的逻辑:R语言数据挖掘之道
九五品南京
¥ 20.85
探寻数据背后的逻辑:R语言数据挖掘之道
全新北京
¥ 89.00
探寻数据背后的逻辑:R语言数据挖掘之道
九品宁波
¥ 82.32
— 没有更多了 —
以下为对购买帮助不大的评价