進化決策樹:當機器學習從生物學中汲取靈感時 1. 什麼是決策樹? 3. 跟其它分類器比,進化決策樹的表現如何? 引用

導語:生物學知識也可以成爲機器學習中靈感的來源。
譯者:AI研習社(精神小高
雙語原文鏈接:Evolutionary Decision Trees: When Machine Learning draws its Inspiration from Biology


隨着時間的推移,我們對生物學(或生命科學)的瞭解大大增加,它已成爲許多工程師解決挑戰性問題併產生髮明創造的的重要靈感來源。

以日本的高速列車“新幹線”爲例,它是世界上最快的火車之一,時速超過300公里/小時。 在設計過程中,工程師遇到了巨大的難題:火車前部空氣的位移所產生的噪音,其幅度大到可能破壞某些隧道的結構。

他們以一個出乎意料的方式找到了這個問題的解法:翠鳥。這種鳥的喙部細長,使之在潛入水中捕食時能夠少濺水花。

因此,通過模仿這種鳥的形象重新設計列車,工程師不僅解決了最初的問題,而且還將列車的耗電量減少了15%,速度提高了10%。

圖1-日本的高速鐵路,新幹線,來源

生物學知識也可以成爲機器學習中靈感的來源。

內容

本文重點關注的一個例子是進化決策樹。

這類分類器使用進化算法來構建魯棒性更強,性能更好的決策樹。進化算法依賴於生物進化啓發的機制。

  • 決策樹是什麼?

  • 如何根據進化算法搭建決策樹?

  • 與其它分類器相比,進化決策樹的表現如何?

數據集

爲了說明本文中提及的概念,我將使用航空公司乘客滿意度的調查結果數據集。有關此數據集的更多信息,請參見此處

其目的是預測顧客對航空公司的服務的滿意度。這樣的研究對公司的決策至關重要。它不僅可以使提供商品或服務的公司知曉其產品在哪些方面需要改進,而且可以使公司知道應該改進到什麼程度以及改進的緊要程度

事不宜遲,讓我們從複習關於決策樹的基礎知識開始吧。

1. 什麼是決策樹?

決策樹是一種分類器,其分類流程可表示爲樹形圖。模型在訓練過程中根據數據的特徵推斷出簡單的決策規則,並依此對數據點進行分類。

下圖展示了一個決策樹的例子。這是使用Scikit Learn決策樹模塊在航空公司乘客滿意度的調查結果數據集上進行訓練的結果。

圖2-決策樹示例

決策樹表明網上值機服務是商務旅行中乘客滿意度的重要因素,乘客在能簡單高效地在網上辦理登機手續時更可能感到滿意。另外,艙內wifi的信號質量也十分重要。

決策樹由於具有許多優點而被廣泛用於分類任務:

  • 它的推理過程與人類相似,易於理解和解釋;

  • 它能處理數值數據和分類數據;

  • 它通過分層分解能更充分地利用變量。

大多數用於推導決策樹的算法都使用自上而下的遞歸劃分“貪心”策略。

源集(source set)代表了樹的根節點。源集是根據特定規則劃分爲各個子集(子節點)的。在每次劃分出的子集上重複該劃分過程,直到某個節點下的子集中的目標變量的值全部相同,或者劃分過程不再使預測結果的值增加。

用於在節點和劃分中確定生成測試的最佳方法的量化指標是因算法而異的。最常見的指標是信息量(或熵)和基尼雜質量。它們度量的是雜質度,當節點的所有樣本屬於同一類別時,這類指標的值爲0;當節點的樣本的類別呈均一分佈(即,該節點取到某一類別的概率爲常數)時,這類指標的值取到最大值。更多相關信息參見本文

但是,此類指標有兩個主要缺點:

1.可能取到次優解;

2.可能生成過於複雜的決策樹,以至於在訓練數據中泛化效果不好,導致過擬合。

目前已有幾種方法可用於克服這些問題:

  • 剪枝:首先,構建一顆完整的決策樹,即每片葉子中的所有實例都屬於同一類。然後刪除“不重要”的節點或子樹,以減小樹的大小。

  • 組合樹:構建不同的樹,並通過特定規則(一般是投票計數)選擇最終的分類結果。值得注意的是,這會導致決策樹的可解釋性降低。

因此,有必要探索生成樹模型的其它方法。最近,進化算法(Evolutionary Algorithms, EA)獲得了極大的關注。進化算法在所有可能的解法中進行強大的全局搜索,而不僅僅是本地搜索。結果,與貪心策略相比,進化算法更可能把屬性交互處理得更好。

進化算法的具體工作方式見下。

2. 怎樣用進化算法構造決策樹?

進化算法是搜索啓發式方法,其機理源自自然中的生物進化過程。

在這個範式中,羣體中的每個“個體”代表給定問題的一種候選解法。每個個體的適合度代表這種解法的質量。這樣,隨機初始化的第一個羣體會朝着搜索空間中更好的區域進化。在每一代中,選擇過程使得適合度較高(原文爲“適合度較低”,疑有誤)的個體具有較高的繁殖概率。

此外,還會對羣體進行特定的由遺傳學啓發的操作,例如重組,兩個個體的信息在混合後纔會傳給他們的後代;以及突變,對個體進行微小的隨機改變。對這一過程進行迭代,直到達到某一終止條件。然後選擇最適個體爲答案。

基於進化算法的決策樹是通用方法的一種有意思的替代品,因爲:

  • 隨機搜索法能有效避免自上而下的遞歸劃分“貪心”策略可能找到的局部最優解。

  • 對決策樹的解釋與整體法相反。

  • 不僅僅是優化單一指標,它可以將不同的目標集成在適合度中。

2.1 羣體的初始化

在進化決策樹中,一個個體代表的是一棵決策樹。初始羣體由隨機生成的樹組成。

隨機樹可以按以下步驟生成:

在根節點和兩個子節點後,算法以預設概率p決定每個子節點是否繼續劃分或成爲終點。

  • 如果繼續劃分該子節點,算法會隨機選擇一些性質和閾值作爲劃分的標準。

  • 如果該子節點成爲終點(葉節點),就給它隨機分配一個類別標籤。

2.2 適合度

分類器的目標是在輸入未標記的新數據時能獲得最高預測準確度。此外,決策樹分類器還需要控制樹的最終尺寸。因爲樹的尺寸小會導致欠擬合,而樹的結構太複雜會導致過擬合。

因此,在定義適合度時需要在這兩項之間取得平衡:

適合度 = α1 f1 + α2 f2

其中:

  • f1是在訓練集上的準確度;

  • f2是對個體的尺寸(樹的深度)所設置的懲罰項;

  • α1 和 α2 是待指定的參數。

2.3. 選擇過程

有多種方法可以選擇用於創建下一代樹的親本。最常見的是以下幾種:

  • 基於適應度按比例選擇,或輪盤賭式選擇:按適合度對羣體排序,然後依次爲每個個體賦予選擇概率。

  • 淘汰制選擇:先從羣體中隨機選出一些個體,再從選出的集合中取適合度最高的個體作爲親本。

  • 精英制選擇:直接把適合度最高的個體用到下一代。這種方法能保留每代最成功的個體。

2.4 重組

獲得重組子代的過程需要使親本兩兩配對。

首先,選擇兩個個體作爲親本。然後在兩棵樹中各隨機選一個節點。用第二棵樹中選擇的子樹代替第一棵樹中選中的子樹,獲得子代。

<ahelp_2" name="help_2"><divpara-item divitem-area=""></divpara-item></ahelp_2">

圖3-重組

2.5 突變

突變指的是一個羣體的部分個體中的隨機的小選擇。突變是遺傳多樣性的保證,這意味着遺傳算法能搜索到更大的範圍。

對決策樹而言,突變可以通過隨機更改屬性或者細分隨機選的節點來實現。

圖4-突變

2.6 終止條件

如果最優秀的個體的適合度在給定數量的世代中沒有上升,就可以認爲算法已經收斂了。

爲了在收斂得很慢時節約計算時間,這個世代數目是預先設定的參數。

3. 跟其它分類器比,進化決策樹的表現如何?

進化決策樹看起來很好,但跟常規機器學習算法相比,它的表現又如何?

3.1 一個簡單的實驗

爲了評價分類器的效率,我搭建了一個決策樹,並在航空公司乘客滿意度調查結果數據集上進行訓練。

目標是找出能導致乘客滿意度升高的因素。 這樣就需要一個簡單而抗干擾的模型來解釋導致乘客感到滿意(或不滿意)的途徑。

照片來自這個網站,這位攝影師

關於數據集

這個數據集很大,囊括了多於10萬條航線。

  • 含有關於乘客及其行程的事實信息:乘客的性別,年齡,客戶類型(是否有慣性),旅行類型(個人或商務旅行),航班艙位(商務,環保,極環保 )和飛行距離。

  • 還包含乘客對以下服務的滿意度:艙內wifi,出發/到達時間(是否合宜),網上預訂(是否方便),登機口位置,餐飲,網上值機,座椅舒適度,艙內娛樂,登機服務,座椅腿部空間 ,行李服務,值機服務,艙內服務,整潔度。

數據標籤是乘客的滿意度,包括“滿意”,“中立”和“不滿意”。

方法

我使用的計算步驟可簡要歸納如下:

1. 數據預處理:將類別變量轉換爲指示變量。將數據集隨機劃分爲訓練集和測試集。

2. 建模和測試:訓練每個模型在訓練子集上考慮條件,在驗證子集上進行衡量。

3. 比較各模型的表現。

我選擇將進化決策樹(EDT)方法與基於簡單的樹的,基於決策樹(DT)的和基於隨機森林(RF)的模型進行比較。限制樹的深度小於(等於?)3。 我還將EDT的羣體大小和RF的評價器數量設置爲10,以便於在合理的計算時間內以一致的方式比較它們。

結果

結果如下:

圖5-“滿意”以及“中立或不滿意”的乘客的數量

表1-DT模型的分類報告

表2-RF模型的分類報告

表3-EDT模型的分類報告

圖6-3個模型的ROC曲線和曲線下面積

在這種參數設置下,EDT的表現和另外兩種機器學習算法很接近。

然而,EDT的優勢在於它能提供這樣一棵決策樹:

  • 可以呈現多顆決策樹聚集的位點(與RF模型相比),並且

  • 具有魯棒性(與簡單DT模型相比),因爲它是一羣樹中表現最好的那顆。

在訓練過程中,將最大深度設爲2,獲得的EDT羣體中表現最好的決策樹可以表徵爲如下形式:

圖7(<ahelp_4" name="help_4"><divpara-item divitem-area=""><divfinished-text"><divch-text">原文爲“圖5”,疑有誤</divch-text"></divfinished-text"></divpara-item></ahelp_4">)-EDT中最佳決策樹的示意圖

3.2 對EDF方法的一個更泛化的實驗驗證

上述實驗肯定不足以評估進化決策樹跟其它機器學習算法相比時的性能和可靠性。

因爲只用了一個數據集,因此沒有考慮到所有可能性,例如標籤的類別數量,特徵數量和觀測數量的影響等。

在[2]中,作者使用真實的UCI數據集對EDT方法與其他機器學習方法的性能進行了比較。

這篇文章的發現如下。

關於數據集

下表簡要介紹了所用的數據集:

表4-數據集的性質

如你所見,數據集在觀測次數,特徵個數和類別個數這幾個方面的差別很大。

最困難的數據集肯定是第一個數據集,因爲它有很多類別,而觀察次數較少。

方法

以下是與更‘經典’的機器學習算法相比時,作者用來評估EDT模型表現的方法的主要信息:

  • EDT模型已使用以下超參數進行了訓練:世代數爲500,羣體大小爲400,重組/變異的概率分別爲0.6 / 0.4,選擇方法爲隨機統一的精英制選擇。

  • 使用5x2交叉驗證來測量模型的表現。

結果

表5-模型的正確率取決於所用的數據集

  1. 基於樹的算法幾乎總是優於其它機器學習算法。 可以解釋爲決策樹本身更能選擇出最重要的特徵。 此外,基於規則的模型更適合用於特定的數據集,尤其是難以對目標與特徵間的關係建模時。

  2. 鮑魚數據集上的結果都很差:因爲有28個類別,而且觀測次數很少(只有210次)。 但是,EDT模型以最高的準確率脫穎而出。 這表明它能有效地處理困難的數據集並避免過擬合。

值得注意的是,EDT模型使用的是默認參數。 調整參數能帶來更好的表現。

引用

[1] R. Barros et al., A Survey of Evolutionary Algorithms for Decision Tree Induction*, *2011

[2] D. Jankowski et al., Evolutionary Algorithm for Decision Tree Induction, 2016

[3] S. Cha, Constructing Binary Decision Trees using Genetic Algorithms, 2008

[4] D. Carvalho et al., A Hybrid Decision Tree/Genetic Algorithm Method for Data Mining, 2003

[5] Wikipedia, Traveling salesman problem

<ahelp_11" name="help_11"><divpara-item divitem-area="" item-en=""></divpara-item></ahelp_11">

[6] Wikipedia, Genetic Algorithm


AI研習社是AI學術青年和AI開發者技術交流的在線社區。我們與高校、學術機構和產業界合作,通過提供學習、實戰和求職服務,爲AI學術青年和開發者的交流互助和職業發展打造一站式平臺,致力成爲中國最大的科技創新人才聚集地。

如果,你也是位熱愛分享的AI愛好者。歡迎與譯站一起,學習新知,分享成長。

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