单类支持向量机
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
为异常检测创建单类支持向量机模型
类别: 异常情况检测
模块概述
本文介绍如何使用 机器学习 Studio (经典) 中的一类支持向量模型模块来创建异常情况检测模型。
在具有大量"正常"数据且尝试检测到的异常情况并不多的情况下,此模块特别有用。 例如,如果需要检测欺诈性交易,则你可能没有许多欺诈示例,可以使用这些示例来训练典型的分类模型,但可能有许多良好的交易示例。
使用一 类支持向量 模型模块创建模型,然后使用训练异常情况检测 模型训练模型。 用于训练的数据集可以包含所有或大部分正常事例。
然后,可以应用不同的指标来识别潜在的异常。 例如,可以使用大型良好交易数据集来识别可能表示欺诈性交易的案例。
有关单类 SVM 的更多信息
支持向量机 (SVM) 是监管的学习模型,可以分析数据和识别模式,并可用于分类和回归任务。
通常,为 SVM 算法提供了一组标记为属于两个类之一的训练示例。 SVM 模型基于将训练样本点划分为不同的类别,并尽可能扩大差距,同时惩罚位于间隙错误一侧的训练样本。 然后,SVM 模型通过向间隙的一侧或另一侧分配点进行预测。
有时,过度采样用于复制现有样本,以便可以创建双类模型,但无法根据有限示例预测所有新的欺诈模式或系统故障。 此外,收集有限示例的费用也很高昂。
因此,在单类 SVM 中,支持向量模型基于只有一个类(即"普通"类)的数据进行训练。 它推断正常事例的属性,并且从这些属性可以预测哪些示例与普通示例不同。 这适用于异常情况检测,因为训练示例的异常是定义异常的一部分:也就是说,通常很少出现网络入侵、欺诈或其他异常行为的示例。
有关详细信息(包括基本研究的链接)请参阅技术 说明 部分。
注意
“单类支持向量模型”模块创建内核 SVM 模型,也就是说其可扩展性不是很高。 如果训练时间有限,或者数据过多,可以使用其他方法进行异常检测,例如基于 PCA 的异常情况检测。
如何配置 One-Class SVM
将" 一类支持向量模型 "模块添加到工作室中的试验 (经典) 。 可以在"异常情况检测"类别中机器学习 - 初始化"下的模块。
双击"一 类支持向量模型" 模块,打开" 属性" 窗格。
对于 "创建训练器模式",请选择指示如何训练模型的选项:
单个参数:如果知道自己想要如何配置模型,请使用此选项并提供一组特定的值作为参数。
参数范围:如果不确定最佳参数,并且想要执行参数扫描以查找最佳配置,请使用此选项。
η:键入一个值,该值表示离群值的小数部分上的上限。 此参数对应于本文中所述的 nu 属性。 使用 nu 属性可以控制离群值和正常事例之间的选择。
ε (epsilon) :键入要用作停止容错的值。 停止容错会影响优化模型时使用的迭代次数,并取决于停止条件值。 超过该值时,训练程序将停止对解决方案进行复用。
连接一个训练数据集以及训练模块之一:
注意
如果将参数范围传递给 训练异常情况检测模型,则它仅使用参数范围列表中的第一个值。
如果将一组参数值传递给优化模型超参数模块,则当它期望每个参数有一系列设置时,它会忽略这些值,并为学习器使用默认值。
如果选择" 参数 范围"选项并输入任何参数的单个值,则即使其他参数在一系列值中更改,该单个值也在整个扫描过程中使用。
运行试验。
结果
该模块返回经过训练的异常情况检测模型。 可以将模型保存在工作区中,也可以连接评分模型模块并使用训练的模型来检测可能的异常。
如果使用参数扫描训练模型,请记下配置模型以用于生产时使用的最佳参数设置。
示例
有关此模块如何用于异常情况检测的示例,请参阅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 接口 | 未定型的异常检测模型 |