PMML聚类模型导入导出
目录
1 、 PMML 聚类模型介绍
a) PMML 模型中肯定包括数据字典,字典中包括数据输入列、类型以及可能取值范围。
b) 在 PMML 中添加聚类模型信息,有提供者提供 PMML 信息,获取者解析 PMML 中包含的信息,并创建聚类模型,完成聚类工作。
c) 通过 PMML 模型,可以做到跨平台,跨软件的挖掘模型信息传递。
2 、 聚类模型结构
a) ClusteringModel 是用于标记聚类模型的标签。
b) ClusteringModel 中包括 modelName 、 functionName 、 algorithmName 、 modelClass 、聚类个数、是否可产生数值等属性。 modelName 表示模型名,是可选的; functionName 表示挖掘方法,这个属性是必须的,在聚类模型中必须被设置为 clustering ; algorithmName 表示算法名称,可选; modelClass 是必选的,表示模型类别,分为基于中心的和基于分布的两种,基于中心模型如 K-Means ,基于分布的模型如 EM 。
c) MiningSchema
- 按照 PMML 文档的规范, MiningSchema 是模型元素的门卫,哪个模型都要有,其中包含的 MiningField 应该取至 DataDictionary 的 DataField ,用于标识本模型真正使用到的属性。
d) Output
- 定义输入格式, OutputField 定义每列输入的信息。
e) LocalTransformations
- 类似于 TransformationDictionary 。
f) ComparisonMeasure
- 指定度量指标,如 euclidean 、 squaredEuclidean 、 minkowski 等,是必选的。
g) ClusteringField
- 指定参与聚类的列。
h) Cluster
- 每个 Cluster 包含一个聚类的簇信息
3 、 构造导出 PMML 过程
a) 这里使用的是 org.dmg.pmml 包,首先创建 PMMLDocument ,通过 PMMLDocument.getPMML() 获取 PMML ,使用 PMML.addNew 方法按照 dmg.org 网站上提供的 schema.xsd 信息进行添加,最终完成 PMMLDocument 的构造。
4 、 解析导入 PMML 过程
a) 在导入 PMML 后,首先需要经过 PMMLDocument.validate() 的验证,如果词法和语法有问题,就不能保证解析出的内容完整性。
b) 获取 PMMLDocument 对象后,通过 ClusteringField 获取参与聚类的列,获取指标和簇心信息。
c) 比如 K-Means ,会获取各个质点的信息,然后根据 ComparisonMeasure 指定的指标类型,计算测试集各点所属聚类信息。
5 、 其他聚类算法
a) 对于一些聚类算法, PMML 并没有直接的支持,比如 modelClass 中不支持密度聚类。
b) 这时,可以使用 ClusteringModel.addNewExtension() 添加扩展,使用 Extension.newCursor 获取 XmlCursor ,通过 XmlCursor 添加扩展内容。在导入模型时,再通过 XmlCursor 解析扩展内容,来达到定制的目的。