談談模型融合之二 隨機森林

2022-07-04 05:45:18 字數 2180 閱讀 9624

上篇文章介紹了整合學習的相關概念以及基於 boosting的 adaboost,這篇文章將介紹基於模型融合的另一種方式 bagging 的演算法,隨機森林(random forest)。(上篇公式敲的太累了這篇就來個簡單的緩解緩解)

我們先來看看這個演算法的名字,可以拆分開為兩部分,隨機和森林。森林我們很容易可以想到,就是有很多棵樹,即由多顆決策樹組成。那麼隨機指的是什麼呢?這裡我們來看看bagging的思想了。

首先先說說自助取樣(bootstrap sanpling)

指任何一種有放回的均勻抽樣,也就是說,每當選中乙個樣本,它等可能地被再次選中並被再次新增到訓練集中。

而 bagging 則是利用自助取樣得到 t 組訓練樣本集,分別利用這些訓練樣本集訓練 t 個分類器,最後進行整合的方法。從 bias-variance 分解的角度看, bagging 主要關注降低方差。

那麼,我們大概就能知道這個隨機大概是什麼意思了,就是隨機抽取訓練集。

那麼,問題又來了,到底是隨機抽取一定量的樣本呢還是抽取部分特徵呢?答案是都有,隨機在這兩方面都有所體現。

所以可以列出這麼乙個等式—— random forest = bagging + fully-grown cart with random subspace。

其特點為:

可高度並行化

繼承了 cart 的優點

克服了完全生長樹的缺點

知道了隨機森林的演算法思想後,知道了最後是需要將所有決策樹的**結果進行整合,那我們採用什麼方法進行整合呢?

大概有以下幾種方法:

平均法加權平均法

投票法學習法

emmmmmmmmmmm。。。。突然發現居然沒有什麼數學推導????驚了

下面的**是基於投票法策略寫的

def bagging(x, y, t, size, seed=0, max_depth=none):

"""bagging演算法,分類器為cart,用於二分類

引數:x: 訓練集

y: 樣本標籤

t: t組

size: 每組訓練集的大小

seed: 隨機種子

max_depth: 基學習器cart決策樹的最大深度

返回:f: 生成的模型

"""classifiers =

m, n = x.shape

np.random.seed(seed)

for i in range(t):

# 使用np.random.choice選擇size個序號,注意replace引數的設定,以滿足有放回的均勻抽樣。

index = np.random.choice(m,size)

x_group = x[index]

y_group = y[index]

# 使用tree.decisiontreeclassifier,設定max_depth=none, min_samples_split=2(生成完全樹),random_state=0

t = decisiontreeclassifier(max_depth=max_depth, min_samples_split=2, random_state=0)

# 開始訓練

# print(y_group.shape)

t.fit(x_group, y_group)

def f(x):

# 計算所有分類器的**結果

result =

for t in classifiers:

# 把**結果組成 num_x * t 的矩陣

pred = np.vstack(result).t

# 計算"0"有多少投票

vote_0 = t - np.sum(pred, axis=1)

# 計算"1"有多少投票

vote_1 = np.sum(pred, axis=1)

# 選擇投票數最多的乙個標籤

pred = (vote_1 > vote_0).astype(int)

return pred

return f

上篇的 adaboost 一堆公式推導,這就來了篇簡單的緩解緩解,寫著寫著發現就寫完了而且還沒有公式的時候瞬間驚了,下篇該系列文章就來講講資料探勘競賽中熟知的gbdt

談談模型融合之二 隨機森林

上篇文章介紹了整合學習的相關概念以及基於 boosting的 adaboost,這篇文章將介紹基於模型融合的另一種方式 bagging 的演算法,隨機森林 random forest 上篇公式敲的太累了這篇就來個簡單的緩解緩解 我們先來看看這個演算法的名字,可以拆分開為兩部分,隨機和森林。森林我們很...

隨機森林模型

模型構建思想 隨機取樣 隨機特徵 多棵決策樹 多數投票 分類 取平均值 回歸 隨機 體現在 1 特徵隨機 2 樣本隨機 優缺點 優點 1.並行 2.隨機性的引入,增加了多樣性,泛化能力非常強,抗雜訊能力強,對缺失值不敏感 3.可省略交叉驗證,因隨機取樣 4.並繼承決策樹的優點,包括 1 可得到特徵重...

隨機森林模型(RF)

隨機森林屬於整合學習 ensemble learning 中的bagging演算法。bagging bootstrap aggregating bagging即套袋法,其演算法過程如下 a 從原始樣本集中抽取訓練集。每輪從原始樣本集中使用bootstraping的方法抽取n個訓練樣本 有放回的抽樣 ...