跳到主要内容

误差校正输出代码分类(OutputCodeClassifier)使用文档

组件名称误差校正输出代码分类(OutputCodeClassifier)
工具集机器学习
组件作者雪浪云-墨文
文档版本1.0
功能误差校正输出代码分类(OutputCodeClassifier)算法
镜像名称ml_components:3
开发语言Python

组件原理

在 multilabel learning 中,二元分类任务的合集表示为二进制数组:每一个样本是大小为 (n_samples, n_classes) 的二维数组中的一行二进制值,比如非0元素,表示为对应标签的 子集。 一个数组 np.array([[1, 0, 0], [0, 1, 1], [0, 0, 0]]) 表示第一个样本属于第 0 个标签,第二个样本属于第一个和第二个标签,第三个样本不属于任何标签。

基于Output-code的方法不同于 one-vs-the-rest 和 one-vs-one。使用这些方法,每一个类将会被映射到欧几里得空间,每一个维度上的值只能为0或者1。另一种解释它的方法是,每一个类被表示为二进制 码(一个 由0 和 1 组成的数组)。保存 location (位置)/ 每一个类的编码的矩阵被称为 code book。编码的大小是前面提到的欧几里得空间的纬度。直观上来说,每一个类应该使用一个唯一的编码,同时,好的 code book 应该能够优化分类的精度。 在实现上,我们使用随机产生的 code book,正如在 [3] 提倡的方式,即使更加详尽的方法可能会在未来被加入其中。

在训练时,code book 每一位的二分类器将会被训练。在预测时,分类器将映射到类空间中选中的点的附近。

在 0 或 1 之中的一个数字会比 one-vs-the-rest 使用更少的分类器。理论上 log2(n_classes) / n_classes 足以明确表示每个类。然而在实际情况中,这也许会导致不太好的精确度,因为 log2(n_classes) 小于 n_classes.比 1 大的数字比 one-vs-the-rest 需要更多的分类器。在这种情况下,一些分类器在理论上会纠正其他分类器的错误,因此命名为 “error-correcting” 。然而在实际上这通常不会发生,因为许多分类器的错误通常意义上来说是相关的。error-correcting output codes 和 bagging 有一个相似的作用效果。

输入桩

支持单个csv文件输入。

输入端子1

  • 端口名称:训练数据
  • 输入类型:Csv文件
  • 功能描述: 输入用于训练的数据

输入端子2

  • 端口名称:输入模型
  • 输入类型:sklearn模型
  • 功能描述: 分类模型文件

输出桩

支持sklearn模型输出。

输出端子1

  • 端口名称:输出模型
  • 输出类型:sklearn模型
  • 功能描述: 输出训练好的模型用于预测

参数配置

代码数量

  • 功能描述:用于创建代码簿的类数量的百分比
  • 必选参数:是
  • 默认值:1.5

Random State

  • 功能描述:Random State
  • 必选参数:否
  • 默认值:(无)

并行度

  • 功能描述:训练时的并行度
  • 必选参数:否
  • 默认值:(无)

需要训练

  • 功能描述:该模型是否需要训练,默认为需要训练。
  • 必选参数:是
  • 默认值:true

特征字段

  • 功能描述:特征字段
  • 必选参数:是
  • 默认值:(无)

识别字段

  • 功能描述:识别字段
  • 必选参数:是
  • 默认值:(无)

使用方法

  • 将组件拖入到项目中
  • 与前一个组件输出的端口连接(必须是csv类型)
  • 点击运行该节点