SystemGetCrossValidationResults(Analysis Services - 数据挖掘)
将挖掘结构分区为指定数目的交叉部分,并对每个分区为模型定型,然后返回每个分区的准确性指标。
注意 |
---|
此存储过程不能用于交叉验证聚类分析模型,也不能交叉验证使用 Microsoft 时序算法或 Microsoft 顺序分析和聚类分析算法生成的模型。若要对聚类分析模型进行交叉验证,可以使用另一个存储过程 SystemGetClusterCrossValidationResults(Analysis Services - 数据挖掘)。 |
语法
SystemGetCrossValidationResults(
<mining structure>
[, <mining model list>]
,<fold count>
,<max cases>
,<target attribute>
[,<target state>]
[,<target threshold>]
[,<test list>])
参数
mining structure
当前数据库中挖掘结构的名称。(必需)
mining model list
要验证的挖掘模型的逗号分隔列表。如果模型名称中包含任何对于标识符名称无效的字符,则必须将名称用方括号括起来。
如果未指定挖掘模型列表,则对与指定结构关联并包含可预测属性的所有模型执行交叉验证。
注意 若要对聚类分析模型进行交叉验证,必须使用另一个存储过程 SystemGetClusterCrossValidationResults(Analysis Services - 数据挖掘)。
(可选)
fold count
整数,指定将数据集分入的分区的数目。最小值为 2。最大倍数为 maximum integer 或事例数,取两者中的较低者。每个分区包含的事例数都将大致为:max cases/fold count。
没有默认值。
注意 折叠数会在很大程度上影响执行交叉验证所需的时间。如果选择的数目过高,查询可能需要运行较长时间,在某些情况下,服务器会停止响应或超时。
(必需)
max cases
整数,指定可以在所有折叠间进行测试的最大事例数。值 0 指示将使用数据源中的所有事例。
如果指定的值大于数据集中的实际事例数,则使用数据源中的所有事例。
没有默认值。
(必需)
target attribute
包含可预测属性的名称的字符串。可预测属性可以是挖掘模型的列、嵌套表列或嵌套表键列。注意 仅在运行时才会验证目标属性是否存在。
(必需)
target state
指定要预测的值的公式。如果指定了目标值,将只针对指定的值收集指标。如果未指定值,或为 null,则针对每个预测最有可能的状态计算指标。
默认值为 null。
如果指定的值对于指定属性无效,或公式不是指定属性的正确类型,则在验证期间会引发错误。
(可选)
target threshold
Double 大于 0 且小于 1。指示要将指定目标状态的预测视为正确而必须取得的最小概率分数。概率小于或等于此值的预测将被视为不正确。
如果未指定值,或为 null,则使用最有可能的状态,无论其概率分数如何。
默认值为 null。
注意 如果您将 state threshold 设置为 0.0,Analysis Services 将不会引发错误,但是请您一定不要使用此值。实际上,阈值为 0.0 意味着概率为 0% 的预测也将视为正确。
(可选)
test list
指定测试选项的字符串。注意:此参数留待将来使用。
(可选)
返回类型
返回的行集包含每个模型中每个分区的分数。
下表对行集中的列进行了说明。
列名 |
说明 |
---|---|
ModelName |
所测试模型的名称。 |
AttributeName |
可预测列的名称。 |
AttributeState |
可预测列中的指定目标值。如果此值为 null,则使用了最有可能的预测。 如果此列包含一个值,则只针此值评估模型的准确性。 |
PartitionIndex |
一个从 1 开始的索引,用于标识结果适用于哪个分区。 |
PartitionSize |
一个整数,指示每个分区中包含的事例数。 |
Test |
所执行测试的类别。有关各类别以及每个类别中包含的测试的说明,请参阅交叉验证报表(Analysis Services - 数据挖掘)。 |
Measure |
测试返回的度量值的名称。每个模型的度量值都取决于可预测值的类型。有关每个度量值的定义,请参阅交叉验证(Analysis Services – 数据挖掘)。 有关为每个可预测类型返回的度量值的列表,请参阅交叉验证报表(Analysis Services - 数据挖掘)。 |
Value |
指定的测试度量值的值。 |
注释
若要返回整个数据集的准确性指标,请使用 SystemGetAccuracyResults(Analysis Services - 数据挖掘)。
如果挖掘模型已分区为若干折叠,您可以使用 SystemGetAccuracyResults(Analysis Services - 数据挖掘)跳过处理并只返回交叉验证的结果。
示例
下面的示例演示如何将进行交叉验证的挖掘结构分区为两个折叠,然后测试与该挖掘结构 [v Target Mail] 关联的两个挖掘模型。
代码的第三行列出了要测试的挖掘模型。如果未指定此列表,则使用与该结构关联的所有非聚类分析模型。代码的第四行指定了分区数。由于没有为 max cases 指定值,因此将使用挖掘结构中的所有事例,并在各分区间平均分布。
第五行指定了可预测属性 Bike Buyer,第六行指定了要预测的值 1(表示“是,将要购买”)。
第七行的 NULL 值指示没有必须满足的最小概率限制。因此,在评估准确性时将使用具有非零概率的第一个预测。
CALL SystemGetCrossValidationResults(
[v Target Mail],
[Target Mail DT], [Target Mail NB],
2,
'Bike Buyer',
1,
NULL
)
示例结果:
ModelName |
AttributeName |
AttributeState |
PartitionIndex |
PartitionSize |
Test |
Measure |
Value |
---|---|---|---|---|---|---|---|
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Classification |
True Positive |
144 |
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Classification |
False Positive |
105 |
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Classification |
True Negative |
186 |
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Classification |
False Negative |
65 |
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Likelihood |
Log Score |
-0.619042807138345 |
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Likelihood |
Lift |
0.0740963734002671 |
Target Mail DT |
Bike Buyer |
1 |
1 |
500 |
Likelihood |
Root Mean Square Error |
0.346946279977653 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Classification |
True Positive |
162 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Classification |
False Positive |
86 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Classification |
True Negative |
165 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Classification |
False Negative |
87 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Likelihood |
Log Score |
-0.654117781086519 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Likelihood |
Lift |
0.038997399132084 |
Target Mail DT |
Bike Buyer |
1 |
2 |
500 |
Likelihood |
Root Mean Square Error |
0.342721344892651 |
要求
从 SQL Server 2008 开始,交叉验证仅在 SQL Server Enterprise 中可用。