1. 程式人生 > >前剪枝演算法和後剪枝演算法區別

前剪枝演算法和後剪枝演算法區別

(一)剪枝演算法的簡介:

剪枝一般是為了避免樹的過於複雜,過於擬合而進行的一個動作,剪枝操作是一個全域性的操作。

(二)預剪枝:

預剪枝就是在樹的構建過程(只用到訓練集),設定一個閾值,使得當在當前分裂節點中分裂前和分裂後的誤差超過這個閾值則分列,否則不進行分裂操作。

(三)後剪枝:

(1)後剪枝是在用訓練集構建好一顆決策樹後,利用測試集進行的操作。
(2)演算法:
基於已有的樹切分測試資料:
1.如果存在任一子集是一棵樹,則在該子集遞迴剪枝過程
2.計算不合並的誤差
3.如果合併會降低誤差的話,就將葉節點合併

(3)在迴歸樹一般用總方差計算誤差(即用葉子節點的值減去所有葉子節點的均值)。

(四)前剪枝和後剪枝的比較:

(1)前閾值的設定很敏感,一點點的變動,會引起整顆樹非常大的變動,不好設定。
(2)前剪枝生成比後剪枝簡潔的樹
(3)一般用後剪得到的結果比較好