随机森林做特征重要性排序和特征选择
隨機森林模型介紹:
隨機森林模型不僅在預測問題上有著廣泛的應用,在特征選擇中也有常用。
隨機森林是以決策樹為基學習器的集成學習算法。隨機森林非常簡單,易于實現,計算開銷也很小,更令人驚奇的是它在分類和回歸上表現出了十分驚人的性能。
隨機森林模型在擬合數據后,會對數據屬性列,有一個變量重要性的度量,在sklearn中即為隨機森林模型的 feature_importances_ 參數,這個參數返回一個numpy數組對象,對應為隨機森林模型認為訓練特征的重要程度,float類型,和為1,特征重要性度數組中,數值越大的屬性列對于預測的準確性更加重要。
隨機森林(RF)簡介:
只要了解決策樹的算法,那么隨機森林是相當容易理解的。隨機森林的算法可以用如下幾個步驟概括:
- 1、用有抽樣放回的方法(bugging)從樣本集中選取n個樣本作為一個訓練集
- 2、用抽樣得到的樣本集生成一棵決策樹。在生成數的每一個結點:
- 1、隨機不重復地選擇d個特征
- 2、利用這d個特征分別對樣本集進行劃分,找到最佳的劃分特征(可用基尼系數(CART數)、增益率(C4.5)或者信息增益(ID3)判別)
- 3、重復步驟1到步驟2共k次,k即為隨機森林中決策樹的個數。
- 4、用訓練得到的隨機森林對測試樣本進行預測,并用票選法決定預測的結果。
下圖比較直觀地展示了隨機森林算法:
隨機森林的隨機性體現在:
- 選取樣本時 有放回的隨機選取。
會導致不同的樹,分別學到整體數據集的一部分特征,最終大家投票,得到最終的預測結果。
sklearn提供前剪枝技術。個人解讀,
-
1.隨機森林已經通過隨機選擇樣本和特征,保證了隨機性,不用后剪枝應該也能避免過擬合
-
2.后剪枝是為了避免過擬合,隨機森林隨機選擇變量與樹的數量,已經避免了過擬合,沒必要去后剪枝了。
-
3.一般rf要控制的是樹的規模,而不是樹的置信度,后剪枝的作用其實被集成方法消解了,所以用處不大。
特征重要性評估:
sklearn 已經幫我們封裝好了一切。
1、 以UCI上葡萄酒的例子為例,首先導入數據集。
數據集介紹:數據集
特征:
2、數據初探
#初看數據 df.head(5) # 標簽類別 set(df['Class label']) #{1, 2, 3} df.shape # (178, 14) # 統計缺失值 df.isna().sum() df.describe()
可見除去class label之外共有13個特征,數據集的大小為178。無缺失值。
3、 建模
將數據集分為訓練集和測試集。
4、設置特征選擇閾值:
查看選擇的特征具體情況。
x_selected_columns = feat_labels[importances > threshold]Index([‘Flavanoids’, ‘Color intensity’, ‘Proline’], dtype=‘object’)
說明僅僅選擇了’Flavanoids’, ‘Color intensity’, 'Proline’3列。
import pandas as pd x_select_pd = pd.DataFrame(x_selected,columns=x_selected_columns) x_select_pd
特征選擇完畢。
產出:
在做特征選擇是特性工程最后一步,一般先進行相關性分,消除兩兩變量的線性相關性,然后再進行隨機森林進行重要特征的篩選。
總結
以上是生活随笔為你收集整理的随机森林做特征重要性排序和特征选择的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 币安Binance.client can
- 下一篇: .net 窗体清除上次显示的内容_acc