特徵選擇方法 特徵選擇的一股清流(二)

2021-10-12 09:45:26 字數 2831 閱讀 5179

過濾法(filter method):首先選擇評分方法,然後計算特徵的評分,對特徵排序,最後根據閾值或要求的特徵數量過濾得到選中的特徵。

該特徵選擇過程與後續學習演算法無關。過濾法由於不牽涉後續的模型構建,被認為是一種無偏的特徵選擇方法,並且由於其執行高效常用於特徵選擇流程的前期。

如何從特徵集中挑選「最好的」特徵?

將特徵按某種得分排序,選取得分高者的特徵是很自然的一種選擇方法。

單指標的特徵選擇方法與其他特徵無關,可以是與目標變數相關的有監督的特徵選擇,也可以是與目標變數無關的無監督特徵選擇。

由於這種單特徵選擇演算法簡單、易擴充套件、便於理解資料和解釋的成功應用經驗,許多特徵選擇演算法都將這種排序選擇方法作為選擇機制或輔助選擇機制。

8.3節中的**力指標都可作為單指標過濾法中的評分,還有方差指標。

sklearn中實現了單指標特徵選擇的框架。

上述使用示例如下:

# 取卡方檢驗得分top30的特徵

selectkbest(chi2, 30)

# 取方差檢驗得分top20%的特徵

selectpercentile(f_classif, percentile=percentile)

# 取互資訊得分最高的70%的特徵

selectpercentile(smutual_info_classif, percentile=70)

線性相關和非線性相關的iv的組合是一種常見的雙指標過濾法,在金融行業應用廣泛。如果選中的特徵與目標關聯性很好,同時特徵間的相關性又非常小,那麼有理由認為該特徵子集是乙個好的選擇。

當然也可以使用其他線型+非線型的雙指標過濾法,請讀者自行實踐。

如果選中的特徵與目標相關性很好,同時特徵間的冗餘又非常小,即特徵同目標變數依賴高,特徵之間差異卻很大,那麼也有理由認為該特徵子集是乙個好的選擇。mrmr(minimum redundancy maximum relevance,最小冗餘最大相關)就是這樣的一種特徵選擇方法。

相關性分析:計算特徵與目標變數間的相關性;度量方式可根據資料型別的不同使用互資訊/最大資訊係數和方差檢驗等,記為c。冗餘性分析:計算特徵間的相關性,度量方式可使用互資訊/最大資訊係數和相關係數等,記為r。最後使用max(c-r)或max(c/r)綜合考慮相關性和冗餘性。

書中示例只以mic度量變數間的相關性。

包裹法涉及模型構建和子集搜尋,相對過濾法是一種計算成本非常高的特徵選擇方法,但精度往往也更高。

8.1.3節提到了子集搜尋策略,這些搜尋策略在包裹法中得到了大量的應用。前文提到了rfe,sklean還包含rfecv,該方法自帶交叉驗證的評估方式,建議在實踐中多使用該方法。

書中以邏輯回歸中的前向、後向和前後向的stepwise逐步回歸的實現來演示包裹法中的子集搜尋策略和評估方法。在該實現中使用了python中的統計模型包statsmodels來構建回歸模型。

筆者認為stepwise是這種形式特徵選擇方法的總稱。通過stepwise的演算法能有效避免單獨的前向或後向選擇的缺點

上面講述的是特徵選擇通用的流程和方法,實際上特徵選擇與後續所使用的具體學習演算法密切相關。例如,設有特徵x1、x2和y。其中,y=x12,x2=y+z,其中z來自某個均勻分布。如果使用線性回歸,那麼x2是首選,但如果使用的學習器是二次的多項式回歸,那麼x1是更好的選擇。如第1章所講述的學習器的偏好,學習器自身的特性將會影響到其輸入特徵的選擇。

嵌入法(embedded method):嵌入法特徵選擇比較特殊,它要求學習演算法本身具有特徵選擇的功能。

正則化的決策樹也具有同樣的功能 。筆者認為樹模型中權重為0的特徵是沒有被模型選中的特徵,所以樹模型的特徵選擇理應也歸屬於嵌入法,但筆者暫未看到相關資料顯式地提及這一點。

決策樹構造的過程亦是特徵選擇的過程

該方法具有穩定性特徵選擇的特點。基於隨機森林的特徵選擇演算法實現示例:

from sklearn.ensemble import randomforestregressor, randomforestclassifier

def get_decrease_gini(clf, x, y):

'''clf = randomforestregressor  or randomforestclassifier

'''rf = clf()

rf.fit(x, y)

return get_importance_df(rf, x.columns.tolist())

def get_importance_df(clf, columns):

'''根據特徵重要性(不純度或基尼)排序'''

f_imp = sorted(zip(rf.feature_importances_.round(6), names), reverse=true)

return pd.dataframe(f_imp, columns=['importance', 'column'])

4.2.1節中定義了l1範數和l2範數,兩者具有不同的正則化效果。使用l1的模型中會得到稀疏解,即大部分特徵對應的係數為0(而表現為稀疏),很明顯係數為0或接近0的特徵是沒有被選中的特徵,即l1正則化的效果具有特徵選擇的作用。使用l2的模型中則會輸出趨於一致的係數,得到較為穩定的模型!

l1的回歸稱為lasso回歸,l2的回歸稱為ridge。

下面以回歸為例講解基於正則的特徵選擇方法。參考sklearn官網示例 ,做了適當修改後以突出不同正則強度下的特徵係數的變化情況。根據如上介紹,根據圖形很容易識別8-7中的兩個圖分別代表了哪種回歸。

特徵選擇方法

特徵獲取過程 特徵獲取定義的角度 特徵獲取要解決的兩個問題 啟發式方法為一種近似演算法,具有很強的主觀傾向。隨機方法是一種相對較新的方法,細分為完全隨機方法和概率隨機方法兩種。總的說來,上述三類中只有窮舉法能保證最優,但耗時並且計算複雜度很高,後兩者以效能為代價換取簡單 快速的實現,但不能保證最優。...

特徵選擇方法

特徵獲取過程 特徵獲取定義的角度 特徵獲取要解決的兩個問題 啟發式方法為一種近似演算法,具有很強的主觀傾向。隨機方法是一種相對較新的方法,細分為完全隨機方法和概率隨機方法兩種。總的說來,上述三類中只有窮舉法能保證最優,但耗時並且計算複雜度很高,後兩者以效能為代價換取簡單 快速的實現,但不能保證最優。...

特徵選擇方法

特徵獲取過程 特徵獲取定義的角度 特徵獲取要解決的兩個問題 啟發式方法為一種近似演算法,具有很強的主觀傾向。隨機方法是一種相對較新的方法,細分為完全隨機方法和概率隨機方法兩種。總的說來,上述三類中只有窮舉法能保證最優,但耗時並且計算複雜度很高,後兩者以效能為代價換取簡單 快速的實現,但不能保證最優。...