测量挖掘模型准确性(Analysis Services - 数据挖掘)

SQL ServerAnalysis Services 提供了多种确定挖掘模型是否准确的方法。

  • 可使用图表直观地表示数据挖掘模型的准确性:“提升图”比较每个模型的预测的准确性。“利润图”显示与使用每个模型相关联的理论上的利润增长。“散点图”比较实际值与预测值,它用于回归模型或使用连续输入预测连续属性的其他模型。

  • 可以使用“分类矩阵”将准确预测和不准确预测排列成表格形式。

  • 可以使用“交叉验证”以统计方法验证您的挖掘模型的可靠性。

有关详细信息,请参阅模型准确性图表工具(Analysis Services - 数据挖掘)。本主题中介绍的所有图表类型也可以使用 XML/A 或 AMO 以编程方式来创建。有关编程 Analysis Services 解决方案的详细信息,请参阅开发人员指南(Analysis Services - 数据挖掘)

注意注意

确定模型相当准确之后,应该在该模型旨在回答的业务问题上下文中计算其结果。

本主题说明 Business Intelligence Development Studio 或 SQL Server Management Studio 中用于度量挖掘模型准确性的常规工作流。根据使用的挖掘模型的类型和选择的图表,某些选项可能稍有不同、不可用或在默认情况下进行了配置,但整体过程如下:

  1. 选择要测试的模型或结构。

  2. 选择测试数据。

  3. 也可以筛选测试数据。

  4. 选择图表类型并在相应的查看器中将其打开。

  5. 也可以自定义该图表。

有关分步过程的说明,请参阅如何为挖掘模型创建准确性图表

选择模型或结构

通常的做法是为每个数据挖掘结构生成多个数据挖掘模型,对于每个模型使用不同的算法或参数集。Analysis Services 可轻松测试同一图表中的多个相关挖掘模型。但也可以为准确性图表中的输出仅选择一个挖掘模型。

在 Business Intelligence Development Studio 中,选择挖掘结构,然后单击**“挖掘准确性图表”选项卡打开准确性图表的设计区域。在 SQL Server Management Studio 中,右键单击该挖掘结构,然后选择“查看提升图”**打开同一设计区域并创建任何类型的准确性图表。

如果向一个图表中添加多个挖掘模型,则必须选择具有相同可预测属性的挖掘模型。如果创建提升图、利润图、散点图或分类矩阵,则可以使用**“输入选择”**选项卡选择要制作图表的模型。但是,如果创建交叉验证报表,则 Analysis Services 将分析全部具有相同可预测属性的模型。

选择测试数据

在创建提升图、利润图或散点图之前,必须指定将用于计算模型的数据。由于用于计算的数据会极大地影响计算结果,因此 SQL Server 2008Analysis Services 提供以下用于指定测试数据的选项:

  • 使用创建数据挖掘结构时定义为测试集的维持分区。通过将挖掘结构数据的一部分用作测试数据,可以始终测量结构中的所有模型。

  • 定义要用作测试数据的外部数据源。

  • 定义外部数据源并应用筛选器以将数据限制为事例的相关子集。通过定义筛选器,可以选择满足特定条件或包含特别重要的事例的测试数据。

  • 使用应用于模型所使用的定型事例的筛选器。通过定义模型筛选器,可以将事例限制为数据的子集,同时还可以确保始终使用相似的数据来评估特定模型。

如果在 Business Intelligence Development Studio 或 SQL Server Management Studio 中创建交叉验证报表,则默认情况下 Analysis Services 使用为模型定义的维持分区(如果存在)。如果未定义任何维持分区,则 Analysis Services 使用整个定型事例集。

如果在 Business Intelligence Development Studio 或 SQL Server Management Studio 中创建提升图、利润图、散点图或分类矩阵,则使用数据挖掘设计器的“挖掘准确性图表”视图上的“输入选择”选项卡来指定要用于测试挖掘模型的数据。选项如下所示:

使用挖掘模型测试事例

挖掘模型测试事例取自挖掘结构中的相同数据,但对该模型应用了筛选器以限制用于测试的事例。模型筛选器是指由您创建并与挖掘模型存储在一起的一组条件。由于筛选条件与挖掘模型一起保存,因此当您定型模型时,默认情况下将应用该条件。测试模型时,可按原样使用筛选器,也可以使用不同的数据集进行测试,从而跳过模型筛选器。如果要更改应用于挖掘模型的筛选器,则可以修改模型筛选器,然后重新处理模型。也可以创建模型的副本,然后在副本上生成不同的筛选器。

有关模型筛选器的详细信息,请参阅为挖掘模型创建筛选器(Analysis Services – 数据挖掘)

有关如何对挖掘模型创建筛选器的说明,请参阅如何对挖掘模型应用筛选器

使用挖掘结构测试事例

如果在创建挖掘结构时定义了测试数据集,则可通过定义维持百分比或用于维持的最大事例数来度量准确性。测试集定义与结构存储在一起。因此,该测试集可以用于基于该结构的任何模型。

注意注意

无法直接对挖掘结构维持数据创建筛选器。但是,如果要筛选此数据(作为一种解决方法),则可以将原始数据源视图重用为外部数据源,并对该外部数据源应用筛选器。

有关详细信息,请参阅将数据分区为定型集和测试集(Analysis Services - 数据挖掘)

指定其他数据集

在 SQL Server 2005 中,测试挖掘模型准确性的唯一方式是使用外部数据集。SQL Server 2008 中仍然提供此选项,但现在您还可以对外部数据定义筛选器。

若要使用外部数据源,必须将要用于输入的外部数据中的任何列都映射到挖掘模型中的列。可以选择忽略某些列,但外部数据集必须至少包含一个可映射到挖掘模型中可预测列的列。根据模型不同,可能还需要映射外部数据中具有预测所需的属性的一列或多列。

在数据挖掘设计器中,可使用**“输入选择”选项卡和“指定列映射”对话框来选择用于验证模型的输入表。选择输入表时,表“挖掘结构”“选择输入表”中的列将自动相互映射。您可以根据需要,通过单击“挖掘结构”表中的某列并将该列拖到“选择输入表”表中来修改映射。如果输入数据包含嵌套表,则还可以使用“选择嵌套表”**链接来包括该表。

注意注意

可预测列必须始终映射。未映射的列将作为 NULL 值传送到挖掘模型。

映射对应列之后,可以选择为可预测列指定目标状态。如果将可预测列的状态留空,则无论可预测列的状态为何,提升图都会预测模型的执行性能。有关创建带有或不带指定的可预测列状态的提升图之间的详细差别信息,请参阅提升图(Analysis Services - 数据挖掘)

您还可以选择对外部数据创建筛选器。有关如何创建筛选器的说明,请参阅如何筛选用于准确性图表的输入行

**“同步预测列和值”**选项协调外部数据源和挖掘模型中的可预测属性,因此,即使这些属性具有不同的名称,它们在模型定型过程中也将派生自相同的可预测列。这在您具有指向同一基础数据的两个挖掘结构列,而可能对这两列加了不同标签时,将非常有用。

如果清除**“同步预测列和值”**复选框,则可以选择任何有效的可预测列和值,并将结果绘制成图(即使结果没有意义)。如果尝试将没有显式映射到同一值集的两个可预测属性进行比较,则可以清除此选项。但您应该知道,这两个属性在准确性方面可能无法进行比较。例如,将存储桶中的收入离散化为“高”、“中”和“低”的模型可以与将收入按 150,000+、50,000-100,000 和 10,000-50,000 范围分组的模型进行比较。但在清除复选框之前,应先验证属性是否可比较。

有关详细信息,请参阅如何为准确性图表选择可预测列使用数据挖掘工具

筛选数据

可以采用下列方法筛选用于定型和测试数据挖掘模型的数据:

  • 创建一个与该模型存储在一起的筛选器。

  • 对外部数据源应用筛选器。

定义筛选器时,实质上是对传入数据创建一个 WHERE 子句。如果要筛选用于评估模型的输入数据集,则在创建图表时筛选表达式将转换为 Transact-SQL 语句并应用于输入表。结果,测试事例数会大大减少。

相比之下,对挖掘模型应用筛选器时,所创建的筛选表达式将转换为数据挖掘扩展插件 (DMX) 语句并应用于单个模型。对模型应用筛选器时,只有原始数据的子集用于定型该模型。如果创建结构时定义了测试数据集,则用于定型的模型事例将仅包括挖掘结构定型集中满足筛选条件的那些事例。此外,选择**“使用挖掘模型测试事例”**选项时,测试事例将仅包括挖掘结构测试集中满足筛选条件的事例。筛选条件也适用于对模型事例的钻取查询。

但是,如果未定义维持数据集,用于测试的模型事例将包括该数据集中满足筛选条件的所有事例。

因此,即使多个模型基于同一挖掘结构,也可以具有不同的筛选器,因此它们可以使用不同的数据进行定型和测试。如果在创建准确性图表时选择**“使用挖掘模型测试事例”**选项,则您应该发现,测试集和定型集中的事例总数在要测试的模型之间都会变化很大。

注意注意

如果为现有挖掘模型添加筛选器或更改筛选条件,则必须重新处理该挖掘模型才能查看筛选器的效果。

若要查看所使用的实际定型事例,可以创建 DMX 内容查询,如下所示:

SELECT * from <model>.CASES WHERE IsTrainingCase()

或者:

SELECT * from <model>.CASES WHERE IsTestCase()

若要将这些事例与结构中的事例进行比较,请创建以下 DMX 内容查询:

SELECT * FROM <structure>.CASES WHERE IsTestCase()
注意注意

若要对模型事例运行内容查询,必须对模型启用 Drillthough。

有关可以应用的筛选器类型以及如何计算筛选表达式的信息,请参阅模型筛选器语法和示例(Analysis Services – 数据挖掘)

选择图表类型和查看图表

根据选择的图表类型,您可以进一步配置选项、浏览图表,或者将图表复制到剪贴板,以及在 Excel 中处理数据。

注意 图表及其定义都不会保存。如果您关闭包含图表的窗口,则必须重新创建该图表。

提升图

配置模型和测试数据的选项后,单击**“提升图”**选项卡可查看结果。也可以将图表复制到剪贴板,或者在挖掘图例中查看各条趋势线或数据点的详细信息。

有关详细信息,请参阅提升图(Analysis Services - 数据挖掘)“提升图”选项卡(“挖掘准确性图表”视图)

利润图

配置模型和测试数据的选项后,单击**“提升图”选项卡,从“图表类型”列表中选择“利润图”可设置利润图选项,然后单击“确定”可查看结果。您可以根据需要多次使用“利润图设置”**对话框来尝试不同的成本选项以及重新显示图表。对于每个模型,挖掘图例会包含有关估计利润的详细信息。也可以将挖掘图例的图表和内容复制到剪贴板,然后在 Excel 中进行处理。

有关详细信息,请参阅利润图(Analysis Services - 数据挖掘)“利润图设置”对话框(“挖掘准确性图表”视图)

散点图

如果已选择适当类型的模型,则单击**“提升图”选项卡时,图表类型会自动设置为“散点图”**并显示一个散点图。不能进一步进行配置。也可以将图表复制到剪贴板,然后将该图表作为图形粘贴到 Excel 或其他应用程序。

有关详细信息,请参阅散点图(Analysis Services - 数据挖掘)

分类矩阵

对于分类矩阵,使用**“输入选择”选项卡选择模型和测试数据,然后单击“分类矩阵”**选项卡可查看结果。分类矩阵的内容对于所有模型类型都是相同的,并且无法进行配置。也可以将图表中的数据复制到剪贴板,然后在 Excel 中进行处理。

有关详细信息,请参阅分类矩阵(Analysis Services - 数据挖掘)“分类矩阵”选项卡(“挖掘准确性图表”视图)

交叉验证报表

对于交叉验证报表,在解决方案资源管理器中选择挖掘结构或挖掘模型后,单击**“交叉验证”选项卡,配置所有相关选项,然后单击“获取结果”**生成报表。不能进一步进行配置。对于所有模型类型,交叉验证报表的格式均相同,并且无法进行配置。但报表的内容会有所不同,具体取决于要分析的模型的类型和可预测属性的数据类型。也可以将报表的结果复制到剪贴板,然后在 Excel 中处理该数据。

有关详细信息,请参阅交叉验证(Analysis Services – 数据挖掘)交叉验证报表(Analysis Services - 数据挖掘)