機器學習 特徵選擇

特徵選擇

1、簡介

數據預處理完成以後,特徵比較多時,就需要對特徵進行選擇。 使有意義的特徵輸入模型進行訓練。 特徵選擇通常來說從兩個方面入手:

  • 特徵是否發散:特徵如果不發散, 方差很小接近於0, 就意味着這個特徵在所有樣本中的分佈是沒有差異的, 說明這個特徵對於樣品區分沒有貢獻。
  • 特徵與目標相關項: 對於分類問題, 特徵與分類目標相關性越大說明特徵對於分類問題作用也就越大。

特徵選擇的方法:

  • Filter: 過濾法, 通過給定的方差閾值對特徵進行分類, 只保留方差過閾值的特徵。
  • Wrapper: 包裝發, 根基後續模型的學習效果, 目標函數, 每次選取若干或者排除若干特徵。 來尋找最優特徵。
  • Embedded: 嵌入法, Filter與Wrapper 的結合。 先使用某些機器學習算法和模型訓練,得到各個特徵的權值洗漱,根據係數大小選擇特徵。例如使用RandomForest.

在sklearn中可以使用feature_selection庫來進行特徵選擇。

2、使用方法說明

2.1 Filter法

2.1.1 方差選擇法

方差選擇法需要計算各特徵的方差,然後根據給定的方差閾值選擇特徵。

from sklearn.feature_selection import VarianceThreshold
selected_feature = VarianceThreshold(threshold=3).fit_transform(features)

這裏的threshold根據不同的feature應該有所不同, 所以需要對於樣本有一定的瞭解。 

2.1.2 卡方檢驗法

對於每一個特徵與目標分類標籤進行卡方檢驗,根據得出的chi2統計和p-value對特徵進行選擇。

from sklearn.feature_selection import chi2
from sklearn.feature_selection import SelectKBest

selected_feature = SelectKBest(chi2, k=2).fit_transform(features, target)

2.2 Wrapper法

2.2.1 遞歸特徵消除法

遞歸特徵消元法需要給定一個預測模型(基模型),然後使用最初的特徵進行模型訓練得到每一個特徵的權值, 然後丟棄權值最小的的特徵,重新訓練模型。 如此往復直到得到所需要的數量時停止。
sklearn.feature_selection中的RFE類實現。
代碼例子中,選取邏輯迴歸模型作爲基模型。

from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
selected_feature = RFE(estimator=LogisticRegression(), n_features_to_select=2).fit_transform(features, target)

2.3 Embedded法

2.3.1 基於懲罰項的特徵選擇法

使用帶懲罰項的基模型, 除了篩選特徵,同時進行降維。 使用feature_selection庫的SelectFromModel類結合L1懲罰項的邏輯迴歸模型實現:

from sklearn.feature_selection import SelectFromModel
from sklearn.linear_model import LogisticRegression
selected_feature = SelectFromModel(estimator=LogisticRegression(penalty="l1", C=0.1)).fit_transform(features, target)

2.3.2 基於樹模型的特徵選擇

通過樹模型的GBDT作爲基模型進行特徵選擇, 使用SelectFromModel結合GBDT模型實現:

from sklearn.feature_selection import SelectFromModel
from sklearn.ensemble import GradientBoostingClassifier
selected_feature = SelectFromModel(estimator=GradientBoostingClassifier()).fit_transform(features, target)

2.4 總結

所屬方式 說明
VarianceThreshold Filter 方差選擇法
SelectKBest Filter 可選關聯繫數、卡方校驗、最大信息係數作爲得分計算的方法
RFE Wrapper 遞歸地訓練基模型,將權值係數較小的特徵從特徵集合中消除
SelectFromModel Embedded 訓練基模型,選擇權值係數較高的特徵

 原文大神博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章