什么是特征選擇?在解決問題時,總會有許多不相關的東西摻雜其中,那我們就需要找尋他們的關鍵特征進行清晰建模。伴隨這一問題的還有大量數據問題,它們有時是多余的,或者不甚相關。特征選擇是這樣一個研究領域,它試圖通過算法完成重要特征的選取。
為什么不把全部特征直接丟進機器學習模型呢?
現實世界的問題并沒有開源數據集,其中更沒有與問題相關的信息。而特征選擇有助于你最大化特征相關性,同時降低非相關性,從而增加了構建較好模型的可能性,并減小模型的整體大小。
頂級的特征選擇方法比如說我們要預測水上公園的票價走勢;為此我們決定查看天氣數據、冰淇淋銷量、咖啡銷量以及季節(jié)狀況。
從下表中我們可以看到,夏季的門票明顯比其他季節(jié)好賣,而冬季賣不出一張票。咖啡銷量整年中比較穩(wěn)定,冰淇淋則一年之中都有銷量,但旺季是 6 月。
表 1:文中使用的各項虛構數據。
圖 1:各項虛構數據的圖示對比。
我們想要預測水上公園票價,但很可能不需要所有數據以得到最佳結果。數據存在 N 個維度,并且 K 數值會給出最佳結果。但是不同大小的子集之間存在大量的結合。
我們的目標是減少維度數量,同時不損失預測能力。讓我們退回一步,看看那些我們能使用的工具。
窮舉搜索這項技術能 100% 保證找到最好的可能特征以建立模型。我們認為它非常可行,因為它將搜索所有可能的特征組合并找到返回模型最低點的組合。
在我們的例子中有 15 個可能的特征組合可供搜索。我使用公式 (2^n—1) 計算組合的數量。這個方法在特征數量較少的時候可行,但如果你有 3000 個特征就不可行了。
幸運的是,還有一個稍微好點的方法可用。
隨機特征選擇大多數情形中,隨機特征選擇可以工作的很好。如果要將特征數減少 50%,只需隨機選擇其中 50% 的特征并刪除。
模型訓練完成之后,檢驗模型的性能,重復這個過程直到你滿意為止。遺憾的是,這仍然是個蠻力方法。
當需要處理一個很大的特征集,又不能削減規(guī)模的時候,該怎么辦?
最小冗余最大關聯(lián)特征選擇
將所有的想法整合起來就能得出我們的算法,即 mRMR 特征選擇。算法背后的考慮是,同時最小化特征的冗余并最大化特征的關聯(lián)。因此,我們需要計算冗余和關聯(lián)的方程:
讓我們用虛構的數據寫一個快速腳本來實現 mRMR:
我并沒有對結果抱有什么期待,冰淇淋的銷量看起來能很精確地對售票量建模,而氣溫不可以。在這個例子中,似乎只需要一個變量就可以精確地對售票量建模,但在實際的問題中肯定不是這樣的。