在python对数据的处理方式中,数据挖掘和数据分析是两个重要的方式,目的是为了从数据中获取具有科研或者商业价值的信息。而数据挖则掘是从大量的数据中通过算法搜索隐藏在数据中隐含的、先前未知的并有潜在使用价值的信息的过程。本篇将讨论数据挖掘的一些入门知识。
本篇主要涉及到的知识点有:
什么是数据挖掘:学会什么是数据挖掘,以及在实际项目中的作用。
数据挖掘的基本任务:学会数据挖掘要处理那些方面内容。
数据挖掘流程:了解数据挖掘的推荐步骤,以及每个步骤要用到的知识。
数据挖掘建模工具 :认识数据挖掘的常用建模工具。
一:什么是数据挖掘
数据挖掘是指从大量的数据中通过一些算法寻找隐藏于其中重要实用信息的过程。这些算法包括神经网络法、决策树法、遗传算法、粗糙集法、模糊集法、关联规则法等。在商务管理,股市分析,公司重要信息决策,以及科学研究方面都有十分重要的意义。
数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、统计学、数据库、可视化技术,从大量数据中寻找其肉眼难以发现的规律,和大数据联系密切。如今,数据挖掘已经应用在很多行业里,对人们的生产生活以及未来大数据时代起到了重要影响。
二:数据挖掘的基本任务
数据挖掘的基本任务就是主要要解决的问题。数据挖掘的基本任务包括分类与预测、聚类分析、关联规则、奇异值检测和智能推荐等。通过完成这些任务,发现数据的潜在价值,指导商业和科研决策,给科学研究带来指导以及给商业带来新价值。下面就分别来认识一下常见的基本任务。
1.分类与预测
是一种用标号的进行学习的方式,这种编号是类编号。这种类标号若是离散的,属于分类问题;若是连续的,属于预测问题,或者称为回归问题。从广义上来说,不管是分类,还是回归,都可以看做是一种预测,差异就是预测的结果是离散的还是连续的。
2.聚类分析
就是“物以类聚,人以群分”在原始数据集中的运用,其目的是把原始数据聚成几类,从而使得类内相似度高,类间差异性大。
3.关联规则
数据挖掘可以用来发现规则,关联规则属于一种非常重要的规则,即通过数据挖掘方法,发现事务数据背后所隐含的某一种或者多种关联,从而利用这些关联来指导商业决策和行为。
4.奇异值检测
根据一定准则识别或者检测出数据集中的异常值,所谓异常值就是和数据集中的绝大多数据表现不一致。
5.智能推荐
这是数据挖掘一个很活跃的研究和应用领域,在各大电商网站中都会有各种形式推荐,比方说同类用户所购买的产品,与你所购买产品相关联的产品等。
三:数据挖掘流程
我们由上面的章节知道了数据挖掘的定义和基本任务,本节我们来学习一下数据挖掘的流程,来讲述数据挖掘是如何进行的。
1.定义挖掘目标
该步骤是分析要挖掘的目标,定义问题的范围,可以划分为下面的目标:
(1)针对具体业务的数据挖掘应用需求,首先要分析是哪方面的问题。
(2)分析完问题后,该问题如果解决后可以实现什么样的效果,达到怎样的目标。
(3)详细地列出用户对于该问题的所有需求。
(4)挖掘可以用到那些数据集。究竟怎样的挖掘方向比较合理。
(5)综合上面的要求,制定挖掘计划。
2.数据取样
在明确了数据挖掘的目标后,接下来就需要在业务数据集中抽取和挖掘目标相关的数据样本子集。这就是数据取样操作。那么数据取样时需要注意哪些方面呢?
第一是抽取的数据要和挖掘目标紧密相关,并且能够很好地说明用户的需求。
第二是要可靠,质量要有所保证,从大范围数据到小范围数据,都不要忘记检查数据的质量,这是因为如果原始的数据有误,在之后的过程中,可能难以探索规律,即使探索出规律,也有可能是错误的。
第三个方面是要有效,要注意数据的完整,但是有时候可能要抽取的数据量比较大,这个时候也许有的数据是根本没有用的,可以通过筛选进行处理。通过对数据的精选,不仅能减少数据处理量,节省系统资源,还能够让我们要寻找的数据可以更加地显现出来。
而衡量数据取样质量的标准如下:
(1)确定取样的数据集后,要保证数据资料完整无缺,各项数据指标完整。
(2)数据集要满足可靠性和有效性。
(3)每一项的数据都准确无误,反映的都是正常状态下的水平。
(4)数据集合部分能显现出规律性。
(5)数据集合要能满足用户的需求。
数据取样的方法有多种多样的,常见的方式如下:
(1)随机取样:就是按照随机的方法进行取样,数据集中的每一个元素被抽取的概率是一样的。可以按照每一个特定的百分比进行取样,比如按照5%,10%,20%等每个百分比内随机抽取n个数据。
(2)等距取样:和随机取样有些类似,但是不同的是等距取样是按照一定百分比的比例进行等距取样,比如有100个数据,按照10%的比例进行等距取样就是抽取10,20,30,40,50,60,70,80,90,100这10个数据。
(3)分层取样:在这种抽样的操作中,首先将样本总体分为若干子集。在每个层次中的值都有相同的被选用的概率,但是可以对每一层设置不同的概率,分别代表不同层次的水平。是为了未来更好地拟合层次数据,综合后得到更好的精度。比如100个数据分为5层,在1-20,20-30,30-40,40-50等每一层抽取的个数不同,分别代表每一层。
(4)分类取样:分类抽样是依据某种属性的取值来选择数据子集,按照某种类别(规则)进行选择,比如按照客户名称,同学姓名,地址区域,企业类别进行分类。
(5)从起始位置取样:就是从输入数据集的起始处开始抽样,抽取一定的百分比数据。
(6)从结束位置取样:就是从输入数据集的最后处反向抽样,抽取一定的百分比数据。
3.数据探索
数据探索,是为了把数据取样得到的数据进行检测的操作。当我们拿到一个数据集合后,这些数据是否达到了我们原来设想的要求;样本中有没有什么明显的规律和趋势,有没有一些用不到的数据被拿了过来,这些就引出了数据探索。
数据探索是在具有较为良好的样本后,对样本数据进行解释性的分析工作,它是数据挖掘较为前期的部分。数据探索并不需要应用过多的模型算法,相反,它更偏重于定义数据的本质、描述数据的形态特征并解释数据的相关性。通过数据探索的结果,我们能够更好的开展后续的数据挖掘与数据建模工作。
许多人在定义或者理解数据探索的时候,会更多的联系到数据的前期调研、业务理解、数据抓取、数据清洗等过程。我可以理解这种说法,因为从宽了讲,数据探索其实可以贯穿整个数据分析与挖掘的框架。
但是,在我构建数据挖掘体系的时候,更希望能够将上面这些小过程一一切割出来,把他们单独放在框架定位、数据准备与样本抽取这些环节讲解,这样做能够避免数据探索这个点中覆盖的知识点太广泛扩散,不易提炼精华。所以,我这里探讨的数据探索方法,可能会与其他地方看到的有所不同。这是因为我将原本可以归属在数据探索中的知识分割出去了。
理解数据探索,就是理解如何描述数据本身的形态,理解通过数学上的数理统计方法与模型,来解释数据的表象特征与相关关系。
对所抽取的样本数据进行数据探索,审核和加工,是为了最终保证数据挖掘质量的方式。为使得未来的数据模型更加能够达到数据挖掘的目标
4.数据预处理
数据预处理是指在主要的处理以前对数据进行的一些处理操作。实际的数据极易受噪声、缺失值和不一致数据的侵扰,数据集过大时,并且多半来自多个异种数据源。低质量的数据将会导致低质量的挖掘结果。因此需要先进行数据预处理。数据预处理主要包括:数据筛选,数据变量转换,缺失值处理,数据优化,数据标准化,属性选择,主要成分分析,数据规则等。
而主要的和程序有关的其他数据预处理技术有均值移除,范围缩放,归-化,二值化,独热编码等。
5.建模
当样本抽取完毕并预处理后,接下来就要考虑,要用到那些算法进行模型构建。这是数据挖掘的核心。
四:数据挖掘建模工具
数据挖掘是一个不断重复的过程,主要是为了解决实际上的企业或者科研问题,只有和企业,和用户进行交流,不断地完善,处理数据,才能得到很不错的有高价值的数据。下面介绍一下常用的数据挖掘建模工具。
(1) SAS Enterprise Miner
Enterprise Mincr(EM)是SAS推出的一个集成的数据挖掘系统,允许使用和比较不 同的技术 。同时还集成了复杂的数据库管理软件 。它的运行方式是通过在一个工作空间 (workspace)中按照一定的顺序添加各种可以实现不同功能的节点,然后对不同节点进行相 应的设置,最后运行整个工作流程(workflow),便可以得到相应的结果。
(2) IBM SPSS Modeler
IBM SPSS Modeler原名Clemen丨inc, 2009年被IBM公司收购后对产品的性能和功能 进行大幅度改进和提升。它封装最先进的统计学和数据挖掘技术来获得预测知识,并 将相应的决策方案部署到现有的业务系统和业务过程中,从而提高企业的效益。IBM SPSS Modeler拥有直观的操作界面,自动化的数据准备和成熟的预测分析模切,结合商业技术外 以快速建立预测性模型。
(3) SQL Server
Microsoft公司的 SQL Server 中集成广数挖掘约组件---Analysis Servers,借助 SQL Server的数据库管理功能,可以无缝地集成在SQL Server数据库中。在SQL Server 2008中提供了 决策树货法、聚类分析W法、Naive Bayes 法、关联规则算法、时序算法、神经网络算法、 线性回归算法等9种常用的数据挖掘算法。但是,预测建模的实现是基于SQL Server平台的,平台移植性相对较差。
(4) Python
Python(Matrix Laboratory,矩阵实验室)是美国Mathworks公司开发的应用软件,具备强大的科学及工程计算能力,它具行以矩阵计算为基础的强大数学计算能力和分析功 能,而且还具有丰富的可视化图形表现功能和方便的程序设计能力。Python并不提供一个专 门的数据挖掘环境 ,但是它提供非常多的相关算法的实现函数,是学习和开发数据挖掘算法的很好选择。
(5) WBKA
WEKA ( Waikato Environment for Knowledge Analysis)足一款知名度较高的开源机器学 习和数椐挖掘软件。高级用户可以通过Java编程和命令行来调用其分析绀件。同时, WBKA也为普通用户提供了图形化界面,称为WEKA Knowledge Flow Environment和WEKA Explorer, 可以实现预处理、分类、聚类、关联规则、文本挖掘、可视化等。
(6) KNIME
ICNIME 是基于Java开发的,可以 扩展使用Weka中的挖掘算法。KNIME采用类似数据流(data flow)的方式来建立分析挖掘 流程。挖掘流程由一系列功能许点组成,每个节点苻输入/输出端口,用于接收数据或模型,导出结果。
(7) RapidMiner
RapidMiner 也称为 YALE,提 供图形化界面,采用类似Windows资源管理器中的树状结构来组织分析组件,树上每个节点 表示不同的运算符(operator)。YALE中提供了大量的运算符,包括数据处理、变换、探索、 建模、评估等各个环节。YALE是用Java开发的,基于Weka来构迮,可以调用Weka中的 各种分析组件。RapidMiner拓展的套件Radoop,可以和Hadoop集成起来,在Hadoop集 群上运行任务。
(8) TipDM
TipDM (顶尖数据挖掘平台 ) 使用Java语言开发,能从各种数据源获取数据,建立多种 数椐挖掘模塑。 TipDM目前已集成数十种预测算法和分析技术,基本薄盖了国外主流挖掘系 统支持的算法。TipDM支持数据挖掘流程所需的主要过程:数据探索(相关性分析、主成分 分析、周期性分析);数据预处理(属性选择、特征提取、坏数据处理、空值处理);预测违 模(参数设置、交叉验证、模型训练、模型验证、模型预测)聚类分析、关联规则挖掘等一 系列功能。