由于数据挖掘技术在各领域产生的巨大商业价值,一些著名的大学和国际知名公司纷纷投入数据挖掘工具的研发中,开发出很多优秀的数据挖掘工具。数据挖掘工具 [12] 可分为商用工具和开源工具。
商用工具主要由商用的开发商提供,通过市场销售,并提供相关服务。商用工具不仅提供易用的可视化界面,还集成数据处理、建模、评估等一整套功能,并支持常用的数据挖掘算法。与开源工具相比,商用工具功能更强大,软件性能更成熟和稳定。主流的商用工具有SAS Enterprise Miner、Clementine、Intelligent Miner等,这些工具在各行业的数据统计和数据挖掘工作中得到了广泛的应用。
1.SAS Enterprise Miner
SAS Enterprise Miner是一种通用的数据挖掘工具,按照SAS定义的数据挖掘方法——SEMMA方法,即抽样(Sample)、探索(Explore)、修改(Modify)、建模(Model)、评价(Assess)的方式进行数据挖掘。它把统计分析系统和图形用户界面(GUI)集成起来,为用户提供了用于建模的图形化流程处理环境,可利用具有明确代表意义的图形化模块将数据挖掘的工具单元组成一个处理流程图,并以此来组织数据挖掘过程。图形化的界面、可视化的操作,使统计学无经验的用户也可以理解和使用它;但对于有经验的专家,它也可让用户精细地调整分析处理过程。它支持并提供一组常用的数据挖掘算法,包括决策树、神经网络、回归、关联、聚类等,还支持文本挖掘。
2.Clementine
Clementine是SPSS公司开发的数据挖掘工具,支持整个数据挖掘过程,即从数据获取、转化、建模、评估到最终部署的全部过程,还支持数据挖掘的行业标准CRISP-DM。
Clementine结合了多种图形使用接口的分析技术,不仅具有分析功能,还能够提供可使用的、简单的、可视化程序环境。Clementine资料读取能力强大,支持多种数据源的读取,而且为用户提供大量的人工智能、统计分析的模型(神经网络、聚类分析、关联分析、因子分析等)。Clementine是采用客户/服务器架构的产品,既可以单机运行,也可以连接网络上的Clementine Server。
Clementine的设计思想是用简单的方式进行数据挖掘,尽量屏蔽数据挖掘算法的复杂性及软件操作的烦琐性,使数据挖掘人员将更多的精力放在使用先进的挖掘技术解决商业问题而不是放在操作软件本身。
3.Intelligent Miner
IBM的Intelligent Miner包含广泛的数据挖掘技术及算法,可容纳相当大的数据量且有强大的计算能力。它在IBM SP的并行处理计算机系统上执行效率最高,也可以在IBM或非IBM平台上执行。丰富的API可用来开发数据挖掘应用软件,可通过C函数库来存取所有数据挖掘引擎和操作函数。它包含多种统计方法和挖掘算法,可以进行线性回归、因子分析、主变量分析、分类、分群、关联、相似序列、序列模式、预测等。
Intelligent Miner包括分析软件工具Intelligent Miner for Data和Intelligent Miner for Text,不仅可以寻找传统文件、数据库、数据仓库和数据中心中的隐含信息,还允许企业从文本信息中获取有价值的客户信息。
4.QUEST
QUEST是IBM公司Almaden研究中心开发的一个多任务数据挖掘系统,该系统提供了高效的数据开采基本构件,可用于新一代决策支持系统的应用开发。
QUEST提供了专门在大型数据库上进行各种开采的功能,包括关联规则发现、序列模式发现、时间序列聚类、决策树分类、递增式主动开采等。各种开采算法可适用于任意大小的数据库,并具有近似线性的计算复杂度。
开源工具,意为向公众开放源代码的软件工具,其最大的优势在于免费。研制开源软件的技术人员相信软件应该是开放的,让任何有能力的人参与并共同完善软件,能集思广益,并使得软件更新速度更快。除了商业数据挖掘软件,市场上也出现了一批优秀的开源数据挖掘软件,它们在数据挖掘方面同样具有自己的特点和优势。相对于商业工具,开源工具更容易学习和掌握,缺乏数理统计知识的人也能使用。
1.R
R是用于统计分析和图形化的计算机语言及分析工具,提供了丰富的统计分析和数据挖掘功能,其核心模块是用C、C++和Fortran编写的。为了便于使用,它提供了一种脚本语言,即R语言。R语言以S语言环境为基础。R [13] 支持一系列分析技术,包括统计检验、预测建模、数据可视化等。在CRAN上可以找到众多开源的扩展包。
R是一套完整的数据处理、计算和制图软件系统,其功能包括:数据存储和处理系统;数组运算工具(向量、矩阵运算方面的功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便且强大的编程语言;可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。R的思想是:它可以提供一些集成的统计工具,但更主要的是它提供各种数学计算、统计计算的函数,从而让使用者能灵活机动地进行数据分析,甚至创造出符合需要的新的统计计算方法。
2.Python
Python是一种功能强大的、开源的、解释性的、面向对象计算机的编程语言,内建有各种高级数据结构,支持模块和包,支持多种平台并可扩展。Python语言简洁、易学习、易阅读,能降低程序的维护费用,已经成为很多用户欢迎的、用途广泛的语言。
Python是人工智能研究领域中一个非常重要的工具,提供sklearn第三方程序库,对一些常用的机器学习方法进行了封装,只需要调用sklearn模块中的函数就可以实现大多数机器学习任务,包括分类、回归、聚类、数据降维、数据预处理等。
Python在科学计算和数据分析领域占据着越来越重要的地位,提供了NumPy、SciPy、Matplotlib和Pandas等众多第三方程序库,只需要调用以上程序库中的函数就可以实现大多数数据分析和数据计算功能,以及实现数据可视化。相对于R语言,Python语言更平易近人,它能完成数据统计、分析、可视化等任务,满足几乎所有数据挖掘下所需要的数据处理、统计模型和图表绘制等功能需求。
3.WEKA
WEKA(Waikato Environment for Knowledge Analysis,怀卡托智能分析环境)是一款免费的、非商业化的数据挖掘软件,是基于Java环境下开源的机器学习和数据挖掘软件。WEKA作为一个公开的数据挖掘工作平台,集成大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理、分类、回归、聚类、关联规则,以及交互式界面上的可视化。
WEKA可能是名气最大的开源机器学习和数据挖掘软件。高级用户可以通过Java编程和命令行来调用其分析组件,同时它也为普通用户提供了图形化界面。使用WEKA可以轻松地进行数据挖掘,可以在数据集上进行数据预处理和运用数据挖掘算法。
WEKA的灵活性和可扩展性很好,允许开发和扩展新的挖掘算法。WEKA提供了文档全面的Java函数和类库,非常适合扩展。当然,首先需要充分了解WEKA的架构,并掌握Java编程技术。
4.RapidMiner
RapidMiner原名YALE(Yet Another Learning Environment),是用于数据挖掘、机器学习、商业预测分析的开源计算环境。它提供了图形用户界面,采用了类似Windows资源管理器中的树状结构来组织分析组件,树上每个节点表示不同的运算符。YALE提供了大量的运算符,包括数据处理、变换、探索、建模、评估等各个环节。这些算子由详细的XML文件进行记录,并通过图形用户界面表现出来。
RapidMiner提供的数据挖掘和机器学习程序包括数据加载和转换(ETL)、数据预处理和可视化、建模、评估和部署。数据挖掘的流程以XML文件加以描述,并通过图形用户界面显示出来。
RapidMiner是由Java编程语言编写的,集成了WEKA的学习器和评估方法,并可以与R语言进行协同工作。
5.Mahout
Mahout是Apache Software Foundation(ASF)旗下的一个开源项目,在机器学习领域提供了一些可扩展的经典算法的实现和数据挖掘的程序库。它可以实现很多功能,包括聚类、分类、推荐过滤、频繁子项挖掘等。Mahout的算法既可以在单机上运行,也可以在Hadoop平台上运行。Mahout通过将机器学习算法建于MapReduce并行计算模型之上,并将算法的输入、输出和中间结果构建于HDFS分布式文件系统之上,使得Mahout具有高吞吐、高并发、高可靠性的特点,这就保证了其适合于大规模数据的机器学习。目前,Mahout已经停止接受新的MapReduce算法,改为支持基于Spark和H 2 O平台的算法。Mahout实现的机器学习算法包括聚类算法、分类算法、关联规则挖掘、回归、降维、进化算法、过滤、向量相似度计算等。
6.Spark MLlib
Spark是一个开源集群运算框架,最初是由加州大学伯克利分校AMPLab实验室所开发的。Spark和MapReduce同为主流大数据处理系统,但它使用了内存内运算技术,比MapReduce程序运行性能要好10~100倍,且编程更为方便,支持SQL查询、流式查询,自带机器学习算法实现库MLlib,提供Java、Scala、Python、R等多种语言的API接口,并且兼容HBase、HDFS等Hadoop数据源,使得原来基于Hadoop的大数据应用系统可以很容易地迁移到Spark上,从而受到广大开发者的热捧。
MLlib(Machine Learning lib)是Spark中的一个可扩展的机器学习库,由通用的学习算法和工具组成,包括分类、线性回归、聚类、协同过滤、梯度下降及底层优化原语。MLlib专为在集群上并行运行而设计,只包含能够在集群上运行良好的并行算法,因此MLlib中的每个算法都适用于大规模数据集。