数据分析与挖掘,指的是通过对大量的数据进行观察与分析。发掘其中的未知的,潜在的、对决策有价值的关系、模式和趋势,并利用这些规则建立决策模型、提供预测性支持的方法和过程。
作为一名大数据开发工程师,什么能力才是我们我们的核心竞争力,答案是肯定的,那就是数据分析与挖掘。只有让数据产生价值才是数据开发工程师的职责。下面我将从几个方面介绍数据挖掘:
1.数据挖掘的基本任务
数据挖据的基本任务包括利用分类与预测、聚类分析、关联规则、时序模式、偏差检验、智能推荐等方法,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。
2.数据挖掘的过程
2.1 定义数据挖掘目标
针对具体的数据挖掘需求,我们首先要做的就是明确本次数据挖掘的目标是什么?预期达到怎样的效果?因此我们在进行数据挖掘工作前,必须先了解项目相关背景知识,弄清用户的需求。比如某电商平台的数据挖掘应用,可定义一下数据挖掘目标:
(1) 分析挖掘用户数据,建立用户画像与物品画像等
(2) 基于用户画像实现动态商品智能推荐,帮助用户快速发现自己感兴趣的商品,同时确保给用户推荐的也是企业所期望的,实现用户与企业的双赢。
(3) 对平台客户进行群体细分,了解不同客户的贡献度与消费特征,分析哪些客户是最有价值的,哪些是需要重点的,对不同价值的客户采取不同的营销策略,将有限的资源投放到最有价值的客户身上,实现精准化营销。
(4) 基于商品的历史销售情况,综合节假日、气候和竞争对手等影响因素,对商品销售量进行趋势预测,方便企业准备库存。
2.2 数据抽样
在明确了数据挖掘的目标后,接下来要做的工作就是抽取企业的数据挖掘库中的数据子集,随着现在大数据技术的发展,也有很多企业进行全量数据的抽取,不过为了数据挖掘的效率,可以选择抽样使用数据,节省系统资源。抽样有很多的方法:比如随机抽样、等距抽样、分层抽样、分类抽样等。
2.3 数据预处理
当采集的数据维度过大,如何进行降维处理、缺失值处理等都是数据预处理过程中要解决的问题。如何对数据进行预处理以改善数据质量,并最终达到完善数据挖掘结果。目前数据预处理一般包括:数据筛选、数据质量转换、缺失值处理、坏数据处理、数据标准化、数据规约等。
2.4 挖掘建模
数据挖掘建模是数据挖掘的核心工作,选择哪种算法进行模型构建?在生成最终的数据集后,就可以在此基础上建立模型来进行聚类分析了。建立模型阶段主要是选择和应用各种建模技术,同时对它们的参数进行校准以达到最优值。在明确建模技术和算法后需要确定模型参数和输入变量。模型参数包括类的个数和最大迭代步数等。在建模过程中,我们采用多种技术手段,并将建模效果进行对比。需要挑选合适的变量参与建模。参与建模的变量太多会削弱主要业务属性的影响,并给理解分群结果带来困难;变量太少则不能全面覆盖需要考察的各方面属性,可能会遗漏一些重要的属性关系。输入变量的选择对建立满意的模型至关重要。
建立模型是一个螺旋上升,不断优化的过程,在每一次聚类结束后,需要判断聚类结果在业务上是否有意义,其各群特征是否明显。如果结果不理想,则需要调整聚类模型,对模型进行优化,称之为聚类优化。聚类优化可通过调整聚类个数及调整聚类变量输入来实现,也可以通过多次运行,选择满意的结果。通常可以依据以下原则判断聚类结果是否理想:类间特征差异是否明显;群内特征是否相似;聚类结果是否易于管理及是否具有业务指导意义。
2.5 模型评价
建模的过程中会得到一系列的分析结果,它们是对目标问题多侧面的描述,这时需要对它们进行验证和评价,以得到合理的,完备的决策信息。对产生的模型结果需要进行对比验证、准确度验证、支持度验证等检验以确定模型的价值。在这个阶段需要引入更多层面和背景的用户进行测试和验证,通过对几种模型的综合比较,产生最后的优化模型。根据业务对模型进行解释应用,不同的模型的评价方法往往也不同。
3.常用的数据挖据建模工具
3.1 SAS Enterprise Miner
Enterprise Miner(EM)是SAS提供的一个图形化界面、菜单驱动的、拖拉式操作、对用户非常友好且功能非常强大的集成的数据挖掘系统。它集成了:
(1) 数据获取工具
(2) 数据抽样工具
(3) 数据筛选工具
(4) 数据变量转换工具
(5) 数据挖据数据库
(6) 数据挖掘过程
(7) 多种形式的回归工具
(8) 为建立决策树的数据剖分工具
(9) 决策树浏览工具
(10) 人工神经元网络
(11) 数据挖据的评价工具
在SAS/EM中,可利用具有明确代表意义的图形化的模块将这些数据挖掘工具单元组成一个数据流程图,并以此来组织你的数据挖掘过程。对于有经验的数据挖掘专家,SAS/EM提供大量的选项,可让有经验的数据分析人员进行精细化调整分析处理。
3.2 IBM SPSS Modeler
IBM SPSS Modeler原名Clementine,2009年被IBM收购以后对产品进行性能和功能进行了大幅度的改进和提升,几乎一年一个版本。它封装了了先进的统计学和数据挖掘技术来获取预测分析。SPSS Modeler提供图形化的界面,屏蔽了数据挖据算法的复杂性和操作的繁琐,让使用者只需要聚焦如何使用数据挖掘技术去解决实际的商业问题。
3.3 Python
Python是一种面向对象、解释型的计算机程序设计语言,它拥有高效的数据结构,能简单的进行面向对象的编程。python本身不提供数据挖掘环境,但是python它有各种数据挖掘的扩展库。比如比较常见的有:Numpy、Scipy、Matplotlib等,他们分别为Python提供快速数组处理、科学计算以及绘图的能力,在用到机器学习和人工神经网络时,我们会用到SKlearn库和Keras库,它提供了完善的机器学习工具箱,包括:数据的预处理、分析、回归、预测、模型分析等。正是由于有了这些扩展库,python才是数据分析与挖据常用的语言。
3.4 SQL Server
微软公司的SQL Server中集成了数据挖掘组件--Analysis Servers,借助于SQL Server数据库管理功能可以很好的集成在SQL Servers中,SQL Server 2008中提供很多数据挖掘算法,比如:决策树算法、聚类分析算法、Native Bayes算法、关联规则算法等9种算法。但是这些模型的建立都依赖与SQL Server平台,所以平台移植性比较差。
3.5 RapidMiner
RapidMiner也成为YALE,提供图形化的操作界面,采用树状结构来组织分析组件,树上每个节点表示不同的运算符。RapidMiner中提供了大量的运算符,包括数据预处理、变换、建模、评估等各个环节。RapidMiner是基于Java开发的,基于Weka来构建的,所以Yale可以调用Weka中的组件,Yale中还提供扩展套件Radoop,可以和Hadoop结合起来用,在Hadoop集群中运行任务。
3.6 Weka
Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品--Clementine )的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data mining)软件。它和它的源代码可在其官方网站下载。有趣的是,该软件的缩写WEKA也是New Zealand独有的一种鸟名,而Weka的主要开发者同时恰好来自New Zealand的the University of Waikato。WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。跟很多电子表格或数据分析软件一样,WEKA所处理的数据集是一个二维的表格。
3.7 Knime
KNIME是一个基于Eclipse平台开发,模块化的数据挖掘系统。它能够让用户可视化创建数据流(也就常说的pipeline),选择性的执行部分或所有分解步骤,然后通过数据和模型上的交互式视图研究执行后的结果。可以扩展使用Weka中的算法,同时Knime也提供基于数据流的方式来组织数据挖掘过程,每个节点都有数据的输入/输出端口,用接收或输出计算结果。
3.8 TipDM
TipDM(顶尖大数据挖掘平台)使用Java语言开发,能从各种数据源获取数据,构建数据挖掘模型。TipDM目前已经集成了数十种预测算法和分析技术,支持数据挖掘流程所需要的主要过程,并提供开发的应用接口和算法,能够满足各种复杂的应用需求。
4.数加平台
数加平台是阿里云提供的数据处理管理平台,平台提供了各种模块:机器学习、推荐引擎、数据可视化(Datav)等,数加平台为DT时代的大数据处理的强力引擎。平台屏蔽了数据分析与挖掘过程中的复杂性,以图像化的界面构建数据处理流程,让大数据处理工程师只要专注于数据挖掘的分析过程。
数加平台是基于阿里云的ODPS平台,所以具有强大的数据处理能力,各种计算引擎和工具相互结合在一起形成数加生态体系,就开源的Hadoop生态体系一样。
数加的生态体系组成如下: