1. 程式人生 > >機器學習中如何用篩選器檢測冗余?

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

images 什麽 log 前三 最大 兩個 學習方法 篩選器 size

篩選器試圖在特征叢林中進行清洗,它獨立於後續使用的任何機器學習方法。它基於統計方法找出冗余或無關特征。一般來講,篩選器的工作流所圖:
技術分享圖片

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

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

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

然而,p值基本上告訴這個系數是什麽樣的,不應對它過多關註。
技術分享圖片
在前三個具有高相關系數的情形中,我們可能要把X1或X2扔掉,因為它們似乎傳遞了相似的信息。

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

盡管這種方法在前面這個例子中工作得不錯,但在實際應用中卻並不好。基於相關性的特征選擇方法的一個最大缺點就是,它只能檢測出線性關系(可以用一條直線擬合的關系)。如果在非線性數據中使用相關性,就有問題了。
技術分享圖片
除右下圖以外的所有圖中,盡管人的眼睛可以立即看到X1或X2之間的關系,卻沒法發現相關系數。很明顯,相關性在檢測線性關系中是很有用的,但對於其他關系就不行了。而對於非線性關系,可以用互信息。

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