数据挖掘-WAKA实验报告1数据挖掘-WAKA实验报告数据挖掘-WAKA实验报告2一、WEKA软件简介在我所从事的证券行业中,存在着海量的信息和数据,但是这些数据日常知识发挥了一小部分的作用,其包含了大量的隐性的信息并不为所用,但是却可以为一些公司的决策和对客户的服务提供不小的价值。因此,我们可以通过一些数据采集、数据挖掘来获得潜在的有价值的信息。数据挖掘就是通过分析存在于数据库里的数据来解决问题。在数据挖掘中计算机以电子化的形式存储数据,并且能自动的查询数据,通过关联规则、分类于回归、聚类分析等算法对数据进行一系列的处理,寻找和描述数据里的结构模式,进而挖掘出潜在的有用的信息。数据挖掘就是通过分析存在于数据库里的数据来解决问题。WEKA的出现让我们把数据挖掘无需编程即可轻松搞定。WEKA是由新西兰怀卡托大学开发的开源项目,全名是怀卡托智能分析环境(WaikatoEnvironmentforKnowledgeAnalysis)。WEKA是由JAVA编写的,它的源代码可通过得到,并且限制在GBU通用公众证书的条件下发布,可以运行在所有的操作系统中。是一款免费的,非商业化的机器学习以及数据挖掘软件WEKA作为一个公开的数据挖掘工作平台,集合了大量能承担数据挖掘任务的机器学习算法,包括对数据进行预处理,分类,回归、聚类、关联规则以及在新的交互式界面上的可视化。如果想自己实现数据挖掘算法的话,可以看一看WEKA的接口文档。在WEKA中集成自己的算法甚至借鉴它的方法自己实现可视化工具并不是件很困难的事情。安装WEKA也十分简单,首相要下载安装JDK环境,JDK在这个页面可以找到它的下载。点击JDK6之后的Download按钮,转到下载页面。选择Accepct,过一会儿页面会刷新。我们需要的是这个WindowsOfflineInstallation,Multi-languagejdk-6-windows-i586.exe53.16MB,点击它下载。也可以右键点击它上面的链接,在Flashget等工具中下载。安装它和一般软件没什么区别。不过中间会中断一下提示你安装JRE,一并装上即可。之后就是安装WEKA软件,这个在网上很多地方都有。同样简单地按默认方法安装后即可使用。点击启动运行WEKA软件后,我门发现WEKA存储数据的格式是ARFF数据挖掘-WAKA实验报告3(Attribute-RelationFileFormat)文件,这是一种ASCII文本文件。我们如图1通过软件的Tools菜单进入ArffViewer可以在安装目录下查看软件自带的几个ARFF文件。图1图2数据挖掘-WAKA实验报告4如图2,打开文件后选择data自目录下的任意一张表,我们都可以看到如图3所示的二维表格存储在如下的ARFF文件中。这也就是WEKA自带的“contact-lenses.arff”文件。这里我们要介绍一下WEKA中的术语。表格里的一个横行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录。竖行称作一个属性(Attrbute),相当于统计学中的一个变量,或者数据库中的一个字段。这样一个表格,或者叫数据集,在WEKA看来,呈现了属性之间的一种关系(Relation)。图1中一共有22个实例,5个属性,关系名称为“contact-lenses”。除了ARFF格式,WEKA还支持另外一种常见格式,CSV格式。CSV同样是一种二进制保存的文本格式,我们可以在WEKA中直接打开CSV格式的文件,并保存为ARFF格式。这样就给我提供了把常见的数据格式转换为ARFF格式的方法,如对于Excel文件,我们可以通过把每张表保存为CSV格式,进而保存为ARFF格式,与此同时,我们可以利用filter对数据进行相应的预处理。而对于Matlab格式的数据,我们可以通过命令csvwrite把数据转化成CSV格式的文件,进而转化为ARFF格式文件。对于海量数据,一般保存在数据库中,WEKA同时支持JDBC访问数据库。图3数据挖掘-WAKA实验报告5打开WEKA,首先出现一个命令行窗口。原以为要在这个命令行下写java语句呢,不过稍等一秒,WEKAGUIChooser的出现了。这是一个很简单的窗体,提供四个按钮:SimpleCLI、Explorer、Experimenter、KnowledgeFlow。SimpleCLI应该是一个使用命令行的界面,有点像SAS的编辑器;Explorer是则是视窗模式下的数据挖掘工具;Experimenter和KnowledgeFlow的使用有待进一步摸索....图4(1)Explorer使用WEKA探索数据的环境。在这个环境中,WEKA提供了数据的预处理,数据格式的转化(从CSV格式到ARFF格式的转化),各种数据挖掘算法(包括分类与回归算法,聚类算法,关联规则等),并提供了结果的可视化工具。对于一个数据集,通过简单的数据的预处理,并对数据挖掘算法进行选择(在WEKA3.5版本之后,加入了算法的过滤功能,可以过滤掉那些不适合当前数据集类型的算法),接着通过窗口界面对算法的参数进行配置。可视化工具分为对数据集的可视化和对部分结果的可视化,并且我们可以通过属性选择工具(SelectAttribute),通过搜索数据集中所有属性的可能组合,找出预测效果最好的那一组属性。Explorer是普通用户最常用的一个界面。用户可以从ARFF文件(Weka使用的一种文本文件格式)、网页或数据库中读取数据集。打开数据文件后,可以选择算法对数据进行预处理。这时窗体上给出了这个数据集的一些基本特征,如含有多少属性,各属性的一些简单统计量,右下方还给出一些可视化效果图。这些都是比较直观的分析,如果想发现隐藏在数据集背后的关系,还需要选择Weka数据挖掘-WAKA实验报告6提供的各种分类、聚类或关联规则的算法。所有设置完成后,点击Start按钮,就可以安心地等待weka带来最终的结果。哪些结果是真正有用的还要靠经验来判断。(2)Experimenter运行算法试验、管理算法方案之间的统计检验的环境。Experiment环境可以让用户创建,运行,修改和分析算法试验,这也许比单独的分析各个算法更加方便。例如,用户可创建一次试验,在一系列数据集上运行多个算法(schemes),然后分析结果以判断是否某个算法比其他算法(在统计意义下)更好。Explorermenter主要包括简单模式,复杂模式和远程模式。复杂模式是对简单模式的基本功能的扩充,而远程模式允许我们通过分布式的方法进行实验。就功能模块而言,分为设置模块,运行模块和分析模块。在设置模块中我们可以自定义实验,加入多个算法和多方的源数据(支持ARFF文件,CSV文件和数据库),在运行模块中我们可以运行我们的实验,而在分析模块中,我们可以分析各种算法的的准确性,并提供了各种统计方法对结果进行检验比较。值得一提的是,我们可以把实验的各种参数,包括算法,数据集等,保存以方便下一次相同实验的进行;也可以把各种算法保存,方便应用在不同的数据集上;如果数据集来源于数据库的话,实验在过程中可以中止并继续(原因可以是被中止或者是扩展了实验),这样就不用重新运行那些已实验过的算法/数据集祝贺,而仅计算还没有被实验的那些。(2)KnowledgeFlowExplorer的一个不足在于,当用户打开一个数据集时,所有数据将全部被读入到主存当中,随着任务规模的增大,普通配置的计算机很难满足要求。KnowledgeFlow提供了一个用于处理大型数据集的递增算法,专门处理这一问题。这个环境本质上和Explorer所支持的功能是一样的,但是它有一个可以拖放的界面。它有一个优势,就是支持增量学习(incrementallearning)。KnowledgeFlow为WEKA提供了一个"数据流"形式的界面。用户可以从一个工具栏中选择组件,把它们放置在面板上并按一定的顺序连接起来,这样组成一个"知识流"(knowledgeflow)来处理和分析数据。目前,所有的WEKA分类器(classifier)、筛选器(filter)、聚类器(clusterer)、载入器(loader)、保数据挖掘-WAKA实验报告7存器(saver),以及一些其他的功能可以在KnowledgeFlow中使用。KnowledgeFlow可以使用增量模式(incrementally)或者批量模式(inbatches)来处理数据(Explorer只能使用批量模式)。当然对数据进行增量学习要求分类器能够根据各实例逐个逐个的更新.现在WEKA中有五个分类器能够增量地处理数据:NaiveBayesUpdateable,IB1,IBk,LWR(局部加权回归)。还有一个meta分类器RacedIncrementalLogitBoost可以使用任意基于回归的学习器来增量地学习离散的分类任务。(4)SimpleCLI提供了一个简单的命令行界面,能通过键入文本命令的方式来实现其他三个用户界面所提供的所有功能,从而可以在没有自带命令行的操作系统中直接执行WEKA命令。使用命令行有两个好处:一个是可以把模型保存下来,这样有新的待预测数据出现时,不用每次重新建模,直接应用保存好的模型即可。另一个是对预测结果给出了置信度,我们可以有选择的采纳预测结果,例如,只考虑那些置信度在85%以上的结果。二、实验案例介绍本文用WEKA软件作为工具,结合券商的基金某一个时段交易业务数据进行分析。实验的数据是一个交易周的基金交易业务数据。该表含有date(日期)、fund_code(基金代码)、fund_name(基金名称)、company_code(基金公司代码)、company(基金公司名称)、business_code(业务代码)、business_name(业务名称)、shares(基金份额)、balance(资金金额)、fares(手续费)、fares_type(手续费类型)、internet_shares(网上交易基金份额)、internet_balance(网上交易资金金额)、remark(备注)等字段,通过实验,希望能找出客户的基金交易分布情况。该数据的数据属性如下:date(numeric),交易发生日期;fund_code(numeric),基金代码;fund_name(character),基金名称;company_code(numeric),用于报送的基金公司代码;数据挖掘-WAKA实验报告8company(character),所属的基金公司;business_code(numeric),交易业务代码;business_name(character),交易业务名称;shares(numeric),基金交易份额;balance(numeric),资金交易金额;fares(numeric),交易手续费;fares_type(enum),手续费类型,取值范围“全额结算”/“净额结算”;internet_shares(numeric),网上交易基金份额;internet_balance(numeric),网上交易资金金额;remark(character),备注;三、数据分析我们给出一个CSV文件的例子(Fund-data.csv)。用UltraEdit打开它可以看到,这种格式也是一种逗号分割数据的文本文件,储存了一个二维表格。Excel的XLS文件可以让多个二维表格放到不同的工作表(Sheet)中,我们只能把每个工作表存成不同的CSV文件。打开一个XLS文件并切换到需要转换的工作表,另存为CSV类型,点“确定”、“是”忽略提示即可完成操作。需要注意的是,Matllab给出的CSV文件往往没有属性名(Excel给出的也有可能没有)。而WEKA必须从CSV文件的第一行读取属性名,否则就会