双类局部深层支持向量机
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
使用局部深层支持向量机算法创建二元分类模型
模块概述
本文介绍如何在 机器学习 Studio (经典) 中使用双类本地深度支持向量机模块来创建一个双类的非线性支持向量计算机, (SVM) 分类器进行优化,以便高效预测。
支持向量机 (SVM) 是极其流行的、经过广泛研究的监管学习模型种类,可在线性和非线性分类任务中使用。 最近的研究重点探究了如何优化这些模型,以便将其有效扩展为更大型的定型集。 在微软研究院的这一实现方案中,专门设计了用于将数据点映射到特征空间的内核函数,以减少定型所需的时间,同时保持了最高的分类准确性。
此模型是一种监督式学习方法,因此需要包含标签列 的标记数据集。
定义模型参数后,通过提供模型和标记数据集作为 训练模型 或 优化模型超参数的输入来训练模型。 然后,可以使用训练后的模型针对新输入来预测值。
如何配置Two-Class本地深度支持向量机
在 Studio (经典) 中添加 双类Locally-Deep支持向量机 模块。
通过设置“创建训练程序模式”选项,指定所希望的模型训练方式。
单个参数:如果知道自己想要如何配置模型,请提供一组特定的值作为参数。
参数范围:如果不确定最佳参数,可以通过指定多个值并使用 优化模型超参数 模块查找最佳配置来查找最佳参数。 训练器循环访问所提供的设置的多个组合,并确定生成最佳模型的值的组合。
对于 树的深度,请指定可由本地深度学习 SVM (LD-SVM) 模型创建的树的最大深度。
定型成本随着树深度的增加而呈线性增大;因此,请根据你在构建此模型时可以花费的时间量来选择相应的深度。
当深度增加一个单位时,训练时间应会翻倍。
随着深度增加,预测准确性应该会先增加,然后达到峰值,继而下降。
对于 Lambda W,请指定应提供给正则化术语的权重。
规范化限制受过训练的分类器中的大值部分。 在给定特征数的情况下,如果样本数不足,你可以使用 L2 正则化来避免过度拟合。 Lambda W 的较大值意味着更强调规范化分类器权重,减少训练集分类错误。
如果默认值 (0.1) 的效果不佳,则你还应该尝试 {0.0001、0.001 和 0.01}。
对于 Lambda Theta,请指定区域边界与最近的数据点之间应留出多少空间。
此模型的工作原理是将数据空间和特征空间分区成区域。 当 Lambda Theta 以这种方式最小化时,训练模型中的区域边界太接近训练数据点,则模型可能会产生较低的训练错误,但由于过度拟合而导致的高测试错误。
若要减少需要验证的参数数,良好的经验规则是将 Lambda Theta 设置为用于 Lambda W 的值的十分之一。较大的值意味着要强调防止过度拟合,而不是在训练集中最小化分类错误。
如果默认值 (0.01) 不起作用,则还应尝试 {0.0001、0.001 和 0.1}。
对于 Lambda Theta Prime,请键入一个值来控制模型中决策边界允许的曲率量。
较大的值使模型能够灵活地学习曲线决策边界,而较小的值可能会将决策边界限制为更多分步线性模式。
此参数与 Sigma 参数结合使用。 为了减少需要验证的参数数目,一个合理的经验法则是将 Lambda Theta 素数设置为 Lambda W 值的 1/10。
如果默认值 (0.01) 的效果不佳,则你还应该尝试 {0.0001、0.001 和 0.1}。
对于 Sigmoid 锐度,请键入用于缩放参数σ的值。
较大的值表示本地内核 ー 中的 tanh (theta) 饱和,而较小的值表示 theta 的线性操作范围。 可以在 “技术说明 ”部分找到完整的优化公式。
如果默认值 (1) 的效果不佳,则你还可以尝试 {0.1、0.01 和 0.001}。
在 迭代次数中,指示算法应使用随机子集的示例更新分类器参数的次数。
对于 功能规范化器,请选择用于规范化特征值的方法。 支持以下方法:
装箱规范化器:装箱规范化器创建大小相等的箱,然后将每个箱中的每个值规范化,以除以箱总数。
高斯规范化器:高斯规范化器重新缩放每个特征的值,其平均值为 0,方差为 1。 这是通过计算每个特征的平均值和方差来完成的。 然后,对于每个实例,平均值将减去,结果除以方差的平方根 (标准偏差) 。
Min-Max 规范化器:最小-最大规范化器线性地将每个特征重新缩放到 [0,1] 间隔。
移动每个特征的值以重缩放为 [0,1] 区间,使最小值为 0,然后除以新的最大值(这是初始最大值和初始最小值之间的差异)。
请勿规范化:不执行规范化。
在 随机数种子中,如果希望确保跨运行可重现性,请键入要用作种子的值。
选择 “允许未知分类级别 ”选项,为测试或验证集中的未知值创建组。
如果取消选中此选项,该模型只会接受训练数据中包含的值。 在前一种情况下,该模型在已知值方面的精确度可能较差,但可以较好地预测新(未知)值。
连接标记数据集和训练模块之一:
运行试验。
结果
在训练完成后:
若要保存已训练模型的对齐位置,请右键单击 已训练的模型 输出,然后选择“ 另存为已训练的模型”。 此模型不会在同一试验的连续运行中更新。
若要针对标记的数据集执行交叉验证,请将未训练的模型连接到 交叉验证模型。
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
使用提示
在下列情况下,此 LD-SVM 分类器最实用:
你遇到了二元分类问题,或者你可以将问题归纳为二元分类任务。
你尝试过线性分类器,但它的效果不佳。
你尝试过非线性 SVM 或其他分类器并获得了良好的分类准确性,但训练模型花费的时间太长。
你可以通过牺牲预测准确性来减少定型时间。
如果数据非常复杂,导致线性模型(如逻辑回归)的效果非常差,则你可以选择 LD-SVM 模型。 此外,LD-SVM 模型的规模非常小,还可用于移动设备或复杂模型(如神经网络)由于过大而无法高效运行的其他情况。
相反,如果你不关心模型大小或出于简洁性或预测速度考虑而必须使用线性模型,则不得使用 LD-SVM 模型。 如果线性分类器已经提供良好的结果,或者可以通过添加少量的非线性来获得较高的分类准确性,也没有必要更改为 LD-SVM。
实现详细信息
LD-SVM 模型是由微软研究院开发,以不断提高非线性 SVM 预测速度。 Gonen 和 Alpaydin (2008) 对本地化多内核学习方法的研究特别宝贵。 使用局部内核函数,此模型可以学习任意局部特征嵌入,包括高维、稀疏和计算深层特征(可向此模型添加非线性)。
LD-SVM 比其他大部分分类器的速度更快,原因有以下几个:
此模型学习局部线性的决策边界。 因此,根据局部决策边界对测试点进行测试,即可对测试点进行有效分类,而不用根据全特征空间的整个决策边界集对测试点进行测试。
此模型使用高效的基于原始例程来优化树状局部特征嵌入的空间,这些嵌入可扩展为包含五十多万个定型点的大型定型集。
根据局部决策边界对点进行测试的成本与定型点的数量呈对数关系。
由于有这些优化,与定型传统 SVM 模型相比,LD-SVM 模型的定型速度成倍上升。
优化公式
研究
有关算法和基础研究的详细信息,请参阅本地深度内核Learning,用于高效非线性 SVM 预测。
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
创建训练器模式 | 列出 | 学习器参数选项 | 单个参数 | 高级学习器选项: 1. 使用单个参数创建学习器 2.使用参数范围创建学习器 |
树的深度 | >=1 | Integer | 3 | 局部深层 SVM 树的深度。 |
Lambda W | >=1.401298E-45 | Float | 0.1 | 分类器参数 Lambda W 的规范化权重。 |
Lambda Theta | >=1.401298E-45 | Float | 0.01 | 分类器参数 Lambda Theta 的规范化权重。 |
Lambda Theta 素数 | >=1.401298E-45 | Float | 0.01 | 分类器参数 Lambda Theta 素数的规范化权重。 |
Sigmoid 锐度 | >=1.401298E-45 | Float | 1.0 | Sigmoid 锐度。 |
树的深度 | [1;int.MaxValue] | ParameterRangeSettings | 1;3;5;7 | 局部深层 SVM 树的深度范围。 |
Lambda W | [1.401298E-45;3.40282347E+38] | ParameterRangeSettings | 0.1;0.01;0.001 | 分类器参数 Lambda W 的规范化权重范围。 |
Lambda Theta | [1.401298E-45;3.40282347E+38] | ParameterRangeSettings | 0.1;0.01;0.001 | 分类器参数 Lambda Theta 的规范化权重范围。 |
Lambda Theta 素数 | [1.401298E-45;3.40282347E+38] | ParameterRangeSettings | 0.1;0.01;0.001 | 分类器参数 Lambda Theta 素数的规范化权重范围。 |
Sigmoid 锐度 | [1.401298E-45;3.40282347E+38] | ParameterRangeSettings | 1.0;0.1;0.01 | sigmoid 锐度范围。 |
特征规范化器 | 列出 | 规范化器类型 | 最小-最大值规范化器 | 要应用到学习示例的规范化类型。 |
迭代数 | >=1 | Integer | 15000 | 学习迭代数。 |
迭代数 | [1;int.MaxValue] | ParameterRangeSettings | 10000;15000;20000 | 学习迭代数范围。 |
随机数种子 | 任意 | Integer | 此模型使用的随机数生成器种子。 默认留空。 | |
允许未知的分类级别 | 任意 | 布尔 | True | 若为 True,则为每个分类列都创建一个附加级别。 测试数据集中不可用于定型数据集的任何级别都会映射到此附加级别。 |
输出
名称 | 类型 | 说明 |
---|---|---|
未训练的模型 | ILearner 接口 | 未定型的二元分类模型。 |