整理群集
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
执行参数扫描以确定聚类分析模型的最佳设置
类别:机器学习/定型
模块概述
本文介绍如何使用机器学习 Studio 中的 "扫描群集" 模块 (经典) ,使用参数扫描训练模型。 参数扫描是一种在给定一组数据的情况下查找模型最佳超参数的方法。
" 扫描群集 " 模块专用于聚类分析模型。 提供聚类分析模型作为输入,同时提供数据集。 模块将循环访问指定的一组参数、生成和测试具有不同参数的模型,直到找到具有最佳分类集的模型。 它会自动计算最佳配置,然后使用该配置训练模型。
它还会返回一组描述已测试的模型的度量值,以及基于最佳模型的一组群集分配。
如何配置扫描群集
将 " 扫描群集 " 模块添加到 Studio 中的试验 (经典) 。 可以在 "训练" 类别中的 "机器学习" 下找到此模块。
将 K 平均值聚类分析 模块配置为使用参数扫描,如下所示:
将 " 创建训练培训模式 " 设置为 " 参数范围"。
使用 范围生成器 (或手动键入每个参数) 的多个值,以设置要循环访问的值的范围。
用于扫描的初始化:指定 K 平均值算法应如何查找初始群集质心。 提供多种算法用于随机初始化并测试质心。
如果定型数据集包含标签列(即使包含部分值),则可以将这些值用于质心。 使用 " 分配标签模式 " 选项指示如何使用标签值。
提示
标签列必须提前标记为。 如果遇到错误,请尝试使用 " 编辑元数据 " 来识别包含标签的列。
要扫描的种子数:指示执行参数扫描时要尝试的不同随机起始种子的数量。
选择测量群集相似性时要使用的度量值。 有关详细信息,请参阅 K 平均值聚类 主题。
迭代:指定 K 平均值算法应执行的迭代总数。 这些迭代用于优化群集质心的选择。
如果使用标签列来初始化扫描,请使用 " 分配标签模式 " 选项来指定应如何处理标签列中的值。
填充缺失值:如果标签列包含某些缺失值,请使用此选项根据数据点分配到的群集来归结类别。
从最接近中心覆盖:使用离群集中心最近的点的标签,为分配给群集的所有数据点生成标签值。
忽略标签列:如果不想执行上述任一操作,请选择此选项。
在 " 扫描群集 " 模块中,使用 "度量值" 选项来度量 分类结果,以指定在估计训练的聚类模型时要使用的数学方法:
简化的侧面影像:此指标捕获每个分类中的数据点的 tightness。 它计算为每行与其群集的相似性的组合,并与下一个最近的群集具有相似性。 如果群集只有1行,则改为计算到下一个最接近质心的按比例的距离,以避免获取0作为结果。 "简化" 指的是将与群集质心的距离用作简单的相似性度量值。 通常,分数越高越好。 数据集的平均值表示数据被聚集的程度。 如果有太多或太少的分类,某些分类的剪影值越低。 有关详细信息,请参阅 此维基百科文章。
Davies-Bouldin:此指标旨在确定最小为散点图的最小群集集。 由于度量值定义为每个分类在群集分隔范围内的散点度,因此值越小,就意味着群集更好。 最佳的聚类分析模型可最大程度地减少此指标。 为了计算 Davies-Bouldin 度量值,每个分类计算平均质心距离。 对于每对分类,这些平均值的总和除以质心之间的距离。 为每个群集选择了所有其他群集的最大值,并为所有群集选择了平均值。 有关详细信息,请参阅 此维基百科文章。
Dunn:此指标旨在确定最小的最精简群集集。 通常,此指标的较高值表示更好的聚类分析。 若要计算 Dunn 指标,最小质心到质心距离除以每个数据点到其群集中心的最大距离。 有关详细信息,请参阅 此维基百科文章。
平均偏差:通过从每个数据点到其群集中心的平均距离来计算此指标。 此值将随着质心数的增加而降低;因此,当扫描查找质心数量时,此方法将不起作用。 如果选择最佳的质心初始化种子,则建议使用此指标。
指定参数扫描模式:选择一个选项,用于定义在定型时使用的值的组合,以及如何选择这些值:
整个网格:尝试并计算给定范围内的所有值。 此选项通常会消耗更多的计算资源。
随机扫描:使用此选项可限制运行的数量。 聚类分析模型是使用从允许的参数值范围中随机选择的值的组合来构建和计算的。
随机扫描最大运行次数:如果选择 随机扫描 选项,请设置此选项。 键入一个值,以限制测试随机选择参数集时的最大迭代次数。
警告
K 平均值聚类分析模块的迭代参数具有不同的用途,不受此设置的影响:通过将每个数据点的平均距离最小化到其群集质心,它限制了传递的数据进行传递的次数。 与此相反,由 扫描群集 模块参数定义的迭代将执行,以便尝试不同的随机质心初始化。 这一最小化问题已知为 NP-hard;因此,尝试几个随机种子可能会产生更好的结果。
如果选择随机扫描,请使用 " 随机种子 " 选项指定初始随机种子值,将在其上开始创建质心。 使用参数扫描来创建聚类分析模型的一个优点是,您可以轻松地测试多个种子值,以将聚类分析模型的已知敏感性降低到初始种子值。
单击 " 列集",并选择在生成群集时要使用的列。 默认情况下,在生成和测试聚类分析模型时,将使用所有功能列。
如果数据集中存在标签列,可以将其包含在内。 如果标签存在,可以使用它来指导选择质心,将标签用作特征,或忽略标签。 如上述步骤3中所述,为用于处理 Kmeans 群集 模块的标签设置这些选项。
仅检查追加或取消选中结果:使用此选项可控制结果中返回的列。
默认情况下,该模块将返回定型数据集的原始列以及结果。 如果取消选择此选项。 仅返回群集分配。
将 " 将数据分配到群集 " 模块添加到试验中。
将标记为 "最佳训练模型" 的输出连接分配给分类的定型模型输入。
添加用于评估的数据集,并将其连接到 "将数据分配给群集" 模块的数据集端口。
运行试验。
结果
" 扫描群集 " 模块输出三个不同的结果:
最佳训练模型。 一个训练的模型,可用于评分和评估。 右键单击并选择 " 另存为定型模型 " 以捕获优化的聚类模型,并将其用于评分。
结果数据集。 基于优化模型的一组群集分配。
列名称 说明 分配 此值指示每个数据点分配到的群集。 训练后的模型中的分类标有从零开始的索引。 DistancesToClusterCenter 号1
DistancesToClusterCenter此值指示数据点与每个分类的中心之间的距离。
将为优化模型中创建的每个群集创建一个列。
您可以使用质心选项的 数目 来约束分类的数目。默认情况下,你可以将定型数据集中的列与结果一起返回,以便更轻松地查看和解释群集分配。
扫描结果。 包含分类的以下评估指标的数据集:
列名称 说明 群集指标 一个值,该值指示该运行的平均群集质量。 运行按最佳分数排序。 质心数 在此特定扫描迭代中创建的分类数 运行的索引 每个迭代的标识符 提示
对于群集指标返回的值应以不同的方式解释,具体取决于设置扫描时选择的指标。 对于默认指标, 简化的侧面影像,更高的分数更好。 对于 Davies-Bouldin,分数越低越好。
示例
若要查看示例使用 K 平均值聚类分析的参数,请参阅 Azure AI 库:
技术说明
本部分包含提示和实现的详细信息。
优化聚类分析模型
选择初始参数会对聚类分析模型的质量和准确性产生强烈影响,如质心数和用于初始化群集的种子值。 为了缓解初始参数的这种敏感性," 扫描群集 " 模块可帮助您找到最佳的参数组合。 您可以指定要测试的参数的范围,模块会自动生成和测试多个模型,最后选择最佳分类数。
若要创建参数扫描,还必须将 K 平均值聚类分析 模块配置为使用参数扫描。 可以指定扫描循环访问所有可能的参数组合,或使用参数的随机组合。 你还可以选择多个标准指标之一,以便在生成和测试过程中测量质心的准确性。 完成指定的迭代数后,该模块将基于所选的度量值选择最佳分类数,并输出可用于评估结果的报表。
使用提示
在某些情况下,你可能已经知道预期会找到多少个分类。 例如,你的数据可能具有可用于指导质心选择的类标签。 在这种情况下,可以将 " K 平均值聚类分析 " 模块配置为使用 "标签" 列来指导选择初始质心。
如果你知道某些预期的分类,但不确定有多少群集是最佳的,请将质心数设置为一个大于已知标签值数量的数字。 " 扫描群集 " 模块为已知的数据点创建群集,然后确定剩余数据点的最佳额外群集数。
处理标签列中缺失的值
可以通过多种方式来处理标签列中的缺失值。 例如,假设您有一个图像分类任务,而只有部分图像已标记。
您可以使用 "标签" 列来指导选择质心,但指定使用群集分配填充任何缺失的标签。 换句话说,现有标签值不会更改,但会填充缺少的标签。
或者,对于分配给群集的所有数据点,你可以覆盖现有标签,使用最能表示群集的单个标签。 若要了解此选项的帮助,请假设你使用的是具有非常详细的标签(例如不同狗猫)的图像数据。 使用此选项,可以将所有详细标签替换为单个类别标签 "dog"。
日志中的种子值
" 定型聚类 分析" 模块生成的日志文件显示为 "K 平均值聚类分析算法" 的所有迭代都使用相同的种子,而与 " 随机种子 " 属性中提供的种子无关。
事实上,实现使用用户提供的种子来生成每次运行都不同的随机数字序列。 因此,只需创建一个种子即可创建所有随机生成的数字。
日志的目的是指出当用户未在 " 属性 " 窗格中指定种子时模块使用的种子。
预期输入
名称 | 类型 | 说明 |
---|---|---|
未训练的模型 | ICluster 接口 | 未训练的聚类模型 |
数据集 | 数据表 | 输入的数据源 |
模块参数
名称 | 类型 | 值 | 可选 | 默认 | 说明 |
---|---|---|---|---|---|
度量聚类分析结果 | 群集指标 | 简化的剪影、Davies、Bouldin、Dunn、平均偏差 | 必选 | 简化的侧面影像 | 选择用于评估回归模型的指标 |
指定参数扫描模式 | 扫描方法 | 整个网格或随机扫描 | 必选 | 随机扫描 | 扫描参数空间上的整个网格,或使用有限数量的示例运行进行扫描 |
列集 | ColumnSelection | 必选 | 列选择模式 | ||
随机扫描最大运行次数 | Integer | [1; 10000] | 仅当 SweepingMode 设置为随机扫描时才可用 | 5 | 设置使用随机扫描时要执行的最大运行数 |
随机种子 | Integer | 仅在"扫描模式"设置为"随机扫描"时可用 | 0 | 提供一个值,用于为随机扫描设定随机数生成器种子 | |
选中附加或取消选中仅限结果 | 布尔值 | 必须 | True | 选择此选项可指示输出数据集必须包含追加了分配列的输入数据集。 取消选择以指示只应输出分配列。 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
最佳训练模型 | ICluster 接口 | 训练的群集模型 |
结果数据集 | 数据表 | 分配数据列追加的输入数据集,或仅分配列 |
扫描结果 | 数据表 | 群集扫描运行生成的指标日志 |
例外
异常 | 描述 |
---|---|
错误 0003 | 如果一个或多个输入为 NULL 或为空,将出现异常。 |
有关特定于工作室和经典 (模块) 的列表,请参阅机器学习代码。
有关 API 异常的列表,请参阅机器学习 REST API代码。