我在R
中构建了一个玩具随机森林模型(使用German Credit
包中的caret
数据集),将其导出到PMML 4.0
并部署到Hadoop,使用Cascading Pattern
库。
我遇到的问题是Cascading Pattern
对同一数据的评分不同(在二元分类问题中),而不是R
中的相同模型。在200个观察中,2个得分不同。
这是为什么?可能是因为随机森林的实施存在差异吗?
答案 0 :(得分:2)
German Credit
数据集表示分类类型问题。分类型RF模型的获胜分数只是成员决策树中最常见的类别标签。
假设您拥有包含100个决策树的RF模型,50个决策树预测“良好信用”,另外50个决策树预测“不良信用”。 R
和Cascading Pattern
可能会以不同方式解决此类关系情况 - 一个选择首先看到的分数,另一个选择最后看到的分数。您可以尝试使用奇数个成员决策树重新训练您的RF模型(即使用一些不能被2整除的值,例如99或101)。
PMML规范告诉我们返回首先看到的分数。我不确定Cascading Pattern
是否会关注这些细节。您可能想尝试一种名为JPMML-Cascading的替代解决方案。
答案 1 :(得分:1)
分数匹配是一个大问题。当模型从科学家的桌面移动到生产IT部署环境时,分数需要匹配。对于分类任务,还包括所有目标类别的概率。有时在不同的实现/平台之间存在精度问题,这可能导致最小的差异(非常小)。无论如何,他们还需要进行检查。
显然,也可能是PMML中没有正确表示模型的情况......不太可能使用R PMML包。另一种选择是模型未正确部署。也就是说,评分引擎级联使用的是不正确地解释PMML文件。
PMML本身有一个名为ModelVerification的模型元素,它允许PMML文件包含评分数据,然后可以将其用于评分匹配。这很有用但不是必需的,因为您应该能够对已经得分的数据集进行评分,并将计算结果与您已经在进行的预期结果进行比较。
有关PMML中模型验证和分数匹配以及错误处理的更多信息,请检查: https://support.zementis.com/entries/21207918-Verifying-your-model-in-ADAPA-did-it-upload-correctly-