機器學習-決策樹(上)

決策樹構建:

決策樹的結構與python中的二叉樹結構(PY數據結構-樹)相似,不過決策樹中除了葉節點之外的其他節點,都被稱之為“決策節點”,構建決策樹的過程,也就是選取每一個節點采用哪一個特征作為劃分依據的過程。

以解決二元分類問題為例,最終的葉節點輸出只有兩種情況:0或1,那么在前面的每一個決策節點時我們自然希望每一個節點分支得到的樣本盡可能屬于同一個類別,也就是說得到的示例樣本純度最高。因此,我們引入“熵”的概念,熵用于衡量樣本的不純度,其表達式如下:

H(p_{1})=-p_{1}log_{2}(p_{1})-p_{0}log_{2}(p_{0})

其中:?p_{1}——所有樣本中正例的占比;

? ? ? ? ? ? p_{0}——所有樣本中負例的占比。

其圖像如上圖所示,可以看出,當一個樣本中正例和負例各占一半時,對于分類而言此時樣本是最不純的,相應的熵值取最大值1;而當一個樣本中全部為正例或負例時,對于分類而言此時樣本最純,相應的熵值取最小值0。

因此,決策節點的特征選取問題就轉變為哪一個特征作為劃分依據時可以最大程度的降低熵值的問題。并且,需要注意的一點是,當某一個分支的樣本的數量較大時,保證該分支的純度是更為重要的。這是因為樣本數量多的分支在訓練數據中占比更高,其分類結果對模型的整體準確率、召回率等指標影響更大。因此我們進一步的將特征分裂后的左右子分支得到的熵值進行加權平均計算

H=w^{left}H(p_{1}^{left})+w^{right}H(p_{1}^{right})

熵值的減少量也被稱之為信息增益,而在實際運用中,我們一般會采取最大信息增益(也就是最大熵值降低)作為劃分依據,這與樹的停止劃分有關。信息增益計算如下:

Info Gain=H^{root}-(w^{left}H(p_{1}^{left})+w^{right}H(p_{1}^{right}))

劃分停止依據:

決策樹的停止劃分依據有如下四種:

  • 該節點已經100%是某一個類別;
  • 已經達到的樹的最大深度;
  • 信息增益已經低于閾值;
  • 節點的示例樣本已經低于閾值。

即使最終樹的葉節點沒有達到100%的純度,我們也需要通過其他依據來停止繼續劃分,因為當樹的規模過大時難以管理,并且很有可能會出現過擬合(決策樹會為了純度不斷地生成過于復雜的劃分規則)。同時,當繼續劃分得到的信息增益過小時,也沒有必要再繼續進行下去,理由同前者。

特征取值非二元:

前面提到過決策樹的結構與二叉樹相似,而如果某一個特征的取值是>2個的離散值/連續任意值時,我們需要采用一些轉換的方法來保證二叉的結構。

獨熱編碼:

對于取值為非任意離散值時,比如在下圖的耳朵形狀特征的取值中,可取值有三類:尖耳、垂耳以及橢圓形,我們將耳朵形狀的分類變量轉換成二進制向量,如下圖所示。此時我們不再將耳朵形狀作為分類特征,而是直接將它的三個取值類別作為分類特征,相應的每個樣本在這三個分類特征中只會有一個值取1,因此稱為獨熱。

閾值分割:

對于取值為連續任意值時,比如下圖中的體重,此時無法同上采用獨熱編碼來處理,因此一般是通過閾值分割將此特征的取值劃分為兩類作為分裂。而對于閾值的選擇,通常是將訓練樣本中所有該特征取值進行排序,再取相鄰值的中點作為候選閾值,然后計算每個候選閾值分裂后的信息增益,選擇使增益最大的閾值。這可以保證在所有訓練數據中確保找到當前特征下的全局最優分裂點,不過相應的計算成本較高。

回歸樹:

前面提到的決策樹都是解決分類問題,不過決策樹也可以推廣到解決回歸問題,也就是創建回歸樹。同樣還是上圖,此時我們不再把最右側的體重作為輸入特征,而是直接作為輸出,問題就轉變為了對于體重的預測。同樣是選取不同的輸入特征作為決策節點,現在我們要計算的不再是信息增益,之前目標是保證葉節點中的樣本更多的為一個類別,此時目標則是保證葉結點中的樣本體重盡可能接近,因為最終葉結點中所有樣本的體重均值將作為此葉結點的預測結果。所以,每一次選擇節點時,需要計算的是劃分后的方差減少量,能夠最大化降低方差的就作為當前決策節點。

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

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

相關文章

一周學會Matplotlib3 Python 數據可視化-繪制直方圖(Histogram)

鋒哥原創的Matplotlib3 Python數據可視化視頻教程: 2026版 Matplotlib3 Python 數據可視化 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程講解利用python進行數據可視化 科研繪圖-Matplotlib,學習Matplotlib圖形參數基本設置&…

uni-app之刪除沒用的文件,搭建頁面

文章目錄一、初始化項目1.1 初始化index.vue1.2 刪除無用文件1.3 初始化后的目錄結果如下二、文件目錄分析2.1 核心文件2.2 關鍵文件夾?2.3 其他文件2.4 注意事項??三、創建頁面(pages)3.1 創建home頁面3.2 創建其他頁面3.3 查看pages.json3.4 刪除index頁面和pages.json的配…

99、【OS】【Nuttx】【構建】cmake 配置實操:問題解決

【聲明】本博客所有內容均為個人業余時間創作,所述技術案例均來自公開開源項目(如Github,Apache基金會),不涉及任何企業機密或未公開技術,如有侵權請聯系刪除 背景 接之前 blog 【OS】【Nuttx】【構建】cm…

2007-2023年各省環境保護支出統計數據

數據介紹 環境保護支出是指政府和企業為改善生態環境質量、防治污染、保護自然資源所投入的資金,涵蓋污染防治、生態修復、環境管理等多方面。污染防治支出、生態保護支出、環境管理事務、資源節約與循環利用等,當前環保支出仍面臨區域不平衡、隱性債務…

PyCharm(2025.1.3.1)綁定 Conda 環境

1. Pycharm 右下角,選擇( 如圖所示 )2. Path to conda 這里選擇如圖所示的這個文件( 在你下載的 Anaconda 文件里 ),之后在 Enviroment 中就可以看到你新創建的環境了

Liunx文件系統詳解

目錄 1.磁盤 1.1 概念 1.2 磁盤物理結構 1.3 磁盤的存儲結構 1.4 磁盤的邏輯結構 1.5 CHS && LBA地址 2.基礎文件系統 2.1 塊 ?編輯 2.2 分區 2.3 inode 3.ext2 ?件系統 3.1 宏觀認識 3.2 Block Group 3.3塊組內部構成 3.3.1 超級塊(Supe…

Mac如何安裝telnet命令

Mac如何安裝telnet命令_mac telnet-CSDN博客

【SpringBoot】持久層 sql 注入問題

目錄 概述 #{} 與 ${} 概述 前端惡意傳參,改變后端 sql 語句的語法結構,從而使后端給前端返回一些私密的數據。這種安全問題往往是因為沒有嚴格過濾參數,或者后端代碼不嚴謹導致的。 #{} 與 ${} 在 MyBatis 框架中,#{} 與 ${} 都…

怎么寫好漢語言文學專業的論文?

磨刀不誤砍柴功, 前期多看文章和文獻,吸取寫作經驗,寫作過程會更加順利噢!看到最后,相信你能得到收獲! 寫漢語言專業論文并不難,從選題、資料準備、框架搭建、正文寫作、修改定稿五個核心環節展…

MySQL User表入門教程

一、User表概述 MySQL的user表位于mysql系統數據庫中,是MySQL權限系統的核心,用于存儲用戶賬戶信息、認證方式和全局權限。通過操作此表,可實現用戶創建、權限分配及安全審計。 二、User表核心字段解析字段名作用示例值Host用戶允許連接的主機…

[NPUCTF2020]這是什么覓

題目是一個文件,我們先以記事本打開一下,開頭就是PK,基本可以確定這是一個 ZIP 格式的壓縮包?,不確定可以用winhex打開:?50 4B 03 04開頭則 100% 是 ZIP 文件。改一下后綴之后解壓得到一張圖片上面是日期&#xff0c…

每日任務day0812:小小勇者成長記之擠牛奶

清晨,薄霧還繚繞在草地上,小小勇者背著編織籃子來到農場。奶牛們低頭咀嚼,尾巴輕輕拍打著蒼白的露珠。老人微笑著遞給他一只溫熱的牛奶罐,說:“第一次要慢,別驚擾它們。”勇者學著老人彎下身,溫…

IIS 多用戶環境中判斷服務器是否為開發用電腦,數據狀態比較

如果只需要在 IIS 多用戶環境中判斷服務器是否為開發用電腦(一個固定狀態,通常不會動態切換),代碼可以進一步簡化。這種場景下,狀態一般是啟動時確定的(如通過配置文件或環境變量),后…

P2865 [USACO06NOV] Roadblocks G

思路:嚴格次短路,在任何情況下如果發現一條從1到i的路,都有以下情況:1.該路徑小于當前1到i的最短路,將最短路替換2.該路徑長度等于當前最短路,舍去3.該路徑大于最短路且小于次短路,將此路徑替換…

基于Hadoop的汽車價格預測分析及評論情感分析可視化系統

文章目錄有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主一、項目背景二、項目目標三、系統架構四、功能模塊五、創新點六、應用價值與前景每文一語有需要本項目的代碼或文檔以及全部資源,或者部署調試可以私信博主 一、項目背景 近年…

gpt-5與gpt-5-fast

簡單來說: GPT-5 → 追求最高質量的推理,輸出會更細致、更準確,尤其適合需要深度思考、長鏈推理、嚴謹分析的任務(比如復雜代碼調試、長文檔推理、系統設計)。速度相對慢一些。GPT-5-fast → 追求更高的響應速度&#…

Mybatis源碼解讀-SqlSession 會話源碼和Executor SQL操作執行器源碼

相關流程圖整理元數據簡略圖執行流程圖一級緩存、二級緩存設計與查詢流程分析圖一級緩存設計-類圖一級緩存工作流程圖二級緩存設計-類圖二級緩存工作流程圖元數據簡略圖 執行流程圖 一級緩存、二級緩存設計與查詢流程分析圖 一級緩存設計-類圖 一級緩存工作流程圖 二級緩存設計…

使用Excel制作甘特圖

最終效果:專業的項目管理團隊通常會使用project制作甘特圖,但是很多人沒接觸過這個軟件,另外project制作的甘特圖并不適合放在PPT中展示。由于Excel圖表的數據標簽無法準確識別月初和月末,如果使用原始數據直接做的效果是這樣的&a…

超詳細基于stm32hal庫的esp8266WiFi模塊驅動程序(可直接移植)

目錄 前言: 1 前期準備 1.1 了解mqtt通信協議 1.1.1核心組件 1.2 ESP8266固件燒錄 1.3 啟動EMQX服務器 1.3.1大概了解emqx的使用 2 驅動代碼講解應用 2.1 硬件接線 2.2 AT指令 2.3 驅動代碼 2.4 效果展示 前言: esp8266支持mqtt通信協議&…

redis認識緩存擊穿

緩存擊穿是指 一個非常熱點的數據(被高并發訪問)在緩存中過期失效的瞬間,導致大量并發請求同時穿透緩存,直接落到底層數據庫,造成數據庫瞬間壓力劇增甚至崩潰的現象。關鍵特征和你的描述解析“數據庫沒有就需要命中的數…