精通-Java-机器学习-二-

7 阅读1小时+

精通 Java 机器学习(二)

原文:annas-archive.org/md5/ae0ef35bdc04e7c0f29c1a93734045dd

译者:飞龙

协议:CC BY-NC-SA 4.0

第四章. 半监督学习和主动学习

在第二章《实际应用中的监督学习》和第三章《无监督机器学习技术》中,我们讨论了两组主要的机器学习技术,这些技术适用于不同情况下标签数据的可用性——一种情况是所有目标值都是已知的,另一种情况是没有任何目标值。相比之下,本章中的技术处理的是我们必须分析并从包含一小部分带标签数据和大量未标记实例的数据中学习的情况。

在语音和图像识别中,有大量的数据可用,并且以各种形式存在。然而,对所有这些数据进行标记或分类的成本很高,因此,在实践中,被分类的语音或图像的比例与未被分类的比例非常小。同样,在网页文本或文档分类中,互联网上有大量的文档,但根据主题或上下文进行分类需要领域专家——这使得过程复杂且昂贵。在本章中,我们将讨论两个广泛的主题,涵盖“从未标记数据中学习”的领域,即半监督学习SSL)和主动学习。我们将介绍每个主题,并像前几章一样讨论与每个主题相关的分类法和算法。由于本书强调实用方法,我们将讨论每种学习类型可用的工具和库。然后,我们将考虑现实世界的案例研究,并展示在实际情况中应用工具时有用的技术。

这里是本章涵盖的主题列表:

  • 半监督学习:

    • 表示法、符号和假设

    • 半监督学习技术:

      • 自训练 SSL

      • Co-training SSL

      • 聚类和标签 SSL

      • 传递式图标签传播

      • 传递式 SVM

    • 半监督学习案例研究

  • 主动学习:

    • 表示法和符号

    • 主动学习场景

    • 主动学习方法:

      • 不确定性采样

        • 最不自信采样

        • 最小边缘采样

        • 标签熵采样

      • 版本空间采样:

        • 意见分歧查询

        • 委员会查询

      • 数据分布采样:

        • 预期模型变化

        • 预期误差减少

        • 方差减少

        • 密度加权方法

    • 主动学习案例研究

半监督学习

半监督学习背后的思想是从标记和无标签数据中学习,以提高模型的预测能力。这一概念通过一个简单的插图,图 1,进行了说明,它显示当有大量无标签数据可用时,例如网络上的 HTML 文档,专家可以将其中一些分类到已知的类别,如体育、新闻、娱乐等。这个小的标记数据集与大量的无标签数据集一起,可以用于半监督学习技术来学习模型。因此,利用标记和无标签数据的知识,模型可以分类未来未见过的文档。相比之下,监督学习仅使用标记数据:

半监督学习半监督学习

图 1. 使用网络文档分类作为示例,展示了半监督学习过程(底部)与监督学习(顶部)的对比。主要区别在于可用于学习的标记数据量,在半监督学习中通过“少量”这一限定词进行了强调。

表示法、符号和假设

与之前一样,我们将介绍本章中使用的符号。数据集 D 由单个数据实例组成,表示为 x,它也以集合 {x[1], x[2],…x[n]} 的形式表示,这是没有标签的数据实例集合。与这些数据实例相关联的标签是 {y[1], y[2], … y[n]}。整个标记数据集可以表示为集合中的配对元素,如 D = {(x[1], y[1]), (x2,y[2]), … (x[n], y[n])},其中 x[i] ∈ ℝ^d。在半监督学习中,我们将数据集 D 进一步分为两个集合 UL,分别用于无标签数据和标记数据。

标记数据 表示法、符号和假设 由所有已知结果 {y[1], y[2], .. y[l]} 的标记数据组成。无标签数据 表示法、符号和假设 是结果未知的数据集。|U| > |L|。

归纳半监督学习包括一系列技术,这些技术给定带有标记数据 表示法、符号和假设 和无标签数据 表示法、符号和假设 的训练集 D,学习一个表示为 表示法、符号和假设 的模型,使得模型 f 可以在训练无标签数据 U 之外的未见数据上成为一个好的预测器。它“归纳”出一个模型,可以像监督学习算法一样用于预测未见实例。

传导式半监督学习由一系列技术组成,给定训练集 D,它学习一个模型 表示、符号和假设,该模型仅对未标记数据进行预测。它不需要在未见未来的实例上执行,因此是比基于归纳学习更简单的 SSL 形式。

在半监督学习算法中,以下列出的某些假设对于这些类型的学习成功至关重要。为了使 SSL(半监督学习)工作,以下假设中必须有一个或多个是真实的:

  • 半监督平滑性:简单来说,如果两个点在密度或距离方面“接近”,则它们的标签是一致的。相反,如果两个点分离且位于不同的密度区域,则它们的标签不需要一致。

  • 聚类共存性:如果类别的数据实例倾向于形成簇,那么未标记数据可以帮助聚类算法找到更好的簇。

  • 流形共存性:在许多现实世界的数据集中,高维数据位于低维流形中,这使得学习算法能够克服维度灾难。如果给定数据集中存在这种情况,未标记的数据也会映射到流形上,从而可以改善学习。

半监督学习技术

在本节中,我们将描述不同的 SSL(半监督学习)技术以及一些伴随的算法。我们将使用与之前章节相同的结构,并在三个子节中描述每种方法:输入和输出如何工作优势和局限性

自训练 SSL

自训练是 SSL(半监督学习)最简单的一种形式,其中我们通过应用从标记集学习到的模型对未标记集的数据进行简单迭代填充过程(参考文献 [1]):

自训练 SSL

图 2. 使用一些用蓝色矩形和黄色圆圈表示的标记数据在二元分类中进行自训练 SSL。经过多次迭代后,未标记数据被映射到相应的类别。

输入和输出

输入是带有少量标记和大量未标记数据的训练数据。提供一个基分类器,无论是线性的还是非线性的,例如朴素贝叶斯、KNN、决策树或其他,以及每个算法所需的超参数。数据类型上的约束将与基学习器相似。还需要做出停止条件的选择,例如“达到最大迭代次数”或“未标记数据耗尽”。通常,我们使用基学习器,这些学习器会对输出给出概率或排名。作为输出,这种技术生成可以用于对未标记数据集以外的未见数据集进行预测的模型。

它是如何工作的?

整个算法可以总结如下:

  1. 在停止标准未达到的情况下:

    1. 使用标记数据 L 训练分类器模型 如何工作?

    2. 在未标记数据 U 上应用分类器模型 f

    3. U 中选择 k 个最自信的预测作为集合 L[u]

    4. 使用 k 个数据点 L = L L[u] 增强标记数据

  2. 在 2 下的所有步骤重复。

在概述中,自训练可以看作是将期望最大化过程应用于半监督设置。训练分类器模型的过程是使用最大似然估计(MLE)或最大后验概率估计(MAP)找到参数 θ。使用学习到的模型计算标签类似于 期望 步骤,其中 如何工作? 是根据参数 θ 从 U 中估计标签。学习带有增强标签的模型的迭代下一步类似于 最大化 步骤,其中新参数被调整到 θ'

优点和局限性

优点和局限性如下:

  • 简单,与大多数监督学习技术兼容。

  • 异常值和噪声可能导致预测错误被强化,技术退化。

协同训练 SSL 或多视图 SSL

基于协同训练的 SSL 涉及从相同数据的不同“视图”中进行学习。它是多视图 SS(参考文献 [2])的一个特例。每个视图都可以被认为是一个捕获某些领域知识的点特征集,并且与其他视图正交。例如,一个网页文档数据集可以被认为有两个视图:一个视图是代表文本的特征,另一个视图是代表指向其他文档的超链接的特征。假设每个视图都有足够的数据,并且从每个视图中进行学习可以提高整体标记过程。在无法进行此类特征划分的数据集中,将特征随机分割成不相交的集合形成视图。

输入和输出

输入是带有少量标记和大量未标记数据的训练数据。除了提供数据点外,还有对应于每个视图的特征集,并且假设这些特征集不重叠且解决不同的分类问题。选择一个基分类器,如朴素贝叶斯、KNN、决策树或任何其他,以及每个算法所需的超参数。作为输出,此方法生成可用于对未标记数据以外的未见数据集进行预测的模型。

如何工作?

我们将使用数据的两个视图来演示该算法:

  1. 将数据初始化为 如何工作? 标记和 如何工作? 未标记。每个数据点有两个视图 x = [x¹,x²]L = [L¹,L2]

  2. 当未达到停止标准时:

    1. 使用标记数据 L1 和 L2 分别训练分类器模型 如何工作?如何工作?

    2. 使用它们自己的特征在未标记数据 U 上应用分类器模型 f¹ 和 f²。

    3. U 中选择 k 个最自信的预测,应用 f¹ 和 f² 作为集合 L[u]¹ 和 L[u]² 分别。

    4. 使用 k 个数据点 L¹ = L¹ ∪ L[u]¹ 和 L² = L² ∪ L[u]² 增强标记数据。

  3. 在 2. 下重复所有步骤。

优点和局限性

优点和局限性如下:

  • 当特征具有不同的方面或不同领域的混合时,协同训练比简单的自训练更有利。

  • 拥有正交视图并从中学习的能力的必要和充分条件对技术的通用性提出了挑战。

聚类和标签 SSL

这种技术与自训练类似,相当通用,适用于假设部分中提到的聚类假设成立(参考文献 [3])的领域和数据集。

输入和输出

输入是带有少量标记实例和大量未标记实例的训练数据。聚类算法及其参数以及分类算法及其参数是额外的输入。该技术生成一个分类模型,可以帮助预测未见数据的类别。

如何工作?

抽象算法可以表示为:

  1. 将数据初始化为 如何工作? 标记的和 如何工作? 未标记的。

  2. 使用聚类算法对整个数据集进行聚类,包括标记的和未标记的数据。

  3. 对于每个簇,让 S 是从集合 L 中抽取的标记实例的集合。

    1. S 中学习一个监督模型,f[s] = L[s]。

    2. 应用模型 f[s] 并使用前面的模型对每个簇中的未标记实例进行分类。

  4. 由于所有未标记的实例 如何工作? 都通过前面的过程分配了标签,因此在整个集合上运行监督分类模型。![如何工作?]

    图 3. 聚类和标签 SSL – 聚类后进行分类

优点和局限性

优点和局限性如下:

  • 当聚类假设成立且聚类算法和参数选择正确时,效果非常好。

  • 大量的参数和选择使得这在许多现实世界问题中成为一个难以驾驭的技术。

传递性图标签传播

基于图的方法背后的关键思想是将数据集中的每个实例(标记的和未标记的)表示为一个节点,并计算它们之间的“相似性”作为某种形式的“相似性”。使用假设部分中讨论的基本概念(即,相似的数据点在图形上会“靠近”)的已知标签来传播未标记数据中的标签(参考文献 [4])。

图 4 展示了当手写数字模式变化时,从第一个数据点到最后一个数据点的箭头粗细所表示的相似性如何变化。知道第一个标签后,由于特征相似性,标签传播可以有效地标记接下来的三个数字,而最后一个数字,尽管被标记为相同,但与前面三个相比,相似性较低。

传输图标签传播

图 4. 传输图标签传播 – 手写数字的分类。最左端和最右端的图像已标记,其他图像未标记。箭头粗细是相对于左侧标记数字 "2" 的相似性的视觉度量。

输入和输出

输入是带有少量标记和大量未标记数据的训练数据。选择图加权或相似性计算方法,如 k-最近邻加权、高斯衰减距离或 ϵ-半径方法。输出是整个数据的标记集;它通常不构建如先前算法中看到的归纳模型。

如何工作?

通用标签传播方法如下:

  1. 构建一个图 g = (V,E),其中:

    • 顶点 V = {1, 2…n} 对应于既属于标记集 L 又属于未标记集 U 的数据。

    • E 是权重矩阵 W,其中 W[i,j] 表示两个数据点 x[i],x[j] 之间的某种形式的相似性。

  2. 通过 如何工作? 计算对角度矩阵 D

  3. 假设标记集是二元的,并且有 如何工作?。将所有未标记数据的标签初始化为 0. 如何工作?

  4. t = 0 时迭代:

    1. 如何工作?

    2. 如何工作?(将标记实例的标签重置为原始值)

    3. 返回步骤 4,直到收敛 如何工作?

  5. 使用收敛标签 如何工作? 标记未标记的点 如何工作?

基于相似性、迭代中选择的优化等有许多变体。

优点和局限性

优点和局限性如下:

  • 基于图的半监督学习方法在计算上代价高昂——通常为 O(n³),其中 n 是实例的数量。尽管加速和缓存技术有所帮助,但在大量数据上的计算成本使得在许多实际数据情况下不可行。

  • 传输性质使得它在需要为未见数据诱导模型的实际应用中难以使用。有如谐波混合等扩展,可以解决这些问题。

传输支持向量机(TSVM)

Transductive SVM 是其中最古老且最受欢迎的归纳半监督学习方法之一,由 Vapnik 提出(参考文献 [5])。其关键原则是,未标记数据与标记数据一起可以帮助使用大间隔的概念找到决策边界。其基本原理是,决策边界通常不位于高密度区域!

输入和输出

输入是带有少量标记和大量未标记数据的训练数据。对于 TSVM 计算,输入必须是数值特征。核的选择、核参数和成本因子,这些都是基于 SVM 的参数,也是输入变量。输出是对未标记数据集的标签。

它是如何工作的?

通常,SVM 作为权重向量w和偏置b如何工作?的优化问题,在标记的硬边界 SVM 中用这些术语表述,受如何工作?约束。

  1. 将数据初始化为如何工作?标记的和如何工作?未标记的。

  2. 在 TSVM 中,方程被修改如下:如何工作?

这取决于以下条件:

如何工作?如何工作?如何工作?

这与归纳 SVM 非常相似,但仅使用标记数据。当我们约束未标记数据以符合标记数据的超平面一侧,以最大化间隔时,它会导致未标记数据以最大间隔分离被标记!通过向约束中添加惩罚因子或用核替换输入空间中的点积,就像归纳 SVM 中那样,可以从未标记数据中标记复杂的非线性噪声数据集。

图 5说明了 TSVM 的概念,与仅对标记数据进行归纳 SVM 运行的概念进行比较,以及为什么 TSVM 可以使用未标记数据集找到更好的决策边界。超平面两侧的未标记数据集更接近其各自的类别,从而有助于找到更好的间隔分离器。

如何工作?

图 5. Transductive SVM

优点和局限性

优点和局限性:

  • 在给定无噪声标记数据的情况下,TSVM 可以在线性或非线性数据集上非常有效地工作。

  • TSVM 在寻找超参数并调整它们以获得最佳结果方面与归纳 SVM 有相同的问题。

半监督学习案例研究

对于这个案例研究,我们使用 UCI 存储库中另一个经过充分研究的数据集,即威斯康星州乳腺癌数据集。在实验的第一部分,我们展示了如何使用开源库JKernelMachines应用半监督学习的 Transductive SVM 技术。我们选择 SVMLight 算法和 Gaussian 核来使用这项技术。

在第二部分,我们使用基于 GUI 的框架 KEEL,并使用 UCI 乳腺癌数据集比较了基于进化学习算法的结果。工具、方法和评估措施将在以下子节中描述。

工具和软件

在半监督学习案例研究中使用的两个开源 Java 工具是 JKernelMachines,一个 Transductive SVM,以及 KEEL,一个基于 GUI 的工具,它使用进化算法进行学习。

注意

JKernelMachines (Transductive SVM)

JKernelMachines 是一个纯 Java 库,它提供了一个高效的平台用于使用和快速开发专门的核函数。核函数是 SVM 中使用的相似性函数。JKernelMachines 除了提供标准核函数(如线性核和高斯核)外,还提供了在结构化数据上定义的核函数实现。特别地,它提供了一系列核函数的组合,列表上的核函数,以及具有各种缓存策略的核函数。该库还包含了 SVM 优化算法的实现,包括 LaSVM 和 One-Class SVM 使用 SMO。库的制作者报告称,JKernelMachines 在一些常见的 UCI 仓库数据集上的结果与 Weka 库相当或更好。

这里给出了使用 JKernelMachines 加载数据和运行 Transductive SVM 的示例:

try {
//load the labeled training data
List<TrainingSample<double[]>> labeledTraining = ArffImporter.importFromFile("resources/breast-labeled.arff");
//load the unlabeled data
List<TrainingSample<double[]>> unlabeledData =ArffImporter.importFromFile("resources/breast-unlabeled.arff");
//create a kernel with Gaussian and gamma set to 1.0
DoubleGaussL2 k = new DoubleGaussL2(1.0);
//create transductive SVM with SVM light
S3VMLight<double[]> svm = new S3VMLight<double[]>(k);
//send the training labeled and unlabeled data
svm.train(labeledTraining, unlabeledData);
} catch (IOException e) {
	e.printStackTrace();
}

在第二种方法中,我们使用与相同数据集的 KEEL。

注意

KEEL

KEEL基于进化学习进行知识提取)是一个非商业(GPLv3)的 Java 工具,具有 GUI,它使用户能够分析各种数据挖掘问题的进化学习行为,包括回归、分类和无监督学习。它减轻了用户编写复杂的进化算法的负担,并允许他们专注于使用工具包创建的新学习模型。KEEL 旨在满足研究人员和学生的需求。

KEEL 包含数据预处理和后处理的算法,以及统计库,还有一个知识提取算法库,该库结合了多种进化学习算法和经典学习技术。

工具中包含的 GUI 向导为管道的每个阶段提供不同的功能组件,包括:

  • 数据管理:数据的导入、导出、数据转换、可视化等

  • 实验设计:选择分类器、估计器、无监督技术、验证方法等

  • SSL 实验:归纳和演绎分类(参见本节中 SSL 实验设计离线方法的图像)

  • 统计分析:这提供了成对和多重比较的测试,参数和非参数程序。

想要了解更多信息,请访问 sci2s.ugr.es/keel/sci2s.ugr.es/keel/pdf/keel/articulo/Alcalaetal-SoftComputing-Keel1.0.pdf

工具和软件

图 6:KEEL – 基于向导的图形界面

商业问题

乳腺癌是全球女性最常见的癌症,尤其是在发展中国家,病例诊断往往在晚期。使用非手术程序检查肿瘤质量是早期发现疾病的一种经济且预防性的措施。

在这个案例研究中,使用了一个从该过程明显标记的数据集,目标是使用多种 SSL 技术将乳腺癌数据分类为 Malignant 和 Benign。

机器学习映射

为了说明本章迄今为止学到的技术,我们将使用半监督学习(SSL)进行分类。虽然数据集包含所有示例的标签,但为了将其视为可以应用 SSL 的问题,我们将考虑数据的一部分为未标记。实际上,我们进行了多次实验,使用不同比例的未标记数据进行比较。所使用的不同基学习器是我们从先前章节中熟悉的分类算法。

数据收集

该数据集由威斯康星大学麦迪逊分校收集。数据集以 Weka AARF 格式提供。数据未划分为训练、验证和测试集。

数据质量分析

数据中的示例不包含唯一标识符。有 16 个示例的“裸核”属性有缺失值。目标类别是唯一的分类属性,有两个值。所有其他属性都是连续的,范围在[1, 10]之间。

数据采样和转换

在实验中,我们展示了 10 折交叉验证的结果。为了比较,每个运行都使用了不同比例的标记数据——10%、20%、30%和 40%。

为每个示例添加了一个数字样本代码作为唯一标识符。对于类别属性,将 Malignant 和 Benign 的类别值分别替换为数字 4 和 2。

数据集和分析

威斯康星大学乳腺癌数据集(原始)可在 UCI 机器学习仓库中找到:archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Original)

该数据库最初是从威斯康星大学麦迪逊分校的威廉·H·沃尔伯格博士那里获得的。该数据集是由沃尔伯格博士为乳腺癌的诊断和预后而创建的。数据仅基于涉及细针穿刺吸液FNA)测试的测量。在这个测试中,使用小号针从乳腺肿块中提取液体,然后在显微镜下进行视觉检查。

数据集由 699 个实例组成,包含九个数值属性和一个二进制类别(恶性/良性)。缺失值的百分比为 0.2%。数据集中有 65.5%的恶性和 34.5%的良性病例。特征名称和有效值范围列在下表中:

Num.特征名称范围
1样本代码编号id 编号
2聚块厚度1 - 10
3细胞大小均匀性1 - 10
4细胞形状均匀性1 - 10
5边缘粘附1 - 10
6单个上皮细胞大小1 - 10
7裸核1 - 10
8平滑染色质1 - 10
9正常核仁1 - 10
10有丝分裂1 - 10
11类别良性为 2,恶性为 4
特征分析结果

总结统计按特征出现在表 1 中。

 聚块厚度细胞大小均匀性细胞形状均匀性边缘粘附单个上皮细胞大小裸核平滑染色质正常核仁有丝分裂
mean4.4183.1343.2072.8073.2163.5453.4382.8671.589
std2.8163.0512.9722.8552.2143.6442.4383.0541.715
min111111111
25%21112 211
50%41112 311
75%65544 541
max101010101010101010

表 1. 特征摘要

实验和结果

实验中选择了两种 SSL 算法——自训练和协同训练。此外,还选择了四种分类方法作为基学习器——朴素贝叶斯、C4.5、K-NN 和 SMO。进一步,每个实验使用四个不同的标签和无标签数据分区(10%、20%、30%和 40%标签)进行运行。

算法和基本分类器的超参数在表 2 中给出。您可以看到两个 SSL 算法对应于标签和无标签数据四个分区(10%、20%、30%和 40%标签)的运行准确率。

最后,我们给出了 40%标签情况下的每个实验的性能结果。提供的性能指标是准确率和 Kappa 统计量,以及标准偏差。

方法参数
自训练MAX_ITER = 40
协同训练MAX_ITER = 40,初始无标签池=75
KNNK = 3,欧几里得距离
C4.5剪枝树,置信度 = 0.25,每个叶节点 2 个示例
NB未指定参数
SMOC = 1.0,容差参数 = 0.001,Epsilon= 1.0E-12,核类型 = 多项式,多项式度 = 1,拟合逻辑模型 = true

表 2. 自训练和协同训练的基本分类器超参数

SSL 算法10%20%30%40%
自训练 C 4.50.90.930.940.947
协同训练 SMO0.9590.9490.9620.959

表 3. 标签示例比例变化时的模型准确率

算法准确率(无标签)
C4.5 10 折交叉验证0.947
SMO 10 折交叉验证0.967
  10 折交叉验证威斯康星 40%标记数据 
自训练(kNN)准确率0.9623 (1)Kappa0.9170 (2)
 标准差0.0329标准差0.0714
自训练(C45)准确率0.9606 (3)Kappa0.9144
 标准差0.0241标准差0.0511
自训练(NB)准确率0.9547Kappa0.9036
 标准差0.0252标准差0.0533
自训练(SMO)准确率0.9547Kappa0.9035
 标准差0.0208标准差0.0435
协同训练(NN)准确率0.9492Kappa0.8869
 标准差0.0403标准差0.0893
协同训练(C45)准确率0.9417Kappa0.8733
 标准差0.0230标准差0.0480
协同训练(NB)准确率0.9622 (2)Kappa0.9193 (1)
 标准差0.0290标准差0.0614
协同训练(SMO)准确率0.9592Kappa0.9128 (3)
 标准差0.0274标准差0.0580

表 4. 使用 40%标记示例的模型性能比较。每个类别的顶级表现者用括号表示。

半监督学习分析

在 40%的标记数据下,使用 C4.5 的半监督自训练达到了与 100%标记数据相同的成果。这显示了半监督学习在数据稀疏标记时的强大能力。

使用多项式核的 SMO,在 30-40%的数据下接近 100%的数据,但不如 C4.5 好。

在 40%标记的训练数据上,使用四个分类器的自训练和协同训练显示

  • 以 KNN 作为基分类器和自训练具有最高的准确率(0.9623),这表明数据的非线性边界。与朴素贝叶斯协同训练非常接近。

  • 使用如线性朴素贝叶斯、非线性 C4.5 和高度非线性的 KNN 等分类器的自训练显示了准确率的稳步提升:0.9547、0.9606、0.9623,这再次表明使用自训练但选择正确的底层分类器对于问题非常重要。

  • 与朴素贝叶斯协同训练具有最高的 Kappa 统计量(0.9193)和与 KNN 自训练几乎相同的准确率。特征之间的独立性关系——因此将特征集分解为正交特征集并用于分类器——提高了学习效果。

主动学习

尽管主动学习与半监督学习有许多相似之处,但它对包含标记和无标记数据的集合进行建模的方法具有自己独特的途径。它源于基本的人类心理学,即提出更多问题通常有助于解决问题。

主动学习背后的主要思想是,如果学习者可以自己选择要学习的实例,而不是被动地获得标记数据,那么它可以用更少的数据更有效地学习(参考文献 [6])。在非常少量的标记数据的情况下,它可以仔细地从未标记数据中挑选实例以获取标签信息,并使用这些信息迭代地改进学习。这种从所谓的专家(领域专家)那里查询未标记数据以获取标签的基本方法,将主动学习与半监督学习或被动学习区分开来。以下图示说明了差异和涉及的迭代过程:

主动学习

图 7. 与监督学习和半监督学习过程相比的主动机器学习过程。

表示和符号

数据集 D,它表示所有数据实例及其标签,由 D = {(x[1],y[2]),(x[2],y[2]),… (x[n],y[n])} 给出,其中 表示和符号 是数据个体的实例,而 {y[1],y[2],… y[n]} 是相关标签的集合。D 由两个集合 U(标记数据)和 L(未标记数据)组成。x 是无标签数据实例的集合 {x[1],x[2],… x[n]}。

数据集表示和符号包含所有已知结果的有标签数据 {y[1],y[2],… y[l]},而表示和符号是结果未知的数据集。与之前一样,|U|>> |L|。

主动学习场景

主动学习场景可以广泛地分为:

  • 基于流的主动学习:在此方法中,实例或示例仅从未标记数据集中选择,并决定是否忽略数据或将数据传递给专家以获取其标签(参考文献[10,11])。

  • 基于池的主动学习:在此方法中,从未标记数据集中查询实例,然后根据信息性进行排序,并从这些实例中选取一组发送给 Oracle 以获取标签(参考文献[12])。

  • 查询合成:在此方法中,学习者只有关于输入空间(特征)的信息,并从未标记集中合成查询以确定成员资格。这种方法在实用应用中很少使用,因为它通常不考虑数据生成分布,因此查询往往是任意或无意义的。

主动学习方法

无论涉及何种场景,每个主动学习方法都包括选择查询策略或采样方法,这为每个迭代中查询的选择建立了机制。每种方法都揭示了一种寻找具有最佳信息内容的未标记示例的独特方式,以改善学习过程。在以下小节中,我们描述了主要的查询策略框架,它们的工作原理,优点和局限性,以及每个框架中的不同策略。

不确定性采样

这种采样形式背后的关键思想是从未标记池中选择当前模型最不确定的实例。学习者可以避免模型更有信心或自信地分类的实例(参考文献 [8])。

基于概率的模型(如朴素贝叶斯、逻辑回归等)是此类方法的最自然选择,因为它们给出了对给定模型(例如,对于数据 xθ,对于类别 y[i] i ϵ classes,以及作为后验概率的 不确定性采样)的置信度度量。

如何工作?

所有基于不确定性的算法的一般过程概述如下:

  1. 将数据初始化为已标记的,如何工作?和未标记的,如何工作?

  2. 当仍有未标记数据时:

    1. 使用标签数据 L 训练分类器模型 如何工作?

    2. 将分类器模型 f 应用于未标记数据 U,使用采样机制(见下一节)之一来评估信息性 J

    3. U 中选择 k 个最有信息性的数据作为集合 L[u],从先知那里获取标签。

    4. 在上一步中获取的 k 个新标签数据点来增强标签数据:L = LL[u]。

  3. 重复步骤 2 下的所有步骤。

下面给出了一些最常用的查询合成算法,用于从数据中采样信息实例。

最不自信采样

在这项技术中,数据实例根据它们的置信度按逆序排序,最有可能被查询或选择的实例是模型最不自信的实例。背后的想法是最不自信的实例靠近边缘或分离超平面,获取它们的标签将是有效学习边界的最佳方式。

这可以表示为 最不自信采样

这种方法的缺点在于它实际上只考虑了最佳信息;后验分布其余部分的信息没有被使用。

最小边界采样

这是基于边界的采样,其中具有较小边界的实例比具有较大边界的实例具有更多的歧义。

这可以表示为 最小边界采样,其中 最小边界采样最小边界采样 是实例 x 的两个标签。

标签熵采样

熵,它是数据平均信息内容的度量,也是杂质度量,可以用来采样实例。这可以表示为:

标签熵采样

优点和局限性

优点和局限性:

  • 标签熵采样是最简单的方法,可以与任何概率分类器一起工作——这是最大的优势

  • 异常值或错误反馈的存在可能被忽视,模型可能会退化

版本空间采样

假设 H 是所有特定模型集合,这些模型可以泛化或解释训练数据;例如,所有可能的权重集合,可以分离两个线性可分类别。版本空间 V 是假设 H 的子集,根据汤姆·米切尔(参考文献 [15])的定义与训练数据一致,如下所示 版本空间采样

这种采样的背后思想是从未标记的数据集中查询实例,以减少版本空间的大小或最小化 |V|。

通过不一致性查询(QBD)

QBD 是最早维护版本空间 V 的算法之一——当两个假设对新到达数据的标签不一致时,该实例被选中以从预言者或专家那里获取标签。

如何工作?

整个算法可以总结如下:

  1. 如何工作? 初始化为所有合法假设的集合。

  2. 将数据初始化为 如何工作? 标记和 如何工作? 未标记。

  3. 当数据 x*[']* 在 U 中时:

    1. 如果 如何工作? 对于任何 h[2] ∈ V

      1. 查询 x*[']* 的标签并获取 y[']

      2. V = {h: h(x[']) = y['] 对于所有点。

    2. 否则:

      1. 忽略 x*[']*。
委员会查询(QBC)

通过委员会查询克服了与维护所有可能的版本空间相关的查询不一致性的限制,通过创建一个分类器委员会并使用它们的投票作为捕捉不一致性的机制(参考文献 [7])。

如何工作?

对于此算法:

  1. 将数据初始化为 如何工作? 标记和 如何工作? 未标记。

  2. 在标记数据 w 上训练模型委员会 C = {θ¹θ², ... θ^c}(见下文)。

  3. 对于所有数据 x*^'* 在 U 中:

    1. x*'* 的预测进行投票,作为 {如何工作?}。

    2. 根据最大不一致性对实例进行排序(见下文)。

    3. U 中选择 k 个最有信息量的数据作为集合 L[u],以从预言者那里获取标签。

    4. k 个新的标记数据点 L = LL[u] 添加到标记数据中。

    5. 使用新的 L 重新训练模型 {θ[1], θ[2], ... θ[c]}。

在训练学习者的委员会和选择不一致方法这两个任务中,每个都有各种选择。

训练不同的模型可以通过从 L 中选择不同的样本来完成,或者可以使用提升和袋装等集成方法进行训练。

投票熵是作为不一致性度量方法之一选择的。其数学表示方式如下:

如何工作?

在这里,V(y[i]) 是从所有可能的标签中给出的标签 y[i] 的投票数,而 |C| 是委员会的大小。

库尔巴克-莱布勒KL)散度是两个概率分布之间差异的信息论度量。不一致性被量化为每个委员会预测与委员会 C 中共识的平均差异:

它是如何工作的?

优点和局限性

优点和局限性如下:

  • 简单性以及它可以与任何监督算法一起工作的事实给它带来了巨大的优势。

  • 在某些条件下,有理论保证可以最小化误差和泛化。

  • 通过不一致性查询(Query by Disagreement)受到维护大量有效假设的困扰。

  • 这些方法仍然存在错误反馈被忽视和模型可能退化的问题。

数据分布采样

前面的方法基于样本对模型的不确定性或通过减少假设空间大小来选择未标记集中的最佳实例。这些方法都没有针对模型本身的最佳选择。数据分布采样的想法是,添加有助于减少模型误差的样本,有助于通过预期值(参考文献 [13 和 14])提高对未见实例的预测。

它是如何工作的?

有不同的方法来找到给定模型的最佳样本,我们将详细描述每一种方法。

预期模型变化

这种想法的背后的目的是选择未标记集中将带来模型最大变化的示例:

预期模型变化

在这里,P[θ] (y|x) = x 标签的期望,预期模型变化 是在重新训练 x 后,包括 x ' 的熵在未标记实例上的总和。

预期误差减少

在这里,方法是选择未标记集中最能减少模型泛化误差的示例。泛化误差使用带有预期标签的未标记集进行衡量:

预期误差减少

在这里,Pθ (y|x) = x 标签的期望,预期误差减少 是在重新训练 x 后,包括 x*^'* 的熵在未标记实例上的总和。

方差减少

以噪声-偏差-方差为参数,对样本外误差的估计的一般方程如下:

方差减少

在这里,G(x) 是给定标签 y 的模型预测。在方差减少中,我们选择未标记集中最能减少模型方差的示例:

方差减少

在这里,θ + 表示使用新点 x ^' 和其标签 y^' 重新训练后的模型。

密度加权方法

在这种方法中,我们从未标记集中选择与标记集平均相似度较高的示例。

这可以表示如下:

密度加权方法

在这里,sim(x, x ^')是密度项或相似度项,其中 Hθ是基本效用度量。

优点和局限性

优点和局限性如下:

  • 最大的优势是它们直接在模型上作为优化目标工作,而不是之前描述的隐式或间接方法。

  • 这些方法可以在基于池或流的场景中工作

  • 这些方法在界限和泛化方面有一些理论保证。

  • 这些方法的最大缺点是计算成本高,实现困难。

主动学习案例研究

本案例研究使用另一个众所周知的公开数据集来展示使用开源 Java 库的主动学习技术。和之前一样,我们首先定义商业问题,使用的工具和框架,如何在解决方案中实现机器学习原理,以及数据分析步骤揭示了什么。接下来,我们描述了进行的实验,评估了各种模型的表现,并提供了结果分析。

工具和软件

在主动学习实验中,我们使用了 JCLAL 工具。JCLAL 是一个 Java 框架,用于主动学习,支持单标签和多标签学习。

注意

JCLAL 是开源的,并遵循 GNU 通用公共许可证分发:sourceforge.net/p/jclal/git/ci/master/tree/

商业问题

在这些实验中使用的鲍鱼数据集包含了鲍鱼的各种物理和解剖特征数据——通常被称为海蜗牛。目标是预测壳中的环数,这可以指示样本的年龄。

机器学习映射

正如我们所见,主动学习的特点是从小数据集开始,该数据集包含标签数据,并伴随查询未标记数据的技巧,以便我们逐步向标签集添加实例。这是分批进行的,每次迭代一批。迭代的次数和批量大小是这些技术的超参数。查询策略和用于在不断增加的标签实例上训练的监督学习方法的选择是额外的输入。

数据收集

如前所述,我们将使用来自 UCI 存储库的现有数据集(archive.ics.uci.edu/ml/datasets/Abalone)。数据库的原始所有者是澳大利亚塔斯马尼亚州初级工业和渔业部。

数据类型和属性描述与数据一起提供,并在表 5中重现。类别属性“环数”有 29 个不同的类别:

名称数据类型测量单位描述
性别名义M, F, 和 I (婴儿)样本的性别
长度连续毫米最长壳的测量值
直径连续毫米垂直于长度的
高度连续毫米壳中有肉时
总重量连续整个鲍鱼
去壳重量连续肉的重量
内脏重量连续放血后的内脏重量
壳重量连续干燥后
环数整数计数+1.5 给出年龄(年)

表 5. 鲍鱼数据集特征

数据采样和转换

对于这个实验,我们将随机选择的 4,155 条记录作为未标记的,保留了剩余的 17 条作为标记的。数据没有进行任何转换。

特征分析和降维

仅使用八个特征,没有必要进行降维。数据集附带了一些关于特征的统计数据,在表 6中重现:

 长度直径高度整体去壳内脏
最小值0.0750.05500.0020.0010.0010.0021
最大值0.8150.651.132.8261.4880.761.00529
平均值0.5240.4080.140.8290.3590.1810.2399.934
标准差0.120.0990.0420.490.2220.110.1393.224
相关系数0.5570.5750.5570.540.4210.5040.6281

表 6. 特征的汇总统计

模型、结果和评估

我们进行了两组实验。第一组使用基于池的场景,第二组使用基于流的场景。在每组中,我们使用了熵采样、最不自信采样、边缘采样和投票熵采样。使用的分类器是朴素贝叶斯、逻辑回归和 J48(C4.5 的实现)。每个实验运行了 100 次迭代,批大小为 1 和 10。在表 7中,我们展示了这些结果的一个子集,具体是使用朴素贝叶斯、简单逻辑和 C4.5 分类器,批大小为 10 的基于池和基于流的场景。

备注

完整的结果集可以在github.com/mjmlbook/mastering-java-machine-learning/tree/master/Chapter4查看。

JCLAL 库需要一个 XML 配置文件来指定要使用哪种场景、选择的查询策略、批大小、最大迭代次数和基本分类器。以下是一个示例配置:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<experiment>
    <process evaluation-method-type="net.sf.jclal.evaluation.method.RealScenario">
        <file-labeled>datasets/abalone-labeled.arff</file-labeled>
        <file-unlabeled>datasets/abalone-unlabeled.arff</file-unlabeled>    
        <algorithm type="net.sf.jclal.activelearning.algorithm.ClassicalALAlgorithm">
      <stop-criterion type="net.sf.jclal.activelearning.stopcriteria.MaxIteration">
              <max-iteration>10</max-iteration>	
      </stop-criterion>
      <stop-criterion type="net.sf.jclal.activelearning.stopcriteria.UnlabeledSetEmpty"/>
            <listener type="net.sf.jclal.listener.RealScenarioListener">
                <informative-instances>reports/real-scenario-informative-data.txt</informative-instances>
            </listener>
            <scenario type="net.sf.jclal.activelearning.scenario.PoolBasedSamplingScenario">
                <batch-mode type="net.sf.jclal.activelearning.batchmode.QBestBatchMode">
                    <batch-size>1</batch-size>
                </batch-mode>
                <oracle type="net.sf.jclal.activelearning.oracle.ConsoleHumanOracle"/>
               <query-strategy type="net.sf.jclal.activelearning.singlelabel.querystrategy.EntropySamplingQueryStrategy">
                    <wrapper-classifier type="net.sf.jclal.classifier.WekaClassifier">
                        <classifier type="weka.classifiers.bayes.NaiveBayes"/>
                    </wrapper-classifier>
                </query-strategy>
            </scenario>
        </algorithm>
    </process>
</experiment>

工具本身是通过以下方式调用的:

java -jar jclal-<version>.jar -cfg <config-file>

基于池的场景

在以下三个表中,我们比较了使用基于池的场景时,使用朴素贝叶斯、简单逻辑和 C4.5 分类器的结果。

朴素贝叶斯:

实验ROC 曲线下面积F 度量假正率精确率召回率
PoolBased-EntropySampling-NaiveBayes-b100.60210.10320.0556(1)0.18050.1304
PoolBased-KLDivergence-NaiveBayes-b100.6639(1)0.1441(1)0.05630.17650.1504
PoolBased-LeastConfidentSampling-NaiveBayes-b100.64060.13000.08270.1835(1)0.1810(1)
PoolBased-VoteEntropy-NaiveBayes-b100.6639(1)0.1441(1)0.05630.17650.1504

表 7. 使用朴素贝叶斯分类器的基于池的场景性能

逻辑回归:

实验ROC 曲线下面积F 度量假正率精确率召回率
PoolBased-EntropySampling-SimpleLogistic-b100.68310.15710.11570.16510.2185(1)
PoolBased-KLDivergence-SimpleLogistic-b100.7175(1)0.16160.10490.2117(1)0.2065
PoolBased-LeastConfidentSampling-SimpleLogistic-b100.66290.13920.1181(1)0.17510.1961
PoolBased-VoteEntropy-SimpleLogistic-b100.69590.1634(1)0.08950.23070.1880

表 8. 使用逻辑回归分类器的基于池的场景性能

C4.5:

实验ROC 曲线下面积F 度量假正率精确率召回率
PoolBased-EntropySampling-J48-b100.6730(1)0.3286(1)0.07370.3432(1)0.32780(1)
PoolBased-KLDivergence-J48-b100.66860.29790.0705(1)0.31530.2955
PoolBased-LeastConfidentSampling-J48-b100.65910.30940.08430.31240.3227
PoolBased-VoteEntropy-J48-b100.66860.29790.07060.31530.2955

表 9. 使用 C4.5 分类器的基于池的场景性能

基于流的场景

在以下三个表中,我们展示了使用朴素贝叶斯、逻辑回归和 C4.5 分类器以及四种不同采样方法在基于流的场景下的实验结果。

朴素贝叶斯:

实验ROC 曲线下面积F 度量假正率精确率召回率
StreamBased-EntropySampling-NaiveBayes-b100.6673(1)0.1432(1)0.05630.1842(1)0.1480
StreamBased-LeastConfidentSampling-NaiveBayes-b100.55850.09230.14150.16100.1807(1)
StreamBased-MarginSampling-NaiveBayes-b100.6736(1)0.12820.0548(1)0.18060.1475
StreamBased-VoteEntropyQuery-NaiveBayes-b100.55850.09230.14150.16100.1807(1)

表 10. 使用朴素贝叶斯分类器的基于流的场景性能

逻辑回归:

实验ROC 曲线下面积F 度量假正率精确率召回率
StreamBased-EntropySampling-SimpleLogistic-b100.7343(1)0.1994(1)0.08710.21540.2185(1)
StreamBased-LeastConfidentSampling-SimpleLogistic-b100.70680.17500.09060.2324(1)0.2019
StreamBased-MarginSampling-SimpleLogistic-b100.73110.1994(1)0.08610.21770.214
StreamBased-VoteEntropy-SimpleLogistic-b100.55060.09630.0667(1)0.10930.1117

表 11. 使用逻辑回归分类器的基于流的场景性能

C4.5:

实验ROC 曲线下面积F 度量假正率精确率召回率
StreamBased-EntropySampling-J48-b100.66480.30530.07560.3189(1)0.3032
StreamBased-LeastConfidentSampling-J48-b100.6748(1)0.3064(1)0.08320.31280.3189(1)
StreamBased-MarginSampling-J48-b100.66600.29980.0728(1)0.31630.2967
StreamBased-VoteEntropy-J48-b100.49660.06270.07420.10960.0758

表 12. 使用 C4.5 分类器的基于流的场景性能

主动学习结果分析

看到基于池的、基于委员会的查询——一种集成方法——使用 KL 散度采样在大多数分类器上表现良好,这确实很有趣。正如章节中讨论的,这些方法已经被证明通过保持一个大的假设空间来减少错误,并且这个实验结果从实证上支持了这一点。

基于池的、基于熵的采样使用 C4.5 作为分类器具有最高的精确率、召回率、假正率和 F 度量。此外,在基于流的熵采样中使用 C4.5,指标也相似地很高。使用不同的采样技术和基于池的 C4.5,如 KL 散度、最不自信或投票熵,指标显著更高。因此,这可以更强烈地归因于底层分类器 C4.5 在寻找非线性模式方面的能力。

考虑到 AUC,逻辑回归算法在基于流和基于池的情况下都表现非常好。这可能完全是因为 LR 在置信映射方面有一个很好的概率方法,这是获得良好 AUC 分数的重要因素。

摘要

在前几章中,我们游览了监督学习和无监督学习技术及其在现实世界数据集上的应用,本章介绍了半监督学习SSL)和主动学习AL)的概念、技术和工具。

在 SSL 中,我们被给予一些标记的示例和许多未标记的示例——目标是要么简单地训练标记的示例以对未标记的示例进行分类(归纳 SSL),要么使用未标记和标记的示例来训练模型以正确分类新的、未见过的数据(归纳 SSL)。SSL 中的所有技术都基于与半监督平滑性、聚类一致性和流形一致性相关的假设之一或多个。

不同的半监督学习(SSL)技术适用于不同的场景。简单的自训练 SSL 方法直接且与大多数监督学习算法兼容;当数据来自多个领域时,协同训练 SSL 是一个合适的方法。当簇内聚假设成立时,可以使用簇和标签 SSL 技术;通过传递图标签传播利用“接近度”度量,这可能计算成本较高。传递 SVM 在线性或非线性数据上表现良好,我们通过使用JKernelMachines库在 UCI 乳腺癌数据集上训练具有高斯核的 TSVM 的例子来展示。在章节 SSL 部分的结尾部分,我们展示了使用图形 Java 工具 KEEL 比较 SSL 模型的实验。

我们在章节的后半部分介绍了主动学习(AL)。在这种学习中,使用各种策略查询数据集的无标签部分,以便向专家展示将证明从整个数据集中学习最有效的示例。作为专家或先知,为所选实例提供标签后,学习者稳步提高其泛化能力。AL 技术以分类器或分类器委员会的选择以及重要的查询策略选择为特征。这些策略包括不确定性采样,其中查询最没有信心的实例,版本采样,其中选择解释训练数据的假设子集,以及数据分布采样,这涉及通过选择会减少泛化错误的选项来改进模型。我们通过使用 UCI 鲍鱼数据集的案例研究来展示主动学习的实际应用。这里使用的工具是用于主动学习的 JCLAL Java 框架。

参考文献

  1. Yarowsky, D (1995). 无监督词义消歧与监督方法相媲美。第 33 届计算语言学协会年会论文集(第 189–196 页)

  2. Blum, A.,and Mitchell, T (1998). 结合有标签和无标签数据与协同训练。COLT:计算学习理论研讨会论文集。

  3. Demiriz, A.,Bennett, K.,and Embrechts, M (1999). 使用遗传算法进行半监督聚类。人工神经网络在工程中的应用研讨会论文集。

  4. Yoshua Bengio, Olivier Delalleau, Nicolas Le Roux (2006). 标签传播和二次准则。在半监督学习,第 193-216 页

  5. T. Joachims (1998). 基于支持向量机的文本分类的归纳推理,ICML.

  6. B. Settles (2008). 好奇的机器:具有结构实例的主动学习。威斯康星大学麦迪逊分校博士论文。

  7. D. Angluin (1988). 查询和概念学习。机器学习,2:319–342.

  8. D. Lewis 和 W. Gale (1994). 训练文本分类器的顺序算法. 见《ACM SIGIR 信息检索研究与发展会议论文集》(ACM SIGIR Conference on Research and Development in Information Retrieval),第 3–12 页。ACM/Springer。

  9. H.S. Seung, M. Opper, 和 H. Sompolinsky (1992). 委员会查询. 见《计算学习理论研讨会论文集》(ACM Workshop on Computational Learning Theory),第 287–294 页。

  10. D. Cohn, L. Atlas, R. Ladner, M. El-Sharkawi, R. Marks II, M. Aggoune, and D. Park (1992). 使用查询和选择性采样训练连接主义网络. 见《神经网络信息处理系统进展》(NIPS),摩根考夫曼出版社。

  11. D. Cohn, L. Atlas, 和 R. Ladner (1994). 通过主动学习提高泛化能力. 机器学习,15(2):201–221。

  12. D. Lewis 和 J. Catlett (1994). 用于监督学习的异质不确定性采样. 见《国际机器学习会议论文集》(ICML),第 148–156 页。摩根考夫曼出版社。

  13. S. Dasgupta, A. Kalai, 和 C. Monteleoni (2005). 基于感知器的主动学习分析. 见《学习理论会议论文集》(COLT),第 249–263 页。斯普林格出版社。

  14. S. Dasgupta, D. Hsu, 和 C. Monteleoni (2008). 一个通用的无监督主动学习算法. 见《神经网络信息处理系统进展》(NIPS),第 20 卷,第 353–360 页。麻省理工学院出版社。

  15. T. Mitchell (1982). 泛化作为搜索. 人工智能,18:203–226。

第五章。实时流机器学习

在第二章《现实世界监督学习的实用方法》、第三章《无监督机器学习技术》和第四章《半监督和主动学习》中,我们讨论了分类、聚类、异常检测、半监督和主动学习的各种技术。从现有或历史数据中进行的学习的形式传统上被称为批量学习。

所有这些算法或技术都假设三个条件,即:

  • 可用有限训练数据来构建不同的模型。

  • 学习到的模型将是静态的;也就是说,模式不会改变。

  • 数据分布也将保持不变。

在许多现实世界的数据场景中,要么事先没有可用的训练数据,要么数据本质上是动态的;也就是说,随着时间的推移而持续变化。许多现实世界应用也可能有具有短暂性质的数据,以高速或大量出现,例如物联网传感器信息、网络监控和 Twitter 动态。这里的要求是立即从实例中学习,然后更新学习。

动态数据的性质和可能变化的分布使得现有的基于批量的算法和技术通常不适用于此类任务。这导致了机器学习中的自适应或可更新或增量学习算法的出现。这些技术可以应用于从数据流中持续学习。在许多情况下,由于大数据的规模和需要将整个数据拟合到内存中的需要,学习大数据的缺点也可以通过将大数据学习问题转化为增量学习问题并逐个检查示例来克服。

在本章中,我们将讨论假设,并讨论监督学习和无监督学习中的不同技术,这些技术有助于实时或流机器学习。我们将使用开源库大规模在线分析MOA)来进行现实世界案例研究。

本章的主要部分包括:

  • 假设和数学符号。

  • 基本流处理和计算技术。讨论流计算、滑动窗口包括 ADWIN 算法和采样。

  • 概念漂移和漂移检测:介绍了学习演化的系统、数据管理、检测方法以及隐式和显式适应。

  • 增量监督学习:讨论从标记流数据中学习,包括线性、非线性以及集成算法的建模技术。随后是验证、评估和模型比较方法。

  • 增量无监督学习:与第三章中讨论的聚类技术类似,包括验证和评估技术。

  • 使用异常检测进行无监督学习:基于分区和基于距离的方法,以及所使用的验证和评估技术。

  • 基于流的案例研究:介绍了 MOA 框架,提出了业务问题,进行了特征分析,将其映射到机器学习蓝图;描述了实验,并以结果展示和分析结束。

假设和数学符号

许多流机器学习技术都做出了某些关键假设,我们将在下面明确陈述:

  • 数据中的特征数量是固定的。

  • 数据具有小到中等维度,或特征数量,通常在数百个左右。

  • 样本数量或训练数据可以是无限的或非常庞大,通常在数百万或数十亿。

  • 在监督学习或聚类中,类标签的数量很小且有限,通常少于 10。

  • 通常,内存有一个上限;也就是说,我们无法将所有数据放入内存,因此从数据中学习必须考虑这一点,特别是像 K-Nearest-Neighbors 这样的懒惰学习器。

  • 通常,处理事件或数据所需的时间有一个上限,通常是几毫秒。

  • 数据中的模式或分布可能随时间演变。

  • 学习算法必须在有限时间内收敛到解决方案。

D[t] = {x[i], y[i] : y = f(x)} 为在时间 t ∈ {1, 2, … i} 可用的给定数据。

增量学习算法为数据序列 {.., D[j-1], D[j], D[j+1]..} 生成一系列模型/假设 {.., G[j-1], G[j], G[j+1]..},其中模型/假设 G[i] 仅依赖于前一个假设 G[i-1] 和当前数据 D[i]。

基本流处理和计算技术

现在,我们将描述一些可以在数据流上执行的基本计算。如果我们必须在内存和速度有限的情况下运行汇总操作,如聚合或直方图,我们可以确信需要某种形式的权衡。在这些情况下,两种众所周知的近似类型是:

  • ϵ 近似:计算结果在误差的 ϵ 分数内接近精确值。

  • (ϵ*, δ*) 近似:计算结果在 1 ± ϵ 范围内,以 1 – δ 的概率接近精确值。

流计算

当我们必须在内存和整个数据上考虑基本操作时,我们将展示一些基本的计算和聚合,以突出批处理和基于流的计算之间的差异:

  • 频率计数或点查询:Count-Min Sketch 的通用技术已被成功应用于对数据流进行各种汇总。主要技术是创建一个大小为 w x d 的窗口。然后,给定一个期望的概率(δ)和可接受的误差(ϵ),可以使用 w = 2/ ϵ流计算 来创建内存中的数据大小。与每一行相关联的是一个哈希函数:h(.). 这个函数将值 x 均匀地转换到区间 [1, 2 … w] 内。这种方法可以用于执行值或点积或频率计数的点查询。

  • 不同计数:Hash-Sketch 的通用技术可用于执行“不同值”查询或计数。给定进入流值的域 x ∈ [0,1,2….N-1],哈希函数 h(x)将值均匀映射到 [0,1,….2L-1],其中 L=O(log N)

  • 均值:在不存储所有值的情况下计算均值非常有用,通常使用递归方法实现,只需要观察数(n)和迄今为止看到的值的总和(∑x[n]):流计算

  • 标准差:与均值一样,标准差可以使用无记忆选项仅使用观察数(n)、迄今为止看到的值的总和(∑x[n])和值的平方总和(∑x[n]²)来计算:流计算

  • 相关系数:给定两个不同值的流,许多算法需要计算这两个值之间的相关系数,可以通过维护每个流的运行总和(∑x[n] 和 ∑y[n])、值的平方总和(∑x[n]² 和 ∑y[n]²)和交叉乘积(∑x[n]x y[n])来实现。相关系数由以下公式给出:流计算

滑动窗口

通常,在计算统计数据或汇总时,你不需要整个数据,只需要“最近过去”的数据。在这种情况下,使用滑动窗口技术通过保持窗口大小固定或可调整并移动它来计算汇总统计。

ADaptable sliding WINdowADWIN)是一种用于检测变化以及估计计算所需值的知名技术。ADWIN 背后的想法是保持一个具有可变长度的最近看到值的窗口,其特征是窗口的最大长度与窗口内平均值的平均值没有变化这一事实在统计上是一致的。换句话说,如果新的进入值会改变平均值,则仅当删除旧值时,才会删除旧值。这有两个优点:记录变化并维护最近流中的动态值,如聚合值。确定删除项的主观概念“足够大”可以使用已知的 Hoeffding 界来确定:

滑动窗口

这里 滑动窗口 是两个窗口 W[0] 和 W[1] 之间的调和平均值,其中 W[0] 和 W[1] 的尺寸分别为 |W[0]| 和 |W[1]|,W[1] 包含更近期的元素。此外,滑动窗口滑动窗口 分别是相应的计算平均值。

该算法可以概括为:

  1. ADWIN (x: 输入流, δ: 置信度)

  2. init (W) //初始化窗口 W

  3. while (x){

    W ← W ∪ {x[t]} //将新实例 x[t] 添加到窗口 W 的头部

  4. repeat W ← W – xold //从窗口尾部删除元素

  5. 滑动窗口 < 滑动窗口W 的每个分割都成立

  6. output 滑动窗口

  7. }

ADWIN 还表明,它提供了对假阳性和假阴性的理论界限,这使得它成为一种非常有前途的技术。

采样

在许多基于流的算法中,需要减少数据或选择数据的一个子集进行分析。对于基于流的算法,必须增强对整个数据集的采样方法。

在采样中必须解决的关键问题是样本的无偏性和它们如何代表生成流的总体。在非流式环境中,这完全取决于样本大小和采样方法。均匀随机采样(第二章, 实际应用中的监督学习)是在批量数据世界中用于减少数据的最知名技术之一。考虑到内存限制,水库采样技术被认为是一种非常有效的减少数据的方法。

水库采样的基本思想是保持一个固定大小的水库或样本,比如说 k,并且每个进入流量的元素都有 k/n 的概率替换水库中的较老元素。详细的算法如下所示:

ReservoirSampling(x:inputstream, k:sizeOfReservoir)
//add first k elements to reservoir
for(i = 0; i < k; i++)
  addToReservoir(x)
  while (x){
    for(i = 0; i < k; i++)
    //flip a coin to get random integer
    r = randomInteger[1..n]
    if(r ≤ k){
      //move it inside the reservoir
      addToReservoir(x)
      //delete an instance randomly from reservoir
      position = randomInteger[1..k]
      removeInstance(position)
    }
}

这些方法有扩展,如 Min-wise 采样和负载卸载,可以克服与基本方法相关的一些问题。

概念漂移和漂移检测

如本章引言中所述,无限流量的动态性质与静态学习的基本原则直接对立;也就是说,数据的分布或模式保持不变。尽管可能会有快速或突然的变化,但这里的讨论是关于缓慢、渐进的变化。这些缓慢、渐进的变化相当难以检测,将变化与噪声分离变得更加困难:

概念漂移和漂移检测

图 1 通过底部面板中颜色从黄色渐变到蓝色的方式展示了概念漂移。采样数据反映了数据分布的潜在变化,这必须被检测到,并学习一个新的模型。

在过去二十年里,各种研究中描述了几种技术,可以按照以下图示进行分类:

概念漂移和漂移检测

图 2 漂移检测技术分类

数据管理

主要思想是在内存中管理一个与数据的动态特性一致的模型。

部分内存

这些技术使用内存缓冲区中最最近使用的数据来学习或推导摘要信息。正如之前讨论的那样,关键问题是:检测变化和学习有效性的正确窗口大小是什么?在基于固定窗口大小的技术中,我们使用队列的概念,其中带有最近时间戳的新实例进入,而最旧的实例被移除。因此,窗口包含所有足够近的示例,其大小通常基于内存的物理可用性和队列中数据元素的大小。在自适应窗口大小中,队列与检测算法结合使用。当检测算法根据性能评估表明存在漂移迹象时,窗口大小可以减小,以有效地移除不再帮助模型的旧示例。

全内存

思想是在所有示例或数据上存储足够的统计信息。一种方法是对数据进行加权,权重随时间衰减。使用由 λ 给出的速率因子的指数加权可以非常有效:

w[λ] (x) = exp(– λ * i)

检测方法

给定观察到的给定数据的概率 P(X),模式/类 P(C) 的概率,以及给定类的数据概率 P(X|C)——即模型——检测方法可以大致分为两类:

  • 监控模型、分类器或 P(C|X) 的演变或性能

  • 监控环境中的分布或观察 P(X)P(C)P(X|C)

监控模型演变

尽管这种方法基于所有模型的 学习都是平稳的,数据来自 独立、同分布i.i.d.)的假设,这在许多应用中并不成立,但它已被证明是有效的。以下将描述一些知名技术。

维德默和库巴特

这是最早的方法之一,它观察了错误率或误分类率以及由于新分支等原因对模型(如树结构)的变化。使用这些和已知的阈值,学习窗口的大小会增加或减少。

漂移检测方法或 DDM

此方法假设正在观察的参数,例如分类器正确或错误地标记事物,是一个二元随机变量,遵循二项分布。它假设在概率 pi 处的误分类概率,标准差为 漂移检测方法或 DDM,其中值在序列的第 i^(th) 点计算。然后,该方法使用两个水平:

  • 警告水平:当 p[i] + s[i] ≥ p[min]+ 2 * s[min]

  • 检测水平:当 p[i] + s[i] ≥ p[min]+ 3 * s[min]

在“警告”和“检测”水平之间的所有示例都用于训练一个新的分类器,当达到“检测”水平时,将替换“表现不佳”的分类器。

早期漂移检测方法或 EDDM

EDDM 使用与 DDM 相同的技巧,但略有修改。它使用分类率(即召回率)而不是错误率(1 – 准确率),并使用正确预测数和两个错误预测数之间的距离来改变水平。

EDDM 计算两个误差 p[i]^' 之间的平均距离和两个 s[i]'. 标准差之间的距离。水平如下:

  • 警告水平:(p[i]^' + 2 * s[i]^') ⁄ (p^'[max] + 2 * s^'[max]) < α

  • 检测水平:(p[i]^' + 2 * s[i]') ⁄ (p^'[max] + 2 * s^'[max]) < β

参数 αβ 通常由用户调整到大约 90% 和 95%。

监控分布变化

当没有模型或分类器来检测变化时,我们应用使用某种形式的统计检验来监控分布变化的技巧。这些检验用于识别分布变化。由于假设,无论是参数还是非参数,以及不同的偏差,很难具体地说哪个效果最好。在这里,我们提供一些著名的统计检验。

威尔奇 t 检验

这是 Student t 检验的两个样本的改编。检验被改编为采用大小为 N[1] 和 N[2] 的两个窗口,均值 威尔奇 t 检验威尔奇 t 检验,方差 威尔奇 t 检验威尔奇 t 检验来计算 p 值,并使用该值来拒绝或接受零假设:

威尔奇 t 检验

科尔莫哥洛夫-斯米尔诺夫检验

这种统计检验通常用于比较两个分布之间的距离,并验证它们是否低于某些阈值。这可以通过使用两个不同样本大小的窗口,N[1] 和 N[2],具有不同的累积分布函数,F1 和 F2,KS 距离来适应变化检测:

科尔莫哥洛夫-斯米尔诺夫检验

Kolmogorov-Smirnov's test(通过 Kolmogorov-Smirnov 表查找获得)的置信度为 α 时,拒绝零假设,该假设认为两个分布是相似的。

CUSUM 和 Page-Hinckley 测试

累积和CUSUM)旨在指示输入的平均值与零显著不同:

g[0] = 0 , g[t] = max(0, g[t–1]) + ϵ[t] – v)

g[t] > h 时,我们提高变化检测,其中 (h, v) 是用户定义的参数。请注意,CUSUM 测试是无记忆的,是一侧或非对称的,仅检测增加。

Page Hinckley 测试与 CUSUM 类似,但有微小差异,如下所示:

g0 = 0 , g[t] = g[t–1] + ϵ[t] – v)

对于增加和减少值,我们使用 G[t] = min(g[t], G[t–1]) 或 G[t] = max(g[t], G[t–1]),并且 Gt – gt > h 用于变化检测。

适应方法

显式和隐式适应是两种在检测到变化时适应环境变化的知名技术。

显式适应

在显式适应中,使用以下技术之一:

  • 使用新数据从头开始重新训练模型,以确保以前的模型或数据不会影响新模型

  • 使用变化或新数据更新模型,以确保过渡平滑——假设变化是渐进的,而不是剧烈的

  • 创建一个随时间学习的模型序列或集成——当协作方法比任何单个模型更好时

隐式适应

在隐式适应中,我们通常使用集成算法/模型来适应概念变化。这可能意味着使用从单个分类器到集成预测,再到使用 ADWIN 进行基于自适应窗口的适应的不同组合——所有这些都属于隐式适应的选择。

增量监督学习

本节介绍了在实例的真实标签可用时,从流数据中学习所使用的几种技术。特别是,我们展示了适用于增量学习的线性、非线性以及基于集成算法,以及这些模型评估和验证所需的方法,同时考虑到学习受限于内存和 CPU 时间的限制。

建模技术

建模技术分为线性算法、非线性算法和集成方法。

线性算法

这里描述的线性方法需要很少或不需要适应来处理流数据。

带损失函数的在线线性模型

可以使用不同的损失函数,如铰链、逻辑和平方误差,在此算法中使用。

输入和输出

这些方法仅使用数值特征。损失函数 l 和应用权重更新的学习率 λ 的选择被视为输入参数。输出通常是可更新的模型,这些模型提供带有置信值的预测。

它是如何工作的?

基本算法假设线性权重组合,类似于第二章中解释的线性/逻辑回归,《面向现实世界监督学习的实用方法》。流或在线学习算法可以总结如下:

  1. for(t=1,2,…T) do

    1. x[t] = receive(); //接收数据

    2. 如何工作? ; //预测标签

    3. y[t] = obtainTrueLabel(); //获取真实标签

    4. loss = l(w[t], (x[t], w[t])); //计算损失

    5. if(l(wt,(xt, wt )) > 0 then

    6. 如何工作? ; //更新权重

    7. end

  2. end

可以根据问题类型插入不同的损失函数;这里展示了其中一些知名类型:

  • 分类:

    • 切比雪夫损失:l(w[t], (x[t], w[t])) = max(0, 1 – yf(x[t], w[t]))

    • 逻辑损失:如何工作?

  • 回归:

    • 平方损失:如何工作?

随机梯度下降 (SGD)可以被视为改变权重以最小化平方损失,如前面的损失函数,但以每个示例的梯度方向前进。权重的更新可以描述为:

如何工作?如何工作?

优点和局限性

在线线性模型与第二章中描述的线性模型具有类似的优缺点,《面向现实世界监督学习的实用方法》

  • 在一定程度上可解释,因为每个特征的权重可以提供对每个特征影响的见解

  • 假设线性关系,加性和不相关特征,因此不模拟复杂的非线性现实世界数据

  • 非常容易受到数据中异常值的影响

  • 非常快,通常也是尝试或基线算法之一

在线朴素贝叶斯

贝叶斯定理应用于获取预测值,即后验概率,给定一个m维输入:

在线朴素贝叶斯

输入和输出

在线朴素贝叶斯可以接受分类和连续输入。对于分类特征来说更容易,因为算法必须维护每个类别的计数,同时计算给定类别的每个特征的P(X[j]|Y)概率。对于连续特征,我们必须假设一个分布,例如高斯分布,或者以增量方式计算在线核密度估计,或者以增量方式对数值特征进行离散化。输出是可更新的模型,可以预测类别并附带置信值。作为概率模型,它们具有更好的置信度分数,分布在 0 到 1 之间。

如何工作?
  1. for(t = 1,2,…T) do

    1. x[t] = receive(); //接收数据

    2. incrementCounters(x[t]); //更新P(Xj|Y)

    3. 如何工作? //后验概率

  2. end

优点和局限性
  • 这是最快的算法,同时具有低内存占用和计算成本。它在在线或快速学习者中非常受欢迎。

  • 假设分布或某些影响预测质量的数值特征的偏差。

非线性算法

目前使用最流行的非线性流学习分类器之一是 Hoeffding 树。在以下小节中,介绍了 Hoeffding 界限的概念,然后是算法本身。

Hoeffding 树或非常快速决策树(VFDT)

Hoeffding 树(HT)背后的关键思想是 Hoeffding 界限的概念。给定一个具有值范围大小R的实值随机变量x,假设我们有n个独立的x观察值,并计算其均值Hoeffding trees or very fast decision trees (VFDT)

Hoeffding 界限表明,以 1 – δ的概率,变量x的实际均值至少是Hoeffding trees or very fast decision trees (VFDT)其中Hoeffding trees or very fast decision trees (VFDT)

Hoeffding 界限与生成样本的概率分布无关,并且仅使用n个示例就能给出良好的近似。

Hoeffding 界限的思想在叶扩展中使用。如果x[1]是最具信息量的特征,而x[2]排名第二,那么使用用户定义的分割函数G(.)进行分割,以便:

Hoeffding trees or very fast decision trees (VFDT)

输入和输出

分类数据和连续数据都可以是数据输入的一部分。在许多实现中,连续特征被离散化。所需的概率参数 1 – δ和与决策树共同的分割函数G(.)成为输入的一部分。输出是可解释的决策树模型,并且可以用类别和置信度值进行预测/学习。

它是如何工作的?

HoeffdingTree(x:输入流,G(.):分割函数,δ:概率界限)

  1. 让 HT 成为一个具有单个叶(根)的树

  2. 初始化计数(n[ijk], root)

  3. for(t=1,2,…T) do //来自流的全部数据

    1. x*[t] = receive();* //接收数据

    2. y[t] = obtainTrueLabel(); //获取真实标签

    3. HTGrow((x[t], y[t]), HT, δ)

    4. end

HTGrow((x[t], y[t]), HT, G(.), δ)

  1. *l = sort((*x[t], y[t]), HT); //使用 HT 对数据进行排序到叶 l

  2. updateCounts(n[ijk], l); //更新叶 l 的计数

  3. if(examplesSoFarNotOfSameClass();//检查是否存在多个类别

  4. computeForEachFeature(,G(.))

    1. 如何工作?

Hoeffding 树具有有趣的特性,例如:

  • 它们是一个稳健的低方差模型

  • 它们表现出较低的过拟合

  • 由于 Hoeffding 界限,存在高概率上的误差率的理论保证

Hoeffding Trees 有适应概念漂移的变体,称为概念适应 VFDT。它们在流上使用滑动窗口概念。决策树中的每个节点都保留足够的统计信息;基于 Hoeffding 测试,当准确性更好时,会生长一个替代子树并将其交换。

优点和局限性

优点和局限性如下:

  • 基本 HT 在属性接近所选ϵ时存在问题,并打破了平局。在任何节点上决定属性的数量又是一个问题。其中一些问题在 VFDT 中得到解决。

  • 随着树的变化,树扩展的内存限制以及在一个实例上花费的时间成为问题。

  • VFDT 在模式变化方面存在问题,CVFDT 试图克服这些问题,如前所述。它是实时和大数据中最优雅、快速、可解释的算法之一。

集成算法

集成学习的思想与批量监督学习类似,其中多个算法以某种形式训练和组合来预测未见数据。即使在在线设置中,不同的集成方法也能带来相同的益处;例如,使用不同类型的多个算法,使用具有不同参数或样本数据的类似类型的模型,所有这些都可以找到不同的搜索空间或模式,从而降低总误差。

加权多数算法

加权多数算法WMA)训练一组基础分类器,并按某种方式加权它们的投票,然后基于多数进行预测。

输入和输出

输入类型的约束(仅分类,仅连续,或混合)取决于所选的基础分类器。模型的可解释性取决于所选的基础模型(s),但很难解释模型组合的输出。当预测不正确时,每个模型的权重通过每个示例/实例的因子(β)更新。权重和模型的组合可以给出一些可解释性的线索。

它是如何工作的?

WeightedMajorityAlgorithm(x: inputstream, hm: m learner models)

  1. initializeWeights(w[i])

  2. for(t=1, 2,…T) do

    1. x[t] = receive();

    2. foreach model hk h

    3. y[i] ← hk;

  3. 如何工作?如何工作?

  4. else 如何工作?

  5. if y is known then

    1. for i = 1 to m do

    2. if yi ≠ y then

    3. wiwi ** β*

      end if

      end for

  6. end

优点和局限性

优点和局限性如下:

  • WMA 具有简单的实现和理论上的集成误差界限

  • 困难之处在于选择正确的基算法,因为模型和池中模型的数量。

在线 Bagging 算法

正如在监督学习章节中看到的,袋装算法从训练集中创建不同的样本,并使用多个算法进行学习和预测,减少了方差,在学习和预测中非常有效。

输入和输出

对输入类型的限制(仅分类,仅连续,或混合)取决于所选的基本分类器。与算法对应的参数选择的基本分类器算法也是输入。输出是学习模型,可以根据所选分类器预测类别/置信度。

它是如何工作的?

基本的批量袋装算法需要整个数据可用以创建不同的样本,并将这些样本提供给不同的分类器。Oza 的在线袋装算法改变了这一限制,使得从无界数据流中学习成为可能。基于采样,原始算法中的每个训练实例被复制多次,每个基本模型使用原始实例的 k 份副本进行训练,其中:

P(k) = exp(–1)/k!

这相当于取一个训练示例,并为每个分类器选择 k~Poisson(1),然后更新基本分类器 k 次。因此,消除了对示例数量的依赖,算法可以在无限流上运行:

OnlineBagging(x: inputstream, h[m]: m learner models)

  1. 为所有 m ∈ {1,2,..M} 初始化基本模型 h[m]*

  2. for(t=1,2,…T) do

    1. x[t]=receive();

    2. foreach model m = {1,2,..M}

      w = Poisson(1)

      updateModel(h[m], w, x[t])

    3. end

  3. return

  4. 它是如何工作的?

优点和局限性

优点和局限性如下:

  • 实验表明,它是最成功的在线或流算法之一。

  • 权重必须分配给数据实例,而不考虑其他实例;这减少了在批量中可用且对模型性能良好的不同加权方案的选择。

性能完全取决于 M 学习者的选择——用于问题域的学习者类型。我们只能通过采用模型验证技术部分中描述的不同验证技术来决定这个选择。

在线提升算法

监督提升算法采用许多 弱学习器,其准确率略高于随机,通过迭代采样错误分类的示例来组合它们以产生强学习器。这个概念在 Oza 的在线提升算法中是相同的,但为了连续数据流进行了修改。

输入和输出

对输入类型(仅分类,仅连续,或混合)的限制取决于所选的基本分类器。基本分类器算法及其相应的参数是输入。输出是学习模型,可以根据所选分类器预测类别/置信度。

它是如何工作的?

将批量提升修改为在线提升的方法如下:

  1. M 个基本模型保留两套权重,λ^c 是一个维度为 M 的向量,它携带正确分类实例的权重总和,而 λ^w 是一个维度为 M 的向量,它携带错误分类实例的权重总和。

  2. 权重初始化为 1。

  3. 给定一个新的实例(x[t],y[t]),算法通过更新基本模型的迭代过程。

  4. 对于每个基本模型,重复以下步骤:

    1. 对于第一次迭代,k = Poisson(λ) 被设置,学习分类器使用(在此表示为 h[1])k 次更新算法(使用(x[t],y[t])):

    2. 如果 h[1] 错误地分类了实例,则 λ^(w1) 增加,ϵ[1],由 h[1] 错误分类的加权分数,被计算,并且示例的权重乘以 1/2 ϵ[1]。

优点和局限性

优点和局限性如下:

  • 再次,性能取决于多个学习者的选择、它们的类型以及特定问题的领域。在模型验证技术部分描述的不同方法帮助我们选择学习者。

  • Oza 的在线提升已被理论和实证证明不是“无损”;也就是说,与它的批量版本相比,模型是不同的。因此,它存在性能问题,近年来已经研究了不同的扩展来提高性能。

在在线设置中的验证、评估和比较

与我们在前几章中看到的机器学习模式不同,流学习在执行验证和评估的核心步骤时提出了独特的挑战。我们不再处理批量数据的事实意味着,用于验证评估和模型比较的标准技术必须适应增量学习。

模型验证技术

在离线或批量设置中,我们讨论了调整算法参数或测试算法泛化能力作为防止过拟合的对策的各种方法。批标签数据中的一些技术,如交叉验证,在在线或流设置中不直接适用。在线或流设置中最常用的技术将在下面给出。

预序评估

预序评估方法是一种将实例提供给算法的方法,然后使用损失函数将算法的输出预测与实际标签进行比较。因此,算法始终在未见数据上测试,无需“保留”数据来估计泛化。预序误差是根据实际值和预测值之间累积损失函数的总和计算的,给出如下:

预序评估

为了更好地估计变化数据,进行了三种基本预序评估的变体,它们是:

  • 使用地标窗口(基本)

  • 使用滑动窗口

  • 使用遗忘机制

最后两种方法是之前描述的技术扩展,其中你在预测上放置权重或衰减因子,这些权重或因子会随着时间的推移而减少。

保留集评估

这是保留机制或“独立测试集”方法在批量学习中的扩展。在这里,总标记集或流数据被分为训练集和测试集,要么基于某些固定间隔,要么基于算法看到的示例/实例数量。想象一下连续的数据流,我们在 保留集评估保留集评估 处放置已知的间隔,以比较评估指标,如下一节所述,以评估性能。

控制排列

上述机制的问题在于,它们提供了随时间变化的“平均”行为,可能会掩盖一些基本问题,例如算法由于漂移而在开始时表现良好,而在结束时表现非常糟糕。前述方法的优点是,它们可以应用于实际的输入流以获得估计。克服这种缺点的一种方法是在数据的不同随机集中创建不同的随机集,同时保持时间上的邻近性,并在这些随机集上进行评估。

评估标准

大多数评估标准与监督学习章节中描述的相同,应根据业务问题、业务问题到机器学习技术的映射以及从中获得的收益来选择。在本节中,总结了读者最常用的在线监督学习评估标准:

  • 准确率:衡量学习算法正确分类真实正例和真实负例的度量:评估标准

  • 平衡准确率:当类别不平衡时,通常使用平衡准确率作为度量。平衡准确率是特异性和敏感性的算术平均值。也可以将其视为在二元分类问题中,从相同的概率中抽取正例和负例时的准确率。

  • ROC 曲线下面积 (AUC): ROC 曲线下面积提供了算法泛化能力的良好度量。接近 1.0 表示算法具有良好的泛化能力,而接近 0.5 则表示它更接近随机猜测。

  • Kappa 统计量 (K): Kappa 统计量用于衡量分类中观察到的准确度与随机猜测的预期准确度。在在线学习中,Kappa 统计量通过计算先验准确度 (po) 和随机分类器准确度 (pc) 来使用,其表达式为:评估标准

  • Kappa Plus 统计量: Kappa Plus 统计量是对 Kappa 统计量的一种修改,通过用持久分类器替换随机分类器来获得。持久分类器是一种基于先前实例的标签或结果预测下一个实例的分类器。

当考虑“漂移”或概念变化,如前所述,除了这些标准措施外,还使用一些已知的措施来给出定量度量:

  • 真实变化检测的概率: 通常使用合成数据或已知变化的数据进行测量。它提供了学习算法检测变化的能力。

  • 误报概率: 与离线设置中使用假阳性率不同,在线设置使用检测时间的倒数或平均运行长度,该长度使用预期假阳性检测时间来计算。

  • 检测延迟: 这是指识别漂移所需的时间,以实例为单位的术语。

比较算法和指标

当在线设置中比较两个分类器或学习者时,通常的机制是采用性能指标,例如错误率,并使用适用于在线学习的统计检验。以下描述两种广泛使用的方法:

  • McNemar 检验: McNemar 检验是一种非参数统计检验,通常用于比较两个分类器的评估指标,例如“错误率”,通过存储两个分类器的简单统计信息。通过计算统计量 a,即一个算法正确分类的点数而另一个算法错误分类的数量,以及统计量 b,即其逆,我们得到 McNemar 检验如下:比较算法和指标

    该检验遵循 χ2 分布,p 值可用于检查统计显著性。

  • Nemenyi 检验: 当存在多个算法和多个数据集时,我们使用基于所有平均排名的 Nemenyi 检验进行统计显著性检验。如果排名差异超过由以下给出的关键差异,则认为两个算法在统计上以显著不同的方式表现:比较算法和指标

    在这里,K=算法数量,N=数据集数量。

假设关键差异值遵循 Student-T 分布。

使用聚类进行增量无监督学习

数据流中聚类的概念与批量或离线模式中的概念相同;也就是说,在保持对有限内存和处理所需时间的限制作为约束的同时,寻找有趣的数据簇或模式,这些模式在数据中聚集在一起。对现有算法进行单次修改或保持一个小内存缓冲区以执行现有算法的迷你批处理版本,构成了所有算法的基本变化,使它们适合流或实时无监督学习。

建模技术

在线学习的聚类建模技术分为基于分区、基于层次、基于密度和基于网格,类似于批量聚类的情况。

基于分区

基于分区算法的概念类似于批量聚类,其中形成k个聚类以优化某些目标函数,如最小化簇间距离,最大化簇内距离等。

在线 k-Means

k-Means 是最受欢迎的聚类算法,它将数据划分为用户指定的k个聚类,通常是为了最小化质心与分配给聚类的点之间的平方误差或距离。我们将说明 k-Means 的一个非常基本的在线自适应版本,其中存在几种变体。

输入和输出

主要,数值特征被视为输入;一些工具将分类特征转换为某种形式的数值表示。算法本身将聚类数量参数k和最大迭代次数n作为输入。

它是如何工作的?
  1. 输入数据流被认为是无限的,但块大小是恒定的。

  2. 保留一个块大小的内存缓冲区以存储数据或数据的压缩表示。

  3. 初始时,使用块大小的第一个数据流来找到聚类的k个质心,质心信息被存储,缓冲区被清除。

  4. 对于达到块大小后的下一个数据:

    1. 对于最大迭代次数或直到质心没有变化:

    2. 使用缓冲数据和当前质心执行 k-Means。

    3. 最小化质心与分配给聚类的数据之间的平方和误差。

    4. 迭代后,缓冲区被清除,并获得了新的质心。

  5. 重复步骤 4,直到数据不再可用。

优点和局限性

优点和局限性如下:

  • 与批量基础类似,检测到的聚类形状取决于距离度量,在形状不规则的领域问题中不合适。

  • 参数k的选择,如在批量基础上,可能会限制在具有许多不同模式或聚类的数据集上的性能。

  • 异常值和缺失数据可能会在线 k-Means 的聚类行为中引起许多不规则性。

  • 如果选择的缓冲区大小或迭代 k-Means 运行的流块大小较小,则无法找到正确的聚类。如果选择的块大小较大,可能会导致速度减慢或错过数据的变化。例如,非常快速 k-Means 算法VFKM),它使用 Hoeffding 界限来确定缓冲区大小,在很大程度上克服了这一限制。

基于层次和微聚类的

层次方法通常基于聚类特征CF)和聚类树CT)。我们将描述层次聚类和BIRCH算法的基本内容和元素,CluStream 算法就是基于这个扩展的。

聚类特征是一种以压缩方式计算和保存关于簇的汇总统计量,而不是保留簇所属的全部数据。在一个d维数据集中,有N个点的簇中,计算两个总和,即每个维度的总和LS和每个维度的数据总平方和SS,这个三元组的表示向量形成聚类特征:

CF[j]* = < N, LS*[j], SS[j]* >*

这些统计数据有助于总结整个簇信息。簇的重心可以通过以下方式轻松计算:

质心[j]* = LS*[j]* / N*

可以使用以下方法估计簇的半径:

基于层次和微聚类的图

可以使用以下方法估计簇的直径:

基于层次和微聚类的图

CF 向量具有很好的增量性和累加性,这在流或增量更新中非常有用。

对于增量更新,当我们必须更新 CF 向量时,以下条件成立:

基于层次和微聚类的图基于层次和微聚类的图基于层次和微聚类的图

当两个 CF 需要合并时,以下条件成立:

基于层次和微聚类的图基于层次和微聚类的图基于层次和微聚类的图

聚类特征树CF 树)表示一个层次树结构。CF 树的构建需要两个用户定义的参数:

  • 分支因子b,即任何节点可以拥有的最大子簇或非叶节点数

  • 最大直径(或半径)T,CF 父节点可以吸收的示例数量

CF 树操作,如插入,是通过递归遍历 CF 树并使用 CF 向量根据距离度量找到最近节点来完成的。如果一个叶节点已经吸收了由参数T给出的最大元素,则节点被分割。操作结束时,CF 向量会适当地更新其统计量:

基于层次和微聚类的图

图 3:一个展示层次结构的聚类特征树示例。

我们将根据这一概念讨论BIRCH平衡迭代减少和聚类层次结构)。

输入和输出

BIRCH 只接受数值特征。CF 和 CF 树参数,如分支因子b和叶节点的最大直径(或半径)T是用户定义的输入。

它是如何工作的?

BIRCH 是为非常大的数据库设计的,原本是一个两遍算法;也就是说,扫描整个数据一次,然后再次扫描,因此是一个*O(N)*算法。它可以很容易地修改为单遍算法,以在线方式保留相同的属性:

  1. 在第一阶段或扫描中,它遍历数据,通过顺序访问点并执行之前讨论的 CF 树操作,创建一个内存中的 CF 树结构。

  2. 在第二阶段,这是一个可选阶段,我们去除异常值并合并子簇。

  3. 第三阶段是为了克服第一阶段数据顺序的问题。我们使用层次聚类对 CF 树进行重构。

  4. 第四阶段是最后一个阶段,这是一个可选阶段,用于计算统计信息,如计算质心、将数据分配给最近的质心等,以提高效率。

优点和局限性

优点和局限性如下:

  • 它是最受欢迎的线性扩展算法之一,在大数据库或数据流上具有线性扩展能力。

  • 它以 CF 和 CF 树的形式具有紧凑的内存表示,用于对传入数据的统计和操作。

  • 它比大多数算法更好地处理异常值。

  • 一个主要的局限性是,当簇的形状不是球形时,它已被证明表现不佳。

  • BIRCH 中的 CF 向量聚类概念被 Aggarwal 等人扩展,以适应高效的流挖掘需求,并命名为微簇和 CluStream

输入和输出

CluStream 只接受数值特征。用户定义的参数包括内存中微簇的数量(q)和阈值(δ),在时间之后它们可以被删除。此外,输入还包括时间敏感的参数,用于存储微簇信息,由αl给出。

它是如何工作的?
  1. 微簇扩展了 CF 向量,并保留了两个额外的度量。它们是时间戳的总和以及时间戳平方的总和:

    微簇[j] = < N, LS[j], SS[j], ST, SST>

  2. 算法在内存中存储q个微簇,每个微簇都有一个最大边界,可以根据质心和簇实例之间的距离的均值和标准差来计算。这些度量乘以一个随时间指数递减的因子。

  3. 对于每个新的实例,我们根据欧几里得距离选择最近的微簇,并决定它是否应该被吸收:

    1. 如果新实例与最近微簇质心之间的距离在最大边界内,则它将被吸收,并且微簇统计信息将得到更新。

    2. 如果没有微簇可以吸收,则创建一个新的微簇,包含实例,并根据时间戳和阈值(δ),删除最旧的微簇。

    3. 假设时间戳服从正态分布,如果 CluStream 找到的实例的相关时间——实例到达的时间——低于用户指定的阈值,则被视为异常并删除。否则,将合并两个最近的微簇。

  4. 微簇信息通过使用金字塔时间窗口概念,时不时地存储在二级存储中。每个微簇使用 αl 指数递减的时间间隔来创建快照。这些快照有助于在时间和空间上高效搜索。

优点和局限性

优点和局限性如下:

  • CluStream 已被证明在实时寻找簇方面非常有效

  • CluStream 算法通过使用金字塔时间戳进行有效存储,具有高效的时间和空间使用。CluStream,就像 BIRCH 一样,只能找到球形形状的簇

基于密度

与批处理聚类类似,基于密度的技术克服了基于距离的算法面临的“形状”问题。在这里,我们将介绍一个著名的基于密度的算法,即 DenStream,它基于之前讨论的 CF 和 CF Trees 概念。

输入和输出

核心微簇的邻域范围是用户定义的半径 ϵ。第二个输入值是微簇的最小总权重 µ,它是每个实例到达时间加权函数的总和,其中权重随时间常数衰减,与另一个用户定义的参数 λ 成正比。最后,使用输入因子 β ∈ (0,1) 来区分潜在的核微簇和异常微簇。

它是如何工作的?
  1. 基于 CluStream 的微簇概念,DenStream 包含两个数据结构:p-微簇用于潜在簇和o-微簇用于异常检测。

  2. 每个 p-微簇 结构具有:

    1. 与它相关联的权重,该权重随时间戳的更新指数递减。如果微簇中有 j 个对象:它是如何工作的? 其中 f(t) = 2^(-λt)

    2. 加权线性求和WLS)和加权线性平方和WSS)与线性求和和平方和类似存储在微簇中:它是如何工作的?它是如何工作的?

    3. 使用之前定义的加权度量计算簇的均值、半径和直径,这与 CF 中的做法完全一样。例如,半径可以表示为:

    它是如何工作的?

  3. 每个 o-微簇p-微簇 具有相同的结构,并与其相关联时间戳。

  4. 当一个新的实例到达时:

    1. 如果新半径在用户定义的边界 ϵ 内,则找到最近的 p-微簇 并将实例插入其中。如果插入,则相应更新 p-微簇 统计数据。

    2. 否则,如果新的半径再次在边界内,就会找到一个o-微簇,并将实例插入其中。边界由用户定义参数的乘积β × μ定义,如果半径超过这个值,o-微簇将被移动到p-微簇

    3. 如果实例不能被一个o-微簇吸收,那么就会向o-微簇中添加一个新的微簇。

  5. 在基于权重的间隔时间to-微簇可以变成p-微簇,反之亦然。时间间隔以λβµ来定义:它是如何工作的?

优点和局限性

优点和局限性如下:

  • 基于参数,DenStream 可以找到实时数据的有效聚类和异常值。

  • 它的优点是能够找到任何形状或大小的聚类和异常值。

  • 如果没有正确选择,更新o-微簇p-微簇的维护工作可能会计算成本高昂。

基于网格

这种技术基于将多维连续空间离散化为多维离散版本,并使用网格。将传入的实例映射到在线网格并维护离线网格的结果是一种高效且有效的方法,可以在实时中找到聚类。

在这里,我们介绍了 D-Stream,这是一个基于网格的在线流聚类算法。

输入和输出

与基于密度的算法一样,D-Stream 使用了实例衰减权重的想法。此外,如以下所述,从输入空间形成的网格中的单元格可能被认为是稀疏的、密集的或偶然的,这些区别是算法的计算和空间效率的核心。因此,基于网格的算法的输入如下:

  • λ: 衰减因子

  • 0 < C[l] < 1 和 C[m] > 1:控制网格中密集和稀疏单元格之间边界的参数

  • β > 0:一个常数,用于控制当稀疏单元格被视为偶然单元格时的一个条件。

它是如何工作的?
  1. 在时间t到达的每个实例都有一个随时间指数衰减的密度系数:它是如何工作的?

  2. 在任何给定时间t,网格单元格g的密度由D(g, t)给出,它是映射到网格单元格g的所有实例的调整密度的总和E(g, t)它是如何工作的?

  3. 网格中的每个单元格都捕获了以下作为特征向量的统计数据:

    • CV(g) = <t[g], t>[m], D, label, status> 其中:

    • t[g] = 网格单元格上次更新的时间

    • t[m]= 网格单元格上次由于稀疏性而被移除的时间

    • D = 上次更新时网格单元格的密度

    • label = 网格单元格的类别标签

    • status = {正常或偶然}

  4. 当新的实例到达时,它会被映射到一个单元格g,并且特征向量被更新。如果g不可用,它将被创建,并且网格列表被更新。

  5. 具有空实例的网格单元将被移除。此外,长时间未更新的单元可能会变得稀疏,相反,当映射许多实例时,它们会变得密集。

  6. 在一个称为间隔的常规时间间隔内,检查网格单元的状态,那些实例数量少于由密度阈值函数确定的数字的单元被视为异常值并被移除。

优点和局限性

优点和局限性如下:

  • D-Streams 在理论和实证上已被证明能够在空间和时间上以非常高的效率找到偶然和正常的聚类。

  • 它可以有效地找到任何形状或大小的聚类。

验证和评估技术

许多在第三章无监督机器学习技术中讨论的静态聚类评估度量都假设存在静态和非演化的模式。其中一些内部和外部度量甚至在基于流的聚类检测中使用。本节的目标是首先强调流学习聚类评估中固有的问题,然后描述解决这些问题的不同内部和外部度量,最后介绍一些现有的度量——包括内部和外部度量——它们仍然有效。

流聚类评估的关键问题

理解一些特定于流和聚类的关键问题很重要,因为这些度量需要解决这些问题:

  • 老化: 点在给定时间后不再与聚类度量相关的属性。

  • 遗漏的点: 点不仅被遗漏为属于聚类,而且遗漏的量在聚类中。

  • 放置错误: 由新聚类的演变引起的聚类变化。合并现有或删除聚类会导致随着时间的推移出现不断放置错误。必须考虑这些变化随时间的影响。

  • 聚类噪声: 选择不应属于聚类的数据或围绕噪声形成聚类及其随时间的影响必须被考虑。

评估度量

在流数据上下文中进行聚类的评估度量必须提供聚类质量的有用指标,同时考虑演化和噪声数据流的影响、重叠和合并的聚类等问题。在此,我们介绍了一些在流聚类中使用的外部度量。在第三章无监督机器学习技术中遇到的许多内部度量,如轮廓系数、Dunn 指数和 R 平方,也被使用,此处不再重复。

聚类映射度量(CMM)

CMM 背后的思想是在给定真实情况下量化点到聚类的连通性。它分为三个阶段:

映射阶段:在这个阶段,流学习算法分配的聚类映射到真实聚类。基于这些,使用 k-最近邻的概念测量距离和点连通性的各种统计量。

p在聚类Ci 中到其最近的k个邻居的平均距离由以下公式给出:

聚类映射度量(CMM)

聚类C[i]的平均距离由以下公式给出:

聚类映射度量(CMM)

聚类C[i]中点p的点连通性由以下公式给出:

聚类映射度量(CMM)

对每个聚类计算类别频率,并通过计算直方图和聚类中的相似性来执行聚类到真实聚类的映射。

具体来说,聚类C[i]映射到真实类别,而Cl[j]映射到覆盖C[i]中类别频率大多数的真实聚类聚类映射度量(CMM)。剩余定义为类Cl[i]中未被真实聚类聚类映射度量(CMM)覆盖的实例数量,以及与聚类映射度量(CMM)相比,在聚类C[i]中类Cl[1],Cl[2],Cl[3] … Cl[1]中的实例的总剩余量给出如下:

聚类映射度量(CMM)

使用以下方法映射聚类C[i]:

聚类映射度量(CMM)

惩罚阶段:在这个步骤中,使用错误对象的计算来计算映射错误的每个实例的惩罚;即不是噪声但放置错误的对象,使用以下方法:

聚类映射度量(CMM)

o相对于所有找到的聚类的总体惩罚由以下公式给出:

聚类映射度量(CMM)

CMM 计算:使用所有惩罚在生命周期内加权给出如下:

聚类映射度量(CMM)

这里,C是找到的聚类,Cl是真实聚类,F是错误对象,*w(o)*是实例的权重。

V 度量

验证度或 V 度量是一个外部度量,它是基于流聚类中两个感兴趣的属性计算的,即同质性完整性。如果有n个类别,设C = {c[1], c[2] …, c[n]},和k个聚类K = {k[1], k[2..]k[m]},则创建列联表,其中A = {a[ij]}对应于类别c[i]和聚类k[j]中的实例数量。

同质性:同质性定义为聚类的一个属性,反映了聚类中所有数据属于同一类别的程度。

条件熵和类别熵:

V-MeasureV-Measure

同质性定义为:

V-Measure

同质性值越高越理想。

完整性:完整性定义为同质性的镜像属性,即所有单个类别的实例都属于同一个聚类。

与同质性类似,条件熵和聚类熵定义为:

V-MeasureV-Measure

完整性定义为:

V-Measure

V-Measure 定义为使用权重因子β的同质性和完整性的调和平均值:

V-Measure

完整性或 V-measure 的值越高越好。

其他外部度量

接下来给出一些外部度量,这些度量在比较聚类算法或测量已知类别的聚类有效性时相当流行:

纯度:它们与之前定义的同质性和完整性相似。

纯度定义为:

其他外部度量

熵定义为:

其他外部度量

这里,q = 类别数量,k = 聚类数量,nr = 聚类r的大小,其他外部度量

精度召回率F-Measure:针对聚类算法修改的信息检索度量如下:

给定,其他外部度量其他外部度量

精度定义为:

其他外部度量

召回率定义为:

其他外部度量

F-measures 定义为:

其他外部度量

使用离群值检测进行无监督学习

在数据流中寻找离群值或异常值是机器学习中的一个新兴领域。这个领域的研究并没有像基于分类和聚类的问题那样受到研究者的广泛关注。然而,已经有一些非常有趣的想法将聚类的概念扩展到从数据流中寻找离群值。我们将提供一些在流离群值检测中已被证明非常有效的科研。

基于分区聚类进行离群值检测

这里的核心思想是使用基于在线分区聚类算法,并根据聚类大小排序或簇间距离排序,将簇标记为离群值。

这里我们介绍由 Koupaie 等人提出的一种算法,使用增量 k-Means。

输入和输出

仅使用数值特征,正如大多数 k-Means 算法一样。聚类数量k和离群值窗口数量n,在离线聚类中使用的输入参数。输出是恒定的离群值(局部和全局)以及一个可更新的模型,用于检测这些离群值。

它是如何工作的?

  1. 该算法通过 k-Means 算法在两种模式下工作,离线模式和在线模式,两者并行运行。

  2. 对于在线模式:

    1. 在给定的窗口 w 上应用 k-Means,并找到具有簇的数据的簇和分区。

    2. 根据簇距离和簇大小对簇进行排序。距离最远且尺寸较小的簇被认为是异常值。

    3. 将窗口作为集合 O[w] = {x[1], x[2..]x[n]} 存储异常值,并将它们视为局部异常值。

    4. 窗口被清除,过程重复。

  3. 对于离线模式:

    1. n 个先前窗口中获取异常值,并创建一个集合:如何工作?

    2. 使用 k-Means 对窗口 S 进行聚类,并找到距离最远且尺寸较小的簇。

    3. 这些簇是全局异常值。

    4. 窗口被清除,过程重复。

优点和局限性

优点和局限性如下:

  • 它对参数 kn 非常敏感,可以生成大量噪声。

  • 只找到了球形簇/异常值,而不同形状的异常值被遗漏了。

基于距离的异常值检测聚类

基于距离的异常值检测是流学习领域中研究、实施最广泛的方法。基于滑动窗口、最近邻数量、半径和阈值以及其他考虑数据中异常值的措施,有许多基于距离的方法的变体。我们将尝试在本节中给出最重要的算法的抽样。

输入和输出

大多数算法将以下参数作为输入:

  • 窗口大小 w,对应算法查找异常值模式时的固定大小

  • 滑动大小 s,对应于将被添加到窗口中的新实例数量,以及将被移除的旧实例数量

  • 使用最近邻计算时实例的计数阈值 k

  • 用于定义距离中异常值阈值的距离阈值 R

异常值作为标签或分数(基于邻居和距离)输出。

如何工作?

我们展示了基于距离的流异常值算法的不同变体,揭示了它们的不同之处或独特之处。每个算法的独特元素定义了滑动窗口过期时会发生什么,如何处理新的滑动窗口,以及如何报告异常值。

精确风暴

精确风暴将数据存储在当前窗口 w 中的已知索引结构中,以便对给定点的范围查询搜索或查询在距离 R 内的邻居进行高效处理。它还存储所有数据点的 k 个前驱和后继邻居:

  • 过期滑动窗口:过期滑动窗口中的实例从影响范围查询的索引结构中删除,但保留在邻居的前驱列表中。

  • 新滑动窗口:对于新滑动窗口中的每个数据点,执行范围查询 R,使用结果更新实例的前驱和后继列表,并将实例存储在索引结构中。

  • 异常值报告:在任何窗口中,在处理过期和新幻灯片元素完成后,任何至少有 k 个元素来自后继列表和非过期前驱列表的实例都被报告为异常值。

抽象-C

Abstract-C 保持索引结构与 Exact Storm 相似,但不是为每个对象维护前驱和后继列表,而是仅维护实例参与窗口的邻居计数列表:

  • 过期幻灯片:在过期幻灯片中的实例将从影响范围查询的索引结构中移除,并且与最后一个窗口对应的计数列表中的第一个元素也被移除。

  • 新幻灯片:对于新幻灯片中的每个数据点,执行范围查询 R,并使用结果更新计数列表。对于现有实例,计数会根据新的邻居更新,并将实例添加到索引结构中。

  • 异常值报告:在任何窗口中,在处理过期和新幻灯片元素完成后,当前窗口中邻居计数少于 k 的所有实例都被视为异常值。

直接更新事件(DUE)

DUE 保持索引结构以进行高效的范围查询,与其它算法完全相同,但有一个不同的假设,即当发生过期幻灯片时,并非每个实例都会以相同的方式受到影响。它维护两个优先队列:不安全内点队列和异常值列表。不安全内点队列根据前驱邻居的最小过期时间的递增顺序排序实例。异常值列表包含当前窗口中的所有异常值:

  • 过期幻灯片:过期幻灯片中的实例将从影响范围查询的索引结构中移除,并且不安全内点队列将更新过期邻居。那些成为异常值的不安全内点将从优先队列中移除,并移动到异常值列表中。

  • 新幻灯片:对于新幻灯片中的每个数据点,执行范围查询 R,使用结果更新点的后继邻居,并且仅更新实例的最近前驱点。基于这些更新,点被添加到不安全内点优先队列或从队列中移除并添加到异常值列表中。

  • 异常值报告:在任何窗口中,在处理过期和新幻灯片元素完成后,所有异常值列表中的实例都被报告为异常值。

基于微聚类的算法(MCOD)

基于微聚类的异常值检测克服了为每个数据点执行范围查询的计算问题。在这些算法中,使用微聚类数据结构而不是范围查询。微聚类以实例为中心,半径为 R。所有属于微聚类的点成为内点。位于微聚类之外的点可以是异常值或内点,并存储在单独的列表中。它还拥有与 DUE 类似的数据结构,以保持不安全内点的优先队列:

  • 过期的滑动窗口:过期的滑动窗口中的实例从微簇和包含异常值和内点的数据结构中删除。与 DUE 算法一样,更新过期的邻居的不安全内点队列。微簇也针对非过期数据点进行更新。

  • 新滑动窗口:对于新滑动窗口中的每个数据点,实例要么成为微簇的中心,要么成为微簇的一部分,或者被添加到事件队列和异常值的数据结构中。如果点在距离R内,它被分配给现有的微簇;否则,如果有k个点在R内,它成为新微簇的中心;如果没有,它进入事件队列和可能的异常值的两个结构中。

  • 异常值报告:在任何窗口中,在处理过期的和新滑动窗口元素完成后,任何在异常结构中具有少于k个邻近实例的实例被报告为异常值。

Approx Storm

如其名所示,Approx Storm 是 Exact Storm 的近似。这两种近似方法如下:

  • 通过添加一个因子ρ并将窗口更改为ρW来减少窗口中数据点的数量。

  • 通过使用前一个列表中安全的内点数与当前窗口中数字的比例来存储数字而不是前一个邻居的数据结构。

处理过期的和新滑动窗口以及如何根据这些步骤确定异常值如下:

  1. 过期的滑动窗口:与 Exact Storm 相同——过期的滑动窗口中的实例从影响范围查询的索引结构中删除,但保留在邻居的前一个列表中。

  2. 新滑动窗口:对于新滑动窗口中的每个数据点,执行范围查询R,使用结果来计算之前讨论过的分数,并更新索引结构。如果大小超过该值,则通过移除随机内点来将安全内点的数量限制为ρW。假设大多数安全内点都是安全的。

  3. 异常值报告:在任何窗口中,在处理过期的和新滑动窗口元素之后,当基于分数、窗口大小和前一个列表的实例的邻居数量的近似值小于k时,它被视为异常值。

优点和局限性

优点和局限性如下:

  • Exact Storm 在存储和 CPU 方面对存储列表和检索邻居有较高要求。尽管它们被实现为高效的数据结构,但范围查询可能会引入延迟。

  • Abstract-C 相对于 Exact Storm 有轻微的优势,因为它不需要在每个窗口实例上花费时间来查找活跃的邻居。存储和时间消耗仍然很大程度上取决于窗口和滑动选择。

  • DUE 相对于 Exact Storm 和 Abstract-C 有一些优势,因为它可以有效地重新评估点的“内含性”(即,是否不安全的内点仍然保持内点或变为异常点),但排序结构会影响 CPU 和内存。

  • MCOD 由于使用了微簇结构并去除了成对距离计算,在内存和 CPU 方面具有独特的优势。在微簇中存储邻域信息也有助于节省内存。

  • Approx Storm 与其他方法相比,在时间上具有优势,因为它不会处理上一个窗口中的过期数据点。

验证和评估技术

基于流的异常的验证和评估仍然是一个开放的研究领域。在许多研究比较中,我们看到使用了各种指标,例如:

  • 以每个对象的 CPU 时间来衡量评估时间

  • 流中检测到的异常数量

  • 与现有标签相关的异常数量,TP/精确率/召回率/PRC 曲线下的面积等

通过改变窗口大小、半径内的邻居等参数,我们确定了对之前提到的性能指标的敏感性,并确定其鲁棒性。

流学习案例研究

本章中的案例研究包括几个实验,展示了基于流的机器学习的不同方法。选择了一个经过充分研究的数据集作为流数据源,并使用了基于监督的树方法,如朴素贝叶斯、Hoeffding 树,以及集成方法。在无监督方法中,使用的聚类算法包括 k-Means、DBSCAN、CluStream 和 CluTree。异常检测技术包括 MCOD 和 SimpleCOD 等。我们还展示了分类实验的结果,这些结果展示了处理概念漂移的能力。本章前面描述的用于在滑动窗口中计算统计的 ADWIN 算法被用于几个分类实验中。

工具和软件

最受欢迎且可能是最全面的基于 Java 的数据流挖掘框架之一是瓦卡托大学创建的开源大规模在线分析MOA)软件。该框架是一系列流分类、聚类和异常检测算法的集合,并支持变化检测和概念漂移。它还包括数据生成器和几个评估工具。该框架可以通过新的流数据生成器、算法和评估器进行扩展。在本案例研究中,我们使用基于文件的数据流,采用了几种流数据学习方法。

注意

产品主页:moa.cms.waikato.ac.nz/

GitHub:github.com/Waikato/moa

图 4图 5所示的 MOA 工具的一系列截图所示,顶层菜单允许你选择要执行的学习类型。例如,对于分类实验,工具的配置包括选择要运行的任务(此处选择为预 quential 评估),然后配置我们想要使用的学习器和评估器,最后是数据流的来源。配置任务对话框中显示的窗口宽度参数可以影响所选模型的准确性,正如我们将在实验结果中看到的那样。除了选择窗口宽度的不同值之外,所有基学习器参数都保留为默认值。一旦配置了任务,就可以通过点击运行按钮来运行:

工具和软件工具和软件

图 4. MOA 配置预 quential 评估分类的图形界面,包括设置窗口宽度

工具和软件工具和软件

图 5. MOA 预 quential 分类任务的图形界面。在配置任务中,你必须选择一个学习器,定位数据流(细节未显示),并选择一个评估器

任务完成后,可以将模型评估结果导出为 CSV 文件。

商业问题

本案例研究的问题是从电力市场数据流中持续学习并预测市场价格变动方向。我们比较了包括概念漂移在内的不同分类方法的准确性和平均成本,以及聚类和异常检测的性能。

机器学习映射

本案例研究中使用的数据集可以用来说明经典的基于批次的监督学习和无监督学习技术。然而,在这里我们将其视为基于流的 数据源,以展示我们如何使用本章中描述的技术在 MOA 框架下执行分类、聚类和异常检测任务。在此背景下,我们展示了在假设数据流是平稳的以及表现出概念漂移的演变数据流的情况下,如何实现增量学习。

数据收集

该数据集被称为电力或 ELEC 数据集,由新南威尔士电力市场收集。该市场的价格是可变的,并且根据供需情况每 5 分钟调整一次。该数据集包括从 1996 年 5 月到 1998 年 12 月每半小时获得 45,312 个这样的数据点。目标是表示价格相对于 24 小时移动平均值的上升或下降趋势。

注意

数据文件是位于downloads.sourceforge.net/project/moa-datastream/Datasets/Classification/elecNormNew.arff.zip?r=http%3A%2F%2Fmoa.cms.waikato.ac.nz%2Fdatasets%2F&ts=1483128450&use_mirror=cytranet的 ARFF 格式的公开文件。

数据采样和转换

在这里进行的实验中,没有进行数据采样;数据集中的每个示例都是单独处理的,没有示例被排除。所有数值数据元素都已归一化到 0 到 1 之间。

特征分析和降维

ELEC 数据集包含 45,312 条记录,有九个特征,包括目标类别。特征 class 和 day 是名义的(分类的),其余都是数值的(连续的)。特征列在表 1表 2中,并给出了 ELEC 数据集的描述性统计:

名称数据类型描述
classnominalUP, DOWN—相对于 24 小时移动平均的价格变动方向
datecontinuous记录价格日期
daynominal星期几(1-7)
periodcontinuous 
nswpricecontinuous新南威尔士州的电力价格
nswdemandcontinuous新南威尔士州的电力需求
vicpricecontinuous维多利亚的电力价格
vicdemandcontinuous维多利亚的电力需求
transferinteger 

表 1. ELEC 数据集特征

 countmeanstd25%50%75%
date453120.499080.3403080.0319340.4563290.880547
period453120.50.2947560.250.50.75
nswprice453120.0578680.0399910.0351270.0486520.074336
nswdemand453120.4254180.1633230.3091340.4436930.536001
vicprice453120.0034670.0102130.0022770.0034670.003467
vicdemand453120.4229150.1209650.3723460.4229150.469252
transfer453120.5005260.1533730.4149120.4149120.605702

表 2. ELEC 数据集特征的描述性统计

特征降维步骤在此省略,因为它在大多数基于流的机器学习中是常见的。

模型、结果和评估

实验被分为分类、概念漂移、聚类和异常检测。每个实验集的学习过程细节和实验结果在此给出。

监督学习实验

在这组实验中,选择线性、非线性以及集成学习器,以展示各种分类器的行为。随机梯度下降SGD),使用线性 SVM,以及朴素贝叶斯是线性分类器,而懒惰 k-NN 是非线性分类器。对于集成学习,我们使用两个元学习器,利用袋装LB)和 OxaBag,以及不同的线性和非线性基学习器,如 SGD、朴素贝叶斯和 Hoeffding 树。OxaBag 中使用的算法在集成算法部分进行了描述。在 LB 中,用于重采样的权重因子是可变的(这里使用默认值 6),而 OxaBag 中的权重是固定的,为 1。

预先评估被选用于所有分类方法,因此每个示例首先与现有模型的预测进行测试,然后用于训练模型。这需要选择窗口宽度,不同窗口宽度值下各种模型的性能列于表 3。使用了 100、500、1000 和 5000 个元素的宽度:

| 算法 | 窗口宽度 | 评估时间(CPU 秒) | 模型成本(RAM 小时) | 分类正确率(百分比) | Kappa 统计量(百分比) | | --- | --- | --- | --- | --- | | SGD | 100 | 0.5781 | 3.76E-10 | 67 | 0 | | SGD | 500 | 0.5781 | 3.76E-10 | 55.6 | 0 | | SGD | 1000 | 0.5469 | 3.55E-10 | 53.3 | 0 | | SGD | 5000 | 0.5469 | 3.55E-10 | 53.78 | 0 | | NaiveBayes | 100 | 0.7656 | 8.78E-10 | 86 | 65.7030 | | NaiveBayes | 500 | 0.6094 | 8.00E-10 | 82.2 | 62.6778 | | NaiveBayes | 1000 | 0.6719 | 7.77E-10 | 75.3 | 48.8583 | | NaiveBayes | 5000 | 0.6406 | 7.35E-10 | 77.84 | 54.1966 | | kNN | 100 | 34.6406 | 4.66E-06 | 74 | 36.3057 | | kNN | 500 | 34.5469 | 4.65E-06 | 79.8 | 59.1424 | | kNN | 1000 | 35.8750 | 4.83E-06 | 82.5 | 64.8049 | | kNN | 5000 | 35.0312 | 4.71E-06 | 80.32 | 60.4594 | | LB-kNN | 100 | 637.8125 | 2.88E-04 | 74 | 36.3057 | | LB-kNN | 500 | 638.9687 | 2.89E-04 | 79.8 | 59.1424 | | LB-kNN | 1000 | 655.8125 | 2.96E-04 | 82.4 | 64.5802 | | LB-kNN | 5000 | 667.6094 | 3.02E-04 | 80.66 | 61.0965 | | LB-HoeffdingTree | 100 | 13.6875 | 2.98E-06 | 91 | 79.1667 | | LB-HoeffdingTree | 500 | 13.5781 | 2.96E-06 | 93 | 85.8925 | | LB-HoeffdingTree | 1000 | 12.5625 | 2.74E-06 | 92.1 | 84.1665 | | LB-HoeffdingTree | 5000 | 12.7656 | 2.78E-06 | 90.74 | 81.3184 |

表 3. 不同窗口大小的分类器性能

对于表 4 中的算法,使用不同窗口宽度值时的性能相同:

算法评估时间(CPU 秒)模型成本(RAM 小时)分类正确率(百分比)Kappa 统计量(百分比)
HoeffdingTree1.15623.85E-0879.195357.2266
HoeffdingAdaptiveTree2.04692.84E-0983.386365.5569
OzaBag-NaiveBayes2.015621.57E-0873.479442.7636
OzaBagAdwin-HoeffdingTree5.78122.26E-0784.348567.5221
LB-SGD21.67E-0857.69773.0887
LB-NaiveBayes3.59373.99E-0878.875355.7639

表 4. 分类器性能(所有窗口宽度相同)

概念漂移实验

在这个实验中,我们继续使用 EvaluatePrequential 来配置分类任务。这次我们选择 DriftDetectionMethodClassifier 作为学习器,DDM 作为漂移检测方法。这展示了适应不断变化的数据流。使用的基学习器和获得的结果显示在 表 5 中:

算法评估时间(CPU 秒)模型成本(RAM 小时)分类正确率(百分比)Kappa 统计量(百分比)变化检测
SGD0.3073688291.61E-0953.30132
Naïve-Bayes0.2982907271.58E-0986.673.03986143
Lazy-kNN10.341618931.74E-0687.474.849812
HoeffdingTree0.4729817545.49E-0986.272.19816169
HoeffdingAdaptiveTree0.5986650437.19E-098467.80878155
LB-SGD0.9127373252.33E-0853.30132
LB-NaiveBayes1.9901377583.61E-0885.771.24056205
OzaBag-NaiveBayes1.3421897252.29E-0877.454.017211
LB-kNN173.36247151.14E-0487.575.032964
LB-HoeffdingTree5.6604401011.61E-0691.382.5631759
OzaBag-HoeffdingTree4.3064555453.48E-0785.470.60209125

表 5. 具有概念漂移检测的分类器性能

聚类实验

几乎所有在 MOA 工具中实现的聚类算法都用于这次实验。收集了外部和内部评估结果,并已在 表 6 中列出。CMM、同质性和完整性在本章前面已定义。我们之前在 第三章 的讨论中遇到过纯度和轮廓系数,无监督机器学习技术。SSQ 是实例与其各自簇中心距离平方和;SSQ 的值越低,越好。表中 m = 1 表示使用微聚类。宏簇计算的频率由所选的时间跨度 h 决定,例如:

算法CMM同质性完整性纯度SSQ轮廓系数
Clustream With k-Means (h = 5000; k = 2; m = 1)0.7168-1.00000.17370.95049.19750.5687
Clustream With k-Means(h = 1000; k = 5)0.5391-1.00000.83770.7238283.65430.8264
Clustream (h = 1000; m = 1)0.6241-1.00000.43630.99327.27340.4936
Denstream With DBSCAN (h = 1000)0.4455-1.00000.75860.9167428.76040.6682
ClusTree (h = 5000; m = 1)0.79840.4874-0.48150.948911.77890.6879
ClusTree (h = 1000; m = 1)0.7090-1.00000.39790.907213.41900.5385
AbstractC1.00001.0000-8.13541.00000.00000.0000
MCOD (w = 1000)1.00001.0000-8.13541.00000.00000.0000

异常检测实验

在最终的实验集中,使用了五种异常检测算法来处理 ELEC 数据集。结果见 表 7

算法始终内节点的节点始终异常节点的节点同时内节点和异常节点的节点
MCOD42449 (93.7%)302 (0.7%)2561 (5.7%)
ApproxSTORM41080 (90.7%)358 (0.8%)3874 (8.5%)
SimpleCOD42449 (93.7%)302 (0.7%)2561 (5.7%)
AbstractC42449 (93.7%)302 (0.7%)2561 (5.7%)
ExactSTORM42449 (93.7%)302 (0.7%)2561 (5.7%)

表 7. 异常检测评估

以下图表 (图 6) 展示了在运行算法 Abstract-C 对整个数据集进行处理后,三个特征对的实验结果。在每一个图表中,都很容易看到围绕数据点的圆圈所标识的异常值。尽管在多个维度上同时可视化异常值是困难的,但双变量散点图给出了一些在基于流的设置中应用异常检测方法的检测结果:

异常检测实验异常检测实验异常检测实验

图 6. 使用 Abstract-C 对 45,300 个实例进行处理后,对三个特征对进行异常检测

图 7 中的图像显示了 MOA 的一个截图,其中同时运行了两个算法,Angiulli.ExactSTORMAngiulli.ApproxSTORM;每个算法的双变量散点图并排显示,并附有每个对象的处理时间比较:

异常检测实验

图 7. MOA 中异常检测的可视化

流学习结果分析

基于分类、聚类和异常检测实验中学习到的模型的评估,分析揭示了几个有趣的观察结果。

分类实验:

  • 如表 3 所示,性能从线性算法到非线性算法有相当显著的提升。线性 SGD 使用准确率指标达到 67% 的最佳性能,而 KNN 和 Hoeffding Tree 显示 82.4 到 93%。这清楚地表明,问题是非线性的,使用非线性算法将提供更好的性能。

  • K-NNs 提供了良好的性能,但代价是评估时间,如表 3 所示。评估时间和内存都显著更高——大约高两个数量级——比线性方法。当模型需要在更紧的评估周期中运行时,必须非常谨慎地选择算法,如 KNNs。

  • 霍夫丁树提供了最佳的分类率和 Kappa 统计量。评估时间也不如 KNNs 高,但仍然在秒的量级,这在许多基于实时流的应用中可能或可能不是可接受的。

  • 朴素贝叶斯的评估时间最低——尽管与 SGD 没有太大区别——并且通过选择合适的窗口宽度,可以提供仅次于霍夫丁树的性能。例如,在宽度 100 时,朴素贝叶斯有 86%的分类率,仅次于霍夫丁树的 93%,但与超过 13 秒的评估时间相比,朴素贝叶斯只需 0.76 秒,如表 3 所示。

  • 保持窗口宽度不变,从线性(SGD,朴素贝叶斯)到非线性(霍夫丁树)再到基于集成(OzaBag,Adwin,霍夫丁树)的改进模式在表 4 中清晰展示。这清楚地表明,理论上,集成选择可以帮助减少错误,但代价是模型的可解释性降低。

  • 与表 3 和表 4 相比,表 5显示了为什么具有漂移保护和使用自动漂移检测进行学习可以增加鲁棒性。基于集成的 OzaBag-NaiveBayes、OzaBag-HoeffdingTrees 和 OzaBag-HoeffdingAdaptiveTree 的学习都显示出比非漂移保护运行更好的改进。

聚类实验:

  • 从表 6 的前两个模型中,我们可以看到,k-Means 在 5,000 个实例的视域和 k 值为 2 的情况下,与视域较小且 k 值为 5 的模型相比,具有更高的纯度、更高的 CMM 和更低的 SSQ。在完整的结果集中(可在本书网站上找到,见下文链接),可以看到较大视域的影响是导致差异的主要因素。

  • 在使用微聚类的聚类模型中,SSQ 通常比不使用微聚类时显著更小。这是可以理解的,因为存在更多的簇和每个簇的实例更少,SSQ 是相对于簇中心来衡量的。

  • DBSCAN 被发现对微聚类和视域大小不敏感。与其他所有模型相比,它在内在度量(轮廓系数)以及外在度量(完整性,纯度)方面都排名很高。

  • 两个 ClusTree 模型在 CMM 和纯度分数方面表现最佳,由于微聚类导致低 SSQ。

  • 最后两个基于异常值聚类的算法具有完美的 CMM 和纯度分数。这些指标不受窗口大小(尽管这会影响评估时间)或 k 值(邻居计数阈值)的影响。

异常值检测实验:

  • 在本组实验中,所有技术表现相当,唯一的例外是 ApproxSTORM,考虑到与精确版本相比,该方法使用的窗口减少,这是可以预料的。

  • 实例之间的比例,总是内点与总是外点之间的比例,对于大多数模型来说接近 140。这是否意味着对于给定的数据集具有足够的判别能力取决于实时学习问题的目标。

注意

所有 MOA 配置文件和实验结果均可在以下网址获取:github.com/mjmlbook/mastering-java-machine-learning/Chapter5

摘要

基于流的学习的假设与基于批次的学习的假设不同,其中最重要的是操作内存和计算时间上的上界。必须计算滑动窗口或采样的运行统计量,以便扩展到可能无限的数据流。我们区分了从静态数据学习的情况,其中假设生成数据分布是恒定的,以及动态或演变数据的情况,其中必须考虑概念漂移。这是通过涉及监控模型性能变化或监控数据分布变化的技巧来实现的。显式和隐式自适应方法是调整概念变化的方式。

已经有几种监督学习和无监督学习方法被改编用于增量在线学习。监督方法包括线性、非线性以及集成技术,介绍了 HoeffdingTree,它特别有趣,很大程度上是因为它对错误率上界提供了保证。模型验证技术,如预 quential 评估,是增量学习特有的改编。对于静态监督学习,评估指标与基于批次的学习方法中使用的相似。在演变数据流的情况下,使用其他指标。

在固定内存和时间约束下运行的聚类算法通常使用小内存缓冲区,并使用标准技术在单次遍历中使用。在评估聚类时必须考虑特定于流的问题,如老化、噪声、丢失或放置错误的数据点。数据流中的异常检测是一个相对较新且正在增长的领域。将聚类中的思想扩展到异常检测已被证明非常有效。

本章案例研究中的实验使用 Java 框架 MOA,展示了各种基于流的监督学习、聚类和异常检测技术。

在下一章中,我们将开始探索在各个领域中用于表示、获取知识和学习的概率图建模技术。

参考文献

  1. G. Cormode 和 S. Muthukrishnan (2010). 改进的数据流摘要:Count-Min sketch 及其应用。算法杂志,55(1):58–75,2005。

  2. João Gama (2010). 从数据流中进行知识发现,Chapman and Hall / CRC 数据挖掘与知识发现系列,CRC Press 2010,ISBN 978-1-4398-2611-9,第 I-XIX 页,1-237 页。

  3. B. Babcock,M. Datar,R. Motwani (2002)。在流数据移动窗口上的抽样,在第 13 届年度 ACM-SIAM 离散算法研讨会论文集,第 633–634 页,2002 年。

  4. Bifet,A. 和 Gavalda,R. (2007). 使用自适应窗口从时间变化数据中学习. 在 SIAM 国际数据挖掘会议论文集。SDM。443–448 页。

  5. Vitter,J. (1985)。带有水库的随机抽样. ACM 数学软件交易. 11,1,37–57 页。

  6. Gama,J.,Medas,P.,Castillo,G.,和 Rodrigues,P. (2004). 具有漂移检测的学习. 在第 17 届巴西人工智能研讨会论文集,SBIA。286–295 页。

  7. Gama,J.,Sebastiao,R.,和 Rodrigues,P. (2013)。评估流学习算法. 机器学习 90,3,317–346 页。

  8. Domingos,P. 和 Hulten,G. (2000). 挖掘高速数据流. 在第 6 届 ACM SIGKDD 国际知识发现和数据挖掘会议论文集,KDD。71–80 页。

  9. Oza,N. (2001). 在线集成学习. 博士学位论文,加州大学伯克利分校。

  10. Gama,J.,Žliobaitė,I.,Bifet,A.,Pechenizkiy,M.,Bouchachia,A. (2014). 概念漂移适应综述. ACM 计算调查* 46(4),文章编号 44。

  11. Farnstrom,F.,Lewis,J.,和 Elkan,C. (2000). 聚类算法的可扩展性回顾. SIGKDD 探索,51–57 页。

  12. Zhang,T.,Ramakrishnan,R.,和 Livny,M. (1996). BIRCH:用于非常大数据库的高效数据聚类方法. 在 ACM SIGMOD 国际数据管理会议论文集。ACM 出版社,103–114 页。

  13. Aggarwal,C. (2003). 诊断演变数据流中的变化框架. 在 ACM SIGMOD 会议论文集。575–586 页。

  14. 陈,Y. 和 Tu,L. (2007). 基于密度的实时流数据聚类. 在 KDD '07: 第 13 届 ACM SIGKDD 国际知识发现和数据挖掘会议论文集。ACM 出版社,133–142 页。

  15. Kremer,H.,Kranen,P.,Jansen,T.,Seidl,T.,Bifet,A.,Holmes,G.,和 Pfahringer,B. (2011)。用于演变数据流聚类的有效评估度量. 在第 17 届 ACM SIGKDD 国际知识发现和数据挖掘会议论文集,KDD '11。ACM,纽约,纽约,美国,868–876 页。

  16. Mahdiraji,A. R. (2009). 数据流聚类:算法综述. 国际基于知识和智能工程系统杂志,39–44 页。

  17. F. Angiulli 和 F. Fassetti (2007). 在数据流中检测基于距离的异常值. 在第 16 届 ACM 信息与知识管理会议论文集,CIKM '07,第 811–820 页,纽约,纽约,美国,2007 年。ACM。

  18. D. Yang,E. A. Rundensteiner,和 M. O. Ward (2009). 在流数据窗口上的基于邻居的模式检测. 在第 12 届国际扩展数据库技术会议论文集,EDBT '09,第 529–540 页,纽约,纽约,美国,2009 年。ACM。

  19. M. Kontaki, A. Gounaris, A. Papadopoulos, K. Tsichlas, 和 Y. Manolopoulos (2011). 基于距离的异常值在数据流中的连续监控. 在数据工程(ICDE),2011 年第 27 届国际会议,第 135–146 页,2011 年 4 月。

第六章. 概率图建模

概率图模型PGMs),也称为图模型,捕捉不同变量之间的关系并表示概率分布。PGMs 捕捉联合概率分布,可用于回答不同查询并做出推断,使我们能够对未见数据做出预测。PGMs 具有捕捉专家领域知识和变量之间的因果关系以建模系统的巨大优势。PGMs 表示结构,并且可以在一个表示框架中捕捉知识,使其更容易共享和理解领域和模型。PGMs 很好地捕捉了不确定性或概率性质,因此在需要评分或基于不确定性的方法的应用中非常有用。PGMs 被广泛应用于各种使用机器学习的应用中,如语言处理、文本挖掘和信息提取、计算机视觉、疾病诊断和 DNA 结构预测等领域。

朱迪亚·佩尔是 PGMs 领域的先驱,也是第一个引入贝叶斯网络主题的人(参考文献 [2] 和 [7])。尽管涵盖 PGMs 的所有知识超出了本章的范围,但我们的目标是详细阐述 PGMs 最重要的方面——贝叶斯网络和有向 PGMs。我们将把主题分为表示、推理和学习三个领域,并将在每个领域讨论具体的算法和子主题。我们将涵盖马尔可夫网络和无向 PGMs,总结与 PGMs 的一些异同,并探讨相关领域,如推理和学习。最后,我们将讨论专门的网络,如树增强网络TAN)、马尔可夫链和隐马尔可夫模型HMM)。对于该主题的深入探讨,请参阅 Koller 和 Friedman 的概率图模型参考文献 [1])。

概率回顾

概率论中的许多基本概念在附录 B 概率中进行了详细阐述。概率论中的某些关键思想构成了概率图模型的基础。对相关理论的良好掌握有助于极大地理解 PGMs 及其如何从数据中做出推断。

概率论中的概念

在本节中,我们将讨论与概率论相关的重要概念,这些概念将在本章后面的讨论中使用。

条件概率

给定两个相关事件 a 和ß的条件概率的本质,在于捕捉当我们知道另一个事件已经发生时,如何为其中一个事件分配一个值。条件概率或条件分布用P(a | ß)表示,即事件ß发生时事件a发生的概率(等价于ß为真时),其形式定义如下:

条件概率

P(a n ß)捕捉了同时发生 a 和ß的事件。

链式法则和贝叶斯定理

条件概率的定义导致了条件概率的链式法则,该法则指出,当存在多个事件α[1],α[2]….α[n]时:

P(α[1] ∩ α[2] ∩….∩ α[n] ) = P(α[1] )P(α[2] ¦ α[1])P(α[3] | α[1] ∩ α[2])..P(α[∩] |α[1] ∩ α[2] ∩….∩ α[n-1])

几个事件的概率可以表示为第一个事件的概率乘以在第一个事件给定的第二个事件的概率,依此类推。因此,α[n]的概率取决于α[1]到α[n]的所有事件,并且与事件的顺序无关。

贝叶斯法则也遵循条件概率规则,可以正式表示为:

链式法则和贝叶斯定理

随机变量、联合分布和边缘分布

通过将事件空间和结果视为属性和值,自然地映射事件空间和结果。随机变量被定义为具有不同已知特定值的属性。例如,如果成绩是与学生相关联的属性,并且具有值*{A, B, C},那么P(Grade = A)*表示一个具有结果的随机变量。

随机变量通常用大写字母表示,如XY,和Z,它们所取的值用Val(X) = x表示。在本章中,我们将主要讨论本质上为分类的值,即取固定数量的离散值。在现实世界中,变量也可以有连续的表示。具有类别{x¹, x² …x^n}的变量的分布可以表示为:

随机变量、联合分布和边缘分布

这样一个跨越许多类别的分布称为多项分布。在只有两个类别的特殊情况下,该分布被称为伯努利分布

给定一个随机变量,该变量描述的所有事件的概率分布称为边缘分布。例如,如果成绩是随机变量,边缘分布可以定义为*(Grade = A) = 0.25, P(Grade = b) = 0.37 和 P(Grade = C) = 0.38*。

在许多现实世界的模型中,存在多个随机变量,考虑所有这些随机变量的分布称为联合分布。例如,如果将学生的智力视为另一个变量,并用P(Intelligence)P(I)表示,并且具有二进制结果{低,高},那么考虑智力成绩的分布,表示为P(Intelligence, Grade)P(I, G),就是联合分布。

一个随机变量的边缘分布可以通过对所有其他变量的值求和从联合分布中计算得出。通过将所有行求和,如 表 1 所示,可以得到成绩的边缘分布,通过将列求和可以得到智力的边缘分布。

随机变量、联合分布和边缘分布

表 1. I 和 G 的边缘分布

边缘独立性和条件独立性

边缘独立性定义为以下内容。考虑两个随机变量 XY;那么 P(X|Y) = P(X) 意味着随机变量 XY 独立。它形式上表示为 边缘独立性和条件独立性 (P 满足 XY 独立)。

这意味着联合分布可以表示为:

P(X, Y) = P(X)P(Y)

如果考试的难度水平 (D) 和学生的智力 (I) 决定了成绩 (G),我们知道考试的难度水平与学生的智力独立,并且 (DI) 也意味着 P(D, I) = P(D)P(I)

当两个随机变量在第三个变量给定的情况下是独立的,这种独立性称为条件独立性。给定三个随机变量 XYZ 的集合,我们可以说 边缘独立性和条件独立性;也就是说,变量 X 在给定 Z 的情况下与 Y 独立。条件独立的必要条件是

边缘独立性和条件独立性

因素

因素是定义高维(大量变量)空间中概率分布的基本构建块。它们提供了基本操作,有助于操作概率分布。

“因素”被定义为一种函数,它接受称为“作用域”的随机变量作为输入,并给出一个实值输出。

形式上,一个因素表示为 因素 其中作用域是 (X[1], X[2], ….X[k] )。

因素类型

不同的因素类型如下:

  • 联合分布: 对于变量的每一个组合,你都会得到一个实值输出。

  • 未归一化度量: 当在一个联合分布中,其中一个变量是常数时,输出也是实值,但由于它不总和为 1,因此它是未归一化的。然而,它仍然是一个因素。

  • 条件概率分布: 形式为 P(G|I) 的概率分布也是一个因素。

在因素上执行各种操作,例如:

  • 因素乘积: 如果两个因素 ϕ[1] (X[1], X[2]) 和 ϕ[2] (X[2], X[3]) 相乘,它会产生 ϕ[3] (X[1], X[2], X[3])。实际上,这是将对应于 ϕ[1] 的表与 ϕ[2] 相乘。

  • 因素边缘化: 这与边缘化相同,其中 ϕ[1] (X[1], X[2], X[3]) 可以对变量进行边缘化,例如 X[2],以给出 ϕ[2] (X[1], X[3])。

  • 因子减少:这只在其他变量中的一个变量为常数时取其他变量的值。

分布查询

给定随机变量的概率,可以执行许多查询来回答某些问题。一些常见的查询类型将在后续章节中解释。

概率查询

这是最常见的查询类型之一,它有两个部分:

  • 证据:具有已知结果或类别的变量子集。例如,随机变量 E = e

  • 查询:来自其他变量的随机变量。例如,一个随机变量 X

    P(X|E = e)

概率查询的例子包括后验边缘估计,如 P(I = high|L = bad, S = low) = ? 和证据概率,如 P(L = bad, S = low) = ?

MAP 查询和边缘 MAP 查询

MAP 查询用于找到最可能变量的子集的概率赋值,因此也被称为最可能解释MPE)。这些与概率查询的区别在于,我们不是得到概率,而是得到所有变量的最可能值。

从形式上讲,如果我们有变量 W= X – E,其中 E = e 作为证据,并且我们感兴趣于找到 W 中变量的最可能赋值,

MAP(W|e) = argmax[w]P(w,e)

边缘查询的一种更普遍的形式是当我们有一个变量的子集,比如说由 Y 给出,形成我们的查询,并且有证据 E = e,我们感兴趣于找到 Y 中变量的最可能赋值。使用 MAP 定义,我们得到:

MAP(Y|e) = argmax[y]P(y|e)

假设,Z= X – Y – E,那么边缘 MAP 查询是:

MAP 查询和边缘 MAP 查询

图概念

接下来,我们将简要回顾图论中的概念以及我们将在本章中使用的某些定义。

图结构和属性

图被定义为包含节点和连接这些节点的边的数据结构。在本章的上下文中,随机变量被表示为节点,边显示了随机变量之间的连接。

形式上,如果 X = {X[1], X[2],….X[k]} 其中 X[1], X[2],….X[k] 是代表节点的随机变量,那么集合 e 中可以存在一个有向边,例如,在由 图结构和性质 给出的节点之间,或者存在一个 无向边 图结构和性质,并且图被定义为一种数据结构 图结构和性质。当集合 e 中节点从集合 X 之间的每一条边都是有向的时,称图为一个 有向图;同样,如果节点之间的每一条边都是无向的,则称该图为 无向图,如图 1 所示。此外,如果一个图既有有向边又有无向边,图结构和性质 的表示法代表一个可能是有向或无向的边。

图结构和性质

图 1. 有向、无向和部分有向图

如果图中存在一个有向边 图结构和性质,则节点 X[i] 被称为 父节点,而节点 X[j] 被称为 子节点

在无向图的情况下,如果存在边 X[i] – X[j],则节点 X[i] 和 X[j] 被称为相邻节点。

在有向图中,节点 X 的父节点集合被称为节点 X 的边界,同样地,在无向图中,相邻节点形成彼此的边界。节点 X 的度是它参与的边的数量。节点 X 的入度是在有向图中与节点 X 有关系的边的数量,这些边位于节点 Y 和节点 X 之间,且 XY。图的度是该图中节点的最大度。

子图和团

子图是表示整个集合中的一些节点的图的一部分。是无向图中顶点的子集,其中每两个不同的顶点都是相邻的。

路径、迹和环

如果图中 K = (X, E) 存在变量 X[1],X[2],…,X[k],那么当对于每一个 i = 1, 2 ... k – 1,我们都有 路径、迹和环X[i] –X[j];也就是说,变量之间存在有向边或无向边——记住这可以表示为 X[i] ? X[j]。一个有向路径至少有一个有向边:路径、迹和环

如果图中 K = (X, E) 存在变量 X[1],X[2],…,X[k],那么当对于每一个 i = 1, 2 ... k – 1,我们都有 路径、迹和环

如果对于图中的每一个 X[i],…,X[j],都存在一条从 X[i] 到 X[j] 的路径,则称该图为 连通图

在图 K = (X, e) 中,如果节点 XY 之间存在有向路径,则 X 被称为 Y祖先,而 Y 被称为 X后代

如果图K有一个有向路径 X[1],X[2],……,X[k],其中 X[1] ? X[k],则该路径称为循环。相反,没有循环的图称为无环图

贝叶斯网络

通常,所有概率图模型都有三个基本元素,构成了重要的部分:

  • 表示:这回答了模型意味着什么或代表什么的问题。想法是如何表示和存储P(X[1],X[2],……,X[n])的概率分布。

  • 推理:这回答了以下问题:给定模型,我们如何进行查询并获得答案。这使我们能够从已知证据中推断未知值的值,前提是模型的结构。推动主要讨论点的动机是涉及计算和正确性之间权衡的各种推理形式。

  • 学习:这回答了给定数据的情况下哪个模型是正确的问题。学习分为两个主要部分:

    • 在给定结构和数据的情况下学习参数

    • 在给定数据的情况下学习结构

我们将使用众所周知的学生网络作为贝叶斯网络的例子,在我们的讨论中说明概念和理论。学生网络有五个随机变量,捕捉了以下定义的各种属性之间的关系:

  • 考试难度(D

  • 学生智力(I

  • 学生获得的分数(G)

  • 学生的 SAT 分数(S)

  • 基于成绩的学生推荐信(L

这些属性中的每一个都具有二进制分类值,例如,变量难度(D)有两个类别(d0,d1),分别对应低和高。成绩(G)有三个分类值,对应于成绩(A,B,C)。图中所示箭头表示从领域知识中编码的依赖关系——例如,如果我们知道考试的难度和学生智力,则可以确定成绩;如果我们只知道成绩,则推荐信完全确定(图 2)。可以进一步观察到,变量之间没有显式边表示它们相互独立——例如,考试的难度和学生的智力是独立变量。

贝叶斯网络

图 2. “学生”网络

表示

图形紧凑地表示随机变量之间的复杂关系,允许快速算法进行查询,而完整枚举将是不可行的。在本节定义的概念中,我们展示了如何通过有向无环图结构和条件独立性使涉及大量变量的问题变得可处理。

定义

贝叶斯网络定义为具有以下特征的系统模型:

  • 一系列随机变量{X[1],X[2],……,X[k]}

  • 一个有向无环图DAG),节点表示随机变量。

  • 每个节点的一个局部条件概率分布CPD),与父节点相关联 P(X[i] | parent(X[i]))

  • 使用分布的链式规则获得的联合概率分布是一个因素,表示为:定义

  • 对于定义的学生网络,捕获所有节点的联合分布可以表示为:

    P(D,I,G,S,L)=P(D)P(I)P(G¦D,I)P(S¦I)P(L¦G)

推理模式

贝叶斯网络有助于回答在给定一些数据和事实的情况下提出的各种查询,这里讨论了这些推理模式。

因果或预测推理

如果证据是例如“低智商”,那么在图 3右上象限中显示的获得“好信”的机会有多大?这是通过因果推理来解决的。如图一象限所示,因果推理是从上到下流动的。

证据或诊断推理

如果给出诸如“坏信”之类的证据,学生获得“好成绩”的机会有多大?这个问题,如图 3 左上象限所示,是通过证据推理来解决的。如图二象限所示,证据推理是从下到上流动的。

互因果推理

从寻找“相关原因”中获取有趣的模式是互因果推理的目标。如果给出“C 级”和“高智商”的证据,那么课程难度为“高”的机会有多大?这种推理也称为“解释”,因为一个原因解释了另一个原因,这在图 3 的第三象限左下角得到了说明。

组合推理

如果一个学生选修了一门“容易”的课程并且有“坏信”,他获得“C 级”成绩的机会有多大?这是通过具有组合推理模式的查询来解释的。请注意,它包含混合信息,并且不像其他推理模式那样在一个固定的方向上流动,如图中右下角的象限 4 所示:

联合推理

图 3. 推理模式

独立性、影响流、D-分离、I-图

节点之间的条件独立性可以在执行查询时用于减少计算。在本节中,我们将讨论与独立性相关的一些重要概念。

影响流

影响是指一个变量的条件或结果如何改变与另一个变量相关的值或信念的影响。我们从影响从直接关系(父/子)、因果/证据(父和子以及中间变量)以及组合结构中的变量流动的推理模式中看到了这一点。

唯一没有影响流动的情况是存在一个“v-结构”。也就是说,给定三个变量之间的边影响流动,存在一个 v-结构,并且X[i - 1]和X[i + 1]之间没有影响流动。例如,课程难度和学生的智力之间没有影响流动。

D-Separation

随机变量XY在图G中被说成是 d-separated 的,前提是在G中给定Z的情况下,XY之间没有活跃路径。它正式表示为:

dsep[G] (X,Y|Z)

d-separation 的意义在于它完美地映射到点之间的条件独立性。这给出一个有趣的性质,即在贝叶斯网络中,任何变量在给定节点的父节点的情况下与其非后裔变量是独立的。

在学生网络示例中,节点/变量 Letter 在给定成绩的情况下与 Difficulty、Intelligence 和 SAT 是 d-separated 的。

I-Map

从 d-separation 来看,在图G中,我们可以收集所有 d-separation 产生的独立性,这些独立性正式表示为:

I-Map

如果P满足I(G),那么我们说GP的一个独立性映射或 I-Map。

I-Map 的主要观点是,可以形式化地证明因式分解关系与独立性之间的关系成立。反之也可以证明。

简而言之,一个人可以读取贝叶斯网络图 G,所有在分布 P 中成立的独立性,无论任何参数!

考虑学生网络——其整个分布可以表示为:

P(D,I,G,S,L) = P(D)P(I|D)P(G¦D,I)P(S¦D,I,G)P(L¦D,I,G,S)

现在,考虑 I-Map 的独立性:

  • 变量ID是非后裔变量,并且不依赖于父节点,所以P(I|D) = P(I)

  • 变量S在给定其父节点I的情况下与其非后裔变量DG是独立的。P(S¦D,I,G)=P(S|I)

  • 变量L在给定其父节点G的情况下与其非后裔变量DIS是独立的。P(L¦D,I,G,S)=P(L|G)

    (D,I,G,S,L)=P(D)P(I)P(G¦D,I)P(S¦I)P(L¦G)

因此,我们已经证明 I-Map 仅通过图网络就能帮助进行因式分解!

推理

概率图模型最大的优点是它们能够以条件或 MAP 或边际 MAP 的形式回答概率查询,给定一些证据。

正式地,证据E = e的概率由以下公式给出:

推理

但这个问题已被证明是 NP-Hard(参考 [3])或更具体地说,#P-complete。这意味着当存在大量树或变量时,它是不可行的。即使对于树宽(最大团中的变量数)为 25,这个问题似乎也是不可行的——大多数现实世界的模型具有比这更大的树宽。

因此,如果之前讨论的精确推理是不可行的,是否可以使用一些近似来使问题在一定的误差范围内可行?已经证明,即使是一个计算推理的近似算法,其误差 ? < 0.5,这样我们找到一个数 p,使得 |P(E = e) – p|< ?,也是 NP-Hard。

但好消息是,这是“最坏情况”结果之一,表明指数时间复杂度。在“一般情况”中,可以应用启发式方法来减少精确和近似算法的计算时间。

一些执行精确和近似推理的知名技术如图 4 所示,它涵盖了除了贝叶斯网络之外的大多数概率图模型。

推理

图 4. 精确和近似推理技术

讨论这些算法的细节超出了本章的范围。我们将详细解释一些算法,并附上参考文献,以便读者更好地理解。

基于消除的推理

在这里,我们将描述两种技术,即变量消除算法和团树或连接树算法。

变量消除算法

变量消除VE)算法的基本原理在于分配性质,如下所示:

(ab+ac+ad)= a (b+c+d)

换句话说,通过提取一个公共因子 a,五个算术运算(三个乘法和两个加法)可以减少到四个算术运算(一个乘法和三个加法)。

让我们通过在学生网络中举一个简单的例子来理解计算的简化。如果我们必须计算一个概率查询,例如,考试难度给定信件是好的,即 P(D¦L=good)=?

使用贝叶斯定理:

变量消除算法

要计算 P(D¦L=good)=?,我们可以使用链式法则和联合概率:

变量消除算法

如果我们重新排列右侧的项:

变量消除算法

如果我们现在用 变量消除算法 替换,因为该因子与 S 条件下的变量 I 独立,我们得到:

变量消除算法

因此,如果我们小心地一次消除一个变量,我们实际上已经将 O(2^n) 个因子转换为 O(nk²) 个因子,其中 n 是变量的数量,k 是每个观察值的数量。

因此,VE 算法的主要思想是对变量施加一个顺序,使得查询变量最后。在有序变量列表上维护一个因子列表,并执行求和。通常,我们在 VE 算法的实现中使用动态规划(参考文献 [4])。

输入和输出

输入:

  • 条件概率分布/表 F 列表

  • 查询变量 Q 的列表

  • 观察变量 E 和观察值 e 的列表

输出:

  • P(Q|E = e)
如何工作?

算法在循环中调用 eliminate 函数,如下所示:

VariableElimination

  1. ?,贝叶斯网络中所有随机变量的集合不为空时

    1. ? 中移除第一个变量 Z

    2. 消除(F, Z)

  2. 结束循环。

  3. ? 设置为 F 中所有因子的乘积

  4. ? 中实例化观察变量到它们的观察值。

  5. 返回 如何工作?(归一化)

消除 (F, Z)

  1. F 中移除所有涉及 Z 的函数,例如,X[1],X[2],…,X[k]。

  2. 计算新函数 如何工作?

  3. 计算新函数 如何工作?

  4. 添加新函数 ?F

  5. 返回 F

考虑具有 P(D, L = good) 作为目标的相同学生网络示例。

  1. 选择一个变量排序列表:SILG,和 D

  2. 初始化活动因子列表并引入证据:

    列表:P(S¦I)P(I)P(D)P(G¦I,D)P(L¦G)d(L = good)

  3. 从列表中消除变量 SAT 或 S 如何工作?

    列表:P(I)P(D)P(G¦I,D)P(L¦G)d(L = good) *?*1 (I)

  4. 消除变量 Intelligence 或 I 如何工作?

    列表:P(D)P(L¦G)d(L = good) *?*2 (G,D)

  5. 消除变量 Letter 或 L 如何工作?

    列表:P(D) ?[3] (G) ?[2] (G,D)

  6. 消除变量 Grade 或 G 如何工作?

    列表:P(D) ?[4] (D)

因此,通过两个值,P(D=high) ?[4] (D=high)P(D=low) ?[4] (D=low),我们得到答案。

优势和局限性

优势和局限性如下:

  • VE 算法的主要优势是其简单性和通用性,可以应用于许多网络。

  • 当网络中有许多连接时,VE 的计算减少优势似乎消失了。

  • 变量最优排序的选择对计算效益非常重要。

团树或桥接树算法

桥接树或团树是变量消除技术的更有效形式。

输入和输出

输入:

  • 条件概率分布/表 F 的列表

  • 查询变量 Q 的列表

  • 观察变量 E 和观察值 e 的列表

输出:

  • P(**Q|**E = e)
如何工作?

涉及的步骤如下:

  1. 道德化:这是一个将有向图转换为无向图的过程,以下有两个步骤:

    1. 用无向边替换节点之间的有向边。

    2. 如果有两个节点或顶点没有连接但有共同子节点,则添加一个连接它们的边。(注意图 5 中 V[4] 和 V[5] 以及 V[2] 和 V[3] 之间的边):

    如何工作?

    图 5. DAG 的图道德化,用绿色显示方向边的改变,用红色显示新添加的边。

  2. 三角化:为了理解三角化,必须形成弦。循环的弦是非连续顶点 V[i] 和 V[j] 的一对,它们之间有边。如果一个图称为弦图或三角化图,如果长度 ≥ 4 的每个循环都有弦。注意图 6 中 V[1] 和 V[5] 之间的边形成弦,使道德化图成为弦图/三角化图:如何工作?

    图 6. 图三角化,通过添加蓝色边将道德化图转换为弦图。

  3. 连接树:通过以下步骤从弦图形成连接树:

    1. 在图中找到所有完全子图,并将它们作为所有顶点的簇作为节点。完全子图是一个子图,其中每对节点之间都存在边。如果两个节点有一个或多个共同顶点,则创建一个由相交顶点组成的边作为分隔符或 sepset。例如,具有边 V[1]、V[4]、V[5] 和 V[6]、V[4]、V[5] 的循环,其中 V[4]、V[5] 之间存在公共边,可以简化为一个完全子图,如图中所示,公共边作为分隔符。

    如果前面的图包含一个循环,循环中的所有分隔符都包含相同的变量。通过创建最小生成树来移除图中的循环,同时包括最大分隔符。整个转换过程如图 7 所示:

    如何工作?

    图 7. 连接树的形成

  4. 在连接树上运行消息传递算法:连接树可以用来通过完全子图和分隔符的分解来计算联合分布如何工作?

  5. 计算连接树的参数:连接树的参数可以通过使用原始贝叶斯网络中的父节点按节点获得,称为完全子图势,如图所示:

    1. (?[1] (V[2],V[3],V[5]) = P(V[5] |V[2],V[3])P(V[3])(注意在原始贝叶斯网络中,边 V[5] 依赖于 V[2]、V[3],而 V[3] 是独立的)

    2. 如何工作?

    3. 如何工作?

    4. 如何工作?

  6. 节点/完全子图在连接树之间的消息传递:连接树中的一个节点,用完全子图 C[i] 表示,将其邻居发送的所有消息与其自己的完全子图势相乘,得到一个因子 如何工作?,其作用域是连接子图。然后,它对所有变量求和,除了在 C[i] 和 C[j] 之间的分隔符或分隔符 S[i,j] 上的变量,然后将得到的因子作为消息发送到 C[j]。如何工作?

    图 8. 节点/完全子图在连接树之间的消息传递

    如何工作?

因此,当消息传递到达树根时,联合概率分布就完成了。

优点和局限性

优点和局限性如下:

  • 该算法在树宽相关的计算上有理论上的上限。

  • 每个团中每个势的乘积可能导致数值溢出和下溢。

基于传播的技术

在这里,我们讨论信念传播,这是一种常用的消息传递算法,通过引入因子图和在这些图中可以流动的消息来进行推理。

信念传播

信念传播是最实用的推理技术之一,它适用于大多数概率图模型,包括有向、无向、基于链和时序图。为了理解信念传播算法,我们首先需要定义因子图。

因子图

我们从基本的概率论中知道,整个联合分布可以表示为变量子集上的一个因子,如下所示

因子图

在 DAG 或贝叶斯网络中,fs 是一个条件分布。因此,在变量子集上表达联合分布相对于因子有很大的优势。

因子图是网络的表示,其中涉及变量的变量和因子都被制成显式节点(参考文献 [11])。在前一节的简化学生网络中,因子图显示在图 9中。

因子图

图 9. 简化“学生”网络的因子图

因子图是一个二分图,即它有两种类型的节点,变量和因子。

边在两种相反类型之间流动,即从变量到因子,反之亦然。

将贝叶斯网络转换为因子图是一个简单的步骤,如前所述,其中你开始添加变量节点和条件概率分布作为因子节点。贝叶斯网络和因子图之间的关系是一对多,也就是说,同一个贝叶斯网络可以用多个因子图表示,并且不是唯一的。

因子图中的消息传递

在这些因子图中流动着两种不同的消息,这些消息构成了所有计算的大部分,通过通信实现。

  • 从因子节点到变量节点的消息:从因子节点发送到变量节点的消息可以用以下方式数学表示:因子图中的消息传递因子图中的消息传递因子图中的消息传递 其中 因子图中的消息传递 因此,因子图中的消息传递 是从因子节点 f[s] 到 x 的消息,以及从 x 的邻居到 x 的所有此类消息的乘积给出了 x 的联合概率:因子图中的消息传递

    图 10. 从因子节点到变量节点的消息传递

  • 从变量节点到因子节点的消息:与前面的例子类似,变量到因子的消息可以展示为因子图中的消息因子图中的消息

因此,除了发送给它的因子外,所有到达节点 x[m] 的因子都被相乘。

因子图中的消息

图 11. 从变量节点到因子节点的消息传递

输入和输出

输入:

  • 条件概率分布/表 (CPD/CPT) F 列表

  • 查询变量 Q 列表

  • 观察变量 E 和观察值 e

输出:

  • P(**Q|**E = e)
它是如何工作的?
  1. 根据前面讨论的贝叶斯网络创建因子图。

  2. 将节点 Q 视为图的根。

  3. 初始化所有叶节点,即:它是如何工作的?它是如何工作的?

  4. 以递归方式应用从叶节点到下一个节点的消息传递。

  5. 移动到下一个节点,直到到达根节点。

  6. 根节点的边际给出结果。

优点和局限性

优点和局限性如下:

  • 如前所述,此算法非常通用,可用于大多数图模型。当没有循环时,此算法在有向树中进行精确推理。

  • 这可以很容易地并行实现,有助于可扩展性。根据连通性,内存需求可能非常高。

基于采样的技术

我们将讨论一个使用粒子采样来展示从随机变量生成分布 P(X) 的简单方法。想法是重复从贝叶斯网络中采样,并使用计数样本来近似推理。

带拒绝的前向采样

关键思想是使用拓扑顺序迭代变量生成独立同分布 (i.i.d.) 样本。在存在某些证据的情况下,例如,P(X|E = e) 与生成的样本相矛盾,最简单的方法是拒绝样本并继续。

输入和输出

输入:

  • 条件概率分布/表 F 列表

  • 查询变量 Q 列表

  • 观察变量 E 和观察值 e

输出:

  • P(**Q|**E = e)
它是如何工作的?
  1. 对于 j = 1 到 m //样本数量

    1. 创建变量的拓扑顺序,例如 X[1],X[2],… X[n]。

    2. 对于 i = 1 到 n

      1. u[i] ? X*(parent*(X[i])) //assign parent(X[i]) to variables

      2. sample(x[i], P(X[i] | u[i]) //sample X[i] given parent assignments

      3. if(x[i] ?, P(X[i] | E = e) reject and go to 1.1.2. //reject sample if it doesn't agree with the evidence.

    3. 将 (X[1],X[2],…X[n]) 作为样本返回。

  2. 使用样本的计数计算 P(Q | E = e)。

为学生网络生成一个样本的例子可以是先采样难度得到低,然后采样智力得到高,接着使用 CPD 表对难度=低和智力=高进行采样得到成绩=A,使用 CPD 对智力=高进行 SAT 采样得到 SAT=好,最后使用成绩=A 从字母中进行采样得到 Letter=好。因此,我们得到第一个样本(难度=低,智力=高,成绩=A,SAT=好,Letter=好)

优点和局限性

优点和局限性如下:

  • 这种技术实现和执行起来相当简单。它需要大量的样本来在界限内近似。

  • 当证据集很大时,拒绝过程变得成本高昂。

学习

学习背后的思想是在数据和领域专家的指导下生成结构或找到参数或两者兼而有之。

学习的目标如下:

  • 为了便于在贝叶斯网络中进行推理。推理的前提是结构和参数已知,这是学习的结果。

  • 为了便于使用贝叶斯网络进行预测。给定观察变量X,预测目标变量Y

  • 为了便于使用贝叶斯网络进行知识发现。这意味着从数据中理解因果关系、关系和其他特征。

通常,学习可以通过图 12来表征。假设存在一个已知的概率分布P^,它可能或可能不是由贝叶斯网络*G^生成的。观察到的数据样本被假定为从这个已知的概率分布P^*中生成或采样。领域专家可能或可能不存在,以包括关于结构的知识或先验信念。贝叶斯网络是少数几种可以直接使用领域专家关于变量关系或先验概率的输入的技术之一,与其他机器学习算法形成对比。在知识获取和学习数据的过程结束时,我们得到一个具有定义结构和参数(CPTs)的贝叶斯网络作为输出。

学习

图 12. 贝叶斯网络学习要素

基于数据质量(缺失数据或完整数据)以及专家对结构的了解(未知和已知),贝叶斯网络中的学习可以分为以下四类,如表 2所示:

数据结构
已知结构(学习参数)未知结构(学习结构和参数)
完整数据参数估计(最大似然,贝叶斯估计)优化(搜索和评分技术)
不完整数据非线性参数优化(期望最大化,梯度下降)结构和参数优化(结构 EM,混合模型)

表 2. 贝叶斯网络学习类别

学习参数

在本节中,我们将讨论两种广泛使用的方法来估计给定结构下的参数。我们只讨论完整数据,读者可以参考(参考文献 [8])中关于不完整数据参数估计的讨论。

贝叶斯网络的极大似然估计

最大 似然估计 (MLE) 是一个非常通用的方法,它可以定义为:给定一个数据集 D,选择满足以下条件的参数 贝叶斯网络的极大似然估计

  • 贝叶斯网络的极大似然估计

  • 贝叶斯网络的极大似然估计

  • 贝叶斯网络的极大似然估计

极大似然是给定训练数据选择贝叶斯网络参数的技术。对于详细讨论,请参阅(参考文献 [6])。

给定图 G 的已知贝叶斯网络结构和训练数据贝叶斯网络的极大似然估计,我们想要学习参数或 CPDs——更准确地说,CPTs。这可以表示为:

贝叶斯网络的极大似然估计

现在每个示例或实例贝叶斯网络的极大似然估计可以用变量来表示。如果有 i 个变量由 x[i] 表示,并且每个变量的父节点由 parent[Xi] 给出,那么:

贝叶斯网络的极大似然估计

交换变量和实例:

贝叶斯网络的极大似然估计

该术语是:

贝叶斯网络的极大似然估计

这是给定其父节点 parent[Xi] 的特定变量 x [i] 的条件似然。因此,这些条件似然的参数是贝叶斯网络的极大似然估计给出的参数的子集。因此:

贝叶斯网络的极大似然估计

这里,贝叶斯网络的极大似然估计被称为局部似然函数。当总似然分解为局部似然的独立项时,这成为似然函数的全局分解属性。其思想是,这些局部似然函数可以通过简单地使用训练数据中不同结果的数量来进一步分解为表格 CPD。

N[ijk] 为在父节点配置 j 下观察到的变量或节点 i 在状态 k[,] 中的次数:

贝叶斯网络的极大似然估计贝叶斯网络的极大似然估计

例如,我们可以通过从训练数据中估计似然函数来得到一个简单的条目,对应于 X[i] = a父节点[Xi] = b

贝叶斯网络的极大似然估计

考虑两种情况,例如。在第一种情况下,贝叶斯网络的极大似然估计 由 10 个实例满足,其中 父节点[Xi] = b =100。在第二种情况下,当 父节点[Xi] = b =1000 时,贝叶斯网络的极大似然估计 满足 100。注意,这两个概率值相同,而第二个有 10 倍更多的数据,是“更可能的”估计!同样,对领域或先验知识的熟悉程度,或者由于不确定性而缺乏这种知识,都没有被 MLE 所捕捉。因此,当样本数量有限或领域专家了解先验概率时,这种方法会存在严重问题。

贝叶斯网络参数估计

这种技术通过使用参数 ? 的先验知识编码来克服 MLE 的问题。因此,我们可以将我们对参数空间的信念或先验知识编码为概率分布,然后使用变量和参数的联合分布进行估计。

让我们考虑单变量参数学习的情况,其中我们有一些实例 x[1],x[2] … x[M],它们都具有参数 ?[X]。

贝叶斯网络参数估计

图 13. 单变量参数学习

贝叶斯网络参数估计贝叶斯网络参数估计

因此,该网络是参数和数据上的联合概率模型。其优点是我们可以用它来表示后验分布:

贝叶斯网络参数估计贝叶斯网络参数估计

P(?) = 先验

贝叶斯网络参数估计 因此,最大似然估计与贝叶斯估计之间的区别在于使用了先验概率。

将其推广到给定数据集 D 的贝叶斯网络 G

贝叶斯网络参数估计贝叶斯网络参数估计

如果我们假设参数的全局独立性

贝叶斯网络参数估计

因此,我们得到

贝叶斯网络参数估计

再次,就像之前一样,?[Xi] | 父节点[Xi] 的子集是局部的,因此整个后验概率可以用局部术语计算!

使用狄利克雷分布的先验和后验

在实践中,通常使用一种称为狄利克雷分布的连续概率分布来表示参数的先验分布——狄利克雷分布是一种贝塔分布。

使用狄利克雷分布的先验和后验

概率密度函数:

使用狄利克雷分布的先验和后验

这里,使用狄利克雷分布的先验和后验使用狄利克雷分布的先验和后验 中的 alpha 项被称为超参数,a[ijri] > 0。使用狄利克雷分布的先验和后验 是伪计数,也称为等效样本量,它为我们提供了一个先验的度量。

贝塔函数,B(a[ij]) 通常用伽马函数表示如下

使用狄利克雷分布的先验和后验

使用狄利克雷分布的优点在于它本质上是对偶的,也就是说,无论似然函数如何,如果先验是狄利克雷分布,后验也是狄利克雷分布!

可以证明参数 ?[ijk] 的后验分布是一个具有更新超参数的狄利克雷分布,并且有一个封闭形式的解!

a[ijk] = a[ijk] + N[ijk]

如果我们使用最大后验估计和后验均值,它们可以证明如下:

使用狄利克雷分布的先验和后验使用狄利克雷分布的先验和后验

学习结构

在没有任何领域知识或对结构理解的情况下学习贝叶斯网络包括学习结构和参数。我们首先将讨论用于评估网络结构的某些度量,然后讨论一些用于构建最优结构的著名算法。

评估结构的度量

给定数据集,用于评估贝叶斯网络结构的度量可以大致分为以下几类,许多细节可以在这里找到(参考文献 [14])。

  • 偏差阈值度量:在网络上测量两个变量之间偏差的两种常用技术是皮尔逊卡方统计量和库尔巴克-莱布勒距离。

    给定包含 M 个样本的数据集 D,考虑两个变量 X[i] 和 X[j],皮尔逊卡方统计量测量发散度是

    评估结构的度量评估结构的度量评估结构的度量评估结构的度量

    d[?2](D) 为 0;当变量相互独立时,较大的值表示变量之间存在依赖性。

    库尔巴克-莱布勒散度是:

    评估结构的度量

    d[I](D) 再次为 0,它表示独立性,较大的值表示依赖性。使用各种统计假设检验,可以使用阈值来确定显著性。

  • 结构得分度量:在贝叶斯网络中为结构评分有多种度量方法。在这里,我们将讨论最常用的度量方法。参数学习中讨论的对数似然得分可以用作结构的评分:评估结构的措施

  • 贝叶斯信息得分BIC)也是一种相当流行的评分技术,因为它通过考虑复杂结构的惩罚来避免过拟合,如下面的方程所示:评估结构的措施评估结构的措施

惩罚函数在 M 中是对数形式的,因此,随着其增加,对于复杂结构的惩罚会减轻。

阿卡伊克信息得分(AIC),类似于 BIC,具有类似的惩罚基础评分,并且是:

评估结构的措施

在参数学习中讨论的贝叶斯得分也被用作评分措施。

学习结构的方法

在本节中,我们将讨论一些用于学习结构的算法;详细信息可以在此处找到(参考文献 [15])。

基于约束的技术

基于约束的算法使用各种变量的独立性检验,试图通过遵循此处讨论的逐步过程找到我们在前几节中讨论的不同结构依赖性,例如 d-separation、v-structure 等。

输入和输出

输入是包含所有变量 {X,Y..} 的数据集 D,对于每个实例 {1,2, ... m} 都已知,并且没有缺失值。输出是一个贝叶斯网络图 G,其中所有边、方向在 E 中已知,以及 CPT 表。

如何工作?
  1. 创建一个空的无向边集合 E

  2. 测试两个变量之间的条件独立性,这些变量独立于方向以具有边。

    1. 如果对于所有子集 S = U – {X, Y},如果 XY 独立,则将其添加到无向边集合 E*' 中。
  3. 一旦确定了所有潜在的未定向边,边的方向性将从集合 E*' 中推断出来。

    1. 考虑三元组 {X, Y, Z},如果存在边 X – ZY – Z,但使用集合中的所有变量没有 X – Y 的边,并且进一步,如果 X 在所有边 S = U – {X, Y, Z} 给定的情况下与 Y 不独立,这表明 如何工作?如何工作? 的方向。

    2. 将边 如何工作?如何工作? 添加到 E 中设置。

    3. 使用局部计算更新 CPT 表。

  4. 返回贝叶斯网络 G、边 E 和 CPT 表。

优点和局限性
  • 缺乏鲁棒性是这种方法最大的缺点之一。由于独立性假设会渗透到个体独立性测试中,数据中的小错误可能会对结构造成重大影响。

  • 可扩展性和计算时间是主要关注点,因为每个变量的子集都会被测试,大约是 2^n。当变量的数量增加到 100 多时,由于计算时间,这种方法会失败。

搜索和基于分数的技术

搜索和分数方法可以看作是一种启发式优化方法,其中通过迭代,通过小的扰动改变结构,并使用如 BIC 或 MLE 等度量来对结构进行评分,以找到最优的分数和结构。爬山法、深度优先搜索、遗传算法等都被用来进行搜索和评分。

输入和输出

输入是数据集 D,其中每个实例 {1,2, ... m} 的所有变量 {X,Y..} 都是已知的,并且没有缺失值。输出是一个贝叶斯网络图 G,其中 E 中所有边和方向都是已知的。

它是如何工作的?

如何工作?

图 14. 搜索和评分

  1. 初始化图 G,基于领域知识或空或满。根据图初始化边集 E,并根据图 GE 和数据 D 初始化 CPT 表 T。通常还会提到一些终止条件,如 maxIterations

  2. maxScore= -8, score=computeScore(G,E, T)

  3. 执行

    1. maxScore=score

    2. 对于每个变量对 (X, Y)

      1. 对于每个 如何工作?

      2. 新图 G' 基于父节点和变量,并改变边。

      3. 计算新的 CPT 表 T' ? computeCPT(G',E',D)

      4. currentScore = computeScore(G',E',T')

      5. 如果 currentScore > score

        1. score = currentScore

        2. G' = G, E*'* = E

  4. 如何工作? 时重复 3 次

优点和局限性
  • 卡在局部最优解,这是大多数启发式搜索方法的缺点之一,是最大的缺点之一。

  • 在启发式搜索中,没有收敛或理论保证,因此寻找终止条件很大程度上是靠猜测。

马尔可夫网络和条件随机场

到目前为止,我们已经涵盖了概率图模型领域的有向无环图,包括表示、推理和学习的各个方面。当图是无向的,它们被称为 马尔可夫网络MN)或 马尔可夫随机 MRF)。在本节中,我们将讨论马尔可夫网络的一些方面,包括表示、推理和学习,就像之前一样。马尔可夫网络或 MRF 在计算机视觉的各个领域都非常流行,如分割、去噪、立体、识别等。有关进一步阅读,请参阅(参考文献 [10])。

表示

尽管马尔可夫网络,像贝叶斯网络一样,有非有向边,但它仍然具有局部交互和分布。我们首先将讨论参数化的概念,这是一种捕捉这些交互的方法,然后讨论 MN 中的独立性。

参数化

在 MN 中,变量之间的亲和力通过以下章节中讨论的三个替代参数化技术来捕捉。

吉布斯参数化

如果概率分布函数被称为吉布斯分布或由吉布斯分布参数化,那么:

吉布斯参数化

Z被称为划分函数,定义为:

吉布斯参数化

注意,变量之间的交互是通过吉布斯参数化来捕捉的,而不是边缘概率,但它们对联合概率有贡献。参数化马尔可夫网络的因子被称为团势。通过在图中的最大团上选择因子,参数的数量可以大幅减少。

因素图

马尔可夫网络图的图结构在使用吉布斯参数化时,并不能揭示出因素是否涉及最大团或其子集等性质。在贝叶斯网络推理部分的章节中讨论的因素图有一个识别最大团的步骤,因此可以捕捉这些参数化。请参阅 BN 中的因素图部分。

对数线性模型

另一种参数化形式是使用来自统计物理的能量模型表示。

势可以用一组特征来表示,而势表通常由具有与之相关联的权重的特征表示。

如果D是一组变量,对数线性模型是一个因子,那么:

对数线性模型

因此,随着能量的增加,概率会降低,反之亦然。对数线性模型中捕捉的对数细胞频率在统计物理中被称为对数线性。联合概率可以表示为:

对数线性模型

对数线性模型是在D[i]中的变量上定义的特征函数。

独立性

与贝叶斯网络一样,马尔可夫网络也编码了一组独立性假设,这些假设控制了无向图中的影响流动。

全局

如果一组节点Z将节点集XY分开,那么在给定Z的情况下,X中的任何节点到XY之间的Y没有活跃路径。图G中的独立性是:

全局

成对马尔可夫

如果两个节点,XY,之间没有直接边,那么在给定所有其他节点的情况下,这两个节点是独立的。这种性质是局部独立性,也是最弱的:

成对马尔可夫

马尔可夫毯

在给定其马尔可夫毯的情况下,节点与图中所有其他节点都是独立的,这是马尔可夫网络中的一个重要概念:

马尔可夫毯

这里 U = X 的马尔可夫毯

图 15显示了变量X的马尔可夫毯,包括其父节点、子节点及其子节点的父节点:

马尔可夫毯

图 15. 节点 X 的马尔可夫毯 - 其父节点、子节点及其子节点的父节点。

推理

在 MN 中进行推理是一个类似的#P 完全问题,因此应用了类似的近似或启发式方法。大多数精确和近似推理技术,如变量消除法、交联树法、信念传播法等,这些在贝叶斯网络中讨论过,可以直接应用于马尔可夫网络。边缘和条件概率保持相似,并且是在团上的势函数上计算的

推理推理

马尔可夫毯简化了一些计算。

学习

由于马尔可夫网络中分区函数中所有参数的纠缠,学习马尔可夫网络中的参数复杂且计算成本高。由于分区函数需要网络中所有变量的因子耦合,因此无法将计算分解为局部分布的优势步骤。

在 MN 中进行最大似然估计没有封闭形式的解,因此使用梯度下降等增量技术来在整个参数空间上进行优化。优化函数可以证明是一个凹函数,从而确保全局最优,但梯度下降的每一步迭代都需要在整个网络上进行推理,这使得它计算成本高,有时甚至难以处理。

贝叶斯参数估计需要对参数空间进行积分,这同样没有封闭形式的解,甚至更困难。因此,对于 MN,通常使用近似学习方法,如马尔可夫链蒙特卡洛MCMC)。

在 MN 中进行结构学习与参数学习相似,甚至更难,并且已被证明是 NP 难问题。在基于约束的方法中,对于给定的数据集,测试变量之间的条件独立性。在 MN 中,使用成对变量之间的互信息来测试每对变量之间的条件独立性。然后,基于一个阈值,可以认为成对之间存在边或者不存在。这种方法的缺点之一是需要极大量的样本来反驳数据中存在的任何噪声。由于成对边的出现导致的网络复杂性是另一个限制。

在基于搜索和评分的学习中,目标与 BNs 相似,其中搜索结构,评分(基于各种技术)被计算以帮助和调整搜索。在 MNs 的情况下,我们使用对数线性模型中描述的特征,而不是势函数。在优化和评分过程中考虑了特征的加权。

条件随机字段

条件 随机字段 (CRFs) 是一种特殊的马尔可夫网络形式,其中隐藏的和可观察的变量主要用于建模标记序列预测问题 (参考文献 [16])。序列预测问题在许多文本挖掘领域都有体现,如下一个词/字母预测、词性(POS) 标注等,以及在生物信息学领域用于 DNA 或蛋白质序列预测。

CRFs 背后的思想是将序列的条件分布建模为特征函数,并使用标记数据通过优化学习经验分布,如图所示。

条件分布如下所示,其中 Z(x) 是归一化常数。对于 ? 的参数估计使用最大似然法,通常是通过梯度下降等迭代优化方法获得的对数线性凸函数。

条件随机字段条件随机字段

图 16:条件随机字段映射到词性标注领域的序列预测区域。

专用网络

在本节中,我们将介绍一些在机器学习应用中非常有用的基本专用概率图模型。

树增强网络

在第二章《实际应用中的监督学习》中,我们讨论了朴素贝叶斯网络,它简化地假设所有变量相互独立,并且只依赖于目标或类别变量。这是从数据集中推导或假设的最简单的贝叶斯网络。正如我们在前面的章节中看到的,在贝叶斯网络中学习复杂结构和参数可能很困难,有时甚至是不可能的。树增强网络TAN (参考文献 [9]) 可以被视为一种折中方案,它引入了对树如何连接的约束。TAN 对特征或变量关系施加约束。一个特征除了目标变量外,只能有一个其他特征作为父节点,如图所示:

树增强网络

图 17:树增强网络与朴素贝叶斯和贝叶斯网络的比较,以及每个节点只有一个父节点的约束。

输入和输出

输入是包含所有特征的变量 {X, Y..} 的训练数据集 D。如果不需要在预处理步骤中将特征离散化,则特征具有离散结果。

输出是作为贝叶斯网络带有 CPTs 的 TAN。

它是如何工作的?

  1. 计算训练数据集中每对变量之间的互信息。

  2. 构建一个无向图,每个节点是变量,边是它们之间的互信息。

  3. 创建一个最大加权生成树。

  4. 通过选择结果或目标变量作为根,并使所有边向外流动,将生成树转换为有向图。

  5. 如果类变量与其他特征之间没有有向边,则添加它。

  6. 根据先前构建的 DAG 或 TAN 计算 CPTs。

优点和局限性

  • 它在许多实际模型中比朴素贝叶斯更准确。它比完整的贝叶斯网络更简单,构建和计算速度更快。

马尔可夫链

马尔可夫链是专门的概率图模型,包含有向图和循环。马尔可夫链可以看作是自动机的扩展,其中权重是转移的概率。马尔可夫链用于建模直接可观察的时间或序列变化。参见(参考文献 [12])以获取进一步的研究。

图 17 表示马尔可夫链(一阶)和一般定义可以给出一个随机过程,由

节点作为状态,马尔可夫链

表示状态或节点之间转移概率的边。它通常表示为一个矩阵 马尔可夫链,它是一个 N X N 矩阵,其中 N 是节点或状态的数量。马尔可夫链的值捕捉了给定状态 q[k] 到节点 q[l] 的转移概率。矩阵的行之和为 1,马尔可夫链的值。

初始状态概率,p = {p[1],p[2],… p[N]}。

因此,它可以写成三元组 M= (Q, A, p),任何状态的概率只取决于最后的状态(一阶):

马尔可夫链

联合概率:

马尔可夫链马尔可夫链

图 18. 一阶马尔可夫链

隐马尔可夫模型

在许多现实世界的情况中,我们感兴趣的事件并不是直接可观察的。例如,句子中的单词是可观察的,但生成句子的词性却不是。隐马尔可夫 模型HMM)帮助我们建模这样的状态,其中存在可观察的事件和隐藏的状态(参考文献 [13])。HMM 在语音识别、语言建模、时间序列分析和生物信息学应用(如 DNA/蛋白质序列预测)等建模应用中被广泛使用,仅举几例。

隐马尔可夫模型

图 19. 显示隐藏变量和可观察变量的隐马尔可夫模型。

隐马尔可夫模型可以再次定义为三元组 隐马尔可夫模型,其中:

  • 是一组观察到的有限状态或符号 隐马尔可夫模型

  • Q 是一组未观察到的有限状态 隐马尔可夫模型

  • T 是参数。

状态转移矩阵,给出为 隐马尔可夫模型,捕捉从状态 q[k] 到 q[l] 的转移概率。

发射概率捕捉隐藏状态和观察状态之间的关系,给出为 隐马尔可夫模型b ? ?. 隐马尔可夫模型

初始状态分布 p = {p[1], p[2], … p[N]}。

因此,HMM 中由一系列隐藏状态 Q = {q[1], q[2], … q[L]} 组成的路径是一个一阶马尔可夫链 M= (Q, A, p)。这条路径在 HMM 中发出一系列符号,x[1], x[2], x[L],称为观察值。因此,知道观察值和隐藏状态,联合概率是:

隐马尔可夫模型

在现实世界中,我们只知道观察值 x 而不知道隐藏状态 q。HMM 帮助我们回答以下问题:

  • 什么是最可能生成观察值 x 的路径?

  • x 的概率是多少?

  • 在给定观察值的情况下,处于状态 qi = k 的概率是多少?

HMM 中的最可能路径

假设观察值 x = x[1], x[2], x[L],我们想要找到生成观察值的路径 HMM 中的最可能路径。这可以表示为:

HMM 中的最可能路径

路径 q* 不一定是唯一的,但在计算和解释时,通常假设路径是唯一的。在一种简单的方法中,我们可以计算 q 的所有可能的长度为 L 的路径,并选择概率最高的路径(或路径),这会导致指数级的计算或速度。更有效的方法是使用维特比算法,它利用动态规划和递归的概念。它基于将方程分解为更简单项的简单原则:

HMM 中的最可能路径HMM 中的最可能路径HMM 中的最可能路径

这里,HMM 中的最可能路径HMM 中的最可能路径 给定初始条件 HMM 中的最可能路径 并使用动态规划以及路径指针,我们可以有效地计算出答案。

HMM 中的后验解码

给定观察值 x,处于状态 q[i] = k 的概率可以用贝叶斯定理表示为:

HMM 中的后验解码

分子可以重写为:

HMM 中的后验解码HMM 中的后验解码HMM 中的后验解码HMM 中的后验解码

其中 HMM 中的后验解码 被称为前向变量,而 HMM 中的后验解码 被称为后向变量。

前向变量的计算类似于 Viterbi 算法,使用动态规划和递归,其中进行的是求和:

HMM 中的后验解码HMM 中的后验解码HMM 中的后验解码

观察 x 的概率可以是

HMM 中的后验解码

前向变量是联合概率,后向变量是条件概率:

HMM 中的后验解码HMM 中的后验解码HMM 中的后验解码

它被称为后向变量,因为动态规划表是从 L^(th) 列开始向后填充到第一列。后向概率也可以用来计算观察 x 的概率,如下所示:

HMM 中的后验解码

工具和用法

在本节中,我们将介绍两个在 Java 中非常流行的用于概率图建模的工具。

OpenMarkov

OpenMarkov 是一个基于 Java 的 PGM 工具,以下是来自 www.openmarkov.org 的描述:

注意

OpenMarkov 是由西班牙马德里 UNED 的智能决策支持系统研究中心开发的用于概率图形模型(PGMs)的软件工具。

它被设计用于:编辑和评估多种类型的 PGM,如贝叶斯网络、影响图、分解马尔可夫模型等,交互式地从数据中学习贝叶斯网络,以及成本效益分析。

OpenMarkov 在从数据中进行交互式和自动学习方面表现非常出色。它具有预处理数据(使用频率和值进行离散化)以及使用一些搜索算法(如基于搜索的爬山法和基于得分的 PC)进行结构和参数学习的能力。OpenMarkov 以名为 pgmx 的格式存储模型。为了将模型应用于大多数传统软件包,可能需要将 pgmx 模型转换为 XMLBIF 格式。各种开源工具提供了这些转换。

在这里,我们有一些截图说明了如何使用 OpenMarkov 从数据中学习结构和参数。

图 20 中,我们看到交互式学习的屏幕,在这里你可以选择要使用的数据文件和算法:

OpenMarkov

图 20. OpenMarkov GUI – 交互式学习,算法选择

下一个步骤是 预处理 选项卡(图 21),在这里我们可以选择如何进行离散化:

OpenMarkov

图 21. OpenMarkov GUI – 预处理屏幕

最后,在 图 22 中,我们看到学习到的贝叶斯网络结构的显示:

OpenMarkov

图 22. OpenMarkov GUI – 结构输出

Weka 贝叶斯网络 GUI

与 OpenMarkov 相比,Weka 的贝叶斯网络编辑器在交互式和自动学习方面提供了大量贝叶斯网络表示、推理和学习选项。使用 Weka 的优势在于它提供了一系列高度集成的预处理和转换过滤器、算法、评估和实验指标。

图 23中,我们看到贝叶斯网络编辑器,在这里可以选择搜索算法并配置各种选项:

Weka 贝叶斯网络 GUI

图 23. WEKA 贝叶斯网络 – 配置搜索算法

贝叶斯网络(BayesNet)学习到的结构和参数在图 24的输出屏幕中显示:

Weka 贝叶斯网络 GUI

图 24. WEKA 贝叶斯网络 – 学习到的参数和结构

案例研究

在本节中,我们将使用现实世界的机器学习数据集进行案例研究,以说明贝叶斯网络的一些概念。

我们将使用 UCI 成人数据集,也称为人口普查收入数据集(archive.ics.uci.edu/ml/datasets/Census+Income)。这个数据集是从美国人口普查局的 1994 年人口普查数据中提取出来的。数据捐赠者是 Ronny Kohavi 和 Barry Becker,当时他们在 Silicon Graphics 工作。数据集包含 48,842 个实例和 14 个属性,属性类型包括分类和连续型。目标类别是二元的。

商业问题

该问题包括根据人口普查数据预测人口成员的收入,具体来说,他们的收入是否超过$50,000。

机器学习映射

这是一个分类问题,这次我们将训练贝叶斯图网络来开发预测模型。我们将使用线性、非线性以及集成算法,正如我们在前几章的实验中所做的那样。

数据采样和转换

在原始数据集中,有 3,620 个示例存在缺失值和六个重复或冲突的实例。在这里,我们只包括没有缺失值的示例。这个没有未知值的集合被分为 30,162 个训练实例和 15,060 个测试实例。

特征分析

特征及其描述在表 3中给出:

特征类型信息
age连续型。
workclass私营,自营非营利,自营营利,联邦政府,地方政府,州政府,无报酬,从未工作过。
fnlwgt连续型。
education学士,部分大学,11 年级,高中毕业,专业学校,学院,职业,9 年级,7-8 年级,12 年级,硕士,1-4 年级,10 年级,博士,5-6 年级,学前班。
教育程度连续型。
marital-status已婚平民配偶,离婚,从未结婚,分居,丧偶,已婚配偶缺席,已婚 AF 配偶。
职业技术支持、手工艺维修、其他服务、销售、执行管理、专业特长、搬运工-清洁工、机器操作-检查员、行政-文职、农业-渔业、运输-搬运、私人家庭服务、保护服务、武装部队。
关系妻子、亲生子女、丈夫、非家庭、其他亲属、未婚。
种族白人、亚洲-太平洋岛民、美洲印第安人-爱斯基摩人、其他、黑人。
性别女性、男性。
资本收益连续。
资本损失连续。
每周小时数连续。
国籍美国、柬埔寨、英格兰、波多黎各、加拿大、德国、美国海外属地(关岛-美属维尔京群岛等)、印度、日本、希腊、中国南部、古巴、伊朗、洪都拉斯、菲律宾、意大利、波兰、牙买加、越南、墨西哥、葡萄牙、爱尔兰、法国、多米尼加共和国、老挝、厄瓜多尔、台湾、海地、哥伦比亚、匈牙利、危地马拉、尼加拉瓜、苏格兰、泰国、南斯拉夫、萨尔瓦多、特立尼达和多巴哥、秘鲁、香港、荷兰-荷兰。

表 3. UCI 成人数据集 – 特征

数据集按标签分割为 24.78%(>50K)到 75.22%(<= 50K)。关键特征的摘要统计在图 25中给出:

特征分析特征分析

图 25. 特征摘要统计

模型、结果和评估

我们将使用不同类型的贝叶斯网络结构和常规线性、非线性以及集成算法对成人数据集进行详细分析。Weka 还提供了一个选项,可以通过菜单项在训练数据集上可视化图模型,如图图 26所示。当领域专家想要理解假设和图模型的结构时,这非常有用。如果领域专家想要更改或修改网络,可以轻松完成并使用贝叶斯网络编辑器保存。

模型、结果和评估

图 26. Weka 探索器 – 可视化菜单

图 27显示了训练好的贝叶斯网络模型的图结构可视化:

模型、结果和评估

图 27:贝叶斯网络学习结构的可视化。

实验中使用的算法是:

  • 贝叶斯网络分类器

  • 在连续数据上使用默认核估计的朴素贝叶斯

  • 在连续数据上使用监督离散化的朴素贝叶斯

  • 使用 K2 算法和每个节点三个父节点选择进行搜索分数结构参数学习的树增强网络(TAN)

  • 具有搜索和评分的贝叶斯网络

  • 使用爬山法和 K2 进行搜索

  • 使用简单估计进行评分

  • 父母选择从两个增加到三个以说明对指标的影响

  • 非贝叶斯算法

  • 逻辑回归(默认参数)

  • KNN(IBK 与 10 个邻居)

  • 决策树(J48,默认参数)

  • AdaBoostM1(决策树和默认参数)

  • 随机森林(默认参数)

表 4 展示了实验中使用的所有学习者的评估指标,包括贝叶斯网络分类器以及非贝叶斯算法:

算法TP RateFP RatePrecisionRecallF-MeasureMCCROC AreaPRC Area
Naïve Bayes (Kernel Estimator)0.8310.3910.8210.8310.8220.4940.8910.906
Naïve Bayes (Discretized)0.8430.1910.8610.8430.8480.60.9170.93
TAN (K2, 3 Parents, Simple Estimator)0.8590.2730.8560.8590.8570.60.9160.931
BayesNet (K2, 3 Parents, Simple Estimator)0.8630.2830.8580.8630.860.6050.9340.919
BayesNet (K2, 2 Parents, Simple Estimator)0.8580.2830.8540.8580.8550.5940.9170.932
BayesNet (Hill Climbing, 3 Parents, Simple Estimator)0.8620.2930.8570.8620.8590.6020.9180.933
Logistic Regression0.8510.3320.8440.8510.8450.5610.9030.917
KNN (10)0.8340.3750.8240.8340.8260.5060.8670.874
Decision Tree (J48)0.8580.3000.8530.8580.8550.5900.8900.904
AdaBoostM10.8410.4150.8330.8410.8260.5130.8720.873
Random Forest0.8480.3330.8410.8480.8430.5550.8960.913

表 4. 分类器性能指标

结果分析

使用监督离散化的朴素贝叶斯与核估计相比,表现出相对较好的性能。这为离散化提供了有用的提示,在大多数贝叶斯网络中都需要离散化,它将发挥重要作用。

当贝叶斯网络的复杂性增加时,表中的结果显示出持续改进。例如,使用离散化的朴素贝叶斯假设所有特征都是独立的,TP 率为 84.3,可以有更多父节点的 TAN 算法 TP 率为 85.9,而具有三个父节点的 BN 显示出最佳的 TP 率为 86.2。这清楚地表明,具有一些节点不超过三个父节点的复杂 BN 可以捕捉领域知识并将其编码良好,以预测未见过的测试数据。

使用搜索和得分(使用具有三个父节点的 K2 搜索和贝叶斯得分进行评分)以及简单估计进行估计的贝叶斯网络,在几乎所有的评估指标中表现最佳,如高亮显示的值所示。

贝叶斯网络与 K2 之间的差异非常小——在贝叶斯网络中,结构是通过搜索和 Hill Climbing 的得分来学习的——这表明即使是局部搜索算法也能找到最优解。

具有三个父结构的贝叶斯网络在几乎所有未见测试数据的指标上击败了大多数线性、非线性以及集成方法,如 AdaBoostM1 和随机森林。这表明了 BNs 在不仅能够在包含大量缺失值的小数据集上学习结构和参数,而且在未见数据上预测良好,还能击败其他复杂算法的强大之处。

摘要

PGMs 通过变量之间的关系捕获领域知识,并表示联合概率。它们在广泛的领域中都有应用。

概率将事件映射到 0 到 1 之间的实数值,可以解释为事件发生频率的度量(频率主义观点)或对该事件发生的信念程度(贝叶斯观点)。随机变量、条件概率、贝叶斯定理、链式法则、边缘和条件独立性以及因子的概念构成了理解 PGMs 的基础。MAP 和边缘图查询是询问图中变量和关系的方法。

图的结构及其性质,如路径、迹、环、子图和团,对于理解贝叶斯网络至关重要。表示、推理和学习是网络的核心元素,帮助我们捕获、提取并使用这些方法进行预测。从图的表现形式,我们可以推理影响流,并检测有助于在查询模型时减少计算负载的独立性。交联树、变量消除和信念传播方法同样通过简化步骤使从查询中进行推理更加可行。从贝叶斯网络中学习涉及从数据中生成结构和模型参数。我们讨论了学习参数和结构的方法。

马尔可夫网络MN),具有无向边,也包含可以使用吉布斯参数化、因子图和对数线性模型等参数化技术捕获的交互作用。MN 中的独立性控制着影响流,就像在贝叶斯网络中一样。推理技术也类似。在 MN 中学习参数和结构是困难的,因此使用了近似方法。专门的网络,如树增强网络TAN),假设节点之间的独立性,并在某些应用中非常有用。马尔可夫链和隐马尔可夫模型是其他专业网络,它们也在众多领域中找到应用。

介绍了基于 Java 的工具 Open Markov 和 Weka 贝叶斯网络 GUI,用于 PGMs。本章中的案例研究使用了贝叶斯网络从 UCI 成人人口普查数据集中学习,并将其性能与其他(非 PGM)分类器进行了比较。

参考文献

  1. Daphne Koller 和 Nir Friedman (2009). 概率图模型. MIT Press. ISBN 0-262-01319-3.

  2. T. Verma 和 J. Pearl (1988),在第四届人工智能不确定性研讨会论文集中,蒙大拿,第 352-359 页。因果网络-语义和表达能力。

  3. Dagum, P. 和 Luby, M. (1993). 在贝叶斯信念网络中近似概率推理是 NP 难。人工智能 60(1): 141–153。

  4. U. Bertele 和 F. Brioschi,非序列动态规划,Academic Press。纽约,1972 年。

  5. Shenoy, P. P. 和 G. Shafer (1990). 概率和信念函数传播的公理,在《人工智能中的不确定性》第 4 卷,第 169-198 页,North-Holland,阿姆斯特丹。

  6. Bayarri, M.J. 和 DeGroot, M.H. (1989). 选择模型中的信息。概率与贝叶斯统计学,(R. Viertl 编),Plenum Press,纽约。

  7. Spiegelhalter 和 Lauritzen (1990)。在有向图形结构上条件概率的顺序更新。《网络》20 卷。第 579-605 页。

  8. David Heckerman, Dan Geiger, David M Chickering (1995). 在《机器学习杂志》中。学习贝叶斯网络:知识与统计数据的结合

  9. Friedman, N.,Geiger, D.,& Goldszmidt, M. (1997)。贝叶斯网络分类器。《机器学习》。第 29 卷,第 131–163 页。

  10. Isham, V. (1981)。空间点过程和马尔可夫随机场导论。《国际统计评论》。第 49 卷(1):21–43。

  11. Frank R. Kschischang, Brendan J. Frey 和 Hans-Andrea Loeliger,因子图和乘积算法,IEEE 信息理论汇刊,第 47 卷,第 498–519 页,2001 年 2 月。

  12. Kemeny, J. G. 和 Snell, J. L. 有限马尔可夫链。纽约:Springer-Verlag,1976 年。

  13. Baum, L. E. 和 Petrie, T. (1966)。有限状态马尔可夫链的概率函数的统计推断。《数学统计年鉴》。第 37 卷(6):1554–1563。

  14. Gelman, A., Hwang, J. 和 Vehtar, A. (2004). 理解贝叶斯模型的预测信息准则。统计学与计算杂志 24: 997。doi:10.1007/s11222-013-9416-2

  15. Dimitris. Margaritis (2003)。从数据中学习贝叶斯网络模型结构。卡内基梅隆大学博士论文。

  16. John Lafferty, Andrew McCallum, Fernando C.N. Pereira (2001)。条件随机字段:用于序列数据分割和标记的概率模型,国际机器学习会议 2001(ICML 2001),第 282-289 页。