单类支持向量机

重要

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

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

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

为异常检测创建单类支持向量机模型

类别: 异常情况检测

注意

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

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

模块概述

本文介绍如何使用 机器学习 Studio (经典) 中的一类支持向量模型模块来创建异常情况检测模型。

在具有大量"正常"数据且尝试检测到的异常情况并不多的情况下,此模块特别有用。 例如,如果需要检测欺诈性交易,则你可能没有许多欺诈示例,可以使用这些示例来训练典型的分类模型,但可能有许多良好的交易示例。

使用一 类支持向量 模型模块创建模型,然后使用训练异常情况检测 模型训练模型。 用于训练的数据集可以包含所有或大部分正常事例。

然后,可以应用不同的指标来识别潜在的异常。 例如,可以使用大型良好交易数据集来识别可能表示欺诈性交易的案例。

有关单类 SVM 的更多信息

支持向量机 (SVM) 是监管的学习模型,可以分析数据和识别模式,并可用于分类和回归任务。

通常,为 SVM 算法提供了一组标记为属于两个类之一的训练示例。 SVM 模型基于将训练样本点划分为不同的类别,并尽可能扩大差距,同时惩罚位于间隙错误一侧的训练样本。 然后,SVM 模型通过向间隙的一侧或另一侧分配点进行预测。

有时,过度采样用于复制现有样本,以便可以创建双类模型,但无法根据有限示例预测所有新的欺诈模式或系统故障。 此外,收集有限示例的费用也很高昂。

因此,在单类 SVM 中,支持向量模型基于只有一个类(即"普通"类)的数据进行训练。 它推断正常事例的属性,并且从这些属性可以预测哪些示例与普通示例不同。 这适用于异常情况检测,因为训练示例的异常是定义异常的一部分:也就是说,通常很少出现网络入侵、欺诈或其他异常行为的示例。

有关详细信息(包括基本研究的链接)请参阅技术 说明 部分。

注意

“单类支持向量模型”模块创建内核 SVM 模型,也就是说其可扩展性不是很高。 如果训练时间有限,或者数据过多,可以使用其他方法进行异常检测,例如基于 PCA 的异常情况检测

如何配置 One-Class SVM

  1. 将" 一类支持向量模型 "模块添加到工作室中的试验 (经典) 。 可以在"异常情况检测"类别中机器学习 - 初始化"下的模块

  2. 双击"一 类支持向量模型" 模块,打开" 属性" 窗格。

  3. 对于 "创建训练器模式",请选择指示如何训练模型的选项:

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

    • 参数范围:如果不确定最佳参数,并且想要执行参数扫描以查找最佳配置,请使用此选项。

  4. η:键入一个值,该值表示离群值的小数部分上的上限。 此参数对应于本文中所述的 nu 属性。 使用 nu 属性可以控制离群值和正常事例之间的选择。

  5. ε (epsilon) :键入要用作停止容错的值。 停止容错会影响优化模型时使用的迭代次数,并取决于停止条件值。 超过该值时,训练程序将停止对解决方案进行复用。

  6. 连接一个训练数据集以及训练模块之一:

    注意

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

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

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

  7. 运行试验。

结果

该模块返回经过训练的异常情况检测模型。 可以将模型保存在工作区中,也可以连接评分模型模块并使用训练的模型来检测可能的异常。

如果使用参数扫描训练模型,请记下配置模型以用于生产时使用的最佳参数设置。

示例

有关此模块如何用于异常情况检测的示例,请参阅Azure AI 库:

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

技术说明

来自一 类 SVM 的预测 是可能没有限制的未校准分数。 如 Cortana 库中的示例所示,如果要根据不同的算法比较模型,请务必规范化分数。

研究

此实现包装名为 libsvm 的支持向量机的库。 libsvm B. Schlkopf 等人在这些论文中介绍了基于 的一般理论以及单类支持向量机的方法。

模块参数

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

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

使用“参数范围”选项可以整理可调参数。
nu Float >=double.Epsilon 模式:单个参数 0.1 此 (由希腊语字母 nu 值表示) 确定离群值的小数部分和支持向量数之间的一种选择。
epsilon Float >=double.Epsilon 模式:单个参数 0.001 指定停止容差。
psnu ParameterRangeSettings [0.001; 1.0] 模式:参数范围 0.001;0.01;0.1 指定离群值部分与支持向量数之间权衡的范围。
psEpsilon ParameterRangeSettings [1e-6;1.0] 模式:参数范围 0.001;0.01;0.1 指定停止容差的范围。

Outputs

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

另请参阅

分类
训练异常情况检测模型