決策樹是如何處理不完整資料的?

2021-08-27 08:57:06 字數 1259 閱讀 3733

首先我們來看一下知乎上的不錯回答(

缺失值問題可以從三個方面來考慮

1. 在選擇**屬性的時候,訓練樣本存在缺失值,如何處理?

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

2. 分類屬性選擇完成,對訓練樣本分類,發現屬性缺失怎麼辦?

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

3. 訓練完成,給測試集樣本分類,有缺失值怎麼辦?

這時候,就不能按比例分配了,因為你必須給該樣本乙個確定的label,而不是薛丁格的label。這時候根據投票來確定,或者填充缺失值。

如果說確實這些缺失值對決策樹的建立有影響,可以考慮以下方法

採用拋棄缺失值

拋棄極少量的缺失值的樣本對決策樹的建立影響不是太大。但是如果屬性缺失值較多或是關鍵屬性值缺失,建立的決策樹將是不完全的,同時可能給使用者造成知識上的大量錯誤資訊,所以拋棄缺失值一般不採用。只有在資料庫具有極少量的缺失值同時缺失值不是關鍵的屬性值時,且為了加快建立決策樹的速度,才採用拋棄屬性缺失值的方式建立決策樹。

補充缺失值

缺失值較少時按照我們上面的補充規則是可行的。但如果資料庫的資料較大,缺失值較多(當然,這樣獲取的資料庫在現實中使用的意義已不大,同時在資訊獲取方面基本不會出現這樣的資料庫),這樣根據填充後的資料庫建立的決策樹可能和根據正確值建立的決策樹有很大變化。

概率化缺失值

對缺失值的樣本賦予該屬性所有屬性值的概率分布,即將缺失值按照其所在屬性已知值的相對概率分布來建立決策樹。用係數f進行合理的修正計算的資訊量,f=資料庫中缺失值所在的屬性值樣本數量去掉缺失值樣本數量/資料庫中樣本數量的總和,即f表示所給屬性具有已知值樣本的概率。

注: 西瓜書上面的解決方法是:讓同乙個樣本以不同的概率劃入到不同的子節點中去

決策樹 缺失值如何處理

參考部落格 決策樹如何處理缺失值?也就是面對兩個問題 1 如果樣本某個屬性有缺失值,那麼怎麼計算使用這個屬性劃分結點時的資訊增益呢?2 在第一步的基礎上,即使資訊增益計算出來了,那麼由於樣本這一屬性值缺失了,應該將這一樣本劃分到哪個子結點呢?我們分別來看一下訓練集 測試集上怎麼處理缺失值。訓練集 對...

決策樹如何處理取值為連續值的特徵(屬性)

在介紹資訊增益 資訊增益率 基尼指數的時候都只是說了離散特徵的處理,公式也是只針對離散特徵,那麼連續特徵怎麼辦呢?顯然公式不再適用,那麼我們改公式嗎?本來這幾個公式就來自其他學科的研究成果,直接推廣似乎不大可能,那麼就有另一條路,把連續的特徵離散化。這樣一來不就又可以套上面處理離散值的公式了嗎?辦法...

sklearn的決策樹能夠處理字串資料嗎嗎?

20201229 我記得很久之前我曾經遇到過這種問題,一開始我還很納悶,一般情況下,輸入到分類器的資料應該都是數值型的,對於字串型的他應該處理不了,但是當時我卻得出了結論,sklearn中的決策樹,能夠幫助我講這些資料處理。但是,我感覺,可能是有一些記憶的偏差。那麼這裡就來具體描述一下。問題 於,最...