iT邦幫忙

0

結合交叉驗證之遞迴特徵刪除簡介(recursive feature elimination with cross-validation)

  • 分享至 

  • xImage
  •  

前言

結合交叉驗證之遞迴特徵刪除(recursive feature elimination with cross-validation, RFECV)屬於特徵篩選(feature selection)中的包裹式(wrapper)。

動機

昨天跑了RFECV發現效果不錯,想知道它的原理但網路上都只介紹RFE,而關於RFECV的介紹都草草帶過,所以我直接看sklearn代碼整理出流程,並且跟大家分享

什麼是包裹式

包裹式是由兩個部件組成建立:

  • 投放策略:根據前一次迭代的結果,決定本次應投入哪些特徵到模型中進行訓練
  • 預測模型:可以評估特徵與目標間關係的模型

RFE

在介紹RFECV前,需要先科普一下什麼是RFE。首先,當我們準備好數據並且決定要用什麼模型後,首先將所有特徵灌入模型進行訓練,然後刪除step個回歸係數最小的特徵;緊接著用剩餘特徵重新訓練一個新模型後再刪除step個回歸係數最小的特徵,如此反覆循環直到剩餘特徵數目等於我們的期望數字,就是這麼簡單,流程圖在下面:
https://ithelp.ithome.com.tw/upload/images/20200710/20124766fwxzdXVwKW.png

RFECV

RFECV其實就是RFE結合KFOLD。實際計算方法為,將數據分割為K-FOLD個,然後分別執行一次RFE(砍到剩1個特徵),須注意我們這次需要記下每次循環所得到的預測誤差。
舉個例子:

step1. 我們有一個總特徵數n=16的數據,令每次刪除特徵數step=1,將數據分成3個FOLD
step2. 因為想知道k=1~16相應的最佳組合,因此我們必須強制令每個RFE的關鍵特徵數目k=1
step3. 對每個FOLD執行RFE,然後要記得每次迭代都要記錄預測誤差,因為特徵是從16=>15=>14=>...=>2=>1,所以每個RFV會有16個預測誤差,三個FOLD就有3x16個預測誤差(誤差矩陣)
step4. 將誤差矩陣取平均,會得到1x16的數列(平均誤差矩陣),gridscore就是從這來的
step5. 從平均誤差矩陣中找出誤差最小相應的特徵數目a,這也是sklearn RFECV會幫我們自動挑選最佳特徵數目的原因
step6. 用完整的數據跑一次RFE(令k=a),完工

結論:

  1. 要使用RFE和RFECV的前提是,我們需要得到每一特徵相應的係數或者重要性,如果無法得到就不能執行RFE或者RFECV。關於這點sklearn也有提到,更白話的就是如果無法取得coef或者importance就會跳異常。因此如果用SVM(kernel!=linear)就會跳異常;反之LR、Lasso、Ridge、RF等等的都可以用
  2. 如果某些採用RFE方法的研究文獻沒有特別介紹用哪個預測模型,因為第一篇RFE就是用SVM當預測模型,所以假定預測模型為SVM
  3. 通常RFE都是用作分類任務的特徵篩選
  4. 查了一下博碩士畢業論文,發現用RFE的人很少。這篇的算法流程圖比我更直白,各位可以下載來看一下。這篇則是架構圖很酷

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言