2

我有一个 2 类数据集,我应该在其上应用二进制分类算法。数据集如下所示:

a1,a2,a3,……+1
……
b1,b2,b3,…………-1
…………

其中每个特征/属性值都是一个 2 元组。例如,a1 是 (a1_1, a1_2)。a1_1 和 a1_2 之间存在依赖关系(尽管此时我不确定它们是如何相关的)并且它们的顺序并不重要。类似的情况也适用于负类实例。

我正在寻找对这些实例进行分类的某种方法。请让我知道是否存在这样的算法。

首先,我尝试拆分元组 - a1_1 和 a1_2 为一个实例形成两个单独的列,导致每个实例的特征值数量增加一倍 - 并使用 LIBSVM (C/C++) 库,但结果并不好。我认为拆分元组并因此寻找合适的方法是没有意义的。

4

1 回答 1

0

在所有条件相同的情况下,我想如果您的数据实际上包含成对的事物,那么将这一事实传达给学习算法将会很有用。 将您的整体对拆分为单独的特征可以让您的分类算法有机会了解两个特征之间可能存在的任何有用关系

然而,这只是一般的经验法则。您可能无法获得良好的分类结果有几个原因:

  1. 一对的两个特征之间可能没有有用的关系。如果是这样的话,那么分成两个特征会使你的问题变得更加困难:现在分类算法有一个额外的维度需要探索
  2. 也许你还没有找到合适的学习算法。不同的算法有不同的优势,如果您使用正确的分类算法,使用多个特征可能是一个好主意。我建议尝试像Weka这样的监督学习包,它提供了一种非常简单的方法来比较单个问题上的一堆学习算法。只需将您的数据转换为.arff格式,您就可以立即使用 SVN、决策树、神经网络等进行分类。
  3. 您可能没有提供足够的功能。当您拆分a1, a2, ...为单独的特征[a1_1, a1_2], [a2_1, a2_2], ...时,您还可以包含反向数据,例如,您还可以通过为每个数据包含非拆分版本来[a1_1, a1_2], [a1_2, a1_1], [a2_1, a2_2], [a2_2, a2_1], ... 使用三个[a1, a1_1, a1_2], [a2, a2_1, a2_2], ...特征,例如, 这有点像“让我们抛出我们的每个特征能想到的问题”的办法。
  4. 可能是您遇到了一个非常困难的分类问题。您是否有任何证据表明您的输入中实际上存在一些信号,分类器可以使用该信号将数据分为两组?
于 2012-07-05T02:20:34.453 回答