【ML】机器学习模型之PMML--概述

article/2025/11/9 19:57:07

机器学习模型的应用一般会经历两个主要过程:

  • 1、离线开发
  • 2、线上部署

离线部分负责模型训练和导出模型,线上部分负责导入模型并且做预测。

在这里插入图片描述
以上图片来自:https://zhuanlan.zhihu.com/p/30378213

一、PMML简要介绍

PMML(Predictive Model Markup Language,PMML))是一套基于XML标准,与平台和环境无关的模型表示语言。它主要是通过了XML schema定义和储存了一个算法模型的核心元素:

  • 数据字典:描述输入数据
  • 数据转换:定义了原始数据数据预处理的方式,比如标准化、缺失值处理、哑变量的生成等
  • 模型定义:模型的类型及参数,比如树模型的分裂节点等
  • 模型输出:模型的输出结果

可以看出,通过定义PMML中的所有核心元素,可以完成数据挖掘的所有流程,即后端开发人员部署时,只需要将数据读取后,调用PMML文件,然后就能得到输出数据,而不用关注数据转化、模型参数等问题,加快了模型的部署效率。

二、PMML模型的生成和加载相关类库

PMML模型的生成相关的库需要看我们使用的离线训练库。如果我们使用的是sklearn,那么可以使用sklearn2pmml这个python库来做模型文件的生成;如果训练的模型是xgboost,也可以使用nyoka库中的xgboost_to_pmml导出pmml模型文件;

加载PMML模型需要目标环境支持PMML加载的库,如果是JAVA,则可以用JPMML来加载PMML模型文件;如果是python,使用pypmml来加载模型文件;

三、PMML总结与思考
  1. PMML为了满足跨平台,牺牲了很多平台独有的优化,所以很多时候我们用算法库自己的保存模型的API得到的模型文件,要比生成的PMML模型文件小很多。同时PMML文件加载速度也比算法库自己独有格式的模型文件加载慢很多。
  2. PMML加载得到的模型和算法库自己独有的模型相比,预测会有一点点的偏差,当然这个偏差并不大。比如某一个样本,用sklearn的决策树模型预测为类别1,但是如果我们把这个决策树落盘为一个PMML文件,并用JAVA加载后,继续预测刚才这个样本,有较小的概率出现预测的结果不为类别1.
  3. 对于超大模型,比如大规模的集成学习模型,比如xgboost, 随机森林,或者tensorflow,生成的PMML文件很容易得到几个G,甚至上T(根据实践经验,训练的数据集越大,pmml模型文件就越大),这时使用PMML文件加载预测速度会非常慢,此时推荐为模型建立一个专有的环境,就没有必要去考虑跨平台了。

参考:
https://cloud.tencent.com/developer/article/1596754
https://zhuanlan.zhihu.com/p/30378213
https://zhuanlan.zhihu.com/p/458117655


http://chatgpt.dhexx.cn/article/GhHOHFCW.shtml

相关文章

基于 mlr 包的逻辑回归算法介绍与实践

逻辑回归是基于概率分类的有监督学习算法,它依赖于直线方程,产生的模型非常容易解释和交流。在其最简单的形式中,逻辑回归被用来预测二分类问题,但算法的变体也可以处理多个类。 逻辑回归算法通常应用于二分类问题,称为二项逻辑回归 (binomial logistic regression),当处…

利用R语言中的tidyverse和mlr建立分类算法-KNN

基于相似性的k近邻分类 KNN(K-Nearest Neighbors)算法是一种基本的分类和回归算法,它是一种非参数算法,可以用于分类和回归问题。它的基本思想是利用已有的数据集对新的数据进行分类或回归。 在分类问题中,KNN算法通…

MLR原理及deepctr组网实现MLR

文章目录 MLRdeepctr实现MLR MLR https://zhuanlan.zhihu.com/p/100532677 https://blog.csdn.net/fyneru_xiaohui/article/details/106390266 deepctr实现MLR import os, warnings, time, sys import pickle import matplotlib.pyplot as plt import pandas as pd, numpy a…

R手册(Machine Learning)--mlr (Part 2)

文章目录 Configuration (配置)Parallelization (并行)Imputation (插补)Feature Extraction (特征提取)1. Feature filtering(特征筛选)2. Feature selection(特征选择) Benchmarking (基准点)Visualization (可视化)Wrappers (封装器)Nested Resampling (嵌套重采样)Ensemble…

R手册(Machine Learning)--mlr(Part 1)

文章目录 IntroductionPreprocessing data (预处理)Task and Learner1. Create a task2. Making a learner Training & Testing (训练和测试)1. Setting hyperparameters (设置超参数)2. Train a model and predict (训练模型和预测)3. Measuring performance (模型评估质量…

基于EEMD+GRU+MLR的时间序列预测

0、前言 文章《基于 EEMD-GRU-MLR 的短期电力负荷预测》中,通过构建集合经验模态分解(ensemble empirical modedecomposition,EEMD)以及门控循环单元神经网络(gated recurrent unit neural network,GRU)和多元线性回归(multiplelinear regres…

机器学习的R实现(mlr包)

目录 Machine Learning with MLR Package 1. 获取数据 2. 探索数据 3. 缺失值填补 4. 特征工程 5. 机器学习 1. 二次判别分析,Quadratic Discriminant Analysis (QDA). 2.逻辑回归 Logistic Regression 3. 决策树-Decision Tree 4. 随机森林,Ra…

机器学习之MLR

线性回归(Linear regression)是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。只有一个自变量的情况称为一元回归,大于一个自变量情…

MLR(mixed logistic regression)模型

基本形式 MLR模型是阿里巴巴12年提出(17年发表)点击率预估模型,它利用分段方式对数据进行拟合,相比LR模型,能够学习到更高阶的特征组合。其基本表达式如下 p ( y 1 ∣ x ) g ( ∑ j 1 m σ ( u j T x ) η ( w j …

MLR(mixed logistic regression)算法原理及实现

MLR(mixed logistic regression)算法 参考https://zhuanlan.zhihu.com/p/77798409?utm_sourcewechat_session 盖坤ppt : https://wenku.baidu.com/view/b0e8976f2b160b4e767fcfdc.html 原文:《Learning Piece-wise Linear Models from Large…

多元线性回归MLR

多元线性回归(MLR) 文章目录 多元线性回归(MLR)由极大似然估计(MLE, Maximum likelihood estimation)推导MSE简单导数知识推导解析解( θ ( X T X ) − 1 X T Y \theta (X^TX)^{-1}X^TY θ(XTX)−1XTY)来个例子试一试吧 不用解析解, 用梯度下降求解 θ \theta θ梯度下降法另…

MySql MVCC 详解

注意以下操作都是以InnoDB引擎为操作基准。 一,前置知识准备 1,MVCC简介 MVCC 是多版本并发控制(Multiversion Concurrency Control)的缩写。它是一种数据库事务管理技术,用于解决并发访问数据库的问题。MVCC 通过创…

MVCC总结

MVCC多版本并发控制 数据库中的并发分为三种情况: 读读:不存在任何问题,也不需要并发控制 读写:有数据安全问题,脏读,幻读,不可重复读 写写:有数据安全问题,可能存在…

Mysql中的MVCC

Mysql到底是怎么实现MVCC的?这个问题无数人都在问,但google中并无答案,本文尝试从Mysql源码中寻找答案。 在Mysql中MVCC是在Innodb存储引擎中得到支持的,Innodb为每行记录都实现了三个隐藏字段: 6字节的事务ID&#xf…

MVCC原理

在并发读写数据库时,读操作可能会不一致的数据(脏读)。为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问。由于,加锁会将读写操作串行化,所以不会出现不一致的状态。但…

MVCC机制

MVCC 1. MVCC是什么? MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC的具体…

MVCC实现原理

1、什么是MVCC mvcc多版本并发控制。 mvcc在mysql innodb中主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加索,非阻塞并发读。。 2、实现原理: mvcc的实现是通过保存…

MySQL的MVCC及实现原理

一 概要 1.什么是 MVCC ? MVCC,全称 Multi-Version Concurrency Control ,即多版本并发控制。MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC 在 MySQL…