Spark 1.5.1:训练许多二元分类器,保存它们,然后在新数据上使用它们

数据挖掘 分类 多类分类 多标签分类
2022-03-05 08:29:13

我有一个表示带有 300 个标签的带注释数据集的 DataFrame。

DataFrame 如下所示(第一行仅用于解释列):

binary Vector column for labeling, feature column
[0, 1, 1, 0, 0 , 0.... ], featureVec
[0, 0, 1, 0, 1 , 0.... ], featureVec
......

标签列,将每个标签的存在或不存在表示为特征向量的注释(我们可以在第二列中看到)。

如果我错了,请纠正我:我无法训练一个多类分类器,因为标签不是排他的,所以我想为每个标签训练一个二元分类器。

因为我有 300 个标签,所以我需要训练和优化 300 个分类器(例如逻辑回归分类器)。

使用 N 交叉验证来训练我的分类器以进行参数优化的最佳方法和最佳实践是什么?任何示例代码或参考都受到高度赞赏。

一旦分类器被优化,保存最佳模型并使用它们对新数据进行分类的最佳方式和最佳实践是什么?

1个回答

这是一个通用的 ML 答案,与 Spark 1.5.1 无关,但也许它可以帮助您找到解决方案。

您的问题是多标签和多类(例如http://scikit-learn.org/stable/modules/multiclass.html)。

一些算法具有多标签版本,并且会在内部处理问题,因此您不必这样做。如果您的算法没有多标签版本,您可以更改为有的算法,或者围绕您的算法推出自己的多标签解决方案,例如对每个标签使用二进制分类器。(这通常会导致性能下降,因为需要考虑许多复杂性和可能的​​优化)。