3.1 知识流介绍
单击Weka GUI选择器窗口中的KnowledgeFlow按钮,即可启动如图3.1所示的知识流界面。
图3.1 知识流界面
图3.1所示为更新后的知识流界面,与Weka 3.7.4以前的版本有所不同。单击知识流界面右上角工具栏中的按钮,可以查看最新的帮助文档。
3.1.1 知识流特性
知识流界面提供了探索者界面的一个替代品,它是Weka核心算法的图形化前端,为Weka提供了一个“数据流”接口。用户可以从设计面板中选择Weka组件,放置在布局区域,并把它们连接起来形成一个供处理和分析数据的“知识流”。目前,Weka所有的分类器、过滤器、聚类器、加载器和保存器等,以及一些额外的工具,都可以在知识流中使用。
知识流能以增量方式或批量方式处理数据,而探索者仅能处理批量数据。当然,增量方式从流式数据中学习,需要分类器能够基于一个实例一个实例地进行更新。可以增量方式处理数据的学习方案有NaiveBayesUpdateable、IBk、LWR(Locally Weighted Regression,局部加权回归)、SGD、SPegasos、Cobweb和RacedIncrementalLogitBoost等。
知识流的特性如下。
(1)直观的数据流程风格的布局。
(2)批量或增量方式处理数据。
(3)处理多批次或并行处理流式数据,即每个单独的数据流都在自己的线程中执行。也可以由用户指定顺序,按顺序执行多个数据流。
(4)将过滤器串成链。
(5)观察由分类器产生的、使用交叉验证方式的每个折的模型。
(6)在处理过程中,可视化增量分类器的性能。提供分类精度、RMS误差、预测等的滚动散点图。
(7)通过视角(Perspectives)插件,访问其他非基于流的功能(如3D数据可视化、时间序列预测环境等)。
3.1.2 知识流界面布局
知识流界面可分为以下五个部分。
1.视角工具栏
视角(Perspectives)工具栏位于知识流界面的顶部。视角是管理知识流用户界面的环境,它提供主要的附加功能。许多视角都可以对实例集进行操作,通过将DataSource(数据源)组件放到布局区域,进行配置,然后右击该组件,在弹出的快捷菜单中选择Send to perspective(发送给视角)菜单项,可将实例发送给视角。知识流界面内建了几个视角,可通过包管理器安装其他的视角。
第一次单击位于知识流界面顶部的按钮时,会弹出如图3.2所示的Perspective information(视角信息)对话框,其中显示了一些视角的说明信息,如果不想再次看到该提示,可以选中Do not show this message again复选框,然后单击“确定”按钮。此时会弹出如图3.3所示的Manage Perspectives(管理视角)对话框。
图3.2 Perspective information对话框
图3.3 Manage Perspectives对话框
知识流自带三个视角:Attribute summary(属性概要)、SQL Viewer(SQL查看器)和Scatter plot matrix(散点图矩阵)。Manage Perspectives对话框上部有四个按钮,单击All按钮选中全部;单击None按钮全部取消选中;单击Invert按钮反选;单击Pattern按钮使用Perl正则表达式指定要选中的视角,例如,“.*matrix”选择满足属性名称以字符串matrix结束的全部视角。Manage Perspectives对话框下部有两个按钮,单击OK按钮确认选中的操作,单击Cancel按钮放弃操作。
如果单击All按钮,然后再单击OK按钮,会发现知识流界面顶部多出了三个标签页,如图3.4所示。
图3.4 多个视角标签
2.工具栏
工具栏位于视角工具栏下方,分为左、右两个部分,如图3.5所示。
图3.5 工具栏
左边的工具栏与知识流运行相关,只有四个按钮,其功能分别为:选择光标、运行本数据流(并行启动全部开始节点)、运行本数据流(顺序启动开始节点)、停止全部执行。
右边的工具栏与编辑操作相关,有18个按钮,其功能分别为:放大(Ctrl++)、缩小(Ctrl+-)、选择全部(Ctrl+A)、成组选择(Ctrl+Z)、剪切所选(Ctrl+X)、复制所选(Ctrl+C)、删除所选(DEL)、从剪贴板粘贴(Ctrl+V)、撤销(Ctrl+U)、在布局中添加注释(Ctrl+I)、对齐到网格、新建布局(Ctrl+N)、保存布局(Ctrl+S)、使用新名称保存布局、加载布局(Ctrl+O)、加载布局模板、显示/隐藏视角工具栏(Ctrl+P)和显示帮助(Ctrl+H)。
3.设计面板
设计(Desigh)面板位于知识流界面左部,其中列示了全部可用的Weka组件,用户可从中选择某个组件并将其放置在布局区域。知识流可用的组件按功能分为九个大类,下面简单叙述各组件的功能,详细配置信息参见3.2节。
(1)DataSources(数据源):全部可用的Weka加载器。
(2)DataSinks(数据接收器):全部可用的Weka保存器。
(3)Filters(过滤器):全部可用的Weka过滤器。
(4)Classifiers(分类器):全部可用的Weka分类器。
(5)Clusterers(聚类器):全部可用的Weka聚类器。
(6)Associations(关联器):全部可用的Weka关联器。
(7)Evaluation(评估器):可用的评估器如下。
● TrainingSetMaker:将数据集转换为训练集。
● TestSetMaker:将数据集转换为测试集。
● CrossValidationFoldMaker:将任意数据集、训练集或测试集分割为交叉验证的折。
● TrainTestSplitMaker:将任意数据集、训练集或测试集分割为训练集或测试集。
● ClassAssigner:对于任意的数据集、训练集或测试集,指定一列作为类别属性。
● ClassValuePicker:选择一个视为正例的类别标签值。生成ROC风格的曲线数据时,需要使用该组件。
● ClassifierPerformanceEvaluator:评估分类器批量训练及测试的性能。
● IncrementalClassifierEvaluator:评估分类器增量训练的性能。
● ClustererPerformanceEvaluator:评估聚类器批量训练及测试的性能。
● PredictionAppender:在测试集中追加分类器的预测。对于离散类别的问题,可以追加预测类别标签或概率分布。
● SerializedModelSaver:将封装在batchClassifier、incrementalClassifier或batchClusterer中的分类器或聚类器保存为文件,以便将来使用。
(8)Visualization(可视化器):可用的可视化器如下。
● DataVisualizer:运行知识流后,右击该组件,在弹出的快捷菜单中选择Show plot菜单项,会弹出Visualize窗口,用于以单个较大的二维散点图形式可视化输入的数据集、训练集或测试集。
● ScatterPlotMatrix:运行知识流后,右击该组件,在弹出的快捷菜单中选择Show plot菜单项,会弹出Visualize窗口,其中包含一个由小的散点图组成的矩阵,单击其中的小散点图会弹出一个较大的散点图。
● AttributeSummarizer:运行知识流后,右击该组件,在弹出的快捷菜单中选择Show summaries菜单项,会弹出Visualize窗口,其中包含直方图的矩阵,每个直方图对应输入数据中的一个属性。
● ModelPerformanceChart:运行知识流后,右击该组件,在弹出的快捷菜单中选择Show chart菜单项,会弹出Model Performance Chart窗口,用于可视化阈值(即ROC风格)曲线。
● CostBenefitAnalysis:运行知识流后,右击该组件,在弹出的快捷菜单中选择Show analysis菜单项,会弹出Cost/Benefit Analysis窗口,用于通过交互式地从预测类别的概率排名列表中选择不同的总体大小,或通过改变预测正例概率的阈值,来探索代价/收益权衡。可以显示累计增益曲线和代价/收益曲线。
● TextViewer:右击该组件,在弹出的快捷菜单中选择Show results菜单项,会弹出一个显示文本数据的窗口,可显示数据集、分类性能统计等。
● GraphViewer:运行知识流后,右击该组件,在弹出的快捷菜单中选择Show results菜单项,会弹出Graph Viewer窗口,其中包含记录运行结果的Graph list列表框,单击任意项会弹出一个用于可视化基于树的模型的窗口。
● StripChart:右击该组件,在弹出的快捷菜单中选择Show chart菜单项,会弹出Strip Chart窗口,显示带滚动条的数据散点图,用于查看增量分类器的在线性能。
● ImageSaver:该组件可以接受image连接,并将封装的图像保存到磁盘文件中。
● ImageViewer:该组件可以接受image连接,右击该组件,在弹出的快捷菜单中选择Show results菜单项,会弹出Image Viewer窗口,用于显示静态图像。
(9)Tools(工具):可用的工具如下。
● Sorter:根据用户指定的属性值,以升序或降序对传入的实例进行排序。
● SubstringLabeler:匹配String属性的子串,可以使用文本匹配,或者正则表达式匹配。
● SubstringReplacer:替换String属性的子串,可以使用文本匹配替换,或者使用正则表达式匹配替换。
(10)Flow(流):可用的流组件如下。
● Appender:追加多个传入数据为一个单一数据集。传入连接可以是全部实例连接,或者是面向所有批量的连接,即数据集、训练集和测试集。
● FlowByExpression:根据逻辑表达式的求值结果划分传入的实例(或实例流)。
● InstanceStreamToBatchMaker:将实例流转换为一个批量数据集。与水库抽样滤波器一并使用时很有用。
● Join:将两个输入数据集或实例流进行内连接(inner join)。注意,这里假设两个数据集都将关键字段按升序排序。
4.布局面板
布局面板用于完成数据流的设计工作。
5.状态/日志面板
状态/日志(Status/Log)面板位于知识流界面的右下部,以标签页的形式展现。Status(状态)标签页显示能让用户了解现在进行到哪一步的状态信息。Log(日志)标签页显示为一个多行文本框,显示在此次运行期间Weka所进行的全部活动以及每项活动的时间戳。