機器學習-初級入門(分類算法-隨機森林)

一、構建隨機森林中的樹

  1. 構建隨機森林
    假設共有N個樣本,M個特徵。這裏我們講“隨機”的含義。對於每棵樹都有放回的隨機抽取訓練樣本,這裏抽取隨機抽取的樣本作爲訓練集,再有放回的隨機選取個特徵作爲這棵樹的分枝的依據,這裏要注意。這就是“隨機”兩層含義,一個是隨機選取樣本,一個是隨機選取特徵。這樣就構建出了一棵樹,需要注意的是這裏生成的樹都是完全生長的樹(關於爲什麼是要完全生長的樹,我認爲的原因是便於計算每個特徵的重要程度,剪枝的話將無法進行計算)。一棵樹的構建方式如下圖所示:
    在這裏插入圖片描述
    隨機森林通過迭代使得森林中的樹不斷變得優秀(森林中的樹選用更好的特徵進行分枝)。上面的一個森林相當於第一次迭代得到的森林。

二、隨機森林迭代

  1. 如何選出優秀的特徵
    隨機森林的思想是構建出優秀的樹,優秀的樹需要優秀的特徵。那我們需要知道各個特徵的重要程度。
    對於每一棵樹都有m個特徵,要知道某個特徵在這個樹中是否起到了作用,可以隨機改變這個特徵的值,使得“這棵樹中有沒有這個特徵都無所謂”,之後比較改變前後的測試集誤差率,誤差率的差距作爲該特徵在該樹中的重要程度,測試集即爲該樹抽取2N/3樣本之後剩餘的樣本(袋外樣本)(由袋外樣本做測試集造成的誤差稱爲袋外誤差)。
    在一棵樹中對於m個特徵都計算一次,就可以算出m個特徵在該樹中的重要程度。我們可以計算出所有樹中的特徵在各自樹中的重要程度。但這隻能代表這些特徵在樹中的重要程度不能代表特徵在整個森林中的重要程度。那我們怎麼計算各特徵在森林中的重要程度呢?每個特徵在多棵數中出現,取這個特徵值在多棵樹中的重要程度的均值即爲該特徵在森林中的重要程度。如下式:
    在這裏插入圖片描述
    其中ntree表示特徵AiA_i在森林中出現的次數。errOOBt1B_{t1}表示第t棵樹中AiA_{i}屬性值改變之後的袋外誤差,errOOBt2errOOB_{t2}表示第t棵樹中正常AiA_{i}值的袋外誤差。可以用下圖來表示:
    在這裏插入圖片描述
    這樣就得到了所有特徵在森林中的重要程度。將所有的特徵按照重要程度排序,去除森林中重要程度低的部分特徵,得到新的特徵集。這時相當於我們回到了原點,這算是真正意義上完成了一次迭代。

三、選擇優秀的森林

  1. 多次迭代過程
    按照上面的步驟迭代多次,逐步去除相對較差的特徵,每次都會生成新的森林,直到剩餘的特徵數爲m爲止。最後再從所有迭代的森林中選出最好的森林。迭代的過程如下圖所示:
    在這裏插入圖片描述
    每次迭代都丟掉較差的特徵,最終留下自己想保留的特徵個數。

  2. 選擇預測結果

    得到了每次迭代出的森林之後,我們需要選擇出最優秀的森林(隨機森林畢竟是集成學習,所以最後的森林不一定是最優的,一個諸葛亮不一定頂的上三個臭皮匠)。那麼我們怎麼比較這些森林的好壞呢?這時我們需要引入一個指標來評價一個森林的好壞,上面的用於評價套外樣本在樹中的誤差率,這裏的評價套外樣本在森林中的誤差率。(因爲都是利用套外樣本,所以名字都是(out-of-bag))
    我的理解是將套外樣本帶入每次迭代特徵篩選的森林中通過多個樹的決策然後計算在這層迭代的森林中的誤差率,然後依次類推把在每次迭代的誤差率都算出來最終誤差最小的作爲最終的優秀森林
    每個樣本在多棵樹中是套外樣本,通過多棵樹的預測這個樣本的結果。預測方式如下圖所示:
    在這裏插入圖片描述
    預測出所有所有樣本的結果之後與真實值進行比較,就可以得到這個森林的套外誤差率。選擇套外誤差率最小的森林作爲最終的隨機森林模型。

四、Bagging算法

  1. 隨機森林和bagging的關係?
    隨機森林使用的是bagging算法,通過bagging進行特徵篩選、最優森林選擇。我個人認爲可通過bagging算法直接構建森林進行預測,不經過特徵篩選過程。

  2. 介紹Bagging:

    Bagging即套袋法,其算法過程如下:
    a. 從原始樣本集中抽取訓練集。每輪從原始樣本集中使用Bootstraping的方法抽取n個訓練樣本(在訓練集中,有些樣本可能被多次抽取到,而有些樣本可能一次都沒有被抽中)。共進行k輪抽取,得到k個訓練集。(k個訓練集之間是相互獨立的)

    b. 每次使用一個訓練集得到一個模型,k個訓練集共得到k個模型。(注:這裏並沒有具體的分類算法或迴歸方法,我們可以根據具體問題採用不同的分類或迴歸方法,如決策樹、感知器等)

    c. 對分類問題:將上步得到的k個模型採用投票的方式得到分類結果;對迴歸問題,計算上述模型的均值作爲最後的結果。(所有模型的重要性相同)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章