2

我手头有问题,

我需要将输入数据分类为标签 S1、S2、S3、S4 中的一个或多个

标签 S1、S2、S3 和 S4 之间存在关系,即,

如果输入标记为 Sn,则它必须标记为 S1..Sn。

S1、S2、S3 和 S4 就像实体 X 要通过的不同阶段。根据输入数据 X 可能经过一个或多个阶段,X 必须经过 S1 才能到达 S2,S2 才能到达 S3,依此类推

我们要确保只有那些到达 S3 的 X 被允许通过,所以根据输入数据我们决定是否允许 X 通过 S1

如果我们有诸如输入数据之类的信息以及 X 针对该输入数据经过了哪些阶段,我们可以选择哪些机器学习模型来预测 X 是否达到 S3

我正在考虑多标签分类的方向输入数据阶段 S1 和 S2 之间可能存在某种关系

更新:我必须用这样的例子进行训练 1. 输入数据是 s1 2. 输入数据是 s2 3. .. 4 ..

4

1 回答 1

0

一些疑问

您的问题远非明确,例如:

我们要优化大多数 X 到达 S3,所以根据输入数据我们决定是否允许 X 通过 S1

实际上建议,最好的模型是“总是回答是”,因为它最大化了到达 S3 的对象数量(因为它只是让任何对象到达这一点)

总体思路

我假设有两种可能的解释:

  1. 您有一个标签“管道”,这只是意味着,S_n如果该对象尚未被标记为 all S_i,则无法标记该对象i < n

    这似乎不是单个模型的问题,您可以以自然的方式管道模型,即。训练一个模型1来识别,如果对象x应该有标签S_1。接下来,您在训练集中2具有标签的所有数据上训练模型S_1并预测标签S_2,依此类推。在执行期间,您只需询问每个模型i是否接受(标记)传入对象x,并在第一个模型说“不”时停止

  2. 您对标签有一些更复杂的约束,可能严格也可能不严格。对于这种情况,您应该尝试多种方法中的一种multi label classification with constraints,特别是有一份关于 ML 这方面的技术报告。

解决方案 1 - 逼近测试函数

如果您的问题可以描述为:

  • 您有数据点X,因此对于每个数据点,您都知道通过的某些可流水线测试的最大T_i数量x
  • 您想训练一个能够预测的分类器,您的点x通过的最大后续测试数是多少
  • 您无权访问实际测试T_i,或者它们的效率非常低

那么最简单的方法是应用以下训练过程而不是一个分类器:

  1. 获取所有数据点,用y=0as0y>=1as标记它们1 并训练一些二元分类器(例如 SVM)。因此,您只需暂时重新标记您的数据,以便显示通过第一次测试的点和未通过的点。让我们调用这个分类器cl_1
  2. y=1现在获取你的数据点,用as0和那些用y>=2as标记,1然后再次训练二元分类器,然后调用它cl_2
  3. 重复直到所有测试都有它们的分类器,一般来说,cl_i当它可以区分标记为 的点y=i-1和标记为 的点时,我们称之为分类器y>=i

现在,为了对你的新点进行分类,你只需迭代地检查你所有的cl_ifori=1,..,tests并用最大的这样的答案i来回答cl_i(x)=1。所以你用分类器“模拟”你的测试,并简单地说它通过了多少这个测试的近似值。

综上所述:每个测试都可以用一个二元分类器来近似,然后“我们的点通过的最大的连续测试数是多少”这个问题近似为“输出点被分类为真的最大的连续分类器数是多少” ”。

解决方案 2 - 简单回归

您还可以简单地将输入空间中的回归应用到它达到的测试数量中。回归实际上有一个印记的假设,即输出值是相关的。因此,如果您使用对来训练您的数据,(x,y)其中y最后一次测试通过的次数是x,那么您实际上是在使用这样一个事实,即输出与首先进入计算y=3高度相关。y=2这种回归(非线性!)可以简单地使用神经网络(可能正则化)来完成

于 2013-09-11T10:04:17.530 回答