2016-04-23 108 views
0

想象我有以下特征向量:支持向量机如何处理混淆的特征向量?

训练载体:

第1类: [3,5,4,2,0,3,2], [33,50,44,22 ,0,33,20]

二级: [1,2,3,1,0,0,4], [11,22,33,11,0,0,44]

测试矢量:

Cla SS 1: [330,550,440,220,0,330,200]

二级: [110,220,333,111,0,0,444]

我使用SVM ,它从训练矢量中学习,然后对测试样本进行分类。

正如您所看到的,特征向量具有非常不同的维度:训练集特征是非常低的数值,测试集向量是非常高的数值。

我的问题是SVM从这些特征向量学习是否令人困惑?

当然,当我做向量缩放的差仍然存在:

训练::

[0.19 1.53 0.86

例如在特征向量施加standardScaler()第1类后-0.48 -1.82 0.19 -0.48]

[20.39 31.85 27.80 12.99 -1.82 20.39 11.64]

测试: [220.45 368.63 294.54 146.35 -1.82 220.45 132.88]

基本上,这是一个现实世界的问题,我问这个,因为我已经开发出一种方法来对我的特定情况预先缩放这些特征向量。

所以后我会用我的前缩放方法,第1类的特征向量将变成:

训练:

[3. 5. 4. 2. 0. 3. 2.]

[2.75 4.16666667 3.66666667 1.83333333 0 2.75 1.66666667]

测试: [2.84482759 4.74137931 3.79310345 1.89655172 0 2.84482759 1.72413793]

这使得它们在性质上非常相似。

这看起来甚至当standardScaler()被施加到前缩放后的载体更好:

训练:

[0.6 1. 0.8 0.4 0.1 0.6 0.4]

[0.55 0.83333333 0.73333333 0.36666667 0 0.55 0.33333333]

测试: [0.56896552 0.94827586 0.75862069 0.37931034 0 0.56896552 0.34482759]

最终的问题是我的预缩放方法是否会以任何方式帮助SVM?这更多的是一个理论问题,任何对此的深入了解都是值得赞赏的。

回答

3

是的,它会影响SVM的性能。看起来你的测试向量只是你训练向量的缩放版本。 SVM无法知道缩放在你的情况下是不相关的(除非你呈现大量不同的缩放训练矢量)

缩放无关的特征向量的一种常见做法是缩放所有测试和训练矢量到一个共同的长度。