2016-04-23 107 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無法知道縮放在你的情況下是不相關的(除非你呈現大量不同的縮放訓練矢量)

縮放無關的特徵向量的一種常見做法是縮放所有測試和訓練矢量到一個共同的長度。