Weka 简明教程
Weka - Introduction
任何机器学习应用程序的基础都是数据——不仅仅是少量数据,而是大量数据,在当前术语中称为 Big Data 。
要训练机器分析大数据,您需要对数据进行多方面考虑 −
-
数据必须干净。
-
其中不应包含空值。
此外,数据表中并非所有列都对您尝试实现的分析类型有用。在将数据输入机器学习算法之前,必须删除无关数据列或机器学习术语中称之为“特征”的数据列。
简而言之,在可用于机器学习之前,大数据需要大量预处理。一旦数据准备就绪,您将应用各种机器学习算法,例如分类、回归、聚类等,以解决您那里的问题。
您应用的算法类型在很大程度上取决于您的领域知识。即使在同一类型中(例如分类),也有多种算法可用。您可能希望在同一类中测试不同的算法以构建高效的机器学习模型。在执行此操作时,您更喜欢可视化处理后的数据,因此您还需要可视化工具。
在即将到来的章节中,您将了解 Weka,这是一款可以轻松完成上述所有操作并让您舒适地处理大数据的软件。
What is Weka?
WEKA——一款开源软件提供了数据预处理、实现多种机器学习算法和可视化工具,使您可以开发机器学习技术并将其应用到实际数据挖掘问题中。WEKA 提供的内容总结在下图中−
如果您观察图像流程的开始,您会明白处理大数据以使其适合机器学习的阶段很多−
首先,您将从现场收集原始数据开始。这些数据可能包含多个空值和不相干的字段。您可以使用 WEKA 中提供的预处理数据工具来清理数据。
然后,您将预处理的数据保存在本地存储中以应用 ML 算法。
接下来,根据您想要开发的 ML 模型的类型,您将选择 Classify, Cluster 或 Associate 之类的选项之一。 Attributes Selection 允许自动选择特征以创建缩减数据集。
请注意,在每个类别下,WEKA 都提供了多种算法的实现。您将选择您选择的算法,设置所需的 parameters 并针对数据集运行它。
然后,WEKA 会提供模型处理的统计输出。它提供了可视化工具来检查数据。
可以对相同的数据集应用各种模型。然后可以比较不同模型的输出,并选择最符合您目的的模型。
因此,整体而言,使用 WEKA 可以更快地开发机器学习模型。
既然我们已经了解了 WEKA 是什么以及它的作用,接下来一章让我们学习如何在本地计算机上安装 WEKA。
Weka - Installation
若要在你的计算机上安装 WEKA,请访问 WEKA’s official website 并下载安装文件。WEKA 支持在 Windows、Mac OS X 和 Linux 上安装。你只需按照此页面上的说明为你的操作系统安装 WEKA。
在 Mac 上安装的步骤如下 −
-
下载 Mac 安装文件。
-
双击下载的 weka-3-8-3-corretto-jvm.dmg file 。
在成功安装后,你将看到以下屏幕。
-
单击 weak-3-8-3-corretto-jvm 图标以启动 Weka。
-
你也可以从命令行启动它 −
java -jar weka.jar
WEKA GUI Chooser 应用程序将启动,你将看到以下屏幕 −
GUI Chooser 应用程序允许你运行五种不同类型的应用程序,如下所示 −
-
Explorer
-
Experimenter
-
KnowledgeFlow
-
Workbench
-
Simple CLI
我们将在本教程中使用 Explorer 。
Weka - Launching Explorer
在本章中,我们来看看 Explorer 为处理大数据提供的各种功能。
当你在 Applications 选择器中单击 Explorer 按钮时,它将打开以下屏幕 −
在顶部,你会看到几个选项卡,如下所示 −
-
Preprocess
-
Classify
-
Cluster
-
Associate
-
Select Attributes
-
Visualize
在这些选项卡下,有几个预先实现的机器学习算法。让我们现在详细地研究每个算法。
Preprocess Tab
最初当你打开 Explorer 时,只有 Preprocess 选项卡处于启用状态。机器学习的第一步是预处理数据。因此,在 Preprocess 选项中,你将选择数据文件,处理它并使其适合应用各种机器学习算法。
Classify Tab
Classify 选项卡为你提供了用于分类数据的几种机器学习算法。简单列举几个,你可以应用诸如线性回归、逻辑回归、支持向量机、决策树、RandomTree、随机森林、朴素贝叶斯等算法。列表非常详尽,提供了有监督和无监督的机器学习算法。
Weka - Loading Data
在本章中,我们从用于预处理数据的第一个选项卡开始。对于所有应用于数据的算法来说,这是通用的,也是 WEKA 中所有后续操作的通用步骤。
为了让机器学习算法给出可接受的准确性,对数据进行清洗非常重要。这是因为从现场收集的原始数据可能包含空值、无关列等。
在本章中,你将学习如何预处理原始数据,并创建干净、有意义的数据集以供进一步使用。
首先,你将学习如何将数据文件加载到 WEKA 资源管理器中。数据可以从以下来源加载 −
-
Local file system
-
Web
-
Database
在本章中,我们将详细了解加载数据的这三个选项。
Loading Data from Local File System
在你学习的前一课中学到的机器学习选项卡正下方,你会找到以下三个按钮 −
-
Open file …
-
Open URL …
-
Open DB …
单击 Open file … 按钮。将打开一个目录导航器窗口,如下面的屏幕所示 −
现在,导航到存储数据文件的文件夹。WEKA 安装附带了许多示例数据库供你进行试验。这些数据库可在 WEKA 安装的 data 文件夹中找到。
出于学习目的,从此文件夹中选择任何数据文件。该文件的内容将加载到 WEKA 环境中。我们将很快学习如何检查和处理这些加载的数据。在此之前,让我们看看如何从 Web 加载数据文件。
Loading Data from Web
一旦单击 Open URL … 按钮,你就会看到如下窗口 −
我们将从公共 URL 打开该文件 在弹出框中输入以下 URL −
链接: [https://storm.cis.fordham.edu/ gweiss/data-mining/weka-data/weather.nominal.arff[https://storm.cis.fordham.edu/ gweiss/data-mining/weka-data/weather.nominal.arff]
你还可以指定存储数据的任何其他 URL。 Explorer 会将数据从远程站点加载到其环境中。
Weka - File Formats
WEKA 支持大量的数据文件格式。以下是完整列表 −
-
arff
-
arff.gz
-
bsi
-
csv
-
dat
-
data
-
json
-
json.gz
-
libsvm
-
m
-
names
-
xrff
-
xrff.gz
它支持的文件类型列在屏幕底部的下拉列表框中。这在下面给出的屏幕截图中显示。
您会注意到它支持多种格式,包括 CSV 和 JSON。默认文件类型是 Arff。
Arff Format
Arff 文件包含两个部分——头和数据。
-
头描述了属性类型。
-
数据部分包含用逗号分隔的数据列表。
作为 Arff 格式的示例,下面显示了从 WEKA 样本数据库加载的 Weather 数据文件 −
从屏幕截图中,您可以推断以下几点 −
-
@relation 标记定义了数据库的名称。
-
@attribute 标记定义属性。
-
@data 标记开始每一行包含逗号分隔字段的数据行列表。
-
属性可以取名义值,如这里所示的外观 −
@attribute outlook (sunny, overcast, rainy)
-
属性可以取真值,如此例中所示 −
@attribute temperature real
-
您还可以设置目标或类变量,如这里所示的 play −
@attribute play (yes, no)
-
目标假设两个名义值,是或否。
Weka - Preprocessing the Data
从该字段收集的数据包含许多导致错误分析的不需要的事物。例如,数据可能包含空字段,它可能包含与当前分析无关的列,等等。因此,必须对数据进行预处理,以满足您所寻求的分析类型要求。这是在预处理模块中完成的。
为了展示预处理中可用的功能,我们将使用安装中提供的 Weather 数据库。
使用 Preprocess 标记下的 Open file … 选项选择 weather-nominal.arff 文件。
当打开文件后,你的屏幕类似于如下所示:
该屏幕告诉我们有关已加载数据的若干信息,这些将在本章中进一步讨论。
Understanding Data
我们先看看高亮的 Current relation 子窗口。它表明当前加载的数据库的名称。你可以从这个子窗口推断出两点:
-
共有 14 个实例 - 表中行的数量。
-
该表包含 5 个属性 - 字段,将在即将到来的部分讨论。
在左侧,注意显示数据库中各个字段的 Attributes 子窗口。
weather 数据库包含五个字段 - outlook、temperature、humidity、windy 和 play。当通过点击从该列表中选择一个属性时,会在右侧显示属性本身的更多详细信息。
我们先选择 temperature 属性。当你点击它时,你将会看到以下屏幕:
在 Selected Attribute 子窗口中,你可以看到以下内容:
-
会显示属性的名称和类型。
-
temperature 属性的类型为 Nominal 。
-
Missing 值的数量为 0。
-
有三个不同的值,没有唯一值。
-
该信息下面的表将该字段的名义值显示为 hot、mild 和 cold。
-
它还显示每个标称值的计量和占百分比的权重。
在窗口的底部,你可以看到 class 值的可视化表示。
如果你点击 Visualize All 按钮,你将能够在一个窗口中看到所有功能,如下所示:
Removing Attributes
很多时候,用于建模的数据包含许多不相干的字段。例如,客户数据库可能包含其移动电话号码,这与分析其信用评级相关。
要删除属性,请选择它们并单击底部的 Remove 按钮。
选定的属性将从数据库中删除。完全预处理数据后,可以将其保存以供建模。
接下来,您将学习通过对数据应用筛选来预处理数据。
Applying Filters
某些机器学习技术(例如关联规则挖掘)需要分类数据。为了说明筛选的使用,我们将使用 weather-numeric.arff 数据库,该数据库包含两个 numeric 属性—— temperature 和 humidity 。
我们将通过对原始数据应用筛选器将它们转换为 nominal 。单击 Filter 子窗口中的 Choose 按钮并选择以下筛选器−
weka→filters→supervised→attribute→Discretize
单击 Apply 按钮并检查 temperature 和/或 humidity 属性。您会注意到它们已从数字类型更改为标称类型。
让我们来看另一个筛选器。假设您想要选择用于决策的最佳属性 play 。选择并应用以下筛选器 −
weka→filters→supervised→attribute→AttributeSelection
您会注意到它会从数据库中移除温度和湿度属性。
满意数据预处理后,单击 Save … 按钮保存数据。您将使用此保存的文件进行建模。
在下一章中,我们将使用几个预定义的 ML 算法探索建模。
Weka - Classifiers
许多机器学习应用程序与分类相关。例如,您可能希望将肿瘤分类为恶性或良性。您可能希望根据天气条件决定是否进行户外游戏。通常,此决定取决于天气的几个特征/条件。因此,您可能更喜欢使用树分类器来决定是否进行游戏。
在本章中,我们将学习如何基于天气数据构建这样的树分类器来决定游戏条件。
Setting Test Data
我们从上一课中使用预处理后的天气数据文件。使用 Open file … 选项在 Preprocess 选项卡中打开已保存的文件,单击 Classify 选项卡,您会看到以下屏幕 −
在了解可用的分类器之前,让我们检查测试选项。您会看到以下四个测试选项 −
-
Training set
-
Supplied test set
-
Cross-validation
-
Percentage split
除非您有自己的训练集或由客户提供的测试集,否则您将使用交叉验证或百分比分割选项。通过交叉验证,您可以设置整个数据将被分割并用于每次训练迭代的折叠数。在百分比分割中,您将使用设置的分割百分比在训练和测试之间分割数据。
现在,将输出类的默认 play 选项保留为 −
接下来,您将选择分类器。
Selecting Classifier
点击选择按钮并选择以下分类器 −
weka→classifiers>trees>J48
这在下面的屏幕截图中显示 -
单击 Start 按钮以启动分类过程。一段时间后,分类结果将显示在您的屏幕上,如下所示 −
让我们检查屏幕右侧显示的输出。
它说树的大小是 6。您很快将看到树的可视化表示。在摘要中,它说正确分类的实例为 2,错误分类的实例为 3。它还说相对绝对误差为 110%。它还显示了混淆矩阵。对这些结果的分析超出了本教程的范围。但是,您可以轻松地从这些结果中看出分类是不可接受的,并且您需要更多数据进行分析,以完善您的功能选择、重建模型等,直到您对模型的准确性感到满意。无论如何,这就是 WEKA 的全部意义所在。它允许您快速测试您的想法。
Visualize Results
要查看结果的可视化表示,请右键单击 Result list 框中的结果。屏幕上会出现几个选项,如下所示 −
选择 Visualize tree 以获得遍历树的可视化表示,如下面的屏幕截图所示 −
选择 Visualize classifier errors 将显示分类结果,如下所示 −
cross 表示正确分类的实例,而 squares 表示错误分类的实例。在绘图左下角,您可以看到一个 cross ,该 cross 指示如果 outlook 天气晴朗,则 play 比赛。因此,这是一个正确分类的实例。若要定位实例,您可以通过滑动 jitter 滑块来引入一些抖动。
当前绘图是 outlook 与 play 。这由屏幕顶部的两个下拉列表框指示。
现在,在这些框中的每一个框中尝试不同的选择,并注意 X 和 Y 轴如何变化。使用绘图右侧的水平条也可以实现相同的效果。每个条代表一个属性。左键单击条将所选属性设置为 X 轴,而右键单击将该属性设置为 Y 轴。
提供了几个其他绘图以供您进行深入分析。明智地使用它们来微调您的模型。 Cost/Benefit analysis 的一个此类绘图如下所示,供您快速参考。
对此类图表中分析内容进行说明超出了本教程的范围。建议读者查阅机器学习算法分析知识。
在下一章中,我们将了解下一组机器学习算法,即聚类。
Weka - Clustering
群集算法将在整个数据集内找到一组相似实例。WEKA 支持多种群集算法,例如 EM、FilteredClusterer、HierarchicalClusterer、SimpleKMeans 等。你应当完全理解这些算法,以便充分利用 WEKA 的功能。
如同在分类的情况下,通过 WEKA 能够以图形方式可视化检测到的群集。为了演示群集,我们将使用提供的 iris 数据库。数据集包含三类,每类有 50 个实例。每类表示一种类型的 iris 植物。
Loading Data
在 WEKA 浏览器中,选择 Preprocess 选项卡。点击 Open file … 选项并在文件选择对话框中选择 iris.arff 文件。当你加载数据时,屏幕看起来如下图所示 −
你可以观察到有 150 个实例和 5 个属性。属性的名称列为 sepallength 、 sepalwidth 、 petallength 、 petalwidth 和 class 。前四个属性为数字类型,而类为具有 3 个不同值的公称类型。检查每个属性以了解数据库的特性。我们不会针对此数据进行任何预处理,直接进入模型构建。
Clustering
点击 Cluster 选项卡,将群集算法应用到我们加载的数据。点击 Choose 按钮。你会看到下面的屏幕 −
现在,选择 EM 作为群集算法。在 Cluster mode 子窗口中,选择 Classes to clusters evaluation 选项,如下图所示 −
点击 Start 按钮处理数据。片刻之后,结果将显示在屏幕上。
接下来,让我们研究一下结果。
Examining Output
数据处理的输出如下图所示 −
从输出屏幕中,你可以观察到 −
-
在数据库中检测到了 5 个群集实例。
-
Cluster 0 表示 setosa, Cluster 1 表示 virginica, Cluster 2 表示 versicolor,而后两个群集没有任何与其关联的类。
如果你向上滚动输出窗口,你还可以看到一些统计信息,为各个检测到的群集中各个属性的平均值和标准差。这在下图的屏幕截图中显示 −
接下来,我们将查看群集的视觉表示。
Visualizing Clusters
为了可视化群集,右键点击 EM 中的 Result list 的结果。你会看到以下选项 −
选择 Visualize cluster assignments 。你会看到以下输出 −
如同在分类的情况下,你会注意到正确和错误识别实例之间的区别。你可以通过改变 X 轴和 Y 轴来分析结果。你可以使用抖动,如同在分类的情况一样,来确定正确识别实例的浓度。可视化图的运算类似于你在分类的情况下所学习的运算。
Applying Hierarchical Clusterer
为了演示 WEKA 的功能,我们现在来看另一种聚类算法的应用。在 WEKA explorer 中,选择 HierarchicalClusterer 作为您的 ML 算法,如下面的屏幕截图所示 −
选择 Cluster mode 选择以 Classes to cluster evaluation ,然后单击 Start 按钮。您将看到以下输出 −
请注意,在 Result list 中,有两个列出的结果:第一个是 EM 结果,第二个是当前 Hierarchical。同样,您可以将多个 ML 算法应用到同一数据集,并快速比较其结果。
如果您检查此算法生成的树,您将看到以下输出 −
在下一章中,您将学习 Associate 类型的 ML 算法。
Weka - Association
观察显示,购买啤酒的人同时也会购买尿布。也就是说,在同时购买啤酒和尿布中存在关联。尽管这似乎不太令人信服,但这条关联规则是从超市的庞大数据库中挖掘出来的。类似地,可以在花生酱和面包之间找到关联。
找到此类关联对于超市变得至关重要,因为超市会将尿布与啤酒放在一起,以便顾客可以轻松找到这两件商品,从而增加超市的销售额。
Apriori 算法就是机器学习中可以找出可能关联并创建关联规则的算法之一。WEKA 提供了 Apriori 算法的实现。您可以在计算这些规则时定义最低支持度和可接受的置信度。您将把 Apriori 算法应用于 WEKA 安装中提供的 supermarket 数据。
Weka - Feature Selection
当一个数据库包含大量属性时,将有几个属性在您当前正在寻求的分析中并不重要。因此,从数据集中删除不需要的属性成为开发良好机器学习模型的一项重要任务。
您可能会从视觉上检查整个数据集并决定不相关的属性。对于包含大量属性的数据库,这可能是一项巨大的任务,例如您在较早的课程中学到的超市案例。幸运的是,WEKA 提供了一个用于特征选择的自动化工具。
本章对此功能进行了演示,该功能驻留在包含大量属性的数据库中。
Loading Data
在 WEKA Explorer 的 Preprocess 标签中,选择 labor.arff 文件以加载到系统中。加载数据后,您将看到以下屏幕 −
请注意,有 17 个属性。我们的任务是通过消除与我们的分析不相关的某些属性来创建一个缩减的数据集。
Features Extraction
单击 选择属性 选项卡。您将看到以下画面 -
在 Attribute Evaluator 和 Search Method 下,您将找到几个选项。我们只使用这里的默认值。在 Attribute Selection Mode 中,使用完整训练集选项。
单击开始按钮以处理数据集。您将看到以下输出 −
在结果窗口的底部,您将获得 Selected 属性列表。要获取可视化表示,请右键单击 Result 列表中的结果。
Explorer 在以下屏幕截图中显示了输出 −
单击任何正方形都会为您提供供进一步分析的数据图。一个典型的数据图如下所示 −
这与我们在前面章节中看到的内容类似。使用可用的不同选项来分析结果。
What’s Next?
目前为止,您已经见识到了 WEKA 在快速开发机器学习模型方面的强大功能。我们使用的是一个名为 Explorer 的图形工具来开发这些模型。WEKA 还提供了一个命令行界面,该界面提供了比 explorer 中提供的更强大的功能。
单击 G*UI Chooser* 应用程序中的 Simple CLI 按钮会启动此命令行界面,如下面的屏幕截图所示 −
在底部的输入框中键入命令。您将能够使用该资源管理器所做的一切和其他更多内容。有关详细信息,请参阅 WEKA documentation ([role="bare"] [role="bare"]https://www.cs.waikato.ac.nz/ml/weka/documentation.html )。
最后,WEKA 是使用 Java 开发的并提供对其 API 的接口。因此,如果您是 Java 开发人员并热衷于在自己的 Java 项目中包含 WEKA ML 实施,则可以轻松做到。