機器學習之決策樹與隨機森林

  • 目錄
  • 1、了解熵、條件熵、互信息的概念及公式
    • 1.1、熵
    • 1.2、條件熵
    • 1.3、信息增益/互信息
  • 2、了解決策樹
    • 2.1、了解決策樹的概念和特點以及和熵的關系
    • 2.2、了解樹生成的過程
    • 2.3、了解決策樹三種算法的區別
    • 2.4、了解決策樹的損失函數
    • 2.5、了解解決決策樹過擬合的方法
    • 2.6、了解后剪枝的過程
  • 3、了解Bagging和隨機森林
  • 4、掌握樣本不均衡常用的處理方法
  • 5、隨機森林算法常用參數詳解

目錄

1、了解熵、條件熵、互信息的概念及公式

1.1、熵

熵本身是描述事物的混亂程度的
決策樹乃至隨機森林最關鍵的一點就是如何來劃分一個節點分裂數據讓結果達到最好。
信息熵的作用(即判定特征分裂的好壞)
了解信息熵的表示形式(負號代表x發生的概率越大對應的熵值越小):
這里寫圖片描述

知道這個信息熵的概念(x發生的概率越大,結果越穩定對應的熵值也就越小;P(X,Y)=H(X)+H(Y)代表X、Y發生的事件的熵相加)

1.2、條件熵

知道條件熵的概念:H(Y|X)表示在X發生的前提下,Y發生新帶來的熵。
這里寫圖片描述

1.3、信息增益/互信息

信息增益即為互信息,信息增益即為相關系數(計算一個特征對類X是否有影響)
信息增益:度量特征A對數據集D的不確定性的減小程度(即不確定減小也就是D發生概率增加)。
這里寫圖片描述

信息增益即為互信息,信息增益即為相關系數(計算一個特征對類X的影響程度)
信息增益:度量特征A對數據集D的不確定性的減小程度(即不確定減小也就是D發生概率增加)。
這里寫圖片描述

2、了解決策樹

2.1、了解決策樹的概念和特點以及和熵的關系

這里寫圖片描述
這里寫圖片描述
信息熵又稱為經驗熵,重點注意下面選取分裂特征的過程。

2.2、了解樹生成的過程

樹的生成過程:首先你能得到對應的數據集D的經驗熵(即根節點的信息熵),之后遍歷所有的特征,進行以下步驟:(前提條件是你肯定能得到數據集D的經驗熵H(D)公式如下圖)。
一、計算特征A對于數據集D的條件熵即H(D|A);
二、計算特征A的信息增益g(D,A)=H(D)-H(D|A);
三、選擇信息增益最大的特征作為當前的分裂特征。(信息增益越大,也就說明D在A特征下發生的概率越大,也就說明D對應的信息熵越小。而樹生成的過程即是從信息熵大的根節點到信息熵為0的葉子節點)
這里寫圖片描述

2.3、了解決策樹三種算法的區別

這里寫圖片描述
這里寫圖片描述
知道gini系數(同信息增益一樣也可以作為特征分析的依據)
這里寫圖片描述

2.4、了解決策樹的損失函數

了解評價函數的意義:實際上就是每個葉子結點的熵值和對應的葉子結點上的數據量做一個乘積的加和(這里的N其實就是對H(t)做一個加權處理)
掌握損失函數(又稱為評價函數)的表達式以及對應的含義(可不可以理解為:因為葉子節點代表分類的最終結果,那么葉子節點的熵值也就代表分類的好壞的程度,那么所有葉子節點的熵值的加權和也就代表整棵樹分類的好壞程度)。
結論:損失函數越小即代表整體的熵值越小,整棵樹越穩定,分類的效果越好。
這里寫圖片描述

2.5、了解解決決策樹過擬合的方法

1、剪枝(過程見下文)
2、隨機森林
了解剪枝的思路:即如何從Ti到Ti+1
這里寫圖片描述
了解修正后的損失函數的含義 :實質上就是添加了葉子節點的影響權重值
了解α的公式(C(r):單個根節點的評價函數值。C(R):子樹的評價函數值。如下圖所示)以及對應的求解過程
這里寫圖片描述

2.6、了解后剪枝的過程

一、先求出各個內部節點的α值,
二、然后將α值從小到大進行排列得到對應得樹T0、T1…
三、按照這個順序依次進行剪枝的操作直到剪到最后的根節點為止。
四、最終利用test集合去測試看那棵樹的損失函數最小就選取哪棵樹。

3、了解Bagging和隨機森林

知道這個Bagging是什么
這里寫圖片描述
這里寫圖片描述
了解隨機森林的建立過程
這里寫圖片描述
這里寫圖片描述
這里寫圖片描述

4、掌握樣本不均衡常用的處理方法

1、A類隨機欠采樣:A類樣本過多,可以通過隨機采取A中的少部分(如20%)樣本來和B中的樣本匯總作為總的樣本。
2、基于聚類的A類的分割:將A類樣本進行一個聚類操作,然后隨機的選取A中的任何一個類族和B一起構成一個總的樣本。
3、B類過采樣:B類數據太少,可以不斷的復制B類的樣本從而使B樣本的數量增加滿足A樣本的要求。
4、B類數據合成:在空間中將兩個B樣本連接,隨機在連線上選取某些點用于生成樣本以達到增加樣本B的數量的目的。(如下圖所示)
5、代價敏感學習(降低A類權值,提高B類權值)
總結:1-4為對樣本的處理,5對算法的處理。

5、隨機森林算法常用參數詳解

詳見:https://blog.csdn.net/qq_16633405/article/details/61200502

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456464.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456464.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456464.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JSON(JavaScript Object Notation) 格式

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。JSON采用完全獨立于程序語言的文本格式,但是也使用了類C語言的習慣。 json是 JavaScript Object Notation 的首字母縮寫&…

synchronized 的理解

第一種:package com.ucmed.zsyy.util;/*** Created by ucmed on 2017/2/8.*/public class DirtyRead {private String username "zjkj";private String password "123";public synchronized void setValue(String username, String password)…

機器學習之提升算法

1、知道提升、梯度提升是什么意思1.1、提升1.2、梯度提升1.3、了解提升算法的過程 2、殘差與殘差平方和(residual sum of squares)3、了解GBDT算法4、了解XGBoost算法5、了解Adaboost算法5.1、Adaboost算法的原理5.2、例子 6、偏差和方差 1、知道提升、梯…

Jsoup遍歷ul li下的鏈接信息實例

2019獨角獸企業重金招聘Python工程師標準>>> Document doc;try {String URL "www.baidu.com";doc Jsoup.connect(URL).get();Elements ElementsUl doc.getElementsByTag("ul");for (Element elementLi : ElementsUl) {Elements provinceEl …

兩篇波蘭地區重金屬污染地區土壤微生物多樣性的研究

環境微生物(包括方興未艾的腸道微生物)在不同的系統中發揮著的生態作用逐漸被意識到,我們對環境微生物實際上仍舊知之甚少,其多樣性問題仍舊是一個非常基礎和重要的課題。這次讀的兩篇文章都是關于波蘭地區重金屬污染地區的土壤微…

jquery中的 $(function(){})

$(function(){})的區別:$(function(){}) 是 $(document).ready(function(){}) 的簡寫,用來在DOM加載完成之后執行一系列預先定義好的函數。 需要注意與(function(){})相比,(function(){})表示一個匿名函數。function(arg){...}定義了一個參數…

機器學習之支持向量機(SVM)總結

文章目錄1、知道SVM相關的各種概念2、知道目標函數、損失函數、正則項的意義2.1、目標函數2.2、損失函數2.3、正則化(添加噪音避免過擬合)3、了解SVM算法原理4、知道SVM的目標函數5、知道SVM的損失函數以及公式6、知道SVM支持向量機的計算過程6.1、推導過…

在CentOS上搭建PHP服務器環境

您也可以使用一鍵自動部署環境的工具,請參見網友開發的這個工具 http://www.centos.bz/2013/08/ezhttp-tutorial/安裝apache:yum install httpd httpd-devel 啟動apache:/etc/init.d/httpd start此時輸入服務器的IP地址,應該看到apache的服務頁面&#x…

jQuery之滾動事件$(window).scroll(function()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>滾動事件</title><script src"https://code.jquery.com/jquery-2.2.4.min.js"></script><style>img{position:fixe…

《瘋狂Java講義》(二十九)---- JDBC

JDBC編程步驟加載數據庫驅動Class.forName(driverClass). 例如&#xff1a;Class.forName("oracle.jdbc.driver.OracleDriver"); 2. 通過DriverManager獲取數據庫連接。 DriverManager.getConnection(String url, String user, String pwd); 3. 通過Connection對象創…

機器學習之聚類算法的原理推導及相關知識總結

文章目錄1、知道幾個關于"差"的概念2、理解相似度度量的各種方法和相互關系2.1、歐氏距離2.2、jaccard相似系數2.3、余弦相似度2.4、Pearson相似系數2.5、相對熵3、掌握掌握K-Means算法3.1、知道聚類的思想3.2、K-Means算法原理3.3、知道K-Mediods聚類3.4、如何選取K…

Flex 布局教程:語法

Java數組聲明的三種方式 第一種(聲明并初始化)&#xff1a; 數據類型[] 數組名{值,值,...}; 例&#xff1a;int[] a {1,2,3,4,5,6,7,8}; 第二種(聲明后賦值)&#xff1a; 數據類型[] 數組名 new 數據類型[數組長度]; 數組名[下標1]值…

注意:匿名函數調用直接加載函數名setInterval(move,30)

setInterval要求第一個參數必須是含Javascript命令的字符串或函數對象&#xff0c;所以 setInterval("move()",300) 以及 setInterval(move,300) 這兩個都是正確的。 而 setInterval(move(),300) 當Javascript運行到這個語句時&#xff0c;會立即執行move這個函數&am…

vue import組件的使用

vue import組件的使用 1新建/src/component/firstcomponent.vue <template><div id"firstcomponent"><h1>I am a title.</h1></div> </template>2在app.vue引入組件 并且注冊 <script> import firstcomponent from ./comp…

牽絲戲

余少能視鬼&#xff0c;嘗于雪夜野寺逢一提傀儡翁&#xff0c;鶴發襤褸&#xff0c;唯持一木偶制作極精&#xff0c;宛如嬌女&#xff0c;繪珠淚盈睫&#xff0c;惹人見憐。 時云彤雪狂&#xff0c;二人比肩向火&#xff0c;翁自述曰&#xff1a;少時好觀牽絲戲&#xff0c;耽…

機器學習之EM算法的原理推導及相關知識總結

文章目錄1、知道先驗概率和后驗概率2、了解高斯混合模型GMM3、通過最大似然估計推導EM算法的過程的實例4、EM算法5、知道pLSA模型1、知道先驗概率和后驗概率 先驗概率&#xff08;prior probability&#xff09;是指根據以往經驗和分析得到的概率&#xff08;理解為自定義概率…

jQuery中的on 和事件委派

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>事件</title><style>p{width:100px;height:100px;border: 1px solid gray;}</style><script src"https://code.jquery.com/…

python pip處理

查看pip 版本號 pip --version 升級方法 on linux or os X: pip install -U pip on windows: python -m pip install -U pip 轉載于:https://www.cnblogs.com/yangwithtao/p/6397114.html

js中innerHTML和innerText jQuery中html()和text()的區別

js中innerHTML和innerText的區別innerHTML innerHTML 會將標簽和標簽中的內容否獲取回來 innerHTML .innerHTML ‘<p></p>’; 只會將文本內容解析出來&#xff0c;不會顯示標簽innerText innerText 只會將標簽中的內容獲取回來&#xff0c;不會獲取標簽 innerT…

ECMAScript 6 -- let和const命令

ES6新增了let命令&#xff0c;用來聲明變量。它的用法類似于var&#xff0c;但是所聲明的變量&#xff0c;只在let命令所在的代碼塊內有效。 for (let i 0; i < 10; i) {console.log(i);} 可以執行 for (let i 0; i < 10; i) {}console.log(i); 就會報錯 ncaught Refer…