趙明梅 金洋洋 王語(yǔ)嘉 曾孟佳
摘要:提出了一種運(yùn)用以決策樹為基學(xué)習(xí)器的隨機(jī)森林輔助用戶做出決策的方法。根據(jù)待決策的問(wèn)題,多次從收集的數(shù)據(jù)中隨機(jī)抽取樣本和特征,生成多個(gè)訓(xùn)練集,通過(guò)取眾數(shù)或取均值的形式確定結(jié)果。人們只需填入對(duì)應(yīng)的屬性值,便會(huì)通過(guò)上述建立的決策模型獲得結(jié)果。為選擇困難人群提供科學(xué)決策的方式,幫助其緩解面臨決策時(shí)的心理壓力,同時(shí)提供了一個(gè)較為正確的決策意見,對(duì)其身心發(fā)展有重大意義。
關(guān)鍵詞:決策樹;隨機(jī)森林;選擇困難
中圖分類號(hào):TP393文獻(xiàn)標(biāo)志碼:A文章編號(hào):1008-1739(2021)22-56-4
0引言
選擇是人們?nèi)粘I钪谐3R鎸?duì)的事情,而擔(dān)心錯(cuò)過(guò)最佳選擇而舉棋不定和由于缺乏目標(biāo)而無(wú)法決策,是人們?cè)谶x擇時(shí)的常見表現(xiàn)。中國(guó)青年報(bào)社曾對(duì)2 007名受訪者開展了一項(xiàng)調(diào)查,數(shù)據(jù)顯示84.7%的受訪者自稱有選擇困難癥,其中80、90及00后占比高達(dá)79.6%,而最容易出現(xiàn)選擇困難的前3名場(chǎng)景分別為購(gòu)物選商品、吃飯選餐廳和菜品以及規(guī)劃出游行程,分別占54.0%,53.4%,42.5%。同時(shí)44.7%的受訪者感覺選擇困難癥浪費(fèi)時(shí)間和精力,使自己心情煩躁;41.2%的受訪者指出選擇困難癥會(huì)讓自己對(duì)生活缺少掌控感[1]。
基于上述問(wèn)題,本文提出通過(guò)軟件對(duì)需要做出選擇問(wèn)題的背景信息做運(yùn)算,用其結(jié)果幫助有選擇困難的人群做出決策,提高效率。其基本思想是根據(jù)待決策問(wèn)題,多次從收集的數(shù)據(jù)中隨機(jī)抽取樣本和特征,生成多個(gè)訓(xùn)練集,將訓(xùn)練數(shù)據(jù)投入隨機(jī)森林,通過(guò)取眾數(shù)或取均值的形式確定結(jié)果。
1隨機(jī)森林算法
1.1決策樹
決策樹[2]是有監(jiān)督的機(jī)器學(xué)習(xí)算法,是一種與流程圖相似的樹狀結(jié)構(gòu),主要解決分類問(wèn)題[3]。這種方法根據(jù)數(shù)據(jù)屬性特征對(duì)其進(jìn)行分類,記錄為做出決策而進(jìn)行的一系列選擇過(guò)程。
1.2決策樹的構(gòu)建
決策樹由根節(jié)點(diǎn)、內(nèi)部節(jié)點(diǎn)、葉子節(jié)點(diǎn)組成。根節(jié)點(diǎn)無(wú)入邊,有多條出邊,是決策樹最上面的節(jié)點(diǎn),同時(shí)也是決策判斷的起始點(diǎn)。節(jié)點(diǎn)的每一條出邊對(duì)應(yīng)一個(gè)內(nèi)部節(jié)點(diǎn)或者葉子節(jié)點(diǎn)。內(nèi)部節(jié)點(diǎn)代表問(wèn)題的決策,通常對(duì)應(yīng)決策所依據(jù)的屬性。每一個(gè)葉子節(jié)點(diǎn)代表分類的標(biāo)簽值,決策樹判斷過(guò)程實(shí)際上就是決策樹由上到下的一個(gè)遍歷過(guò)程,每一個(gè)節(jié)點(diǎn)不同的判斷結(jié)果會(huì)引入不同的分支,最后進(jìn)入不同的葉子節(jié)點(diǎn),獲得不同的標(biāo)簽值。
式中,表示通過(guò)第項(xiàng)屬性判斷標(biāo)簽的正確率;表示屬性的個(gè)數(shù)。根據(jù)某一項(xiàng)基尼系數(shù)非常小的屬性對(duì)決策進(jìn)行判斷,則認(rèn)為這一屬性是一項(xiàng)準(zhǔn)確性高的區(qū)分類別的屬性。在構(gòu)建決策樹分類模型時(shí),首先計(jì)算不同屬性基尼系數(shù)的加權(quán)平均,選擇最小的一個(gè)屬性作為根節(jié)點(diǎn),基尼系數(shù)的大小隨事件發(fā)生的概率而改變,基尼指數(shù)圖如圖1所示。每確定一個(gè)節(jié)點(diǎn)便對(duì)數(shù)據(jù)進(jìn)行測(cè)試。在后續(xù)的構(gòu)建中,若節(jié)點(diǎn)中對(duì)象均為同類,則無(wú)需繼續(xù)劃分,直接給出標(biāo)簽值;若節(jié)點(diǎn)中對(duì)象為不同類,則在剩余屬性中選擇基尼系數(shù)最小的作為當(dāng)前節(jié)點(diǎn)繼續(xù)劃分,直到?jīng)Q策樹各節(jié)點(diǎn)中對(duì)象均為同類或者所有屬性都被用于構(gòu)建決策樹。
1.3決策樹的剪枝
如果決策樹在構(gòu)建中考慮了所有的訓(xùn)練數(shù)據(jù)集,得到的決策樹就會(huì)很龐大。雖然這樣可以保證訓(xùn)練數(shù)據(jù)集的決策正確率達(dá)到100%,但是由于過(guò)多考慮所有數(shù)據(jù),將數(shù)據(jù)分割的過(guò)于零散,致使決策樹學(xué)習(xí)到一些噪聲點(diǎn)和錯(cuò)誤點(diǎn),出現(xiàn)過(guò)擬合現(xiàn)象。
通過(guò)剪枝可以解決過(guò)擬合問(wèn)題,決策樹有2種常用的修剪辦法[4]:
①預(yù)剪枝:在構(gòu)造決策樹的過(guò)程中,每個(gè)節(jié)點(diǎn)在劃分前先進(jìn)行估計(jì),若當(dāng)前的劃分不能讓決策樹在驗(yàn)證集上的準(zhǔn)確率得到提高,則停止劃分,并將節(jié)點(diǎn)標(biāo)記為葉子節(jié)點(diǎn)。假設(shè)要?jiǎng)澐值膶傩詾閍,劃分在a屬性下的樣本集合為。若劃分屬性a,則將集合劃分成多個(gè)子集,每個(gè)子集中個(gè)數(shù)最多的類別作為該子集的標(biāo)簽,然后計(jì)算驗(yàn)證集上的準(zhǔn)確率1;若不劃分屬性a,則將集合中個(gè)數(shù)最多的類別作為屬性a的標(biāo)簽,計(jì)算驗(yàn)證集上的準(zhǔn)確率2,若1< 2,則停止屬性a的劃分。
②后剪枝:在決策樹構(gòu)建完之后,自下向上地對(duì)每個(gè)非葉子節(jié)點(diǎn)進(jìn)行考察,選擇該節(jié)點(diǎn)中個(gè)數(shù)最多的類別作為標(biāo)簽,試將節(jié)點(diǎn)的子樹替換為葉子節(jié)點(diǎn),若能夠使得決策樹在驗(yàn)證集上的準(zhǔn)確率升高,則將該子樹替換成葉子節(jié)點(diǎn)。
對(duì)比2種方法,預(yù)剪枝可能造成欠擬合,后剪枝的訓(xùn)練開銷比較大。后剪枝通常比預(yù)剪枝保留的分支多,造成欠擬合的可能性很小,但后剪枝過(guò)程是自下向上的,其訓(xùn)練時(shí)間開銷比預(yù)剪枝大。
1.4隨機(jī)森林算法
隨機(jī)森林最早是由Leo Breiman和Adele Cutler[5]提出,是一種利用多棵樹對(duì)樣本進(jìn)行訓(xùn)練、預(yù)測(cè)的分類器,兼顧了解決回歸問(wèn)題和分類問(wèn)題的能力。隨機(jī)森林算法由一定數(shù)量的決策樹組成,決策樹的數(shù)量越大,算法的魯棒性越強(qiáng),精度越高[6]。隨機(jī)森林在Bagging算法的基礎(chǔ)上,在決策樹的構(gòu)建中加入隨機(jī)屬性的選擇。隨機(jī)森林中的每一顆決策樹都是隨機(jī)抽取訓(xùn)練集的一小部分進(jìn)行訓(xùn)練,即看問(wèn)題的角度不一樣,以保證每個(gè)決策樹的輸出相似但不一樣。
在隨機(jī)森林內(nèi)決策樹的訓(xùn)練過(guò)程中,從完整數(shù)據(jù)集中有放回地進(jìn)行次采樣,每次隨機(jī)取出個(gè)樣本,個(gè)特征,生成個(gè)訓(xùn)練集,分別訓(xùn)練構(gòu)成個(gè)決策樹模型。給定一個(gè)新的識(shí)別對(duì)象,隨機(jī)森林中的每一棵樹都會(huì)根據(jù)這個(gè)對(duì)象的屬性得出一個(gè)分類結(jié)果并且以投票的形式保存下來(lái)。對(duì)于分類問(wèn)題,隨機(jī)森林選出票數(shù)最高的分類結(jié)果作為這個(gè)森林的分類結(jié)果。對(duì)于回歸問(wèn)題,對(duì)每一棵決策樹的輸出求均值得到結(jié)果[7]。隨機(jī)森林決策的流程如圖2所示。
鑒于決策樹容易過(guò)擬合的缺點(diǎn),隨機(jī)森林采用多個(gè)決策樹的投票機(jī)制來(lái)改善決策樹。決策樹可以用于分類又可以解決回歸問(wèn)題。作為分類器時(shí),由于有多個(gè)決策樹模型,即使有部分?jǐn)?shù)據(jù)缺失,隨機(jī)森林也能保持很高的分類精度。另外,決策樹的增加并不會(huì)使隨機(jī)森林出現(xiàn)過(guò)度擬合,可以對(duì)數(shù)量龐大的較高維數(shù)據(jù)進(jìn)行分類。
2實(shí)現(xiàn)
2.1模型的建立
①參數(shù)選擇:在建立決策樹模型之前首先要選取構(gòu)建決策樹的參數(shù)[8-9]。人們糾結(jié)的方面主要有衣、食、住、行。例如,在吃什么方面,參數(shù)選擇主要包括用餐人數(shù)、忌口、喜好、所需時(shí)間和經(jīng)濟(jì)狀況等。
②知識(shí)表示:對(duì)于已經(jīng)確認(rèn)要錄入的參數(shù),利用人工智能與知識(shí)工程的表示理論,分析出不同選擇的具體信息結(jié)構(gòu)特征[10-11],將各個(gè)相關(guān)因素的信息劃分為不同的信息側(cè)面,之后再對(duì)每個(gè)信息側(cè)面進(jìn)行再劃分,從而形成樹形結(jié)構(gòu)。
③建立模型:根據(jù)目標(biāo)的設(shè)定和運(yùn)算要求利用隨機(jī)森林算法將相應(yīng)的離散化信息與變量映射到模型中,計(jì)算機(jī)來(lái)完成數(shù)據(jù)映射的任務(wù),并進(jìn)行剪枝操作,最終得出適合用戶的最佳選擇。
2.2隨機(jī)森林算法實(shí)例分析
對(duì)于選擇困難中最普遍的一個(gè)選擇困難就是吃什么。因此,用隨機(jī)森林的算法嘗試去解決晚飯吃什么?,F(xiàn)在人們出去吃飯經(jīng)常去的就是火鍋店和日料店,利用隨機(jī)森林算法幫助那些不知道吃火鍋還是日料的用戶做出選擇。首先收集數(shù)據(jù),并從中提取用戶相關(guān)信息共48條,如表1所示。
表1訓(xùn)練集中一共有48個(gè)樣本。按照人們出去吃飯的選擇分為“火鍋”和“日料”來(lái)構(gòu)建決策樹模型,決策樹模型如圖3所示。
隨機(jī)森林名稱中的隨機(jī)指2種方面的隨機(jī):第1種是不放回的隨機(jī)個(gè)特征(如幾個(gè)人,能不能吃辣等);第2種是有放回的隨機(jī)個(gè)樣本(要小于或等于總樣本)。
因此令=2,=4,建立3棵決策樹,其中樣本隨機(jī)選擇編號(hào)為2,4,5,48的樣本。
本文以決策樹為基學(xué)習(xí)器,因此,首先建立第1棵決策樹,隨機(jī)選擇2個(gè)特征人數(shù)和時(shí)間。由于時(shí)間的信息增益比人數(shù)的信息增益大,因此根節(jié)點(diǎn)為時(shí)間特征,第1棵決策樹如圖4所示。
接下來(lái)按照同樣的方法再隨機(jī)選擇2個(gè)特征,如辣和經(jīng)濟(jì),比較信息增益值可得經(jīng)濟(jì)為根節(jié)點(diǎn)。第2棵決策樹如圖5所示。
同理選取海鮮和肉作為特征,得到第3棵決策樹,如圖6所示。
這樣就建立好了3棵決策樹,接著把用戶數(shù)據(jù)代入上述3棵樹,以判斷是去火鍋店還是日料店。用戶數(shù)據(jù)如表3所示,根據(jù)3棵決策樹可得出3個(gè)結(jié)果,如表4所示。
用戶的數(shù)據(jù)中,人數(shù)和時(shí)間的特征值通過(guò)圖3的決策過(guò)程分析得到,第1棵決策樹的結(jié)果為火鍋;經(jīng)濟(jì)和辣的特征值通過(guò)第2棵決策樹的決策流程分析的結(jié)果為日料;肉和海鮮的特征值通過(guò)圖5的決策流程分析的結(jié)果為日料。綜合3棵決策樹的結(jié)果,結(jié)果是火鍋的決策樹有1棵,結(jié)果是日料的決策樹有2棵,以少數(shù)服從多數(shù)的原則,最后推薦用戶選擇日料店。
3結(jié)束語(yǔ)
以用戶選擇吃火鍋還是吃日料的問(wèn)題為例,通過(guò)隨機(jī)森林算法的應(yīng)用,分析了該算法幫助用戶做選擇的過(guò)程。同類問(wèn)題,如是否買車、是否買房、是否去相親等都可以通過(guò)在收集用戶屬性后,采用隨機(jī)森林算法幫助用戶做決策。這種方法由于使用了用戶屬性值,得到的分類決策結(jié)果比完全隨機(jī)決策結(jié)果要更為準(zhǔn)確,更滿足用戶需求。因此,采用隨機(jī)森林算法解決選擇困難的問(wèn)題是可行的,可以在其他更多場(chǎng)景推廣應(yīng)用。
參考文獻(xiàn)
[1]崔艷宇,杜園春. 84.7%受訪者自稱有選擇困難癥[N].中國(guó)青年報(bào), 2018.01.302.
[2]亓文娟,晏杰.決策樹算法在大學(xué)生心理健康測(cè)評(píng)系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(11):230-234.
[3] ZHENG Hui,HE Jing,ZHANG Yanchun,et al. A General Model for Fuzzy Decision Tree and Fuzzy Random Forest[J]. Computational Intelligence, 2019, 35(2): 310-335.
[4]鄭偉,馬楠.一種改進(jìn)的決策樹后剪枝算法磁[J].計(jì)算機(jī)與數(shù)字工程, 2015, 43(6):960-966,971.
[5] RAJKOMAR A, DEAN J, KOHANE I,et al. Machine Learning in Medicine[J]. New England Journal of Medicine, 2019,380(14):1347-1358.
[6]張潔慧.決策樹分析法在企業(yè)風(fēng)險(xiǎn)管理應(yīng)對(duì)策略選擇中的應(yīng)用[J].現(xiàn)代經(jīng)濟(jì)信息,2017(14):57,59.
[7]劉貴全,葉劍鳴,印金汝.基于分類聚類的故障預(yù)警算法: CN106203519A[P].2016.
[8]張良均,王路,譚立云,等.Python數(shù)據(jù)分析與挖掘?qū)崙?zhàn)[M].北京:機(jī)械工業(yè)出版社,2016.
[9]楊萌,聶鐵錚,申德榮,等.基于隨機(jī)森林的實(shí)體識(shí)別方法[J].集成技術(shù), 2018, 7(2):57-68.
[10]呂建馳.機(jī)器學(xué)習(xí)算法在數(shù)據(jù)挖掘中的應(yīng)用[J].電子世界, 2019, 571(13):62-63.
[11]金巨波,葛雷,徐秀麗.計(jì)算機(jī)數(shù)據(jù)挖掘技術(shù)的開發(fā)及其應(yīng)用[J].浙江水利水電學(xué)院學(xué)報(bào),2019,31(6):68-72.