我们的表很大,我们正在使用SSAS数据挖掘对其做出预测。
我们正在努力获取评分的测试和培训案例,以便以有效的方式进行验证。有没有一种方法可以在不为每一行调用算法的情况下进行(预测联接)?
例如,如果我的输入数据集包含以下列:
(客户,国家/地区,年龄,性别,BuyAmount)我想获取...
(客户,国家/地区,年龄,性别,购买金额,预计购买金额,概率)
这必须是可能的,因为这是在模型处理过程中完成的,很可能用于生成验证图,例如SystemGetClassificationMatrix。
如果我们谈论的是数十亿行,那将是一个很大的性能提升。
避免重复计算(预测联接将为每一行执行模型)
避免使用openrowset将数据从数据库移至SSAS(案例已保存在model.cases中)
避免将结果写回某个地方以供将来分析
这应该是微不足道的解决方案...我必须缺少一些东西。
最佳答案
我有一个来自微软的解决方案。我在这里写它,因为它可能对其他人有用
训练/测试数据存储在挖掘结构中,除非在训练后将其清除。以下查询应该起作用:
从挖掘模型[ModelName]中选择Predict(..),PredictProbability(..)
自然预测加入
可以在哪里:
从采矿结构中选择* [MiningStructureName] .CASES
从采矿结构中选择* [MiningStructureName] .IsTrainingCase()的情况
从采矿结构中选择* [MiningStructureName] .IsTestCase()的情况
从挖掘结构中清除案例
从采矿结构中删除[MiningStructureName] .CASES
采矿结构训练用例未应用模型过滤器。如果要查询发送给模型的实际训练案例,则可以在where子句中明确键入过滤器,也可以直接查询挖掘模型案例(如果模型启用了追溯功能)
从采矿结构中选择* [MiningStructureName]。在IsTrainingCase()和[Gender] ='Female'的情况下
SELECT * FROM MINING MODEL [ModelName] .CASES
如果挖掘结构列名称与挖掘模型列名称不同,则必须使用“ PREDICTION JOIN”代替“ NATURAL PREDICTION JOIN”,并在查询中提供映射。
关于machine-learning - 通过SSAS数据挖掘获取测试和交易集的评分结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37425421/