⑴ 特徵選擇之經典三刀
特徵選擇是數據科學和機器學習領域中至關重要的環節。這一過程旨在從海量特徵中提取關鍵且有價值的特徵,以優化模型性能和提升准確性。本文將探討特徵選擇的原理、經典方法及其應用,以幫助讀者理解如何在模型訓練中進行有效的特徵選擇。
在構建模型時,特徵選擇解決的核心問題是判斷哪些特徵與目標變數相關,哪些特徵可能無關或冗餘。這一問題本質上是組合優化問題,涉及到在大量特徵中尋找最優子集。
特徵選擇方法主要分為三種:Filter、Wrapper 和 Embedded。
Filter 方法是一種過濾式特徵選擇方法,它獨立於後續學習器,通過計算特徵與目標變數之間的相關度進行選擇。常用的方法有皮爾遜相關系數、Gini 系數、信息增益、方差校驗等。方差表示數據分布的發散程度,通常認為方差較小的特徵對模型貢獻較小;皮爾遜相關系數衡量特徵間的線性相關性。
Wrapper 方法將特徵選擇過程與分類器封裝在一起,通過交叉驗證評估特徵子集的性能。實現方式包括前向搜索和後向搜索,其中遞歸特徵消除(Recursive Feature Elimination)是一種常見的後向搜索方法,通過逐步剔除最不重要的特徵來優化模型。
Embedded 方法利用分類器本身的特性進行特徵選擇,如通過 L1 或 L2 正則化實現特徵稀疏化。L1 正則化具有稀疏性,容易淘汰不重要特徵;L2 正則化可以使特徵權值趨於平均,解決不穩定問題。樹模型如隨機森林也可以作為特徵選擇的工具,通過計算屬性對模型不純度或精確度的影響來評估特徵重要性。
本文還提供了一個特徵分析工具,實現了上述方法的評估,包括 Pearson 相關系數、方差、遞歸特徵消除、穩定性選擇、L1 和 L2 正則化以及基於隨機森林的特徵重要性計算。
特徵選擇在數據預處理階段至關重要,有助於減輕維數災難問題,提高模型性能,同時增強對數據特徵的理解,尤其是在安全等關鍵領域。通過優化特徵集,可以有效降低學習難度,提升模型的准確性和泛化能力。
總之,特徵選擇是提升機器學習模型性能的關鍵步驟。本文介紹的Filter、Wrapper和Embedded方法提供了多種策略,幫助數據科學家和機器學習工程師在特徵工程中做出明智的選擇。希望這些方法能幫助您在實踐中優化模型,實現業務增長和數字化轉型。
⑵ 特徵選擇總結之 過濾式特徵選擇(附代碼)——單變數過濾式特徵選擇方法總結
特徵選擇總結中的單變數過濾方法,主要包括以下幾種方法:
sklearn庫中提供了這些方法的實現,但在使用時需注意公式和計算細節,如卡方檢驗只計算部分情況,Fisher得分針對連續特徵,而WOE和IV值則針對離散特徵。在實際應用中,應根據問題特性和模型需求選擇合適的特徵選擇方法。
⑶ 特徵選擇的相關性過濾
我們希望選出與標簽有關且有意義的特徵,因為這樣的特徵攜帶更多的信息,如果特徵與標簽無關,只會浪費計算內存,可能還會給模型帶來雜訊,在sklearn中有三種常用的方法來評判特徵與標簽之間的相關性:卡方,F檢驗,互信息
1.1卡方過濾
卡方過濾是專門針對離散型標簽(即分類問題)的相關性過濾,卡方檢驗類feature_selection.chi2計算每個非負特徵與標簽之間的卡方統計量,並依照卡方統計量由高到低為特徵排名,再結合feature_selection.SelectKBest這個可以輸入「評分標准」來選出前K個分數最高的特徵的類,我們可以藉此除去最可能獨立於標簽,與我們分類目的無關的特徵。
另外,如果卡方檢查中檢測到某個特徵中所有的值都相同,會提示我們先使用方差過濾。
1.2 K參數的選取
實際中的數據量會很大,模型很復雜的時候也許不允許我們先跑一遍模型看看效果,而是希望最開始就能選擇一個最優的超參數K,可以使用學習曲線。
通過這條曲線,我們可以觀察到,隨著K值的不斷增加,模型的表現不斷上升,這說明,K越大越好,數據中所有的特徵都是與標簽相關的。但是運行這條曲線的時間同樣也是非常地長,接下來說一種更好的選擇k的方法:看p值選擇k
卡方檢驗的本質是推測兩組數據之間的差異,其檢驗的原假設是「兩組數據是相互獨立的」。卡方檢驗返回卡方值和P值兩個統計量,其中卡方值很難界定有效的范圍,而p值,我們一般使用0.01或0.05作為顯著性水平,即p值判斷邊界,具體如表格所示
從特徵工程的角度,我們希望獲取卡方值很大,p值小於0.05的特徵,即和標簽是相關聯的特徵,而調用SelectKBest之前,我們可以直接從chi2實例化後的模型中獲得各個特徵所對應的卡方值和p值。
1.3 F檢驗
F檢驗,又稱ANOVA,方差齊性檢驗,是用來捕捉每個特徵與標簽之間的線性關系的過濾方法,它即可以做回歸也可以做分類,因此包含feature_selection.f_classif(F檢驗分類)和feature_selection.f_regression(F檢驗回歸)兩個類,其中F檢驗分類用於標簽是離散型變數的數據,而F檢驗回歸則用於標簽是連續性變數的數據。
和卡方檢驗一樣,這兩個類都需要和SelectKBest連用,並且我們也可以直接通過輸出的統計量來判斷我們到底要設置多大的K值。F檢驗在數據服從正態分布是效果會非常穩定,因此如果使用F檢驗過濾,我們會先將數據轉化成正態分布的方式。
F檢驗的本質是尋找兩組數據之間的線性關系,其原假設是「數據不存在顯著的線性關系」,它返回F值和P值兩個統計量,和卡方過濾一樣,我們希望選取P值小於0.05或是0.01的特徵,這些特徵與標簽是顯著線性相關的,而P值大於0.05或是0.01的特徵被 我們認為是與標簽沒有顯著線性關系的特徵,應該被刪除,以F檢驗的分類為例,在數字數據集上進行特徵選擇。
k=300,跟原特徵數一樣,說明沒有任何的特徵的p值大於0.01,所有的特徵都是與標簽相關的,因此不需要相關性過濾。
1.4 互信息法
互信息法是用來捕捉每個特徵與標簽之間的任意關系(線性關系和非線性關系)的過濾方法,跟F檢驗一樣,可以做回歸也可以做分類,並且包含兩個類feature_selection.mutual_info_classif和feature_selection.mutual_info_regression(互信息回歸),這兩個類的用法和參數都和F檢驗一模一樣,不過互信息法比F檢驗更加強大,F檢驗只能夠找出線性關系,而互信息法可以找出任意關系。
1.5 過濾法總結
通常來說,會先使用方差過濾,然後使用互信息法來捕捉相關性,不過了解各種各樣的過濾方式也是必要的。所有信息被總結在下表: