1. 程式人生 > >決策樹、RF、xgboost如何處理缺失值?判斷特徵重要性?缺失值不敏感?

決策樹、RF、xgboost如何處理缺失值?判斷特徵重要性?缺失值不敏感?

1.隨機森林模型怎麼處理異常值?

隨機森:林是已故統計學家Leo Breiman提出的,和gradient boosted tree樣,它的基模型是決策樹。在介紹RF時,Breiman就提出兩種解決缺失值的方去 (Random forests - classification description):

方法1(快速簡草但效果差)

把數值型變畺(numerical variables)中的缺失值用其所對應的類別中 (class)的中位數(median)替換。描述型變畺(categorical variables)缺失的部分用所對應類別中出現最多的數值替代(most frequent non-missing

value)以數值型變懸為例:

 方法2(耗時費力但效果好):雖然依然是便用中位數出現次敎最多的數來進行替換,方法2引入 了權重。即對需要替換的資料先和其他資料做相似度測量(proximity measurement)也就是下面 公式中的Weight,在補全缺失點是相似的點的資料會有更高的權重W。以數值型變畺為例:

Breiman說明了第二種方法的效果更好,但雲要的時間更長,這也是為什麼工具包中不提供資料補全的功能,因為會影響到工具包的效率。

在訓練、驗證、測試含有缺失值時怎麼辦?

1. 在選擇分裂屬性的時候,訓練樣本存在缺失值,如何處理?(計算分裂損失減少值時,忽略特徵缺失的樣本,最終計算的值乘以比例(實際參與計算的樣本數除以總的樣本數))

假如你使用ID3演算法,那麼選擇分類屬性時,就要計算所有屬性的熵增(資訊增益,Gain)。假設10個樣本,屬性是a,b,c。在計算a屬性熵時發現,第10個樣本的a屬性缺失,那麼就把第10個樣本去掉,前9個樣本組成新的樣本集,在新樣本集上按正常方法計算a屬性的熵增。然後結果乘0.9(新樣本佔raw樣本的比例),就是a屬性最終的熵。

2. 分類屬性選擇完成,對訓練樣本分類,發現樣本屬性缺失怎麼辦?(將該樣本分配到所有子節點中,權重由1變為具有屬性a的樣本被劃分成的子集樣本個數的相對比率,計算錯誤率的時候,需要考慮到樣本權重)

比如該節點是根據a屬性劃分,但是待分類樣本a屬性缺失,怎麼辦呢?假設a屬性離散,有1,2兩種取值,那麼就把該樣本分配到兩個子節點中去,但是權重由1變為相應離散值個數佔樣本的比例。然後計算錯誤率的時候,注意,不是每個樣本都是權重為1,存在分數。

3. 訓練完成,給測試集樣本分類,有缺失值怎麼辦?(分類時,如果待分類樣本有缺失變數,而決策樹決策過程中沒有用到這些變數,則決策過程和沒有缺失的資料一樣;否則,如果決策要用到缺失變數,決策樹也可以在當前節點做多數投票來決定(選擇樣本數最多的特徵值方向)。)

(U)如果有單獨的缺失分支,使用此分支。(c)把待分類的樣本的屬性a值分配一個最常出現的a的屬性值,然後進行分支預測。(S)根據其他屬性為該待分類樣本填充一個屬性a值,然後進行分支處理。(F)在決策樹中屬性a節點的分支上,遍歷屬性a節點的所有分支,探索可能所有的分類結果,然後把這些分類結果結合起來一起考慮,按照概率決定一個分類。(H)待分類樣本在到達屬性a節點時就終止分類,然後根據此時a節點所覆蓋的葉子節點類別狀況為其分配一個發生概率最高的類。

2.xgboost怎么處理缺失值?

xgboost處理缺失值的方法和其他樹模型不同。根據作者TianqiChen在論文[1]中章節3.4的介紹,xgboost把缺失值當做稀疏矩陣來對待,本身的在節點分裂時不考慮的缺失值的數值。缺失值資料會被分到左子樹和右子樹分別計層損失,選擇較優的那一個。如果訓練中沒有資料缺失,預測時出現了資料缺失,那麼預設被分類到右子樹。具體的介紹可以參考[2,3]。

這樣的處理方法固然巧妙,但也有風險:假設了訓練資料和預測資料的分佈相同,比如缺失值的分佈也相同,不過直覺上應該影響不是很大。

3.什麼樣的模型對缺失值更敏感?

  1. 樹模型對缺失值的敏感度低,大部分時候可以在資料缺失時時使用。
  2. 涉及到距離度量(distancemeasurement)時,如計算兩個點之間的距離,缺失資料就變得比較重要。因為涉及到"距離離"這個概念,那麼缺失值處理不當就會導致效果很差,如K近鄰演算法(KNN)、支援向量機(SVM)。
  3. 線性模型的代價函式(loss function)往往涉及到距離(distance)的計算,計罰篩則值和真實值之間的差別,這容易導致對缺失值敏感。
  4. 神經網路的魯棒強,對於缺失資料不是非常敏感,但一|g沒有那麼多資料可供使用。
  5. 貝葉斯模型對於缺失資料也比較穩定,資料量很小的時候雜貝葉斯模型。

總體來看,對於有缺失值的資料在經過缺失處理後:

  • 資料量很小,樸素貝葉斯
  • 資料量適中或者較大,用樹橫型,優先xgboost
  • 資料量較大,也可以用神經網路
  • 避免使用距離度量相關的模型,如KNN和SVM

4.xgboost 判斷特徵重要程度的三種指標

get_fscore 有三種種評判特徵重要程度的方法:

‘weight’ - the number of times a feature is used to split the data across all trees. ‘gain’ - the average gain of the feature when it is used in trees. ‘cover’ - the average coverage of the feature when it is used in trees.

weight - 該特徵在所有樹中被用作分割樣本的特徵的次數。

gain - 在所有樹中的平均增益。

cover - 在樹中使用該特徵時的平均覆蓋範圍。(還不是特別明白)

---------------------------------ending------------------------------------

相關推薦

決策RFxgboost如何處理缺失判斷特徵重要性缺失敏感

1.隨機森林模型怎麼處理異常值? 隨機森:林是已故統計學家Leo Breiman提出的,和gradient boosted tree—樣,它的基模型是決策樹。在介紹RF時,Breiman就提出兩種解決缺失值的方去 (Random forests - classificati

決策的進化(ID3C4.5CARTGBDTRFDARTlambdaMARTXGBoostlightGBM)

pipeline 在資料探勘領域中,決策樹是對資料進行建模的一種很有效的手段。當資料集被清洗好後,資料集就是樣本的集合,每一個樣本都是有一樣多的屬性,但屬性值可能不同(也有可能不存在即屬性值缺失)。每一個樣本,分為屬性(也可稱為特徵)和label兩部分,我們運用決策樹處理資

決策的構建展示與決策

1. 概述 上一篇日誌中,我們介紹了兩個決策樹構建演算法 – ID3、C4.5: 決策樹的構建演算法 – ID3 與 C4.5 演算法 本篇日誌我們來看看如何使用這兩個演算法以及其他工具構建和展示我們的決策樹

決策(ID3C4.5CART)

顧名思義,決策樹是基於樹結構進行決策。 1.ID3決策樹 以最大化資訊增益為準則來選擇劃分屬性。 假設離散屬性a上有V個可能的取值{a1,...,aV}\{a^1,...,a^V\}{a1,...,aV},若使用a對樣本集D進行劃分,則會產生V個分支節點。其中第

決策之ID3C4.5C5.0

2011年獲得了資料探勘領域最高榮譽獎KDD創新獎,昆蘭發明了著名的決策樹學習演算法ID3、C4.5,其個人主頁公佈了C4.5的C程式碼。—————————————————————————————————————————————————————————————————————

python機器學習案例系列教程——決策(ID3C4.5CART)

決策樹簡介 決策樹算是最好理解的分類器了。決策樹就是一個多層if-else函式,就是對物件屬性進行多層if-else判斷,獲取目標屬性(類標籤)的類別。由於只使用if-else對特徵屬性進行判斷,所以一般特徵屬性為離散值,即使為連續值也會先進行區間離散

決策(上)-ID3C4.5CART

參考資料(要是對於本文的理解不夠透徹,必須將以下部落格認知閱讀,方可全面瞭解決策樹): 1.https://zhuanlan.zhihu.com/p/85731206 2.https://zhuanlan.zhihu.com/p/29980400 3.https://github.com/Vay-keen/M

機器學習中的那些——決策(三CART

前言 距上篇文章已經過了9個月 orz。。趁著期末複習,把部落格補一補。。 在前面的文章中介紹了決策樹的 ID3,C4.5 演算法。我們知道了 ID3 演算法是基於各節點的資訊增益的大小 \(\operatorname{Gain}(D, a)=\operatorname{Ent}(D)-\sum_{v} \f

決策—CART演算法及剪枝處理

前言:上篇博文已經介紹了ID3、C4.5生成決策樹的演算法。由於上文使用的測試資料以及建立的模型都比較簡單,所以其泛化能力很好。但是,當訓練資料量很大的時候,建立的決策樹模型往往非常複雜,樹的深度很大。此時雖然對訓練資料擬合得很好,但是其泛化能力即預測新資料的能力並不一定很好,也就是出現了過擬合現象

ml課程:決策隨機森林GBDTXGBoost相關(含程式碼實現)

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教。 基礎概念: 熵Entropy:是衡量純度的一個標準,表示式可以寫為: 資訊增益Information Gain:熵變化的一個量,表示式可以寫為: 資訊增益率Gain Ratio:資訊增益的變化率,表示式可以寫為:

[面試筆記] 決策隨機森林GBDTXGBoost

摘要 本文主要分享了 決策樹、隨機森林、GBDT、XGBoost 四種模型的原理 決策樹 對於決策樹,李航老師在《統計學習方法》裡有詳細的解釋 分為ID3, C4.5, CART三個基本的樹生成演算法 ID3 是一個多叉樹,使用了熵作為

決策Bagging隨機森林BoostingAdaBoostGBDTXGBoost

1、決策樹  一、決策樹的優點和缺點     優點: 決策樹演算法中學習簡單的決策規則建立決策樹模型的過程非常容易理解, 決策樹模型可以視覺化,非常直觀 應用範圍廣,可用於分類和迴歸,而且非常容易做多類別的分類 能夠處理數值型和連續的樣本特徵     缺點:

4決策算法

技術分享 方法 cart 剪枝 決策樹算法 圖片 if-then c4.5 準備 1、認識決策樹: 決策樹思想非常樸素,程序設計中的條件就是if-then結構,最早的決策樹就是利用這類結構分割數據的一中分類學習方法。 2、信息論基礎-銀行貸款分析

偏差(bias)和方差(variance)——KNN的KRF的數量對bias和variance的影響

機器 image str 領域 什麽 認識 綜合 10個 機器學習算法 1.前言:為什麽我們要關心模型的bias和variance?   大家平常在使用機器學習算法訓練模型時,都會劃分出測試集,用來測試模型的準確率,以此評估訓練出模型的好壞。但是,僅在一份測試集上測試,存在

ID3的REP(Reduced Error Pruning)剪枝程式碼詳細解釋+周志華《機器學習》決策圖4.5圖4.6圖4.7繪製

處理資料物件:離散型資料 資訊計算方式:熵 資料集:西瓜資料集2.0共17條資料 訓練集(用來建立決策樹):西瓜資料集2.0中的第1,2,3,6,7,10,14,15,16,17,4 請注意,書上說是10條,其實是上面列出的11條。 驗證集(用來對決策樹剪枝):西瓜資料集2.0中的5,8

機器學習實戰(二)決策DT(Decision TreeID3演算法)

目錄 0. 前言 1. 資訊增益(ID3) 2. 決策樹(Decision Tree) 3. 實戰案例 3.1. 隱形眼鏡案例 3.2. 儲存決策樹 3.3. 決策樹畫圖表示 學習完機器學習實戰的決策樹,簡單的做

機器學習實戰(Machine Learning in Action)學習筆記————03.決策原理原始碼解析及測試

機器學習實戰(Machine Learning in Action)學習筆記————03.決策樹原理、原始碼解析及測試關鍵字:決策樹、python、原始碼解析、測試作者:米倉山下時間:2018-10-24機器學習實戰(Machine Learning in Action,@author: Peter Harr

R_針對churn資料用id3cartC4.5和C5.0建立決策模型進行判斷哪種模型更合適

      data(churn)匯入自帶的訓練集churnTrain和測試集churnTest   用id3、cart、C4.5和C5.0建立決策樹模型,並用交叉矩陣評估模型,針對churn資料,哪種模型更合適     決策樹模型 ID3/C4.5/CART演算法比較   傳送門

【統計學習方法-李航-筆記總結】五決策

本文是李航老師《統計學習方法》第五章的筆記,歡迎大佬巨佬們交流。 主要參考部落格: https://blog.csdn.net/u014248127/article/details/78971875 https://www.cnblogs.com/YongSun/p/4767085.ht

邏輯迴歸決策和支援向量機

摘要:分類問題是商業業務中遇到的主要問題之一。本文對三種主要技術展開討論,邏輯迴歸(Logistic Regression)、決策樹(Decision Trees)和支援向量機(Support Vector Machine,SVM)。 分類問題是我們在各個行業的商業業務中遇到的主要問題之一。在本