獨(dú)家 | 熵–數(shù)據(jù)科學(xué)初學(xué)者必知的關(guān)鍵概念(附鏈接)
引言
熵是機(jī)器學(xué)習(xí)的關(guān)鍵概念之一。對于任何機(jī)器學(xué)習(xí)愛好者來說,這都是必知的,但許多人對此概念仍感到困惑。本文的重點(diǎn)是,通過探究概率論的基本概念、公式的邏輯與意義、以及其對決策樹算法的重要性來了解熵的作用。
那么,熵是什么?
熵的起源
熵一詞最早由德國物理學(xué)家、數(shù)學(xué)家魯?shù)婪颉た藙谛匏梗≧udolf Clausius)提出,并在熱力學(xué)領(lǐng)域中使用。
1948年,數(shù)學(xué)家兼電氣工程師香農(nóng)(Claude E. Shannon)發(fā)表了一篇關(guān)于“通信的數(shù)學(xué)理論”的論文,解決了信息度量、選擇和不確定性的問題。香農(nóng)開創(chuàng)了信息論領(lǐng)域,因此也被稱為“信息論之父”。
“信息論,是一種研究信息編碼以及信息的量化、存儲和交流的數(shù)學(xué)方法。”
在他的論文中,以數(shù)學(xué)方式測量了通信信號中“丟失信息”的統(tǒng)計(jì)性質(zhì)。這項(xiàng)工作的目的是,探究如何最好地編碼發(fā)送者想要傳輸?shù)男畔ⅰ榇耍戕r(nóng)開發(fā)了信息熵作為一種估計(jì)消息中信息內(nèi)容的方法,這是衡量消息丟失的不確定度的一種方法。
因此,我們知道,信息論中的主要度量是熵。
熵一詞的英文含義是:它是一種無序(disorder)、混亂(confusion)、無組織(disorganization)的狀態(tài)。
讓我們深入了解這個(gè)概念。
首先,什么是信息(information)?我所說的“信息”是什么?簡而言之,信息是從某物或某人中學(xué)到的一些事實(shí)。理論上講,我們可以理解為,信息是可以作為變量存儲、傳輸或傳遞的,可以取不同的值。換言之,變量只是存儲單位。因此,我們通過查看變量的值,從變量中獲取信息,就像通過讀取消息或信件的內(nèi)容,從消息或信件中獲取細(xì)節(jié)(或信息)。
熵的計(jì)算,可以基于變量中存在的不同值的數(shù)量(信息量),也可以基于變量值所具有的驚奇度(surprise)。
假設(shè)您此刻收到一條消息,若該消息是先前文本的重復(fù),則該消息完全沒有提供信息;但若該消息透露了美國大選的結(jié)果,則該消息無疑是非常有用的。這告訴我們,消息或文本中的信息量,與其中可提供的驚奇度成正比。因此,可以直觀理解,信息的這種存儲、傳輸或傳遞,與該變量中的信息量有關(guān)。現(xiàn)在,擴(kuò)展到某個(gè)事件的結(jié)果。例如,事件是投擲一枚硬幣,它將有兩個(gè)公平的、同樣可能的結(jié)果,該結(jié)果提供較少的信息。換言之,由于硬幣的結(jié)果將是正面或反面,因此具有較少的驚奇度。因此,投擲一枚硬幣具有較低的熵。
在信息論中,隨機(jī)變量的熵,是變量可能結(jié)果中固有的“信息量”、“驚奇度”或“不確定度”的平均水平。即,事件越具確定性,它包含的信息將越少。簡言之,信息是不確定度或熵的增加。
那么這些理論,對我們有哪些幫助呢?我們?nèi)绾螌⑵鋺?yīng)用到機(jī)器學(xué)習(xí)模型中?
為了理解這一點(diǎn),首先讓我們快速了解一下決策樹算法。
決策樹算法
決策樹(Decision Tree)是一種監(jiān)督學(xué)習(xí)技術(shù),是一種分層的if-else語句,它僅是規(guī)則的集合,或者也稱為基于條件比較運(yùn)算符的拆分條件。決策樹算法廣泛應(yīng)用于回歸和分類問題。
以下示例將汽車類型二分為轎車和運(yùn)動卡車,應(yīng)用決策樹算法找到因變量(response variable)與預(yù)測變量(predictors)之間的關(guān)系,并以樹形結(jié)構(gòu)的形式表示該關(guān)系。

圖片來源:https://media.springernature.com/original/springer-static/image/prt%3A978-1-4614-8265-9%2F19/MediaObjects/978-1-4614-8265-9_19_Part_Fig2-555_HTML.png
該流程圖由根節(jié)點(diǎn)(Root node)、分支節(jié)點(diǎn)(Branch nodes)和葉子節(jié)點(diǎn)(Leaf nodes)組成。根節(jié)點(diǎn)是原始數(shù)據(jù),分支節(jié)點(diǎn)是決策規(guī)則,而葉節(jié)點(diǎn)是決策的輸出,且這些節(jié)點(diǎn)無法進(jìn)一步劃分為分支。因此,它是基于某些條件或作為所述規(guī)則的問題的所有可能結(jié)果的圖形描述。通過創(chuàng)建自上而下的樹來訓(xùn)練模型,繼而使用該訓(xùn)練后的決策樹來測試新數(shù)據(jù),以將其分為一個(gè)類別。
需要注意的是,通過設(shè)計(jì),決策樹算法會嘗試構(gòu)建因變量中最小葉子節(jié)點(diǎn)是同質(zhì)的樹。目標(biāo)變量的同質(zhì)性(homogeneity)意味著結(jié)果中只有一種類型的記錄,即在葉子節(jié)點(diǎn)中,該記錄傳達(dá)的是轎車或是運(yùn)動卡車。有時(shí),難點(diǎn)在于,樹是受限的,即樹被迫停止構(gòu)建,以將分支分解為更小的葉子節(jié)點(diǎn)。在這種情況下,目標(biāo)變量不是同質(zhì)的,結(jié)果仍然是汽車類型(轎車和運(yùn)動卡車)的混合。
那么對于決策樹算法,應(yīng)如何選擇特征?在該特征中以什么閾值來構(gòu)建樹?
為了回答這個(gè)問題,我們繼續(xù)學(xué)習(xí)機(jī)器學(xué)習(xí)算法中損失函數(shù)(loss function)的概念。
損失函數(shù)
決策樹算法通過優(yōu)化損失函數(shù)從數(shù)據(jù)集中創(chuàng)建樹。在分類問題的情況下,損失函數(shù)用以度量根節(jié)點(diǎn)的目標(biāo)列中的不純度(impurity)。
不純度是指我們在上述討論的信息中可獲得的驚奇度或不確定度。在給定節(jié)點(diǎn)上,不純度用以度量Y變量中不同類別的混合物(在我們的例子中,即不同汽車類型的混合)。因此,不純度也稱為在信息中或每個(gè)節(jié)點(diǎn)上存在的異質(zhì)性(heterogeneity)。
我們的目標(biāo)是在葉子節(jié)點(diǎn)(或最終結(jié)果)上盡可能減少這種不純度。這意味著目標(biāo)函數(shù)是減少目標(biāo)列中的不純度(即驚奇度或不確定度),換言之,是在給定數(shù)據(jù)的每個(gè)分支處增加Y變量的同質(zhì)性(homogeneity)。
要了解目標(biāo)函數(shù),我們需要了解如何計(jì)算目標(biāo)列的不純度。有兩個(gè)指標(biāo):熵和基尼系數(shù)。除此之外,為了回答先前關(guān)于決策樹如何選擇特征的問題,有多種拆分方法,包括熵、基尼系數(shù)、卡方。鑒于本篇的重點(diǎn)是熵,我們將進(jìn)一步探討,熵如何幫助創(chuàng)建樹。
假設(shè)現(xiàn)在進(jìn)行一項(xiàng)實(shí)驗(yàn):有一盒裝滿相等袋數(shù)的、兩種口味(焦糖拿鐵和卡布奇諾)的咖啡。您可以閉眼選擇盒中的一袋咖啡,如果您獲得的是焦糖拿鐵,那么您可以自由停止閱讀本文;如果您獲得的是卡布奇諾,那么您將必須閱讀全文。
如果盒中只有焦糖拿鐵和卡布奇諾兩種咖啡,那么我們知道結(jié)果將是什么,因此不確定度(或驚奇度)將為零。獲得焦糖拿鐵或卡布奇諾的概率為:
P(咖啡==焦糖拿鐵)= 0.50
P(咖啡==卡布奇諾)= 1–0.50 = 0.50
如果盒中只有焦糖拿鐵一種咖啡,在沒有不確定度的情況下,事件發(fā)生概率為:
P(咖啡==焦糖拿鐵)= 1
P(咖啡袋==卡布奇諾)= 1–1 = 0
即,異質(zhì)性與不確定度之間存在聯(lián)系:事件的異質(zhì)性越大,不確定度就越大;反之,事件的同質(zhì)性越大,不確定度就越小。不確定度表示為熵(Entropy)或基尼系數(shù)(Gini)。
熵的作用
香農(nóng)(Claude E. Shannon)通過以下方程式,以數(shù)學(xué)形式表達(dá)了概率與異質(zhì)性或不純度之間的這種關(guān)系:
(或)
不確定度或不純度表示為類別Pi的概率以2為底的對數(shù);索引(i)表示可能的類別數(shù)(在我們之前的汽車類型二分例子中i=2)。
該方程式由一條對稱曲線圖形表示,如下所示。

圖片來源:https://ccweb.imgix.net/https%3A%2F%2Fccweb.imgix.net%2Fhttps%253A%252F%252Fimg.youtube.com%252Fvi%252F6YEn9QRy3ks%252Fhqdefault.jpg%3Fauto%3Dformat%26cs%3Dstrip%26fit%3D%26h%3D710%26ixlib%3Dphp-3.3.0%26w%3D400%26s%3D80849c8a862b1138109a23bffe2f42ee?auto=format&ixlib=php-3.3.0&s=c1f6104029dafc383ef2e31bd9faa5f4
在X軸上是事件的概率,在Y軸上表示異質(zhì)性(由H(X) 表示的不純度)。
我們將詳細(xì)探討該曲線的意義,然后計(jì)算咖啡口味實(shí)驗(yàn)的熵。
log2pi具有一個(gè)非常獨(dú)特的屬性,即當(dāng)只有兩個(gè)結(jié)果時(shí),例如事件的概率=pi為1或0.50,則在這種情況下,log2pi取值如下(忽略負(fù)數(shù)):


當(dāng)概率圖片變?yōu)?時(shí),對數(shù)值趨于無窮大,曲線的形狀變?yōu)椋?/p>

但是,我們不希望出現(xiàn)上述情況,因?yàn)殪鼗虿患兌鹊臏y度只能取0~1的值(概率范圍為0~1)。因此,為了使曲線和log2pi的值恢復(fù)為零,我們將log2pi與概率(即pi本身)相乘。因此,表達(dá)式變?yōu)閜i*log2pi,log2pi返回負(fù)值,為了消除這種負(fù)效應(yīng),我們將結(jié)果乘以負(fù)號,最后,方程式即為
:
現(xiàn)在,該方程式可用于顯示不確定度如何根據(jù)事件發(fā)生的可能性而變化。曲線如下:

熵從0到1的取值范圍,是針對二分類問題的。對于多分類問題,上述關(guān)系式仍然成立,但是取值規(guī)模可能會發(fā)生改變。
Python中的熵計(jì)算
我們?nèi)匀灰郧笆龅目Х仁录纠?jì)算三種不同情況下的熵值。事件Y表示獲得焦糖拿鐵。兩種口味類別的異質(zhì)性或不純度公式如下:

其中,pi表示Y=1的概率,即事件(獲得焦糖拿鐵)發(fā)生的概率,qi表示Y=0的概率,即事件(獲得焦糖拿鐵)未發(fā)生的概率。
情況一:


在情況一中,當(dāng)盒中裝有7袋焦糖拿鐵和3袋卡布奇諾咖啡時(shí),要求選擇其中一個(gè)。熵值0.881即對該事件不確定度的度量。
情況二:


情況三:


在情況二和三中,可以看到熵值分別為1和0。在情況三中,當(dāng)盒中只有一種口味的咖啡(焦糖拿鐵)時(shí),不確定度或驚奇度也將被完全消除,從而熵值為零。
在Python中的熵計(jì)算過程如下:

那么,決策樹算法是如何使用這種計(jì)算方式來構(gòu)建樹的?
決策樹中的熵
如上所述,在決策樹中,損失函數(shù)最小化葉子節(jié)點(diǎn)中的異質(zhì)性。因此,目標(biāo)是選擇特征,并在特征中以閾值來構(gòu)建樹,以便在將數(shù)據(jù)分為兩部分時(shí),獲得最大可能的同質(zhì)性,換言之,目標(biāo)是使樹的熵值最小化。
在根節(jié)點(diǎn)上,通過香農(nóng)的熵計(jì)算方程式,計(jì)算目標(biāo)列的熵。在分支節(jié)點(diǎn)上,為目標(biāo)列計(jì)算加權(quán)熵。加權(quán)熵意味著每個(gè)特征取權(quán)重(每個(gè)類別的概率)。熵值越小,獲得的信息越多。
信息增益(Information Gain)即是在數(shù)據(jù)中觀察到的模式,亦即熵的減少。也可以視為父節(jié)點(diǎn)的熵減去子節(jié)點(diǎn)的熵,計(jì)算方式為(1–加權(quán)熵)。
前述示例中,三種情況的熵和信息增益計(jì)算如下:

現(xiàn)在,我們示例計(jì)算節(jié)點(diǎn)的熵和信息增益。
假設(shè)有下面的樹,在根節(jié)點(diǎn)中共有四個(gè)值,子節(jié)點(diǎn)1中具有3個(gè)值(分支1具有2個(gè)值,分支2具有1個(gè)值),子節(jié)點(diǎn)2中具有1個(gè)值。根節(jié)點(diǎn)的熵為1。

圖片來源:https://media.geeksforgeeks.org/wp-content/uploads/tr4.png
此時(shí),子節(jié)點(diǎn)2(child node 2)的熵為0,因?yàn)樵摴?jié)點(diǎn)中只有1個(gè)值,不存在異質(zhì)性。子節(jié)點(diǎn)1的熵計(jì)算如下:

繼而,信息增益的計(jì)算如下:

結(jié)語
信息熵(香農(nóng)熵)量化了隨機(jī)變量的值或隨機(jī)過程的結(jié)果中涉及的不確定度(驚奇度)。它在決策樹中的意義在于,使我們能夠計(jì)算目標(biāo)變量的不純度或異質(zhì)性。繼而,為了在因變量中達(dá)到最大的同質(zhì)性水平,以使子節(jié)點(diǎn)的總熵必須小于父節(jié)點(diǎn)的熵的方式創(chuàng)建子節(jié)點(diǎn)。
參考資料
https://en.wikipedia.org/wiki/Claude_Shannon
https://en.wikipedia.org/wiki/Information_theory
https://en.wikipedia.org/wiki/History_of_entropy#Information_theory
原文標(biāo)題:
Entropy – A Key Concept for All Data Science Beginners
原文鏈接:
https://www.analyticsvidhya.com/blog/2020/11/entropy-a-key-concept-for-all-data-science-beginners/
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。
fpga相關(guān)文章:fpga是什么











