特徵選擇
嵌入式(embedded嵌入法)
寫在前面
本文的特徵選擇的內容是對菜菜老師的機器學習課程:機器學習sklearn入門教程:資料預處理與特徵工程中的特徵選擇的內容進行的整理
特徵工程概述
坊間常說:「資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已」。
了解特徵工程,其定義是利用資料領域的相關知識來建立能夠使機器學習演算法達到最佳效能的特徵的過程。特徵工程就是把原始資料轉變成為特徵的過程。
特徵工程有三大塊。
以上就是特徵工程的三個流程,下面我們展開談談特徵選擇。
特徵選擇
特徵選擇的第一步我認為是:理解業務,但是在真正的資料應用領域,比如金融、醫療、電商,其中的特徵集更為複雜和龐大,我們無法依賴本身對業務的理解來選擇特徵。我們有三種方法來用於選擇特徵。
嵌入式(embedded嵌入法)
嵌入法是一種讓演算法自己決定採用哪些特徵的方法,即特徵選擇和演算法訓練同時進行,在使用嵌入法的同時,我們先使用某些機器學習演算法和模型進行訓練,得到各個特徵的權值係數,根據權值係數從大到小排列選擇權值係數大的特徵。嵌入法可謂是過濾法的進化版,它能自動地剔除掉無關的特徵和無區分度的特徵。
from sklearn.feature_selection import selectfrommodel
from sklearn.tree import randomforestclassifier as rfc
rfc_ = rfc(n_estimators =
10,random_state =0)
#特徵重要性低於0.005這個閾值的特徵都被砍掉,可能砍掉很多特徵
x_embedded = selectfrommodel(rfc_,threshold =
0.005
).fit_transform(x,y)
注:閾值是個超引數,我們很難確定閾值的取值,可以通過繪製學習曲線,判斷模型在不同閾值取值下的表現來決定取哪些閾值。
import matplotlib.pyplot as plt
from sklearn.tree import randomforestclassifier as rfc
import numpy
rfc_ = rfc(n_estimators =
10,random_state =0)
threshold = np.linespace(0,
(rfc_.fit(x,y)
.feature_importances_)
.max()
,20)score =
for i in threshold:
x_embedded = selectfrommodel(rfc_,threshold = i)
.fit_transform(x,y)
once = cross_val_score(rfc_,x_embedded,y,cv =5)
.mean(
)plt.plot(threshold,score)
plt.show(
)
包裝法也是乙個特徵選擇和演算法訓練同時進行的方法,與嵌入法十分相似,但不同的是,我們往往使用乙個目標函式來幫助我們選擇特徵,而不是自己輸入某個評估指標或閾值。包裝法在初始特徵集上訓練評估,可通過feature_importances_屬性獲得每個特徵的重要性。然後,從當前的一組特徵中選取特徵。在修剪的集合上遞迴地重複該過程,直到最終到達所需數量的要選擇的特徵。包裝法所需要的計算成本位於嵌入法和過濾法中間。
from sklearn.feature_selection import rfe
from sklearn.tree import randomforestclassifier as rfc
#隨機森林模型
rfc_ = rfc(n_estimators =
10,random_state =0)
#例項化選取特徵的學習器
selector = rfe(rfc_,n_features_to_select =
340,step =50)
.fit(x,y)
#selector.support_返回所有特徵中特徵是否保留的布林矩陣
selector.support_.
sum(
)#selector.ranking_返回特徵的按數次迭代中綜合重要性的排名
selector.ranking_
注:n_features_to_select也是個超引數,我們可以通過繪製學習曲線來決定取哪個值(也就是我們要保留的特徵數)。 特徵選擇概述
維基百科定義 在機器學習和統計學中,特徵選擇 英語 feature selection 也被稱為變數選擇 屬性選擇或變數子集選擇。它是指 為了構建模型而選擇相關特徵 即屬性 指標 子集的過程。特徵選擇的目標是尋找最優特徵子集。特徵選擇能剔除不相關 irrelevant 或冗餘 redundant 的...
特徵工程之特徵選擇
在前一篇文章中我介紹了一些資料預處理的方法,原始資料在經過預處理之後可以被演算法處理了,但是實際中可能有一些特徵是沒有必要的,比如在中國採集的一些資料,那麼國籍就都是中國,其實也就沒有意義了,反映在統計量上就是方差過小,也就是樣本在這個特徵上變化很小。還有一種情況是特徵和最後的結果相關性很小,也就是...
特徵工程之特徵選擇
特徵選擇其實就是減少屬性個數,為什麼要這麼做呢?直接使用原始資料來訓練模型的話,雖然說在訓練模型上的準確率會非常高,但是在測試樣本上的準確率將會大打折扣,也就是會產生過擬合的現象。所以說需要選擇出最適合的屬性進行訓練。特徵選擇的原因 2 雜訊 部分特徵對 結果又影響 進行特徵選擇的時候有兩種情況 一...