我已经建立了一个玩具随机森林模型R
(使用从caret
包German Credit
数据集),其出口在PMML 4.0
和部署到Hadoop的使用Cascading Pattern
库。差异从PMML模型在不同平台上
我碰到的一个问题,Cascading Pattern
分数相同的数据不同(二进制分类问题)比R
相同的模型。在200个观察中,2个得分不同。
这是为什么?难道这是由于随机森林的实施有所不同吗?
我已经建立了一个玩具随机森林模型R
(使用从caret
包German Credit
数据集),其出口在PMML 4.0
和部署到Hadoop的使用Cascading Pattern
库。差异从PMML模型在不同平台上
我碰到的一个问题,Cascading Pattern
分数相同的数据不同(二进制分类问题)比R
相同的模型。在200个观察中,2个得分不同。
这是为什么?难道这是由于随机森林的实施有所不同吗?
German Credit
数据集表示分类型问题。分类型RF模型的获胜分数就是成员决策树中最常见的分类标签。
假设您的RF模型有100个决策树,50个决策树预测“良好信用”,另有50个决策树预测“不良信用”。有可能R
和Cascading Pattern
以不同的方式解决这种联系情况 - 一个选择首先看到的分数,另一个选择最后看到的分数。您可以尝试用奇数个成员决策树重新训练您的RF模型(即使用一些不能被2整除的值,如99或101)。
PMML规范告诉返回先看到的分数。我不确定Cascading Pattern
是否注意到这些细节。您可能想尝试一种名为JPMML-Cascading的替代解决方案。
我用你的建议,并增加了奇数的树木。现在只有一个不匹配(0.5%)。仍然需要达到那一个的底部。 – neuron 2014-10-20 09:55:19
您是否尝试过除了'Cascading Pattern'之外的其他PMML评分引擎?过去我已经建立了RF到PMML转换器(使用Java),并且有兴趣诊断您的问题。 – user1808924 2014-10-20 09:59:05
这就是下一步 - 尝试'jpmml-cascading'和'openscoring'。我只是想确保我已经尽可能地完成了R的任务。另一个问题是'Cascading Pattern'坚持使用PMML 4.0作为随机森林,这意味着我需要使用R的'pmml v1.2.30'而不是当前的'pmml 1.4.2'版本(使用'PMML 4.2')。所以也许另外两个库支持最新版本,并且解决了这个问题。 – neuron 2014-10-20 10:03:25
分数匹配是一件大事。当模型从科学家的桌面移动到生产IT部署环境时,分数需要匹配。对于分类任务,也包括所有目标类别的概率。在不同的实现/平台之间有时会存在精度问题,这可能导致最小的差异(非常小)。无论如何,他们也需要检查。
显然,它也可能是模型在PMML中没有被正确表示的情况......不可能使用R PMML包。另一种选择是模型没有正确部署。也就是说,级联使用的评分引擎不能正确解释PMML文件。
PMML本身有一个名为ModelVerification的模型元素,它允许PMML文件包含可用于分数匹配的评分数据。这很有用,但不是必须的,因为您应该能够对已经评分的数据集进行评分,并将其与您已经完成的预期结果进行比较。
更多关于模型验证和得分匹配以及误差在PMML处理,检查: https://support.zementis.com/entries/21207918-Verifying-your-model-in-ADAPA-did-it-upload-correctly-
请问,您如何量化“最小”差异?我使用@ user1808924提供的建议,增长了奇数个发束,并将不匹配从1%降低到0.5%。 – neuron 2014-10-20 09:54:32
拟合随机森林涉及自举这是一个随机过程。据我所知,可以在同一台机器上以相同语言运行相同的代码,并根据随机机会获得不同的结果。它总是两个不同的观察结果吗? – MrFlick 2014-10-17 15:09:38
它总是相同的2.但是,如果它在我建造/装配模型时出现,我会理解它们之间的差异。当我在测试集上运行已经建好的模型时会发生这种情况。 – neuron 2014-10-18 06:28:57