Random Forest算法简介
轉(zhuǎn)自JoinQuant量化課堂
一、相關(guān)概念
分類(lèi)器:分類(lèi)器就是給定一個(gè)樣本的數(shù)據(jù),判定這個(gè)樣本屬于哪個(gè)類(lèi)別的算法。例如在股票漲跌預(yù)測(cè)中,我們認(rèn)為前一天的交易量和收盤(pán)價(jià)對(duì)于第二天的漲跌是有影響的,那么分類(lèi)器就是通過(guò)樣本的交易量和收盤(pán)價(jià)預(yù)測(cè)第二天的漲跌情況的算法。
分裂:在決策樹(shù)的訓(xùn)練過(guò)程中,需要一次次的將訓(xùn)練數(shù)據(jù)集分裂成兩個(gè)子數(shù)據(jù)集,這個(gè)過(guò)程就叫做分裂。
特征:在分類(lèi)問(wèn)題中,輸入到分類(lèi)器中的數(shù)據(jù)叫做特征。以上面的股票漲跌預(yù)測(cè)問(wèn)題為例,特征就是前一天的交易量和收盤(pán)價(jià)。
待選特征:在決策樹(shù)的構(gòu)建過(guò)程中,需要按照一定的次序從全部的特征中選取特征。待選特征就是在目前的步驟之前還沒(méi)有被選擇的特征的集合。例如,全部的特征是 ABCDE,第一步的時(shí)候,待選特征就是ABCDE,第一步選擇了C,那么第二步的時(shí)候,待選特征就是ABDE。
分裂特征:接待選特征的定義,每一次選取的特征就是分裂特征,例如,在上面的例子中,第一步的分裂特征就是C。因?yàn)檫x出的這些特征將數(shù)據(jù)集分成了一個(gè)個(gè)不相交的部分,所以叫它們分裂特征。
二、決策樹(shù)的構(gòu)建過(guò)程
要說(shuō)隨機(jī)森林,必須先講決策樹(shù)。決策樹(shù)是一種基本的分類(lèi)器,一般是將特征分為兩類(lèi)(決策樹(shù)也可以用來(lái)回歸,不過(guò)本文中暫且不表)。構(gòu)建好的決策樹(shù)呈樹(shù)形結(jié)構(gòu),可以認(rèn)為是if-then規(guī)則的集合,主要優(yōu)點(diǎn)是模型具有可讀性,分類(lèi)速度快。
我們用選擇量化工具的過(guò)程形象的展示一下決策樹(shù)的構(gòu)建。假設(shè)現(xiàn)在要選擇一個(gè)優(yōu)秀的量化工具來(lái)幫助我們更好的炒股,怎么選呢?
第一步:看看工具提供的數(shù)據(jù)是不是非常全面,數(shù)據(jù)不全面就不用。
第二步:看看工具提供的API是不是好用,API不好用就不用。
第三步:看看工具的回測(cè)過(guò)程是不是靠譜,不靠譜的回測(cè)出來(lái)的策略也不敢用啊。
第四步:看看工具支不支持模擬交易,光回測(cè)只是能讓你判斷策略在歷史上有用沒(méi)有,正式運(yùn)行前起碼需要一個(gè)模擬盤(pán)吧。
這樣,通過(guò)將“數(shù)據(jù)是否全面”,“API是否易用”,“回測(cè)是否靠譜”,“是否支持模擬交易”將市場(chǎng)上的量化工具貼上兩個(gè)標(biāo)簽,“使用”和“不使用”。
上面就是一個(gè)決策樹(shù)的構(gòu)建,邏輯可以用下圖表示:
在上圖中,綠顏色框中的“數(shù)據(jù)”“API”“回測(cè)”“模擬交易”就是這個(gè)決策樹(shù)中的特征。如果特征的順序不同,同樣的數(shù)據(jù)集構(gòu)建出的決策樹(shù)也可能不同。特征的順序分別是“數(shù)據(jù)”“API”“回測(cè)”“模擬交易”。如果我們選取特征的順序分別是“數(shù)據(jù)”“模擬交易”“API”“回測(cè)”,那么構(gòu)建的決策樹(shù)就完全不同了。
可以看到,決策樹(shù)的主要工作,就是選取特征對(duì)數(shù)據(jù)集進(jìn)行劃分,最后把數(shù)據(jù)貼上兩類(lèi)不同的標(biāo)簽。如何選取最好的特征呢?還用上面選擇量化工具的例子:假設(shè)現(xiàn)在市場(chǎng)上有100個(gè)量化工具作為訓(xùn)練數(shù)據(jù)集,這些量化工具已經(jīng)被貼上了“可用”和“不可用”的標(biāo)簽。
我們首先嘗試通過(guò)“API是否易用”將數(shù)據(jù)集分為兩類(lèi);發(fā)現(xiàn)有90個(gè)量化工具的API是好用的,10個(gè)量化工具的API是不好用的。而這90個(gè)量化工具中,被貼上“可以使用”標(biāo)簽的占了40個(gè),“不可以使用”標(biāo)簽的占了50個(gè),那么,通過(guò)“API是否易用”對(duì)于數(shù)據(jù)的分類(lèi)效果并不是特別好。因?yàn)?#xff0c;給你一個(gè)新的量化工具,即使它的API是易用的,你還是不能很好貼上“使用”的標(biāo)簽。
再假設(shè),同樣的100個(gè)量化工具,通過(guò)“是否支持模擬交易”可以將數(shù)據(jù)集分為兩類(lèi),其中一類(lèi)有40個(gè)量化工具數(shù)據(jù),這40個(gè)量化工具都支持模擬交易,都最終被貼上了“使用”的標(biāo)簽,另一類(lèi)有60個(gè)量化工具,都不支持模擬交易,也都最終被貼上了“不使用”的標(biāo)簽。如果一個(gè)新的量化工具支持模擬交易,你就能判斷這個(gè)量化工具是可以使用。我們認(rèn)為,通過(guò)“是否支持模擬交易”對(duì)于數(shù)據(jù)的分類(lèi)效果就很好。
在現(xiàn)實(shí)應(yīng)用中,數(shù)據(jù)集往往不能達(dá)到上述“是否支持模擬交易”的分類(lèi)效果。所以我們用不同的準(zhǔn)則衡量特征的貢獻(xiàn)程度。主流準(zhǔn)則的列舉3個(gè):ID3算法(J. Ross Quinlan于1986年提出),采用信息增益最大的特征;C4.5算法(J. Ross Quinlan于1993年提出)采用信息增益比選擇特征;CART算法(Breiman等人于1984年提出)利用基尼指數(shù)最小化準(zhǔn)則進(jìn)行特征選擇。
(如果想進(jìn)行更深一步的學(xué)習(xí),可以參考《統(tǒng)計(jì)學(xué)習(xí)方法》或者相關(guān)博文進(jìn)行更一步的學(xué)習(xí)。未來(lái)的量化課堂也會(huì)涉及這方面的內(nèi)容。)
三、隨機(jī)森林的構(gòu)建過(guò)程
決策樹(shù)相當(dāng)于一個(gè)大師,通過(guò)自己在數(shù)據(jù)集中學(xué)到的知識(shí)對(duì)于新的數(shù)據(jù)進(jìn)行分類(lèi)。但是俗話說(shuō)得好,一個(gè)諸葛亮,玩不過(guò)三個(gè)臭皮匠。隨機(jī)森林就是希望構(gòu)建多個(gè)臭皮匠,希望最終的分類(lèi)效果能夠超過(guò)單個(gè)大師的一種算法。
那隨機(jī)森林具體如何構(gòu)建呢?有兩個(gè)方面:數(shù)據(jù)的隨機(jī)性選取,以及待選特征的隨機(jī)選取。
數(shù)據(jù)的隨機(jī)選取:
首先,從原始的數(shù)據(jù)集中采取有放回的抽樣,構(gòu)造子數(shù)據(jù)集,子數(shù)據(jù)集的數(shù)據(jù)量是和原始數(shù)據(jù)集相同的。不同子數(shù)據(jù)集的元素可以重復(fù),同一個(gè)子數(shù)據(jù)集中的元素也可以重復(fù)。第二,利用子數(shù)據(jù)集來(lái)構(gòu)建子決策樹(shù),將這個(gè)數(shù)據(jù)放到每個(gè)子決策樹(shù)中,每個(gè)子決策樹(shù)輸出一個(gè)結(jié)果。最后,如果有了新的數(shù)據(jù)需要通過(guò)隨機(jī)森林得到分類(lèi)結(jié)果,就可以通過(guò)對(duì)子決策樹(shù)的判斷結(jié)果的投票,得到隨機(jī)森林的輸出結(jié)果了。如下圖,假設(shè)隨機(jī)森林中有3棵子決策樹(shù),2棵子樹(shù)的分類(lèi)結(jié)果是A類(lèi),1棵子樹(shù)的分類(lèi)結(jié)果是B類(lèi),那么隨機(jī)森林的分類(lèi)結(jié)果就是A類(lèi)。
待選特征的隨機(jī)選取:
與數(shù)據(jù)集的隨機(jī)選取類(lèi)似,隨機(jī)森林中的子樹(shù)的每一個(gè)分裂過(guò)程并未用到所有的待選特征,而是從所有的待選特征中隨機(jī)選取一定的特征,之后再在隨機(jī)選取的特征中選取最優(yōu)的特征。這樣能夠使得隨機(jī)森林中的決策樹(shù)都能夠彼此不同,提升系統(tǒng)的多樣性,從而提升分類(lèi)性能。
下圖中,藍(lán)色的方塊代表所有可以被選擇的特征,也就是目前的待選特征。黃色的方塊是分裂特征。左邊是一棵決策樹(shù)的特征選取過(guò)程,通過(guò)在待選特征中選取最優(yōu)的分裂特征(別忘了前文提到的ID3算法,C4.5算法,CART算法等等),完成分裂。右邊是一個(gè)隨機(jī)森林中的子樹(shù)的特征選取過(guò)程。
總結(jié)
以上是生活随笔為你收集整理的Random Forest算法简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flask-restful接口
- 下一篇: android打印处理服务已停止,Pri