機器學習中如何用篩選器檢測冗餘?

shenmanli發表於2018-01-10
篩選器試圖在特徵叢林中進行清洗,它獨立於後續使用的任何機器學習方法。它基於統計方法找出冗餘或無關特徵。一般來講,篩選器的工作流所圖:



通過使用相關性,很容易看到特徵之間的線性關係。這種關係可以用一條直線來擬合。在下面這些圖中,我們可以看到不同程度的相關性,以及一個用紅色虛線描繪出的潛線上性依賴關係(一個擬合的一維多項式)。每幅圖上方的相關係數Cor(X1,X2)是用皮爾遜相關係數計算出來的(皮爾遜r值),採用的是scipy.stat裡的rearsonr()函式。


給定兩個大小相等的資料序列,它會返回相關係數值和p值所組成的元組。p值是該序列產生於一個不相關係統的概率。換句話說,p值越高,我們越不能信任這個相關係數:

在第一種情況下,知道這兩個序列是相關的。而在第二種情況下,我們仍然有一個非零的r值。


然而,p值基本上告訴這個係數是什麼樣的,不應對它過多關注。

在前三個具有高相關係數的情形中,我們可能要把X1或X2扔掉,因為它們似乎傳遞了相似的資訊。


然而在最後一種情況中,我們應該所兩個特徵都保留。在應用中,這種決策當然是由p值驅動的。


儘管這種方法在前面這個例子中工作得不錯,但在實際應用中卻並不好。基於相關性的特徵選擇方法的一個最大缺點就是,它只能檢測出線性關係(可以用一條直線擬合的關係)。如果在非線性資料中使用相關性,就有問題了。

除右下圖以外的所有圖中,儘管人的眼睛可以立即看到X1或X2之間的關係,卻沒法發現相關係數。很明顯,相關性在檢測線性關係中是很有用的,但對於其他關係就不行了。而對於非線性關係,可以用互資訊。


相關文章