PMML, 预测模型标记语言

PMML, Predictive Model Markup Language.

1.简述

PMML 用于描述算法模型, 允许您在不同的应用程序之间轻松共享预测分析模型.
通俗地讲, 我有一个决策树模型, 使用效果也不错, 那么就可以把树的结构(节点间的父子关系, 节点内的丰富信息 等)序列化为PMML文件, 共享给其他人使用.

2. 主要结构

PMML 文件的结构遵从了用于构建预测解决方案的常用步骤,包括:

  1. 数据词典
    这是一种数据分析阶段的产品,可以识别和定义哪些输入数据字段对于解决眼前的问题是最有用的。这可以包括数值、顺序和分类字段。
  2. 挖掘架构
    定义了处理缺少值和离群值的策略。这非常有用,因为通常情况,当将模型应用于实践时,所需的输入数据字段可能为空或者被误呈现。
  3. 数据转换
    定义了将原始输入数据预处理至派生字段所需的计算。派生字段(有时也称为特征检测器)对输入字段进行合并或修改,以获取更多相关信息。例如,为了预测停车所需的制动压力,一个预测模型可能将室外温度和水的存在(是否在下雨?)作为原始数据。派生字段可能会将这两个字段结合起来,以探测路上是否结冰。然后结冰字段被作为模型的直接输入来预测停车所需的制动压力。
  4. 模型定义
    定义了用于构建模型的结构和参数。PMML 涵盖了多种统计技术。例如,为了呈现一个神经网络,它定义了所有的神经层和神经元之间的连接权重。对于一个决策树来说,它定义了所有树节点及简单和复合谓语。
  5. 输出
    定义了预期模型输出。对于一个分类任务来说,输出可以包括预测类及与所有可能类相关的概率。
  6. 目标
    定义了应用于模型输出的后处理步骤。对于一个回归任务来说,此步骤支持将输出转变为人们很容易就可以理解的分数(预测结果)。
  7. 模型解释
    定义了将测试数据传递至模型时获得的性能度量标准(与训练数据相对)。这些度量标准包括字段相关性、混淆矩阵、增益图及接收者操作特征(ROC)曲线图。
  8. 模型验证
    定义了一个包含输入数据记录和预期模型输出的示例集。这是非常重要的一个步骤,因为在应用程序之间移动模型时,该模型需要通过匹配测试。这样就可以确保,在呈现相同的输入时,新系统可以生成与旧系统同样的输出。 如果实际情况是这样的话,一个模型将被认为经过了验证,且随时可用于实践。

3. GBDT例子

这里写图片描述
图3-1 一个GBDT决策树的回归模型

可以看出模型是由若干棵树组成的, 通过加和来使用.
每棵树的编号从0开始, 是根节点. 因为是完全二叉树, 所以若当前节点为x, 则左子树为2x+1, 右子树为2x+2.
具有父子关系的节点, 子节点会在父节点内部且有缩进.
简化一下图3-1中的 模型, 得到下列xml片段. 它的可视化见图3-2 .

<!--代码片3 , 回归决策树的表达-->
<!--section_num表示文章中段落个数, picitem_num表示商品图个数等, 根据这些特征来预测文章的等级.-->
<Node id="0">
    <Node id="1">
        <SimplePredicate field="section_num" operator="lessOrEqual" value="6.5"/>
        <Node id="3" score="2">
            <SimplePredicate field="picitem_num" operator="lessOrEqual" value="15.5"/>
        </Node>
        <Node id="4" score="3">
            <SimplePredicate field="picitem_num" operator="greaterThan" value="15.5"/>
        </Node>
    </Node>
    <Node id="2">
        <SimplePredicate field="section_num" operator="greaterThan" value="6.5"/>
        <Node id="5" score="4">
            <SimplePredicate field="text_len" operator="lessOrEqual" value="895.5"/>
        </Node>
        <Node id="6" score="5">
            <SimplePredicate field="text_len" operator="greaterThan" value="895.5"/>
        </Node>
    </Node>
</Node>

这里写图片描述
图3-2 代码片3的可视化表示

4.参考资料

参考资料:
IBM 知识库:何为 PMML?
PMML 4.1 GeneralStructure 文档
PMML 4.1 TreeModels 结构文档

要解决XGBoost使用PMML预测时的偏差问题,我们可以采取以下步骤: 1. 检查数据:首先,我们需要仔细检查使用的数据集,确保数据的准确性和完整性。如果数据集中存在异常值或缺失值,可以尝试使用合适的数据清洗和处理方法,如插值或删除异常值。 2. 特征工程:通过特征工程来提取和选择有意的特征,可以帮助提高模型的预测准确性。可以使用常用的特征选择方法,如方差过滤、相关系数过滤或递归特征消除等。 3. 调整参数:XGBoost模型中有一些参数可以调整以优化模型的性能。可以通过网格搜索或随机搜索等方法来寻找最佳的参数组合,以减小预测偏差。一些需要调整的参数包括学习率、树的数量、树的深度等。 4. 交叉验证:为了进一步减小预测偏差,可以使用交叉验证方法来评估模型的性能并选择最佳的模型。交叉验证可以帮助我们更准确地估计模型的泛化能力,减少过拟合的可能性。 5. 集成学习:将多个XGBoost模型进行集成学习也可以有效减小预测偏差。可以使用Bagging、Boosting等方法,通过多个模型的组合来提高整体预测准确性。 6. 模型融合:可以考虑将XGBoost与其他机器学习算法进行模型融合,以进一步降低预测偏差。通过使用不同算法的优势,可以提高预测结果的稳定性和准确性。 通过以上步骤,我们可以针对XGBoost使用PMML预测时的偏差问题进行一系列的处理和优化,以获取更准确的预测结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值