首页 > 解决方案 > 如何使用 ML.Net 实现具有树数据结构的 MultiClassClassification

问题描述

我有数百个项目,它们都有这样的树数据结构:

A
  AA
     AAA
  BB
     BBB

或者像这样:

A
  AA1
     AAA1
  BB2
     BBB2

每个项目都有自己的树结构,它是从标准树结构修改而来的。我要做的是将项目的树结构映射到标准树结构,如下所示:

A          <--- A
  AA       <---   AA1
     AAA   <---      AAA1
  BB       <---   BB2
     BBB   <---      BBB2

或者像这样:

(img) 映射到标准树

(映射实际上取决于文本而不是节点的级别。)

现在我在 ML.Net 中使用多类分类。首先,我手动将现有项目的树映射到标准树并将结果保存在数据库中,如下所示:

| Label      | Level1         | Level2         | Level3         |
| --------   | -------------- | -------------- | -------------- |
| A          | A              |      *         |       *        |
| A-AA       | A              |      AA1       |       *        |
| A-AA-AAA   | A              |      AA1       |      AAA1      |
| A-BB       | A              |      BB2       |       *        |
| A-BB-BBB   | A              |      BB2       |      BBB2      |
| A          | A              |      *         |       *        |
| A-AA-AAA   | A              |      AAA1      |       *        |
| A-BB       | A              |      BB2       |       *        |
| A-BB-BBB   | A              |      BB2       |      BBB2      |  

因为 ML.Net 中的列中的数据不能是缺失值,所以我将它们替换为 *。我的树有 15 个级别(特征列)。

我选择的多类分类算法是 SdcaMaximumEntropy。希望我可以使用预测来映射树,而不是手动执行此操作。

我成功地实现了预测。但是,预测结果确实很差。

所以我的问题是:

  1. 我这样做的方式对吗?
  2. 如果是,我应该删除重复的行吗?我应该用 替换缺失的值*吗?

标签: c#machine-learningmulticlass-classificationml.net

解决方案


推荐阅读