使用SSAS数据挖掘获得测试和训练集的评分结果

时间:2016-05-24 23:17:13

标签: machine-learning ssas regression

我们有一个非常大表,我们正在使用SSAS数据挖掘对其进行预测。

我们正在努力以有效的方式获得得分测试和训练案例以进行验证。有没有办法不调用每行的算法(PREDICTION JOIN)?

例如,如果我的输入数据集包含以下列:

(顾客,国家,年龄,性别,买一个)我想获得......

(客户,国家,年龄,性别,BuyAmount,BuyAmount预测,概率)

必须是可能的,因为这是在模型处理期间完成的事情,并且它可能用于生成验证图表,例如SystemGetClassificationMatrix。

如果我们谈论数十亿行,那将是一个很大的性能提升。

  • 避免双重计算(预测连接将为每一行执行模型)
  • 避免使用openrowset将数据从DB移动到SSAS(案例已保存在model.cases上)
  • 避免将结果写回某处以供将来分析

这一点应该是微不足道的......我必须遗漏一些东西。

1 个答案:

答案 0 :(得分:0)

我有一个来自微软的解决方案。我在这里写它,因为它可能对其他人有用

训练/测试数据存储在采矿结构中,除非在训练后清除。以下查询应该有效:

SELECT Predict(..),PredictProbability(..)FROM MINING MODEL [ModelName] 自然预测加入

哪里可以: SELECT * FROM MINING STRUCTURE [MiningStructureName] .CASES SELECT * FROM MINING STRUCTURE [MiningStructureName] .CASES WHERE IsTrainingCase() SELECT * FROM MINING STRUCTURE [MiningStructureName] .CASES WHERE IsTestCase()

从采矿结构中清除案例 从挖掘结构中删除[MiningStructureName] .CASES

挖掘结构培训案例没有应用模型过滤器。如果要查询发送到模型的实际培训案例,可以在where子句中显式键入过滤器,也可以直接查询挖掘模型案例(如果模型启用了钻取) SELECT * FROM MINING STRUCTURE [MiningStructureName] .CASES WHERE IsTrainingCase()和[Gender] ='Female' SELECT * FROM MINING MODEL [ModelName] .CASES

如果挖掘结构列名称与挖掘模型列名称不同,则必须使用“PREDICTION JOIN”而不是“NATURAL PREDICTION JOIN”并在查询中提供映射。

相关问题