我们有一个相当大表,我们正在使用 SSAS 数据挖掘对其进行预测。
我们正在努力以有效的方式获取评分的测试和训练用例以进行验证。有没有一种方法可以不调用每行的算法(预测连接)?
例如,如果我的输入数据集具有以下列:
(客户、国家/地区、年龄、性别、购买金额)我想获取...
(客户、国家/地区、年龄、性别、购买金额、预测购买金额、概率)
它必须是可能的,因为这是在模型处理过程中完成的事情,并且它可能用于生成验证图表,例如系统获取分类矩阵。
如果我们谈论的是数十亿行,这将是一个巨大的性能改进。
- 避免双重计算(预测连接将为每行执行模型)
- 避免使用 openrowset 将数据从 DB 移动到 SSAS(案例已保存在 model.cases 上)
- 避免将结果写回某处以供将来分析
这应该是微不足道的事情来解决......我一定错过了一些东西。
最佳答案
我得到了来自 Microsoft 的解决方案。我写在这里是因为它可能对其他人有用
训练/测试数据存储在挖掘结构中,除非训练后被清除。以下查询应该有效:
从挖掘模型 [ModelName] 中选择 Predict(..)、PredictProbability(..) 自然预测连接
哪里可以: 从采矿结构 [MiningStructureName].CASES 中选择 * 从挖掘结构 [MiningStructureName].CASES WHERE IsTrainingCase() 中选择 * 从挖掘结构 [MiningStructureName].CASES WHERE IsTestCase() 中选择 *
从采矿结构中清除案件 从挖掘结构中删除 [MiningStructureName].CASES
挖掘结构训练案例没有应用模型过滤器。如果要查询发送到模型的实际训练案例,您可以在 where 子句中显式键入过滤器或直接查询挖掘模型案例(如果模型启用了钻取) SELECT * FROM MINING STRUCTURE [MiningStructureName].CASES WHERE IsTrainingCase() and [Gender]='Female' 从挖掘模型 [ModelName].CASES 中选择 *
如果挖掘结构列名称与挖掘模型列名称不同,则必须使用“PREDICTION JOIN”而不是“NATURAL PREDICTION JOIN”,并在查询中提供映射。
关于machine-learning - 使用 SSAS 数据挖掘获取测试和训练集的评分结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425421/