《R语言数据分析与挖掘实战》——导读

前 言

为什么要写这本书

LinkedIn对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最受关注的25项技能中,对数据挖掘人才的需求排名第一。那么数据挖掘是什么?

数据挖掘是从大量数据(包括文本)中挖掘出隐含的、先前未知的、对决策有潜在价值的关系、模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法、工具和过程。数据挖掘有助于企业发现业务的发展趋势,揭示已知的事实,预测未知的结果,因此“数据挖掘”已成为企业保持竞争力的必要方法。

但跟国外相比,我国由于信息化程度不太高,企业内部信息不完整,零售业、银行、保险、证券等对数据挖掘的应用并不太理想。但随着市场竞争的加剧,各行业对数据挖掘技术的意愿越来越强烈,可以预计,未来几年各行业的数据分析应用一定会从传统的统计分析发展到大规模数据挖掘应用。在大数据时代,数据过剩、人才短缺,数据挖掘专业人才的培养又需要专业知识和职业经验积累。所以,本书注重数据挖掘理论与项目案例实践相结合,可以让读者获得真实的数据挖掘学习与实践环境,更快、更好地学习数据挖掘知识与积累职业经验。

总体来说,随着云时代的来临,大数据技术将具有越来越重要的战略意义。大数据已经渗透到每一个行业和业务职能领域,逐渐成为重要的生产要素,人们对于海量数据的运用预示着新一轮生产率增长和消费者盈余浪潮的到来。大数据分析技术将帮助企业用户在合理的时间内攫取、管理、处理、整理海量数据,为企业经营决策提供积极的帮助。大数据分析作为数据存储和挖掘分析的前沿技术,广泛应用于物联网、云计算、移动互联网等战略性新兴产业。虽然大数据目前在国内还处于初级阶段,但是其商业价值已经显现出来,特别是有实践经验的大数据分析人才更是各企业争夺的热门。为了满足日益增长的对大数据分析人才的需求,很多大学开始尝试开设不同程度的大数据分析课程。“大数据分析”作为大数据时代的核心技术,必将成为高校数学与统计学专业的重要课程之一。

本书特色

笔者从实践出发,结合大量数据挖掘工程案例与教学经验,以真实案例为主线,深入浅出地介绍数据挖掘建模过程中的有关任务:数据探索、数据预处理、分类与预测、聚类分析、时序预测、关联规则挖掘、智能推荐、偏差检测等。因此,本书的编排以解决某个应用的挖掘目标为前提,先介绍案例背景,提出挖掘目标,再阐述分析方法与过程,最后完成模型构建,在介绍建模过程中会穿插操作训练,把相关的知识点嵌入相应的操作过程中。为方便读者轻松地获取一个真实的实验环境,本书使用大家熟知的R语言对样本数据进行处理以进行挖掘建模。

本书适用对象

开设有数据挖掘课程的高校教师和学生。

目前国内不少高校将数据挖掘引入本科教学中,在数学、计算机、自动化、电子信息、金融等专业开设了数据挖掘技术相关的课程,但目前这一课程的教学仍然主要限于理论介绍。因为单纯的理论教学过于抽象,学生理解起来往往比较困难,教学效果也不甚理想。本书提供的基于实战案例和建模实践的教学,能够使师生充分发挥互动性和创造性,做到理论联系实际,使师生获得最佳的教学效果。

需求分析及系统设计人员。

这类人员可以在理解数据挖掘原理及建模过程的基础上,结合数据挖掘案例完成精确营销、客户分群、交叉销售、流失分析、客户信用记分、欺诈发现、智能推荐等数据挖掘应用的需求分析和设计。

数据挖掘开发人员。

这类人员可以在理解数据挖掘应用需求和设计方案的基础上,结合本书提供的基于第三方的接口快速完成数据挖掘应用的编程实现。

进行数据挖掘应用研究的科研人员。

许多科研院所为了更好地对科研工作进行管理,纷纷开发了适应自身特点的科研业务管理系统,并在使用过程中积累了大量的科研信息数据。但是,这些科研业务管理系统一般没有对这些数据进行深入分析,对数据所隐藏的价值并没有充分挖掘利用。科研人员需要利用数据挖掘建模工具及有关方法论来深挖科研信息的价值,从而提高科研水平。

关注高级数据分析的人员。

业务报告和商业智能解决方案对于了解过去和现在的状况可能是非常有用的。但是,数据挖掘的预测分析解决方案还能使这类人员预见未来的发展状况,让他们的机构能够先发制人,而不是处于被动。因为数据挖掘的预测分析解决方案可将复杂的统计方法和机器学习技术应用到数据之中,通过使用预测分析技术来揭示隐藏在交易系统或企业资源计划(ERP)、结构数据库和普通文件中的模式与趋势,从而为这类人员做决策提供科学依据。

如何阅读本书

本书共16章,分三个部分:基础篇、实战篇、提高篇。基础篇介绍了数据挖掘的基本原理,实战篇介绍了多个真实案例,通过对案例深入浅出的剖析,使读者在不知不觉中获得数据挖掘项目经验,同时快速领悟看似难懂的数据挖掘理论。读者在阅读过程中,应充分利用随书配套的案例建模数据,借助相关的数据挖掘建模工具,通过上机实验快速理解相关知识与理论。

第一部分是基础篇(第1~5章),第1章的主要内容是数据挖掘概述;第2章对本书所用到的数据挖掘建模工具——R语言进行了简明扼要的说明;第3~5章对数据挖掘的建模过程,包括数据探索、数据预处理及挖掘建模的常用算法与原理进行了介绍。

第二部分是实战篇(第6~15章),重点对数据挖掘技术在电力、航空、医疗、互联网、生产制造以及公共服务等行业的应用进行了分析。在案例结构组织上,本书是按照先介绍案例背景与挖掘目标,再阐述分析方法与过程,最后完成模型构建的顺序进行的。在建模过程的关键环节,穿插程序实现代码。最后通过上机实践,加深读者数据挖掘技术在案例应用中的理解。

第三部分是提高篇(第16章),介绍了基于R语言二次开发的数据挖掘应用软件——TipDM数据挖掘建模工具,并以此工具为例详细介绍了基于R语言完成数据挖掘二次开发的各个步骤,使读者体验到通过R语言实现数据挖掘二次开发的强大魅力。

勘误和支持

除封面署名外,参加本书编写工作的还有樊哲、陈庚、卢丹丹、魏润润、范正丰、徐英刚、廖晓霞、刘名军、李成华、刘丽君等。由于笔者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。

致谢

本书编写过程中,得到了广大企事业单位科研人员的大力支持!在此谨向广东电力科学研究院、广西电力科学研究院、广东电信规划设计院、珠江/黄海水产研究所、轻工业环境保护研究所、华南师范大学、广东工业大学、广东技术师范学院、南京中医药大学、华南理工大学、湖南师范大学、韩山师范学院、广东石油化工学院、中山大学、广州泰迪智能科技有限公司、武汉泰迪智慧科技有限公司等单位给予支持的专家及师生致以深深的谢意。

张良均

目 录

基 础 篇
第1章 数据挖掘基础
 1.1 某知名连锁餐饮企业的困惑
 1.2 从餐饮服务到数据挖掘
 1.3 数据挖掘的基本任务
 1.4 数据挖掘建模过程
   1.4.1 定义挖掘目标
   1.4.2 数据取样
   1.4.3 数据探索
   1.4.4 数据预处理
   1.4.5 挖掘建模
   1.4.6 模型评价
 1.5 常用数据挖掘建模工具
 1.6 小结
第2章 R语言简介
 2.1 R安装
 2.2 R使用入门
   2.2.1 R操作界面
   2.2.2 RStudio窗口介绍
   2.2.3 R常用操作
 2.3 R数据分析包
 2.4 配套附件使用设置
 2.5 小结
第3章 数据探索
 3.1 数据质量分析
   3.1.1 缺失值分析
   3.1.2 异常值分析
   3.1.3 一致性分析
 3.2 数据特征分析
   3.2.1 分布分析
   3.2.2 对比分析
   3.2.3 统计量分析
   3.2.4 周期性分析
   3.2.5 贡献度分析
   3.2.6 相关性分析
 3.3 R语言主要数据探索函数
   3.3.1 统计特征函数
   3.3.2 统计作图函数
 3.4 小结
第4章 数据预处理
 4.1 数据清洗
   4.1.1 缺失值处理
   4.1.2 异常值处理
 4.2 数据集成
   4.2.1 实体识别
   4.2.2 冗余属性识别
 4.3 数据变换
   4.3.1 简单函数变换
   4.3.2 规范化
   4.3.3 连续属性离散化
   4.3.4 属性构造
   4.3.5 小波变换
 4.4 数据规约
   4.4.1 属性规约
   4.4.2 数值规约
 4.5 R语言主要数据预处理函数
 4.6 小结
第5章 挖掘建模
 5.1 分类与预测
   5.1.1 实现过程
   5.1.2 常用的分类与预测算法
   5.1.3 回归分析
   5.1.4 决策树
   5.1.5 人工神经网络
   5.1.6 分类与预测算法评价
   5.1.7 R语言主要分类与预测算法函数
 5.2 聚类分析
   5.2.1 常用聚类分析算法
   5.2.2 K-Means聚类算法
   5.2.3 聚类分析算法评价
   5.2.4 R语言主要聚类分析算法函数
 5.3 关联规则
   5.3.1 常用关联规则算法
   5.3.2 Apriori算法
 5.4 时序模式
   5.4.1 时间序列算法
   5.4.2 时间序列的预处理
   5.4.3 平稳时间序列分析
   5.4.4 非平稳时间序列分析
   5.4.5 R语言主要时序模式算法函数
 5.5 离群点检测
   5.5.1 离群点检测方法
   5.5.2 基于模型的离群点检测方法
   5.5.3 基于聚类的离群点检测方法
 5.6 小结
实 战 篇
第6章 电力窃漏电用户自动识别
 6.1 背景与挖掘目标
 6.2 分析方法与过程
   6.2.1 数据抽取
   6.2.2 数据探索分析
   6.2.3 数据预处理
   6.2.4 构建专家样本
   6.2.5 模型构建
 6.3 上机实验
 6.4 拓展思考
 6.5 小结
第7章 航空公司客户价值分析
 7.1 背景与挖掘目标
 7.2 分析方法与过程
   7.2.1 数据抽取
   7.2.2 数据探索分析
   7.2.3 数据预处理
   7.2.4 模型构建
 7.3 上机实验
 7.4 拓展思考
 7.5 小结
第8章 中医证型关联规则挖掘
 8.1 背景与挖掘目标
 8.2 分析方法与过程
   8.2.1 数据获取
   8.2.2 数据预处理
   8.2.3 模型构建
 8.3 上机实验
 8.4 拓展思考
 8.5 小结
第9章 基于水色图像的水质评价
 9.1 背景与挖掘目标
 9.2 分析方法与过程
   9.2.1 数据预处理
   9.2.2 模型构建
   9.2.3 水质评价
 9.3 上机实验
 9.4 拓展思考
 9.5 小结
第10章 家用电器用户行为分析与事件识别
 10.1 背景与挖掘目标
 10.2 分析方法与过程
   10.2.1 数据抽取
   10.2.2 数据探索分析
   10.2.3 数据预处理
   10.2.4 模型构建
   10.2.5 模型检验
 10.3 上机实验
 10.4 拓展思考
 10.5 小结
第11章 应用系统负载分析与磁盘容量预测
 11.1 背景与挖掘目标
 11.2 分析方法与过程
   11.2.1 数据抽取
   11.2.2 数据探索分析
   11.2.3 数据预处理
   11.2.4 模型构建
 11.3 上机实验
 11.4 拓展思考
 11.5 小结
第12章 电子商务智能推荐服务
 12.1 背景与挖掘目标
 12.2 分析方法与过程
   12.2.1 数据抽取
   12.2.2 数据探索分析
   12.2.3 数据预处理
   12.2.4 模型构建
 12.3 上机实验
 12.4 拓展思考
 12.5 小结
第13章 基于数据挖掘技术的市财政收入分析预测模型252
 13.1 背景与挖掘目标
 13.2 分析方法与过程
   13.2.1 灰色预测与神经网络的组合模型
   13.2.2 数据探索分析
   13.2.3 模型构建
 13.3 上机实验
 13.4 拓展思考
 13.5 小结
第14章 基于基站定位数据的商圈分析
 14.1 背景与挖掘目标
 14.2 分析方法与过程
   14.2.1 数据抽取
   14.2.2 数据探索分析
   14.2.3 数据预处理
   14.2.4 模型构建
 14.3 上机实验
 14.4 拓展思考
 14.5 小结
第15章 电商产品评论数据情感分析
 15.1 背景与挖掘目标
 15.2 分析方法与过程
   15.2.1 评论数据采集
   15.2.2 评论预处理
   15.2.3 文本评论分词
   15.2.4 模型构建
 15.3 上机实验
 15.4 拓展思考
 15.5 小结
提 高 篇
第16章 基于R语言的数据挖掘二次开发
 16.1 混合编程应用体验——TipDM数据挖掘平台
 16.2 二次开发过程环境配置
 16.3 R语言数据挖掘二次开发实例
 16.4 小结
参考资料

时间: 2024-10-03 04:17:00

《R语言数据分析与挖掘实战》——导读的相关文章

《深入理解Scala》——第1章,第1.2节当函数式编程遇见面向对象

1.2 当函数式编程遇见面向对象 深入理解Scala 函数式编程和面向对象编程是软件开发的两种不同途径.函数式编程并非什么新概念,在现代开发者的开发工具箱里也绝非是什么天外来客.我们将通过Java生态圈里的例子来展示这一点,主要来看Spring Application framework和Google Collections库.这两个库都在Java的面向对象基础上融合了函数式的概念,而如果我们把它们翻译成Scala,则会优雅得多.在深入之前,我们需要先理解面向对象编程和函数式编程这两个术语的含义

《深入理解Scala》——第1章,第1.4节与JVM的无缝集成

1.4 与JVM的无缝集成 深入理解Scala Scala的吸引力之一在于它与Java和JVM的无缝集成.Scala与Java有很强的兼容性,比如说Java类可以直接映射为Scala类.这种紧密联系使Java到Scala的迁移相当简单,但在使用Scala的一些高级特性时还是需要小心的,Scala有些高级特性是Java里没有的.在Scala语言设计时已经小心地考虑了与Java无缝交互的问题,用Java写的库,大部分可以直接照搬(as-is)到Scala里. 1.4.1 Scala调用Java 从S

《深入理解Scala》——第2章,第2.1节学习使用Scala交互模式(REPL)

第2章 核心规则深入理解Scala 本章包括的内容: • 使用Scala交互模式(Read Eval Print Loop 简称REPL) • 面向表达式编程 • 不变性(Immutability) • Option类 本章内容覆盖了每个新Scala开发者都需要知道的几个主题.本章不会深入到每个主题里,但是会讲到可以让你自己去接着探索的程度.你将学会使用REPL,学会如何利用这个工具做软件的快速原型开发.然后我们会学到面向表达式编程,并从另一个视角来看控制结构是怎么回事.在此基础上,我们来研究不

《深入理解Scala》——第1章,第1.3节静态类型和表达力

1.3 静态类型和表达力 深入理解Scala 开发人员中有一个误解,认为静态类型必然导致冗长的代码.之所以如此是因为很多继承自C的语言强制要求程序员必须在代码中多处明确地指定类型.随着软件开发技术和编译器理论的发展,情况已经改变.Scala利用了其中一些技术进步来减少样板(boilerplate)代码,保持代码简洁. Scala做了以下几个简单的设计决策,以提高代码表达力. • 把类型标注(type annotation)换到变量右边. • 类型推断. • 可扩展的语法. • 用户自定义的隐式转

《深入理解Scala》——第1章,第1.5节总结

1.5 总结 深入理解Scala 本章中,你学到了一些Scala的设计理念.设计Scala的初衷在于把不同语言中的多种概念融合起来.Scala融合了函数式和面向对象编程,尽管显然Java也已经这么做了.Scala精选其语法,极大地减少了语言中的繁冗之处,使一些强大的特性可以优雅地表达,比如类型推断.最后,Scala和Java能够紧密集成,而且运行在Java虚拟机上,这或许是让Scala变成一种实用选择的最重要的一点.几乎不花代价就可以把Scala用于我们的日常工作中. 因为Scala融合了多种概

《深入理解Scala》——第1章,第1.1节Scala一种混合式编程语言

第1章 Scala--一种混合式编程语言 Scala是一种将其他编程语言中的多种技巧融合为一的语言.Scala尝试跨越多种不同类型的语言,给开发者提供面向对象编程.函数式编程.富有表达力的语法.静态强类型和丰富的泛型等特性,而且全部架设于Java虚拟机之上.因此开发者使用Scala时可以继续使用原本熟悉的某种编程特性,但要发挥Scala的强大能力则需要结合使用这些有时候相互抵触的概念和特性,建立一种平衡的和谐.Scala对开发者的真正解放之处在于让开发者可以随意使用最适合手头上的问题的编程范式.

《深入理解Scala》——第2章,第2.2节优先采用面向表达式编程

2.2 优先采用面向表达式编程 深入理解Scala 面向表达式编程是个术语,意思是在代码中使用表达式而不用语句.表达式和语句的区别是什么?语句是可以执行的东西,表达式是可以求值的东西.在实践中这有什么意义呢?表达式返回值,语句执行代码,但是不返回值.本节我们将学习面向表达式编程的全部知识,并理解它对简化程序有什么帮助.我们也会看一下对象的可变性,以及可变性与面向表达式编程的关系. 作者注:语句VS表达式 语句是可以执行的东西,表达式是可以求值的东西. 表达式是运算结果为一个值的代码块.Scala

《深入理解Scala》——第2章,第2.3节优先选择不变性

2.3 优先选择不变性 深入理解Scala 编程中的不变性指对象一旦创建后就不再改变状态.这是函数式编程的基石之一,也是JVM上的面向对象编程的推荐实践之一.Scala也不例外,在设计上优先选择不变性,在很多场景中把不变性作为默认设置.对此,你可能一下子会不适应.本节中,我们将学到不变性对于判等问题和并发编程能提供什么帮助. Scala里首先要明白的是不变对象和不变引用(immutable referene)的区别.Scala里的所有变量都是指向对象的引用.把变量声明为val意味着它是个不变"引

《深入理解Scala》——第2章,第2.4节用None不用null

2.4 用None不用null深入理解Scala Scala在标准库里提供了scala.Option类,鼓励大家在一般编程时尽量不要使用null.Option可以视作一个容器,里面要么有东西,要么什么都没有.Option通过两个子类来实现此含义:Some和None.Some表示容器里有且仅有一个东西,None表示空容器,有点类似List的Nil的含义. 在Java和其他允许null的语言里,null经常作为一个占位符用于返回值,表示非致命的错误,或者表示一个变量未被初始化.Scala里,你可以用

《深入理解Scala》——第2章,第2.5节多态场景下的判等

2.5 多态场景下的判等 深入理解Scala 众所周知,为多态的面向对象系统定义合适的判等和散列方法是个特别难的过程.这是因为子类可能在整个过程中造成一些相当怪异的问题,尤其是当类型层次上有多个实体(concrete)级别的时候.一般来说,对于需要比引用判等更强的判等(译者注:比如需要判断对象内部数据)的类,最好避免多层实体类层次.这是什么意思呢?有些时候类只需要引用判等就够了.也就是说只要两个对象不是同一个实例就判为不等.但是如果我们需要判断两个不同实例是否相等,而且又有多层实体类层次(mul