<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 10 -- Random Forest 上節課我們主要介紹了Decision Tree模型。Decision Tree算法的核心是通過遞歸的方式,將數據集不斷進行切割,得到子分支,最終形成數的結構。C&RT算法是決策樹比較簡單和常用的一種算法,其切割的標準是根據純度來進行,每次切割都是為了讓分支內部純度最大。最終,決策樹不同的分支得到不同的![](https://img.kancloud.cn/7c/92/7c92737b373fd7f5b1c6423e745e45e8_37x18.jpg)(即樹的葉子,C&RT算法中,![](https://img.kancloud.cn/7c/92/7c92737b373fd7f5b1c6423e745e45e8_37x18.jpg)是常數)。本節課將介紹隨機森林(Random Forest)算法,它是我們之前介紹的Bagging和上節課介紹的Decision Tree的結合。 ### **Random Forest Algorithm** 首先我們來復習一下之前介紹過的兩個機器學習模型:Bagging和Decision Tree。Bagging是通過bootstrap的方式,從原始的數據集D中得到新的![](https://img.kancloud.cn/46/93/4693d1ea7feba41b4530a78aec1500fa_15x17.jpg);然后再使用一些base algorithm對每個![](https://img.kancloud.cn/46/93/4693d1ea7feba41b4530a78aec1500fa_15x17.jpg)都得到相應的![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg);最后將所有的![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)通過投票uniform的形式組合成一個G,G即為我們最終得到的模型。Decision Tree是通過遞歸形式,利用分支條件,將原始數據集D切割成一個個子樹結構,長成一棵完整的樹形結構。Decision Tree最終得到的G(x)是由相應的分支條件b(x)和分支樹![](https://img.kancloud.cn/e9/a0/e9a0510d157e0ae75380029973a9ab6a_44x18.jpg)遞歸組成。 ![這里寫圖片描述](https://img.kancloud.cn/8b/97/8b97af9d51efe0d9ee68d27d89b70ee9_560x304.jpg) Bagging和Decison Tree算法各自有一個很重要的特點。Bagging具有減少不同![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)的方差variance的特點。這是因為Bagging采用投票的形式,將所有![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)uniform結合起來,起到了求平均的作用,從而降低variance。而Decision Tree具有增大不同![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)的方差variance的特點。這是因為Decision Tree每次切割的方式不同,而且分支包含的樣本數在逐漸減少,所以它對不同的資料D會比較敏感一些,從而不同的D會得到比較大的variance。 所以說,Bagging能減小variance,而Decision Tree能增大variance。如果把兩者結合起來,能否發揮各自的優勢,起到優勢互補的作用呢?這就是我們接下來將要討論的aggregation of aggregation,即使用Bagging的方式把眾多的Decision Tree進行uniform結合起來。這種算法就叫做隨機森林(Random Forest),它將完全長成的C&RT決策樹通過bagging的形式結合起來,最終得到一個龐大的決策模型。 ![這里寫圖片描述](https://img.kancloud.cn/a6/a2/a6a2fac76e1f43d0667580f187f2f42f_578x31.jpg) Random Forest算法流程圖如下所示: ![這里寫圖片描述](https://img.kancloud.cn/14/81/1481c976fde4dcb1567795b6d2b3afc2_561x233.jpg) Random Forest算法的優點主要有三個。第一,不同決策樹可以由不同主機并行訓練生成,效率很高;第二,隨機森林算法繼承了C&RT的優點;第三,將所有的決策樹通過bagging的形式結合起來,避免了單個決策樹造成過擬合的問題。 ![這里寫圖片描述](https://img.kancloud.cn/51/d9/51d909f61648d7e54b4fd80bb8a18576_389x87.jpg) 以上是基本的Random Forest算法,我們再來看一下如何讓Random Forest中決策樹的結構更有多樣性。Bagging中,通過bootstrap的方法得到不同于D的D’,使用這些隨機抽取的資料得到不同的![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)。除了隨機抽取資料獲得不同![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)的方式之外,還有另外一種方法,就是隨機抽取一部分特征。例如,原來有100個特征,現在只從中隨機選取30個來構成決策樹,那么每一輪得到的樹都由不同的30個特征構成,每棵樹都不一樣。假設原來樣本維度是d,則只選擇其中的d’(d’小于d)個維度來建立決策樹結構。這類似是一種從d維到d’維的特征轉換,相當于是從高維到低維的投影,也就是說d’維z空間其實就是d維x空間的一個隨機子空間(subspace)。通常情況下,d’遠小于d,從而保證算法更有效率。Random Forest算法的作者建議在構建C&RT每個分支b(x)的時候,都可以重新選擇子特征來訓練,從而得到更具有多樣性的決策樹。 ![這里寫圖片描述](https://img.kancloud.cn/31/b2/31b21ae6fc4655f69139bd613e6bf2bc_580x227.jpg) 所以說,這種增強的Random Forest算法增加了random-subspace。 ![這里寫圖片描述](https://img.kancloud.cn/78/71/7871f4b1c29404e1883e98490ae0b1b1_390x31.jpg) 上面我們講的是隨機抽取特征,除此之外,還可以將現有的特征x,通過數組p進行線性組合,來保持多樣性: ![](https://img.kancloud.cn/7f/03/7f03ec0ac97f9edb54cf0e49b2d12074_93x21.jpg) 這種方法使每次分支得到的不再是單一的子特征集合,而是子特征的線性組合(權重不為1)。好比在二維平面上不止得到水平線和垂直線,也能得到各種斜線。這種做法使子特征選擇更加多樣性。值得注意的是,不同分支i下的![](https://img.kancloud.cn/cf/2d/cf2deb64e8b0e4d34902a32a5fd93b7b_14x12.jpg)是不同的,而且向量![](https://img.kancloud.cn/cf/2d/cf2deb64e8b0e4d34902a32a5fd93b7b_14x12.jpg)中大部分元素為零,因為我們選擇的只是一部分特征,這是一種低維映射。 ![這里寫圖片描述](https://img.kancloud.cn/73/fd/73fdbc730309a371981544a6520c1ecd_580x210.jpg) 所以,這里的Random Forest算法又有增強,由原來的random-subspace變成了random-combination。順便提一下,這里的random-combination類似于perceptron模型。 ![這里寫圖片描述](https://img.kancloud.cn/8f/50/8f504e0b0feac861c15eae5802c65fcf_390x55.jpg) ### **Out-Of-Bag Estimate** 上一部分我們已經介紹了Random Forest算法,而Random Forest算法重要的一點就是Bagging。接下來將繼續探討bagging中的bootstrap機制到底蘊含了哪些可以為我們所用的東西。 通過bootstrap得到新的樣本集D’,再由D’訓練不同的![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)。我們知道D’中包含了原樣本集D中的一些樣本,但也有些樣本沒有涵蓋進去。如下表所示,不同的![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)下,紅色的_表示在![](https://img.kancloud.cn/1d/17/1d17d480b05935698667ef7f95e46346_20x20.jpg)中沒有這些樣本。例如對![](https://img.kancloud.cn/03/45/034516beaf2a48cbc168d2b4c87b89e2_15x12.jpg)來說,![](https://img.kancloud.cn/9c/10/9c10a8e49ab6de105ef28ce034b6edac_54x18.jpg)和![](https://img.kancloud.cn/c4/8e/c48efe62328ff496a8b6388dc91e8573_54x18.jpg)沒有包含進去,對![](https://img.kancloud.cn/ed/97/ed9745058a4846958897fedc324a4d2d_15x12.jpg)來說,![](https://img.kancloud.cn/71/4e/714eb20038a6837666bd66a8f1cc1923_54x18.jpg)和![](https://img.kancloud.cn/9c/10/9c10a8e49ab6de105ef28ce034b6edac_54x18.jpg)沒有包含進去,等等。每個![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)中,紅色_表示的樣本被稱為out-of-bag(OOB) example。 ![這里寫圖片描述](https://img.kancloud.cn/d0/c8/d0c857da8e0fc79b75e12d543ba7f5bb_304x147.jpg) 首先,我們來計算OOB樣本到底有多少。假設bootstrap的數量N’=N,那么某個樣本![](https://img.kancloud.cn/9d/1a/9d1a5d7c1e5b2f5533cedbe4eecb4fbe_56x18.jpg)是OOB的概率是: ![](https://img.kancloud.cn/75/4c/754c4c1cb6b17a3330d5d0b1401c03f1_314x45.jpg) 其中,e是自然對數,N是原樣本集的數量。由上述推導可得,每個![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)中,OOB數目大約是![](https://img.kancloud.cn/cc/2a/cc2a99b3d79b852f1495643e4caa2f33_27x37.jpg),即大約有三分之一的樣本沒有在bootstrap中被抽到。 然后,我們將OOB與之前介紹的Validation進行對比: ![這里寫圖片描述](https://img.kancloud.cn/ef/59/ef592412d1b4349ccdfda278c95846fb_564x174.jpg) 在Validation表格中,藍色的![](https://img.kancloud.cn/a3/0a/a30a87f7e7ba63fd5fed5015675f10c8_45x15.jpg)用來得到不同的![](https://img.kancloud.cn/88/58/88587d19beb16856f3d76b49997721bc_21x16.jpg),而紅色的![](https://img.kancloud.cn/e2/3c/e23c5de491d120fad49e07e7b7243e99_33x15.jpg)用來驗證各自的![](https://img.kancloud.cn/88/58/88587d19beb16856f3d76b49997721bc_21x16.jpg)。![](https://img.kancloud.cn/a3/0a/a30a87f7e7ba63fd5fed5015675f10c8_45x15.jpg)與![](https://img.kancloud.cn/e2/3c/e23c5de491d120fad49e07e7b7243e99_33x15.jpg)沒有交集,一般![](https://img.kancloud.cn/a3/0a/a30a87f7e7ba63fd5fed5015675f10c8_45x15.jpg)是![](https://img.kancloud.cn/e2/3c/e23c5de491d120fad49e07e7b7243e99_33x15.jpg)的數倍關系。再看左邊的OOB表格,之前我們也介紹過,藍色的部分用來得到不同的![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg),而紅色的部分是OOB樣本。而我們剛剛也推導過,紅色部分大約占N的![](https://img.kancloud.cn/0b/52/0b52d5313cacd528b10c8bfbe1871223_9x37.jpg)。通過兩個表格的比較,我們發現OOB樣本類似于![](https://img.kancloud.cn/e2/3c/e23c5de491d120fad49e07e7b7243e99_33x15.jpg),那么是否能使用OOB樣本來驗證![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)的好壞呢?答案是肯定的。但是,通常我們并不需要對單個![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)進行驗證。因為我們更關心的是由許多![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)組合成的G,即使![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)表現不太好,只要G表現足夠好就行了。那么問題就轉化成了如何使用OOB來驗證G的好壞。方法是先看每一個樣本![](https://img.kancloud.cn/9d/1a/9d1a5d7c1e5b2f5533cedbe4eecb4fbe_56x18.jpg)是哪些![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)的OOB資料,然后計算其在這些![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)上的表現,最后將所有樣本的表現求平均即可。例如,樣本![](https://img.kancloud.cn/40/de/40de181c8e8de6f2d92615150e201e09_64x18.jpg)是![](https://img.kancloud.cn/ed/97/ed9745058a4846958897fedc324a4d2d_15x12.jpg),![](https://img.kancloud.cn/6a/4d/6a4dd996b473ba297c70360c44f5e386_15x12.jpg),![](https://img.kancloud.cn/76/98/76982cf47f8697c2459a055919b755ba_19x12.jpg)的OOB,則可以計算![](https://img.kancloud.cn/40/de/40de181c8e8de6f2d92615150e201e09_64x18.jpg)在![](https://img.kancloud.cn/81/3d/813da5279b8db05e302e82de34be4091_50x19.jpg)上的表現為: ![](https://img.kancloud.cn/17/0e/170e184ae0246584f09710d87b71ed60_216x19.jpg) 這種做法我們并不陌生,就像是我們之前介紹過的Leave-One-Out Cross Validation,每次只對一個樣本進行![](https://img.kancloud.cn/09/8e/098e925d2a6161ee132742fdbfb96066_18x15.jpg)的驗證一樣,只不過這里選擇的是每個樣本是哪些![](https://img.kancloud.cn/7f/6b/7f6b19f632c7de7dc0365d013fa05113_14x12.jpg)的OOB,然后再分別進行![](https://img.kancloud.cn/f1/98/f1985f74a8b543da0d619c26497aec19_48x19.jpg)的驗證。每個樣本都當成驗證資料一次(與留一法相同),最后計算所有樣本的平均表現: ![](https://img.kancloud.cn/3b/83/3b83e7a4205101f26d1f0c22864fbc12_258x54.jpg) ![](https://img.kancloud.cn/9e/15/9e15395feb56c7b30e3da3f87627fe28_59x18.jpg)估算的就是G的表現好壞。我們把![](https://img.kancloud.cn/f0/d6/f0d68cc342aa09cb0ceb1060c92c1813_31x15.jpg)稱為bagging或者Random Forest的self-validation。 這種self-validation相比于validation來說還有一個優點就是它不需要重復訓練。如下圖左邊所示,在通過![](https://img.kancloud.cn/e2/3c/e23c5de491d120fad49e07e7b7243e99_33x15.jpg)選擇到表現最好的![](https://img.kancloud.cn/31/af/31afa957326e67a9a705caa63bb776b8_25x16.jpg)之后,還需要在![](https://img.kancloud.cn/a3/0a/a30a87f7e7ba63fd5fed5015675f10c8_45x15.jpg)和![](https://img.kancloud.cn/e2/3c/e23c5de491d120fad49e07e7b7243e99_33x15.jpg)組成的所有樣本集D上重新對該模型![](https://img.kancloud.cn/31/af/31afa957326e67a9a705caa63bb776b8_25x16.jpg)訓練一次,以得到最終的模型系數。但是self-validation在調整隨機森林算法相關系數并得到最小的![](https://img.kancloud.cn/f0/d6/f0d68cc342aa09cb0ceb1060c92c1813_31x15.jpg)之后,就完成了整個模型的建立,無需重新訓練模型。隨機森林算法中,self-validation在衡量G的表現上通常相當準確。 ![這里寫圖片描述](https://img.kancloud.cn/4d/8d/4d8dba2f8ae1a827e8b4df83e9dc46ba_561x337.jpg) ### **Feature Selection** 如果樣本資料特征過多,假如有10000個特征,而我們只想從中選取300個特征,這時候就需要舍棄部分特征。通常來說,需要移除的特征分為兩類:一類是冗余特征,即特征出現重復,例如“年齡”和“生日”;另一類是不相關特征,例如疾病預測的時候引入的“保險狀況”。這種從d維特征到d’維特征的subset-transform ![](https://img.kancloud.cn/14/10/141069974357dc052c30231e17897586_36x18.jpg)稱為Feature Selection,最終使用這些d’維的特征進行模型訓練。 ![這里寫圖片描述](https://img.kancloud.cn/11/05/1105f98c51939276e71260210fdb609f_580x137.jpg) 特征選擇的優點是: * **提高效率,特征越少,模型越簡單** * **正則化,防止特征過多出現過擬合** * **去除無關特征,保留相關性大的特征,解釋性強** 同時,特征選擇的缺點是: * **篩選特征的計算量較大** * **不同特征組合,也容易發生過擬合** * **容易選到無關特征,解釋性差** ![這里寫圖片描述](https://img.kancloud.cn/66/c2/66c2ae64813137ddda7ad7523dc7f3d4_560x182.jpg) 值得一提的是,在decision tree中,我們使用的decision stump切割方式也是一種feature selection。 那么,如何對許多維特征進行篩選呢?我們可以通過計算出每個特征的重要性(即權重),然后再根據重要性的排序進行選擇即可。 ![這里寫圖片描述](https://img.kancloud.cn/45/54/455473c4343d5925f9a1d8f6eaeceadc_580x114.jpg) 這種方法在線性模型中比較容易計算。因為線性模型的score是由每個特征經過加權求和而得到的,而加權系數的絕對值![](https://img.kancloud.cn/7d/6f/7d6fc97177a97fc895b14d04da6e5c5b_24x19.jpg)正好代表了對應特征![](https://img.kancloud.cn/42/c9/42c9d02a8d8f13696994eb0204c82e63_14x11.jpg)的重要性為多少。![](https://img.kancloud.cn/7d/6f/7d6fc97177a97fc895b14d04da6e5c5b_24x19.jpg)越大,表示對應特征![](https://img.kancloud.cn/42/c9/42c9d02a8d8f13696994eb0204c82e63_14x11.jpg)越重要,則該特征應該被選擇。w的值可以通過對已有的數據集![](https://img.kancloud.cn/17/4f/174f1d79d7d17d39568ff9b492449660_49x18.jpg)建立線性模型而得到。 ![這里寫圖片描述](https://img.kancloud.cn/e4/3d/e43db825d2db839f0de018cfceb6b0c6_580x180.jpg) 然而,對于非線性模型來說,因為不同特征可能是非線性交叉在一起的,所以計算每個特征的重要性就變得比較復雜和困難。例如,Random Forest就是一個非線性模型,接下來,我們將討論如何在RF下進行特征選擇。 RF中,特征選擇的核心思想是random test。random test的做法是對于某個特征,如果用另外一個隨機值替代它之后的表現比之前更差,則表明該特征比較重要,所占的權重應該較大,不能用一個隨機值替代。相反,如果隨機值替代后的表現沒有太大差別,則表明該特征不那么重要,可有可無。所以,通過比較某特征被隨機值替代前后的表現,就能推斷出該特征的權重和重要性。 那么random test中的隨機值如何選擇呢?通常有兩種方法:一是使用uniform或者gaussian抽取隨機值替換原特征;一是通過permutation的方式將原來的所有N個樣本的第i個特征值重新打亂分布(相當于重新洗牌)。比較而言,第二種方法更加科學,保證了特征替代值與原特征的分布是近似的(只是重新洗牌而已)。這種方法叫做permutation test(隨機排序測試),即在計算第i個特征的重要性的時候,將N個樣本的第i個特征重新洗牌,然后比較D和![](https://img.kancloud.cn/ae/ae/aeae67bd770dd58259edfe76fa7c51dc_32x18.jpg)表現的差異性。如果差異很大,則表明第i個特征是重要的。 ![這里寫圖片描述](https://img.kancloud.cn/a5/53/a5537a21eae977b52c79c5c1bed6d4a7_580x206.jpg) 知道了permutation test的原理后,接下來要考慮的問題是如何衡量上圖中的performance,即替換前后的表現。顯然,我們前面介紹過performance可以用![](https://img.kancloud.cn/9e/15/9e15395feb56c7b30e3da3f87627fe28_59x18.jpg)來衡量。但是,對于N個樣本的第i個特征值重新洗牌重置的![](https://img.kancloud.cn/ae/ae/aeae67bd770dd58259edfe76fa7c51dc_32x18.jpg),要對它進行重新訓練,而且每個特征都要重復訓練,然后再與原D的表現進行比較,過程非常繁瑣。為了簡化運算,RF的作者提出了一種方法,就是把permutation的操作從原來的training上移到了OOB validation上去,記為![](https://img.kancloud.cn/ff/b1/ffb129ab06d90b930caf1a0f991dd727_165x26.jpg)。也就是說,在訓練的時候仍然使用D,但是在OOB驗證的時候,將所有的OOB樣本的第i個特征重新洗牌,驗證G的表現。這種做法大大簡化了計算復雜度,在RF的feature selection中應用廣泛。 ![這里寫圖片描述](https://img.kancloud.cn/39/66/39667dc4b428d26b449c8a5fb1b90b6f_580x144.jpg) ### **Random Forest in Action** 最后,我們通過實際的例子來看一下RF的特點。首先,仍然是一個二元分類的例子。如下圖所示,左邊是一個C&RT樹沒有使用bootstrap得到的模型分類效果,其中不同特征之間進行了隨機組合,所以有斜線作為分類線;中間是由bootstrap(N’=N/2)后生成的一棵決策樹組成的隨機森林,圖中加粗的點表示被bootstrap選中的點;右邊是將一棵決策樹進行bagging后的分類模型,效果與中間圖是一樣的,都是一棵樹。 ![這里寫圖片描述](https://img.kancloud.cn/31/5e/315e7cfa17d3bfd3d5a60376ba92779a_576x247.jpg) 當t=100,即選擇了100棵樹時,中間的模型是第100棵決策樹構成的,還是只有一棵樹;右邊的模型是由100棵決策樹bagging起來的,如下圖所示: ![這里寫圖片描述](https://img.kancloud.cn/0a/9f/0a9f0460dbe2d8e27c96cdf2151c7e43_579x253.jpg) 當t=200時: ![這里寫圖片描述](https://img.kancloud.cn/2a/58/2a5823b8192a6859296a83ad2a8bdba8_579x255.jpg) 當t=300時: ![這里寫圖片描述](https://img.kancloud.cn/6c/95/6c9567cdde9c330ef66e0c8e8fef2893_578x246.jpg) 當t=400時: ![這里寫圖片描述](https://img.kancloud.cn/a3/b1/a3b13f563ec84cfef7cb93c18c77d436_583x248.jpg) 當t=500時: ![這里寫圖片描述](https://img.kancloud.cn/08/bc/08bc0c3225256957eb3ca1055e3be89b_578x246.jpg) 當t=600時: ![這里寫圖片描述](https://img.kancloud.cn/9a/79/9a79b3cbdd256be4bf903d6612f2433c_580x254.jpg) 當t=700時: ![這里寫圖片描述](https://img.kancloud.cn/58/6b/586b904a714358fbd1a60e767c5399be_580x245.jpg) 當t=800時: ![這里寫圖片描述](https://img.kancloud.cn/74/48/7448057bb6b0e8acc662c931495a229c_580x250.jpg) 當t=900時: ![這里寫圖片描述](https://img.kancloud.cn/69/b9/69b9dac275523fcf87910865abf01338_575x248.jpg) 當t=1000時: ![這里寫圖片描述](https://img.kancloud.cn/f3/d9/f3d9d3e7ccf70caf9a3e3b06a3a7e880_577x246.jpg) 隨著樹木個數的增加,我們發現,分界線越來越光滑而且得到了large-margin-like boundary,類似于SVM一樣的效果。也就是說,樹木越多,分類器的置信區間越大。 然后,我們再來看一個比較復雜的例子,二維平面上分布著許多離散點,分界線形如sin函數。當只有一棵樹的時候(t=1),下圖左邊表示單一樹組成的RF,右邊表示所有樹bagging組合起來構成的RF。因為只有一棵樹,所以左右兩邊效果一致。 ![這里寫圖片描述](https://img.kancloud.cn/ea/03/ea03e4e005c5640c91599dcafd5276dd_515x268.jpg) 當t=6時: ![這里寫圖片描述](https://img.kancloud.cn/ee/35/ee351627532c2173f0958003a9b49300_514x277.jpg) 當t=11時: ![這里寫圖片描述](https://img.kancloud.cn/62/e9/62e9f7cb67cdcb83589c5ba367eef8a4_521x274.jpg) 當t=16時: ![這里寫圖片描述](https://img.kancloud.cn/b6/68/b66810f428eec4d95117412d818fe31a_517x275.jpg) 當t=21時: ![這里寫圖片描述](https://img.kancloud.cn/7e/7c/7e7c579bdec2a7693804b25ba6388998_514x273.jpg) 可以看到,當RF由21棵樹構成的時候,分界線就比較平滑了,而且它的邊界比單一樹構成的RF要robust得多,更加平滑和穩定。 最后,基于上面的例子,再讓問題復雜一點:在平面上添加一些隨機噪聲。當t=1時,如下圖所示: ![這里寫圖片描述](https://img.kancloud.cn/4c/65/4c65c8e5a320d70221774e296d6c8af1_517x273.jpg) 當t=6時: ![這里寫圖片描述](https://img.kancloud.cn/cb/6b/cb6bdc8bec4f99307ef8bda0178a1fdd_516x273.jpg) 當t=11時: ![這里寫圖片描述](https://img.kancloud.cn/45/d6/45d6804df888d28e3b0cf75592d89df0_515x273.jpg) 當t=16時: ![這里寫圖片描述](https://img.kancloud.cn/f1/7a/f17a14d36252c623e066cfeaf03eac05_516x275.jpg) 當t=21時: ![這里寫圖片描述](https://img.kancloud.cn/8f/fe/8ffe1b05fc329361810cc4a1ec638c71_513x272.jpg) 從上圖中,我們發現21棵樹的時候,隨機noise的影響基本上能夠修正和消除。這種bagging投票的機制能夠保證較好的降噪性,從而得到比較穩定的結果。 經過以上三個例子,我們發現RF中,樹的個數越多,模型越穩定越能表現得好。在實際應用中,應該盡可能選擇更多的樹。值得一提的是,RF的表現同時也與random seed有關,即隨機的初始值也會影響RF的表現。 ![這里寫圖片描述](https://img.kancloud.cn/24/8f/248f5e7107248cdcd8514f6b329e5bd5_390x99.jpg) ### **總結:** 本節課主要介紹了Random Forest算法模型。RF將bagging與decision tree結合起來,通過把眾多的決策樹組進行組合,構成森林的形式,利用投票機制讓G表現最佳,分類模型更穩定。其中為了讓decision tree的隨機性更強一些,可以采用randomly projected subspaces操作,即將不同的features線性組合起來,從而進行各式各樣的切割。同時,我們也介紹了可以使用OOB樣本來進行self-validation,然后可以使用self-validation來對每個特征進行permutaion test,得到不同特征的重要性,從而進行feature selection。總的來說,RF算法能夠得到比較平滑的邊界,穩定性強,前提是有足夠多的樹。 **_注明:_** 文章中所有的圖片均來自臺灣大學林軒田《機器學習技法》課程
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看