趙明梅 金洋洋 王語嘉 曾孟佳
摘要:提出了一種運用以決策樹為基學習器的隨機森林輔助用戶做出決策的方法。根據待決策的問題,多次從收集的數據中隨機抽取樣本和特征,生成多個訓練集,通過取眾數或取均值的形式確定結果。人們只需填入對應的屬性值,便會通過上述建立的決策模型獲得結果。為選擇困難人群提供科學決策的方式,幫助其緩解面臨決策時的心理壓力,同時提供了一個較為正確的決策意見,對其身心發展有重大意義。
關鍵詞:決策樹;隨機森林;選擇困難
中圖分類號:TP393文獻標志碼:A文章編號:1008-1739(2021)22-56-4

0引言
選擇是人們日常生活中常常要面對的事情,而擔心錯過最佳選擇而舉棋不定和由于缺乏目標而無法決策,是人們在選擇時的常見表現。中國青年報社曾對2 007名受訪者開展了一項調查,數據顯示84.7%的受訪者自稱有選擇困難癥,其中80、90及00后占比高達79.6%,而最容易出現選擇困難的前3名場景分別為購物選商品、吃飯選餐廳和菜品以及規劃出游行程,分別占54.0%,53.4%,42.5%。同時44.7%的受訪者感覺選擇困難癥浪費時間和精力,使自己心情煩躁;41.2%的受訪者指出選擇困難癥會讓自己對生活缺少掌控感[1]。
基于上述問題,本文提出通過軟件對需要做出選擇問題的背景信息做運算,用其結果幫助有選擇困難的人群做出決策,提高效率。其基本思想是根據待決策問題,多次從收集的數據中隨機抽取樣本和特征,生成多個訓練集,將訓練數據投入隨機森林,通過取眾數或取均值的形式確定結果。
1隨機森林算法
1.1決策樹
決策樹[2]是有監督的機器學習算法,是一種與流程圖相似的樹狀結構,主要解決分類問題[3]。這種方法根據數據屬性特征對其進行分類,記錄為做出決策而進行的一系列選擇過程。
1.2決策樹的構建
決策樹由根節點、內部節點、葉子節點組成。根節點無入邊,有多條出邊,是決策樹最上面的節點,同時也是決策判斷的起始點。節點的每一條出邊對應一個內部節點或者葉子節點。內部節點代表問題的決策,通常對應決策所依據的屬性。每一個葉子節點代表分類的標簽值,決策樹判斷過程實際上就是決策樹由上到下的一個遍歷過程,每一個節點不同的判斷結果會引入不同的分支,最后進入不同的葉子節點,獲得不同的標簽值。

式中,表示通過第項屬性判斷標簽的正確率;表示屬性的個數。根據某一項基尼系數非常小的屬性對決策進行判斷,則認為這一屬性是一項準確性高的區分類別的屬性。在構建決策樹分類模型時,首先計算不同屬性基尼系數的加權平均,選擇最小的一個屬性作為根節點,基尼系數的大小隨事件發生的概率而改變,基尼指數圖如圖1所示。每確定一個節點便對數據進行測試。在后續的構建中,若節點中對象均為同類,則無需繼續劃分,直接給出標簽值;若節點中對象為不同類,則在剩余屬性中選擇基尼系數最小的作為當前節點繼續劃分,直到決策樹各節點中對象均為同類或者所有屬性都被用于構建決策樹。

1.3決策樹的剪枝
如果決策樹在構建中考慮了所有的訓練數據集,得到的決策樹就會很龐大。雖然這樣可以保證訓練數據集的決策正確率達到100%,但是由于過多考慮所有數據,將數據分割的過于零散,致使決策樹學習到一些噪聲點和錯誤點,出現過擬合現象。
通過剪枝可以解決過擬合問題,決策樹有2種常用的修剪辦法[4]:
①預剪枝:在構造決策樹的過程中,每個節點在劃分前先進行估計,若當前的劃分不能讓決策樹在驗證集上的準確率得到提高,則停止劃分,并將節點標記為葉子節點。假設要劃分的屬性為a,劃分在a屬性下的樣本集合為。若劃分屬性a,則將集合劃分成多個子集,每個子集中個數最多的類別作為該子集的標簽,然后計算驗證集上的準確率1;若不劃分屬性a,則將集合中個數最多的類別作為屬性a的標簽,計算驗證集上的準確率2,若1< 2,則停止屬性a的劃分。
②后剪枝:在決策樹構建完之后,自下向上地對每個非葉子節點進行考察,選擇該節點中個數最多的類別作為標簽,試將節點的子樹替換為葉子節點,若能夠使得決策樹在驗證集上的準確率升高,則將該子樹替換成葉子節點。
對比2種方法,預剪枝可能造成欠擬合,后剪枝的訓練開銷比較大。后剪枝通常比預剪枝保留的分支多,造成欠擬合的可能性很小,但后剪枝過程是自下向上的,其訓練時間開銷比預剪枝大。
1.4隨機森林算法
隨機森林最早是由Leo Breiman和Adele Cutler[5]提出,是一種利用多棵樹對樣本進行訓練、預測的分類器,兼顧了解決回歸問題和分類問題的能力。隨機森林算法由一定數量的決策樹組成,決策樹的數量越大,算法的魯棒性越強,精度越高[6]。隨機森林在Bagging算法的基礎上,在決策樹的構建中加入隨機屬性的選擇。隨機森林中的每一顆決策樹都是隨機抽取訓練集的一小部分進行訓練,即看問題的角度不一樣,以保證每個決策樹的輸出相似但不一樣。
在隨機森林內決策樹的訓練過程中,從完整數據集中有放回地進行次采樣,每次隨機取出個樣本,個特征,生成個訓練集,分別訓練構成個決策樹模型。給定一個新的識別對象,隨機森林中的每一棵樹都會根據這個對象的屬性得出一個分類結果并且以投票的形式保存下來。對于分類問題,隨機森林選出票數最高的分類結果作為這個森林的分類結果。對于回歸問題,對每一棵決策樹的輸出求均值得到結果[7]。隨機森林決策的流程如圖2所示。

鑒于決策樹容易過擬合的缺點,隨機森林采用多個決策樹的投票機制來改善決策樹。決策樹可以用于分類又可以解決回歸問題。作為分類器時,由于有多個決策樹模型,即使有部分數據缺失,隨機森林也能保持很高的分類精度。另外,決策樹的增加并不會使隨機森林出現過度擬合,可以對數量龐大的較高維數據進行分類。
2實現
2.1模型的建立
①參數選擇:在建立決策樹模型之前首先要選取構建決策樹的參數[8-9]。人們糾結的方面主要有衣、食、住、行。例如,在吃什么方面,參數選擇主要包括用餐人數、忌口、喜好、所需時間和經濟狀況等。
②知識表示:對于已經確認要錄入的參數,利用人工智能與知識工程的表示理論,分析出不同選擇的具體信息結構特征[10-11],將各個相關因素的信息劃分為不同的信息側面,之后再對每個信息側面進行再劃分,從而形成樹形結構。
③建立模型:根據目標的設定和運算要求利用隨機森林算法將相應的離散化信息與變量映射到模型中,計算機來完成數據映射的任務,并進行剪枝操作,最終得出適合用戶的最佳選擇。
2.2隨機森林算法實例分析
對于選擇困難中最普遍的一個選擇困難就是吃什么。因此,用隨機森林的算法嘗試去解決晚飯吃什么。現在人們出去吃飯經常去的就是火鍋店和日料店,利用隨機森林算法幫助那些不知道吃火鍋還是日料的用戶做出選擇。首先收集數據,并從中提取用戶相關信息共48條,如表1所示。



表1訓練集中一共有48個樣本。按照人們出去吃飯的選擇分為“火鍋”和“日料”來構建決策樹模型,決策樹模型如圖3所示。

隨機森林名稱中的隨機指2種方面的隨機:第1種是不放回的隨機個特征(如幾個人,能不能吃辣等);第2種是有放回的隨機個樣本(要小于或等于總樣本)。
因此令=2,=4,建立3棵決策樹,其中樣本隨機選擇編號為2,4,5,48的樣本。
本文以決策樹為基學習器,因此,首先建立第1棵決策樹,隨機選擇2個特征人數和時間。由于時間的信息增益比人數的信息增益大,因此根節點為時間特征,第1棵決策樹如圖4所示。

接下來按照同樣的方法再隨機選擇2個特征,如辣和經濟,比較信息增益值可得經濟為根節點。第2棵決策樹如圖5所示。

同理選取海鮮和肉作為特征,得到第3棵決策樹,如圖6所示。

這樣就建立好了3棵決策樹,接著把用戶數據代入上述3棵樹,以判斷是去火鍋店還是日料店。用戶數據如表3所示,根據3棵決策樹可得出3個結果,如表4所示。

用戶的數據中,人數和時間的特征值通過圖3的決策過程分析得到,第1棵決策樹的結果為火鍋;經濟和辣的特征值通過第2棵決策樹的決策流程分析的結果為日料;肉和海鮮的特征值通過圖5的決策流程分析的結果為日料。綜合3棵決策樹的結果,結果是火鍋的決策樹有1棵,結果是日料的決策樹有2棵,以少數服從多數的原則,最后推薦用戶選擇日料店。
3結束語
以用戶選擇吃火鍋還是吃日料的問題為例,通過隨機森林算法的應用,分析了該算法幫助用戶做選擇的過程。同類問題,如是否買車、是否買房、是否去相親等都可以通過在收集用戶屬性后,采用隨機森林算法幫助用戶做決策。這種方法由于使用了用戶屬性值,得到的分類決策結果比完全隨機決策結果要更為準確,更滿足用戶需求。因此,采用隨機森林算法解決選擇困難的問題是可行的,可以在其他更多場景推廣應用。
參考文獻
[1]崔艷宇,杜園春. 84.7%受訪者自稱有選擇困難癥[N].中國青年報, 2018.01.302.
[2]亓文娟,晏杰.決策樹算法在大學生心理健康測評系統中的應用[J].計算機系統應用,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].計算機與數字工程, 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]張潔慧.決策樹分析法在企業風險管理應對策略選擇中的應用[J].現代經濟信息,2017(14):57,59.
[7]劉貴全,葉劍鳴,印金汝.基于分類聚類的故障預警算法: CN106203519A[P].2016.
[8]張良均,王路,譚立云,等.Python數據分析與挖掘實戰[M].北京:機械工業出版社,2016.
[9]楊萌,聶鐵錚,申德榮,等.基于隨機森林的實體識別方法[J].集成技術, 2018, 7(2):57-68.
[10]呂建馳.機器學習算法在數據挖掘中的應用[J].電子世界, 2019, 571(13):62-63.
[11]金巨波,葛雷,徐秀麗.計算機數據挖掘技術的開發及其應用[J].浙江水利水電學院學報,2019,31(6):68-72.