當資料預處理完成後,我們需要選擇有意義的特徵輸入機器學習的演算法和模型進行訓練。
為什麼?
(1)降低維度,選擇重要的特徵,避免維度災難,降低計算成本
(2)去除不相關的冗餘特徵(雜訊)來降低學習的難度,去除雜訊的干擾,留下關鍵因素,提高**精度
(3)獲得更多有物理意義的,有價值的特徵
不同模型有不同的特徵適用型別?
(1)lr
模型適用於擬合離散特徵(見附錄)
(2)gbdt
模型適用於擬合連續數值特徵
(3)一般說來,特徵具有較大的方差說明蘊含較多資訊,也是比較有價值的特徵
通常來說,從兩個方面考慮來選擇特徵:
特徵是否發散:如果乙個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異,這個特徵對於樣本的區分並沒有什麼用。
特徵與目標的相關性:這點比較顯見,與目標相關性高的特徵,應當優選選擇。除方差法外,本文介紹的其他方法均從相關性考慮。
根據特徵選擇的形式又可以將特徵選擇方法分為3種:
使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵。
使用相關係數法,先要計算各個特徵對目標值的相關係數以及相關係數的p值,選擇top n。
經典的互資訊也是評價定性自變數對定性因變數的相關性的,互資訊計算公式如下:
同理,選擇互資訊排列靠前的特徵作為最終的選取特徵。
經典的卡方檢驗是檢驗定性自變數對定性因變數的相關性。假設自變數有n種取值,因變數有m種取值,考慮自變數等於
i且因變數等於
j的樣本頻數的觀察值與期望的差距,構建統計量:
這個統計量的含義簡而言之就是自變數對因變數的相關性。選擇卡方值排在前面的k個特徵作為最終的特徵選擇。
遞迴消除特徵法使用乙個基模型來進行多輪訓練,每輪訓練後,消除若干權值係數的特徵,再基於新的特徵集進行下一輪訓練。embedded
使用帶懲罰項的基模型,除了篩選出特徵外,同時也進行了降維。由於l1範數有篩選特徵的作用,因此,訓練的過程中,如果使用了l1範數作為懲罰項,可以起到特徵篩選的效果。
訓練能夠對特徵打分的預選模型:gbdt、randomforest
和logistic regression
等都能對模型的特徵打分,通過打分獲得相關性後再訓練最終模型。
不管是scikit-learn還是
mllib
,其中的隨機森林和
gbdt
演算法都是基於決策樹演算法,一般的,都是使用了
cart
樹演算法,通過
gini
指數來計算特徵的重要性的。
比如scikit-learn的
sklearn.feature_selection.selectfrommodel
可以實現根據特徵重要性分支進行特徵的轉換。
在spark 2.0之後,
mllib
的決策樹演算法都引入了計算特徵重要性的方法
featureimportances
,而隨機森林演算法(
randomforestregressionmodel
和randomforestclassificationmodel
類)和gbdt
演算法(gbtclassificationmodel
和gbtregressionmodel
類)均利用決策樹演算法中計算特徵不純度和特徵重要性的方法來得到所使用模型的特徵重要性。
特徵工程概述及特徵選擇常用方法的小整理
特徵選擇 嵌入式 embedded嵌入法 寫在前面 本文的特徵選擇的內容是對菜菜老師的機器學習課程 機器學習sklearn入門教程 資料預處理與特徵工程中的特徵選擇的內容進行的整理 特徵工程概述 坊間常說 資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已 了解特徵工程,其定義是利用...
特徵工程 常用的特徵轉換方法總結
機器學習模型的生命週期可以分為以下步驟 要構建模型就必須要對資料進行預處理。特徵轉換是這個過程中最重要的任務之一。在資料集中,大多數時候都會有不同大小的資料。為了使更好的 必須將不同的特徵縮小到相同的幅度範圍或某些特定的資料分布。什麼時候需要特徵轉換 什麼時候不需要特徵轉換 大多數基於樹型模型的整合...
特徵工程之特徵選擇
在前一篇文章中我介紹了一些資料預處理的方法,原始資料在經過預處理之後可以被演算法處理了,但是實際中可能有一些特徵是沒有必要的,比如在中國採集的一些資料,那麼國籍就都是中國,其實也就沒有意義了,反映在統計量上就是方差過小,也就是樣本在這個特徵上變化很小。還有一種情況是特徵和最後的結果相關性很小,也就是...