1. 程式人生 > >機器學習中你需要了解的各種熵

機器學習中你需要了解的各種熵

1前言

資訊熵是資訊理論和機器學習中非常重要的概念,資訊是一個很抽象的概念,如何量化資訊呢?夏農提出了‘資訊熵’概念來解決了這個問題。本篇部落格主要是詳細記錄資訊熵中的一些概念 (自資訊,熵,交叉熵,相對熵,互資訊,決策樹中相關的熵),以方便自己日後回顧,所以不免從書上或者各篇部落格中收集了素材,但是本著尊重原創,後面都列出了參考連結,在此也感謝參考連結上的作者。

2各種熵的詳細介紹

2.1自資訊

自資訊表示某一事件發生時所帶來的資訊量的多少。但是什麼才是資訊量呢?簡單點說就是我能從一件事情發生得到的資訊多少。如果一件事很大概率的發生,對於這件事的發生我們並不會很奇怪,於是我們從這件事發生獲取的資訊量就比較少,如果比較小概率的事件發生發了,我們接收到的資訊就比較多。>換句話說就是,某一事件發生的概率非常小,但是實際上卻發生了(觀察結果),則此時的自資訊非常大;某一事件發生的概率非常大,並且實際上也發生了,則此時的自資訊較小。

圖1 >**說明:** 1.圖中I(P)表示某件事情發生獲取到的資訊量,其中P表示事件發生的概率分佈。I(pi)表示該事件發生的第i種情況下獲取到的資訊量。 2.等式中其中負號是用來保證資訊量是正數或者零。而log函式基的選擇是任意的(資訊理論中基常常選擇為2,因此資訊的單位為位元bits;而機器學習中基常常選擇為自然常數,因此單位常常被稱為奈特nats)
2.2資訊熵

自資訊中的某件事情,我們可以定義為一個隨機變數X。其中P表示隨機變數的概率分佈。資訊熵H(X)被稱為隨機變數X的熵,它表示隨機變數不確定的度量,是對所有可能發生的事件產生的資訊量的期望。可以理解為該事件上能獲取到的平均資訊量。
圖2

說明:
1.從上述公式可以看出,熵只依賴於X的分佈,與X的取值無關。
2.令0log0=0(因為某個取值概率可能為0)
3.熵越大,隨機變數的不確定性就越大(事件發生越是不確定,資訊量就越大,平均資訊量越大,那麼也可以代表這個變數的不確定性越大)

2.3條件熵和聯合熵

**a.**條件熵H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性。條件熵H(Y|X)定義為X給定條件下Y的條件概率分佈的熵對X的數學期望.
圖4
**b.**其中聯合熵為隨機變數X與隨機變數Y同時發生的概率分佈的熵。
圖5
**c.**聯合熵與條件熵之間的關係為:
圖7

2.4交叉熵

交叉熵常常被用於機器學習的代價函式,多用於分類模型的代價函式。其主要是用於度量兩個分佈之間的差異性。話不多說先給出交叉熵的公式:
圖3

說明:
1.p(x)和q(x)為樣本集的兩個概率分佈,也就是機器學習中的樣本x為各個類別label的概率分佈.其中p(x) 為真實分佈,q(x)非真實分佈-預測的概率分佈。logq(x)表示的是q的資訊量。
2.交叉熵是如何衡量概率分佈p,q之間的差異的?真實的樣本概率分佈是p(x),H(p,q)表示的是用q(x)進行對真實的樣本進行編碼得到的熵的大小,交叉熵熵越大,越不確定,差異越大。

2.5相對熵

使用非真實分佈q(x)對樣本x發生的概率進行編碼得到的平均碼長H(p,q)比真實分佈p(x)對樣本x發生的概率進行編碼得到的平均碼長(H§)多出的位元數就是相對熵也稱KL散度.給出公式:
圖9

說明:
1.交叉熵和相對熵兩種熵度量兩個概率分佈之間的差異是等價的。從公式上來看,兩者之間相差一個H§為真實樣本的概率分佈,在機器學習中,訓練資料分佈是固定的,最小化相對熵DKL(p||q)等價於最小化交叉熵H(p,q)也等價於最大化似然估計。
2.DKL是非負性的。圖9
3.非對稱的,公式中可以看出,KL散度是衡量兩個分佈的不相似性,不相似性越大,則值越大,當完全相同時,取值為0。

2.6互資訊

一個隨機變數由於已知另一個隨機變數而減少的不確定性,或者說從貝葉斯角度考慮,由於新的觀測資料y到來而導致x分佈的不確定性下降程度。列出公式:
圖10

說明:
1.互資訊其在特性選擇、分佈的距離評估中應用非常廣泛。
2.其實互資訊和相對熵也存在聯絡,如果說相對熵不能作為距離度量,是因為其非對稱性,那麼互資訊的出現正好彌補了該缺陷,使得我們可以計算任意兩個隨機變數之間的距離,或者說兩個隨機變數分佈之間的相關性、獨立性。

決策樹中相關的熵的使用

包括【資訊增益、資訊增益比、gini係數】。筆者在其他博文中已經介紹

3總結

1.自資訊是衡量隨機變數中的某個事件發生時所帶來的資訊量的多少,越是不可能發生的事情發生了,那麼自資訊就越大;
2.資訊熵是衡量隨機變數分佈的混亂程度,是隨機分佈各事件發生的資訊量的期望值,隨機變數的取值個數越多,狀態數也就越多,資訊熵就越大,混亂程度就越大。當隨機分佈為均勻分佈時,熵最大;資訊熵是傳輸一個隨機變數狀態值所需的位元位下界(最短平均編碼長度)
3.自資訊,資訊熵都是針對一個隨機變數的,而交叉熵、相對熵和互資訊可以衡量兩個隨機變數之間的關係。相對熵是指用q來表示分佈p額外需要的編碼長度。交叉熵是指用分佈 q 來表示本來表示分佈 p 的平均編碼長度。
交叉熵一般用在神經網路和邏輯迴歸中作為損失函式,相對熵一般用在生成模型中用於評估生成的分佈和真實分佈的差距,而互資訊是純數學的概念,作為一種評估兩個分佈之間相似性的數學工具,其三者的關係是:最大化似然函式,等價於最小化負對數似然,等價於最小化交叉熵,等價於最小化KL散度,互資訊相對於相對熵區別就是互資訊滿足對稱性;
4.對於決策樹中的資訊增益、資訊增益比、gini係數主要是用於特徵選擇。資訊增益中的兩個隨機變數是把一個變數看成是減少另一個變數不確定度的手段。資訊增益率主要是克服資訊增益存在的在某種特徵上分類特徵細,但實際上無意義取值時候導致的決策樹劃分特徵失誤的問題。(特徵取值多,資訊增益比較大的問題)。gini係數主要考慮的是計算快速性、高效性。基尼係數主要是度量資料劃分對訓練資料集D的不純度大小,基尼係數越小,表明樣本的純度越高。

4參考連結

相關推薦

機器學習需要各種

1前言 資訊熵是資訊理論和機器學習中非常重要的概念,資訊是一個很抽象的概念,如何量化資訊呢?夏農提出了‘資訊熵’概念來解決了這個問題。本篇部落格主要是詳細記錄資訊熵中的一些概念 (自資訊,熵,交叉熵,相對熵,互資訊,決策樹中相關的熵),以方便自己日後回顧,所以不

0基礎學習大數據需要學習路線和方向

大數據 0基礎現在大數據這麽火,各行各業想轉行大數據,那麽問題來了,該往哪方面發展,哪方面最適合自己? 首先從字面來了解一下大數據 大數據 (巨量數據集合(IT行業術語)) 大數據(big data),指無法在一定時間範圍內用常規軟件工具進行捕捉、管理和處理的數據集合,是需要新處理模式才能具有更強的決策力、

粵嵌怎樣學習嵌入式?準備前期需要的這些內容

智能手機 都是 硬件 要求 計算機 ron 分析 高校學生 以及 怎樣學習嵌入式?在決定好往嵌入式這個方向發展前,先別著急要怎麽學,而是先了解下嵌入式是什麽、其發展方向究竟如何?這樣才能明確自己之後要走的路,而不是茫然四顧,徒然浪費不少時間。  嵌入式系統開發其實就是對智能

【廣州服務器回收】服務器維護過程需要的5個小常識

windows ron 就是 圖片 渲染 天都 驚人的 領域 其他人 大多數人認為,服務器僅僅是升級後的臺式機。但任何在數據中心工作過的人都知道,它們的差別挺大的。 盡管web服務器每天都要承擔數百萬訪問者的負載,但對於普通用戶來說,它們仍然神秘莫測。以下是關於服務器你可能

關於深度學習優化器 optimizer 的選擇,需要這些

在很多機器學習和深度學習的應用中,我們發現用的最多的優化器是 Adam,為什麼呢? 在 keras 中也有 SGD,RMSprop,Adagrad,Adadelta,Adam 等: https://keras.io/optimizers/ 我們可以發

關於深度學習,這些知識點需要一下

深度學習概述o受限玻爾茲曼機和深度信念網路oDropouto處理不平衡的技巧oSMOTE:合成少數過取樣技術o神經網路中對成本敏感的學習深度學習概述在2006年之前,訓練深度監督前饋神經網路總是失敗的,其主要原因都是導致過度擬合,即訓練錯誤減少,而驗證錯誤增加。深度網路通常意

需要深度學習和神經網路這項技術嗎?

有一次,我和Vito(我的合夥人)聊起了當下熱門的幾種技術趨勢。當談及它們在未來可能的發展前景的時候,Vito說了下面的一段話: 人工智慧是個資訊革命到蒸汽機規模之間的機會,相比之下虛擬現實應該是移動網際網路級別的,而使用者個性化服務應該是伴生規模的。 如果人工智慧

學習 webpack 前,需要的那些概念

什麼是webpack 關於什麼是webpack,一般的教程裡面都會提到webpack是一個模組化打包工作,但是很多初學者沒有模組化這個概念,所以往往在第一步就被攔住了。所以在講什麼是webpack之前,我想先講一下和模組化相關的概念。 javascript的執行環境 因

0基礎學習大資料需要學習路線和方向

開發十年,就只剩下這套架構體系了! >>>   

Spring Cloud Config 配置中心實踐過程需要這些細節!

本文導讀: Spring Cloud Config 基本概念 Spring Cloud Config 客戶端載入流程 Spring Cloud Config 基於訊息匯流排配置 Spring Cloud Config 中的佔位符 Spring Cloud Config 倉庫最佳實踐 Spring Cloud

如何在 Spring/Spring Boot 做引數校驗?需要的都在這裡!

本文為作者原創,如需轉載請在文首著名地址,公眾號轉載請申請開白。 springboot-guide : 適合新手入門以及有經驗的開發人員查閱的 Spring Boot 教程(業餘時間維護中,歡迎一起維護)。 資料的校驗的重要性就不用說了,即使在前端對資料進行校驗的情況下,我們還是要對傳入後端的資料再進行一

需要的 C++ 17 Top 19 新特性(附精彩評論)

turn ane res 標準屬性 padding about ref list 5.0 什麽是 C++17? C++17(或 C++1z)是繼 C++14 之後 C++ 編程語言 ISO/IEC 標準的下一次修訂的非正式名稱。C++17 現在功能已齊全,正在成為國際標準

需要的HTTP知識都在這裏

gem agent pre 基本 語法 lan 重要 詳細 thead 前言 HTTP網絡通信協議在任何的開發工作中都起到非常重要的作用,今天,我們來講解下關於HTTP的相關知識。 目錄 5分鐘全面了解HTTP相關知識.png 計算機網絡相關知識 計算機網絡體

關於驗證碼,需要這些

使用場景 strong 兼容 logs nbsp 簽名 業務 swe yun (一)什麽是驗證碼業務id? captchaId, 驗證碼唯一標識,公開可見,用於區分不同的驗證碼使用場景,如登錄、投票、發帖等。可在易盾管理中心驗證碼業務ID管理處自行創建。2017年6月1

微服務架構盛行的時代,需要點 Spring Boot

措辭 理由 直接 響應 con 可伸縮 角度 徹底 構建 隨著互聯網的高速發展,龐大的用戶群體和快速的需求變化已經成為了傳統架構的痛點。 在這種情況下,如何從系統架構的角度出發,構建出靈活、易擴展的系統來快速響應需求的變化,同時,隨著用戶量的增加,如何保證系統的穩定性、高可

.NET Core部署的框架依賴與獨立部署

基礎 由於 -s 文件的 順序 ase nth ger 用戶輸入 作者:依樂祝 原文地址:https://www.cnblogs.com/yilezhu/p/9703460.html NET Core項目發布的時候你有沒有註意到這兩個選項呢?有沒有糾結過框架依賴與獨立部署

學習大資料-需要RAID

簡介 RAID是一個我們經常能見到的名詞。但卻因為很少能在實際環境中體驗,所以很難對其原理 能有很清楚的認識和掌握。本文將對RAID技術進行介紹和總結,以期能儘量闡明其概念。 RAID全稱為獨立磁碟冗餘陣列(Redundant Array of Independent Disks),

學習rest_framework之前需要

back frame fff play pla span bsp pat right FBV和CBV 什麽是FBV和CBV   FBV是基於函數的視圖   CBV是基於類的視圖 views中的代碼 : u

身為前端開發工程師,需要的搜尋引擎優化SEO.

網站url網站建立具有良好描述性、規範、簡單的url,有利於使用者更方便的記憶和判斷網頁的內容,也有利於搜尋引擎更有效的抓取您的網站。網站設計之初,就應該有合理的url規劃。 處理方式: 1.在系統中只使用正常形式url,不讓使用者接觸到非正常形式的url。 2.不把session id、統計程式碼等不必

身為前端開發工程師,需要的搜索引擎優化SEO.

ide 收藏 htm des 頻道 最適 主題 開發工程師 用戶 網站url網站創建具有良好描述性、規範、簡單的url,有利於用戶更方便的記憶和判斷網頁的內容,也有利於搜索引擎更有效的抓取您的網站。網站設計之初,就應該有合理的url規劃。 處理方式: 1.在系統中只使用正