在没有PCA的多类svm中找到正确的功能

时间:2015-04-10 16:26:22

标签: c# machine-learning svm accord.net

我正在使用多类svm(一对一),3个类对用户进行分类。在二进制中,我将能够绘制不同训练集的超平面方程中每个特征的权重分布。在这种情况下,我真的不需要PCA来看到超规划的稳定性和特征的相对重要性(重新集中的中心顺便说一句)。在多类svm中会有什么选择,因为每个训练集你有3个分类器,你根据三个分类器的结果选择一个类(它已经是什么?出现最大次数的类或更大的判别式?无论哪个都没关系到这里)。任何人都有自己的想法。

如果重要的话,我正在用Accord写C#。 谢谢!

2 个答案:

答案 0 :(得分:2)

在使用一对一策略的多类SVM中,问题被分成一组较小的二进制问题。例如,如果您有三个可能的类,则使用one-vs-one策略需要创建(n(n-1))/ n 二进制分类器。在您的示例中,这将是

(n(n-1))/n = (3(3-1))/2 = (3*2)/2 = 3

其中每一项都将专门解决以下问题:

  • 区分1级和2级(我们称之为 svm a )。
  • 区分1级和3级(我们称之为 svm b
  • 区分2级和3级(我们称之为 svm c

现在,我发现您实际上已经在原帖中提出了多个问题,所以我会分别问他们。首先,我将阐明决策过程的工作原理,然后告诉您如何检测哪些特征是最重要的。

由于您提到了Accord.NET,这个框架可能有两种方式来计算多类决策。默认的是使用决策导向非循环图(DDAG),这只是顺序消除类。另一种方法是通过解决所有二元问题并获取大部分时间赢得的课程。您可以通过设置method parameterSVM's Compute method来对新样本进行分类时对其进行配置。

由于获胜最多的时间版本很容易理解,我将更多地解释默认方法DDAG。

使用有向无环图的决策

在这个算法中,我们测试每个SVM并消除每轮丢失的类。因此,例如,算法从所有可能的类开始:

Candidate classes: [1, 2, 3]

现在它要求 svm a 对x进行分类,它决定了第2类。因此,第1类丢失了,在进一步的测试中不再被考虑了:

Candidate classes: [2, 3]

现在它要求 svm b 对x进行分类,它决定了第2类。因此,第3类丢失了,在进一步的测试中不再被考虑了:

Candidate classes: [2]

最后的答案是2。

检测哪些功能最有用

现在,由于一对一的SVM被分解为(n(n-1)/ 2)二进制问题,分析哪些特征最重要的最直接的方法是分别考虑每个二进制问题。不幸的是,全局确定哪个是整个问题最重要的可能是棘手的,但是有可能检测出哪一个最重要的是区分1级和2级,或1级和3级,或2级和3级。

但是,如果您使用的是DDAG,我可以提供建议。使用DDAG,可以extract the decision path that lead to a particular decision。这意味着可以在分类整个数据库时估计每台二进制机器的使用次数。如果您可以估计每个二进制计算机的功能的重要性,并估计在数据库的决策过程中使用计算机的次数,也许您可​​以将其加权和作为功能在多大程度上有用的指标。你的决定过程。

顺便说一句,您可能也有兴趣尝试使用具有高C的L1正则化的Logistic回归支持向量机之一来执行稀疏特征选择:

// Create a new linear machine
var svm = new SupportVectorMachine(inputs: 2);

// Creates a new instance of the sparse logistic learning algorithm
var smo = new ProbabilisticCoordinateDescent(svm, inputs, outputs)
{
    // Set learning parameters
    Complexity = 100,
};

答案 1 :(得分:0)

我不是ML或SVM的专家。我是一个自学者。然而,我的原型准确地过度执行了一些类似的商业或学术软件,而培训时间约为2小时,相比之下,一些竞争对手的日期和周数(!)。

我的识别系统(生物细胞中的模式)使用以下方法来选择最佳特征:

1)提取特征并计算所有类的均值和方差 2)选择那些特征,其中类的距离最远,方差最小。 3)删除冗余特征 - 那些在类上的平均直方图相似的特征

在我的原型中,我使用参数化功能,例如功能" circle"参数直径,阈值等 训练由脚本控制,脚本定义哪些特征要使用参数范围。因此,该软件测试所有可能的组合。

对于一些训练时间优化: 该软件以每类5个实例开始,用于提取特征,并在满足第二个条件时增加数量。

对于某些步骤,可能有一些学术名称。不幸的是,我并没有意识到它们,我已经发明了轮子"自己。