基于 PCA 的异常情况检测

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

使用主体组件分析创建异常检测模型

类别: 异常情况检测

注意

适用于:机器学习 Studio (经典) 应用

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何使用 机器学习 Studio (经典) 中基于 PCA 的异常情况检测模块,以基于 PCA (主体组件分析创建异常情况) 。

此模块可帮助你构建一个模型,该方案很容易从一个类获取训练数据,例如有效事务,但难以获取目标异常的足够样本。

例如,为了检测欺诈性交易,通常没有足够的欺诈示例进行训练,但有很多良好的交易示例。 基于 PCA 的异常 情况检测模块通过分析可用特征来确定构成"正常"类的内容,并应用距离指标来识别表示异常的情况,从而解决此问题。 这样,可以使用现有的不均衡数据来训练模型。

详细了解主成分分析

主体组件分析(通常缩写为 PCA)是机器学习中已建立的一种技术。 PCA 常用于探索性数据分析,因为它可以显示数据的内部结构并解释数据差异。

PCA 会分析包含多个变量的数据。 它将查找变量间的相关性,并确定最能捕获结果差异的值的组合。 这些组合的特征值用来创建一个更精简的特征空间,称为“主体组件”。

对于异常情况检测,将分析每个新输入,异常情况检测算法计算其对特征函数的投影,以及规范化的重构错误。 此规范化误差用作异常情况得分。 错误级别越高,实例越异常。

有关 PCA 工作原理以及异常情况检测实现的其他信息,请参阅以下文章:

如何配置 PCA 异常情况检测

  1. 将基于 PCA 的异常情况检测 模块添加到工作室中的试验 (经典) 。 可以在异常情况检测机器学习"初始化模型"下找到此模块。

  2. 在基于 PCA 的异常情况检测模块的"属性"窗格中,单击"训练模式"选项,并指示是要使用一组特定的参数来训练模型,还是使用参数扫描来查找最佳参数。

    • 单个参数:如果知道自己想要如何配置模型,请选择此选项并提供一组特定的值作为参数。

    • 参数范围:如果不确定最佳参数并想要使用参数扫描,请使用优化模型超参数模块 选择此选项 。 训练程序会对指定的一系列设置进行一次测试,并确定生成最佳结果的设置组合。

  3. PCA 中要使用的组件数, PCA 组件数的范围:指定要输出的输出功能或组件的数量。

    决定要包含的组件数是使用 PCA 进行试验设计的重要组成部分。 一般指导原则是,不应包含与变量数相同的 PCA 组件数, 相反,应从较少数量的组件开始,并增大这些组件,直到满足某些条件。

    如果不确定最佳值是什么,我们建议使用"参数范围"选项训练 异常情况检测 模型。

    当输出组件的数量小于数据集中提供的特征列的数量时,将获得最佳结果。

  4. 指定在随机 PCA 训练期间要执行的过度抽样的量。 在异常情况检测问题中,数据不均衡导致难以应用标准 PCA 技术。 通过指定一定数量的过度抽样,你可以增加目标实例的数目。

    如果指定 1,则不会执行任何过度抽样。 如果指定了高于 1 的任何值,则会生成更多用于训练模型的示例。

    有两个选项,具体取决于是否使用参数扫描:

    • 随机 PCA 的过度抽样参数:键入一个整数,用以表示少数类与正常类相比的过度抽样比率。 (单个参数训练方法 可用。)
    • 随机 PCA 中使用的过度采样参数的范围:键入要尝试的一系列数字,或使用范围生成器通过滑块选择值。 (参数范围训练方法.)

    注意

    无法查看过度采样的数据集。 有关如何将过度采样与 PCA 一起使用的其他详细信息,请参阅 技术说明

  5. 启用输入特征均值规范化:选择此选项以将所有输入特征规范化为平均值 0。 对于 PCA,通常建议规范化或缩放为零,因为 PCA 的目标是最大程度地提高变量之间的差异。

    默认情况下选择此选项。 如果值已使用不同的方法或规模规范化,则取消选择此选项。

  6. 连接标记的训练数据集和训练模块之一:

    注意

    如果将参数范围传递给 训练异常情况检测模型,则它仅使用参数范围列表中的第一个值。

    如果将一组参数值传递给优化模型超参数模块,则当它需要每个参数的一系列设置时,它会忽略这些值,并且使用学习器的默认值。

    如果选择" 参数 范围"选项并输入任何参数的单个值,则即使其他参数在一系列值中更改,该单个值也在整个扫描过程中使用。

  7. 运行试验,或选择模块,然后单击"运行 所选项"

结果

训练完成后,可以保存已训练的模型,或将其连接到评分 模型 模块以预测异常分数。

若要评估异常情况检测模型的结果,还需要执行一些额外的步骤:

  1. 确保评分列在两个数据集中都可用

    如果尝试评估异常情况检测模型并收到错误"评分数据集中没有要比较的分数列",则意味着使用的是包含标签列但没有概率分数的典型评估数据集。 需要选择与异常情况检测模型的架构输出匹配的数据集,其中包括评分 标签 和评分 概率 列。

  2. 确保标记标签列

    有时,与标签列关联的元数据在试验图中被删除。 如果发生这种情况,使用"评估模型"模块比较两个异常情况检测模型的结果时,可能会收到错误"评分数据集中没有标签列"或"评分数据集中没有要比较的标签列"。

    可以通过在"评估模型"模块 之前添加"编辑元数据 " 模块来避免此错误 。 使用列选择器选择类列,在"字段" 下拉列表中选择" 标签 "

  3. 规范化不同模型类型的分数

    PCA 异常情况检测模型的预测始终在 [0,1] 范围内。 相比之下,单类 SVM 模块的输出是可能没有限制的未缩放分数。

    因此,如果根据不同的算法比较模型,则必须始终规范化分数。 有关不同异常情况检测Azure AI 库规范化的示例,请参阅示例。

示例

有关如何在异常情况检测中使用的 PCA 的示例,请参阅Azure AI 库:

  • 异常情况检测:信用风险:演示如何在数据中查找离群值。 此示例使用参数扫描来查找最佳模型。 然后,它将该模型应用于新数据,以识别可能表示欺诈的风险交易,并比较两个不同的异常情况检测模型。

技术说明

此算法使用 PCA 来近似包含普通类的子空间。 与数据协方差矩阵的顶部特征值相关联的特征向量横跨该子空间。 对于每个新输入,异常情况探测器首先计算其在特征向量上的投影,然后计算规范化的重构误差。 此误差是异常情况得分。 误差越大,实例越异常。 有关如何计算正常空间的详细信息,请参阅维基百科: 主体组件分析

模块参数

名称 类型 范围 可选 说明 默认
训练模式 CreateLearnerMode 列表:单个参数|参数范围 必选 单个参数 指定学习器选项。

使用“单个参数”选项可以手动指定所有值。

使用“参数范围”选项可以整理可调参数。
要在 PCA 中使用的成分数 Integer 模式:单个参数 2 指定要在 PCA 中使用的成分数。
随机化 PCA 的过度采样参数 Integer 模式:单个参数 2 指定随机化 PCA 训练的准确性参数。
启用输入特征平均值规范化 逻辑类型 列表:True|False 必须 False 指定是否将输入数据规范化为平均值为零。
PCA 成分数的范围 ParameterRangeSettings [1; 100] 模式:参数范围 pps-24共8万 指定要在 PCA 中使用的成分数的范围。
随机化 PCA 使用的过度采样参数的范围 ParameterRangeSettings [1; 100] 模式:参数范围 pps-24共8万 指定随机化 PCA 训练使用的准确性参数的范围。

Outputs

名称 类型 说明
未训练的模型 ILearner 接口 未训练的基于 PCA 的异常检测模型

例外

异常 描述
错误 0017 如果一个或多个指定列具有当前模块不支持的类型,则会发生异常。
错误 0062 尝试将两个具有不同学习器类型的模型进行比较时,会出现异常。
错误 0047 如果传递给模块的某些数据集的特征列数过少,将出现异常。

有关特定于 Studio (经典) 模块的错误列表,请参阅机器学习错误代码

有关 API 异常的列表,请参阅机器学习 REST API 错误代码

另请参阅

单类支持向量机