機器學習(六)

一,決策樹:

簡介:

????????決策樹是一種通過構建類似樹狀的結構(顛倒的樹),從根節點開始逐步對數據進行劃分,最終在葉子節點做出預測結果的模型。

結構組成:

????????根節點:初始的數據集全集,沒有經過任何劃分(最頂層的部分)

????????內部節點:代表對某個特征的測試,根據特征值將數據劃分為子節點(中間部分)

????????葉子節點:代表最終的分類結果或回歸值(最底層的部分)

學習過程:

????????①選擇根節點:找到一個明顯的特征,能將數據最純凈地分為兩組

????????②遞歸:對每個子節點重復上述操作,直到所有樣本都同屬于一類(完全純凈) or 沒有更多的特征可用 or 達到的預設的樹的深度(防止過擬合)

測量分類純度(以區分貓狗為例):

????????①信息熵:

????????熵(H)的函數圖像如上圖所示,當區分后的樣本全為貓或狗時,熵為0;當樣本中貓和狗的比例越接近于1時,熵越大。

????????熵的函數:

????????

????????Pi是數據集中第i類樣本的比例

????????當所有樣本屬于同一類時(完全純凈),熵為0;當樣本類別均勻分布時,熵最大。

????????②基尼指數:

????????????????基尼指數衡量隨機抽取的兩個樣本類別不一致的概率,數值越小純度越高

????????????????公式:

????????????????

????????????????當數據集完全純凈時,基尼指數為0;當數據集類別分布均勻時,基尼指數為0.5

????????③分類誤差:

????????????????分類誤差表示使用多數類作為標簽時誤分類的概率

????????????????公式:

????????????????????????????????

????????????????完全純凈時誤差為0,二分類均勻分布時誤差為0.5

????????三者比較:

????????計算效率:基尼指數=分類誤差>信息熵

????????敏感度:信息熵>基尼指數>分類誤差

三者在決策樹中的應用:

????????信息增益(熵):通過父節點減去子節點熵的加權平均值來選擇增益最大的特征

????????基尼指數:類似信息增益,選擇使基尼指數下降最多的分割

信息增益的實現:? ? ?

????????信息增益:在構建決策樹過程中,使用某個特征對數據集實現分割后,學習熵的減少程度。

????????核心:選擇使信息增益最大的特征進行分割(即使學習熵減少程度最大),最大程度上純化子節點

實現步驟:

????????①計算父節點的熵:

????????②按照特征分割,計算子節點的熵

????????③計算加權子節點的熵

????????④計算信息增益

舉例:?

????????假設父節點中有10個樣本,6個屬于A類,4個屬于B類

????????①計算父節點的熵:代入信息熵的公式得到父節點的熵為0.971

????????②按特征分割數據,計算子節點的熵:用特征將這10個樣本分為兩個子節點,每個子節點有5個樣本,分別計算兩個子節點的熵。

????????????????????????????????子節點1(4A1B):熵為0.722

????????????????????????????????子節點2(2A3B):熵為0.971

????????③計算加權子節點熵:

????????????????加權熵=(5/10)*子節點1熵+(5/10)*子節點2熵=0.8465

????????④計算信息增益:

???????????????信息增益=父節點熵-加權子節點熵=0.1245

構建決策樹:

①數據準備和預處理:

????????????????從決策樹的根結點開始,對數據進行數據清洗和特征處理或標簽編碼

②分割:

?????????????????通過選擇該特征后提供的最高信息增益的特性進行分割

③創建樹的分支:

????????????????根據所選特性將數據集拆分成兩個子集,并創建樹的分支,后將數據集劃分給分支

④遞歸:

????????????????對每個子節點重復上述操作,直到滿足停止條件

停止條件:

  1. 節點純度達標
  2. 達到預設的最大樹深
  3. 繼續分割的信息增益低于閾值(無顯著信息增益)
  4. 子節點的樣本數小于閾值(樣本數過少)
One-Hot編碼:

????????One-Hot編碼是將包含K個類別的離散特征轉換為K個二元特征,常用在構建決策樹時,處理多類別特征。

????????舉例:原始特征“顏色”包含三個類別:紅,藍,綠

??????????????????經過One-Hot編碼后生成三個新特征:是不是紅色,是不是藍色,是不是綠色

????????優點:可以將多類別特征轉換為二元特征,每個特征僅對應一個類別,模型可以更靈活的選擇分割點;可以避免算法對多取值特征的偏好

????????缺點:

? ? ? ? ????????????????1.增加特征數量,增加計算負擔

? ? ? ? ? ? ? ? ? ? ? ? 2.降低單個特征的重要性,使得信息分散

? ? ? ? ? ? ? ? ? ? ? ? 3.過擬合風險

拆分連續值的決策樹分支:

????????連續值的分割目標是找到某個閾值,將數據集分為兩個子集,使得分割后的子集純度最高。

實現步驟:

  1. 排序連續特征值
  2. 根據排完序的特征值點生成候選分割點
  3. 計算每個分割點之間的純度
  4. 對比執行后分割

二,回歸樹模型:

????????回歸樹是一種用來預測連續數值的決策樹模型,如用來預測房價,溫度......。與分類樹不同,分類樹預測的是類別,而回歸樹預測的是連續的數值。

????????實現原理:

????????????????從根節點到葉節點,分而治之,將數據集劃分為多個小區域,每個區域內的樣本數盡可能相似,直到每個小區域足夠純凈

????????拆分步驟:

????????????????????????①遍歷所有特征

????????????????????????②遍歷每個特征的所有可能分割點:

????????????????????????若為連續特征:嘗試相鄰值的中間點;若為離散特征,嘗試每個類別

????????????????????????③選擇最優分割點

????????衡量指標:均方誤差(EMS)

????????????????均方誤差是衡量一個區域內樣本的數值差異的程度,均方誤差越小,該區域內樣本越相似。

????????通過計算分割后的左右子區域的均方誤差和,選擇使總均方誤差和最小的分割方式。

????????回歸樹的構建流程:

????????????????從根節點開始,遍歷所有特征---> 遍歷分割點,選擇使總均方誤差最小的分割方式--->生成子節點,按分割條件將數據分為左右兩個部分 ---> 遞歸處理子節點,重復上述步驟 ---> 達到停止條件(回歸樹達到預測樹深||區域內樣本數過少||均方誤差下降不明顯)

????????代碼實現及運行結果:

from sklearn.tree import DecisionTreeRegressor
import pandas as pd# 示例數據:房屋面積(㎡)和價格(萬元)
data = pd.DataFrame({'面積': [80, 120, 100, 90, 150],'價格': [300, 450, 400, 350, 500]
})# 訓練回歸樹模型
model = DecisionTreeRegressor(max_depth=2)  # 限制樹深度為2
model.fit(data[['面積']], data['價格'])# 預測新樣本
new_house = pd.DataFrame({'面積': [110]})
predicted_price = model.predict(new_house)
print(f"預測價格:{predicted_price[0]:.1f}萬元")  # 輸出:預測價格:425.0萬元
????????決策樹模型中的放回抽樣:

????????????????從原始的數據集中有放回地隨機抽取樣本的方法,每次抽取時,每個樣本被選中的概率相同,而且可能被重復選中。每個訓練子集的樣本數與原始數據集相同

三,隨機森林算法:

????????隨機森林算法是一種通過組合多個決策樹的算法(集成樹)。

????????集成方法:

????????????????①Bagging:通過自助采樣,從原始數據集中生成多個子集,每個子集訓練一棵決策樹

????????????????②隨機特征選擇:每棵樹節點分裂時,隨機選擇部分特征作為候選,降低樹之間的相關性,防止過擬合

????????訓練過程:
  1. 有放回地抽樣,從原始數據集中隨機抽取N個樣本作為訓練集
  2. 用未參與訓練的樣本驗證模型,無需額外的驗證集
  3. 特征抽樣:每個節點分裂時,從全部特征中隨機選取子集
  4. 每棵樹生長到最大深度||葉子節點純度達標時停止
四,XGBoost:(類似貪心算法)?

????????XGBoost是一種基于梯度提升樹的集成算法,通過加法模型和前向分布算法逐步優化目標函數。每次訓練后,把側重點放在先前訓練過但擬合效果不好的決策樹上。

????????第一次循環:通過已有的訓練集開始訓練決策樹

? ? ? ? 第二-N次循環:根據前一次循環產生的決策樹的訓練效果,側重于選擇訓練不好的決策樹,來進行訓練。

????????XGBoost優點:

????????????????????????①可以選擇默認拆分標準和停止標準

????????????????????????②內置正則化防止過擬合

五,決策樹 VS 神經網絡:? ? ? ??

????????決策樹:適用于數據量小,特征明顯,訓練速度快的場景,例如分群,評分。

????????神經網絡:適用于數據量大,數據種類多樣(圖像,音頻,文件),的場景。

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

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

相關文章

恢復IDEA的Load Maven Changes按鈕

寫代碼的時候不知道點到什么東西了,pom文件上的這個彈窗就是不出來了,重啟IDEA,reset windos都沒用,網上搜也沒收到解決方案 然后開打開其他項目窗口時,看到那個的功能名叫 Hide This Notification 于是跑到Setting里…

怎么使用Sam Helper修改手機屏幕分辨率,使得游戲視野變廣?

1.準備Shizuku 和Sam Helper軟件 2.打開設置,找到關于本機,連續點擊版本號五次打開開發者選項 3.找到開發者選項,打開USB調試和無線調試 4.返回桌面,我們接著打開shizuku,點擊配對,這里打開開發者選項,找…

【招聘精英】

我們公司是一個位于石家莊的一個科技型新型技術公司。主要做人力資源、用工、科技等方面。 有意向回石家莊的或者已經在石家莊的技術大咖、軟件大牛、產品大佬、UI大神可以來了解一下。 現在招聘 高級前端開發 高級java開發 其他崗位也可以聯系。 有意向的朋友可以私信我。 -…

大模型信息整理

1. Benchmarks Reasoning, conversation, Q&A benchmarks HellaSwagBIG-Bench HardSQuADIFEvalMuSRMMLU-PROMT-BenchDomain-specific benchmarks GPQAMedQAPubMedQAMath benchmarks GSM8KMATHMathEvalSecurity-related benchmarks PyRITPurple Llama CyberSecEval2. 國內外…

Redis-限流方案

在實際業務中,可能會遇到瞬時流量劇增的情況,大量的請求可能會導致服務器過載和宕機。為了保護系統自身和上下游服務,需要采用限流的方式,拒絕部分請求。 限流就是對請求的頻率進行控制,迅速拒絕超過請求閾值的請求。 …

無感方波開環強拖總結

一、強拖階段的核心原理與設計要點 開環換相邏輯 固定頻率斜坡:以預設斜率逐步提升換相頻率(如0.5-5Hz/ms),強制電機跟隨磁場旋轉。電壓-頻率協調控制:初始階段施加高電壓(80%-100%額定)克服靜摩…

Java虛擬機之垃圾收集(一)

目錄 一、如何判定對象“生死”? 1. 引用計數算法(理論參考) 2. 可達性分析算法(JVM 實際使用) 3. 對象的“緩刑”機制 二、引用類型與回收策略 三、何時觸發垃圾回收? 1. 分代回收策略 2. 手動觸發…

代碼隨想錄算法訓練營第22天 | 組合 組合總和 電話號碼的字母組合

77. 組合 77. 組合 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<Integer> path new ArrayList<>();List<List<Integer>> result new ArrayList<>();public void backTracking(int n,int k,int startIndex){if(path.size() …

#UVM# 關于field automation機制中的標志位及if的使用

通過前面文章的復習,我們知道了 uvm_field 機制帶來的好處,確實方便了我們很多代碼的coding 時間,但是會不會有一種情況呢? 比如,我們不想將實例中的某一些成員進行打包、復制、比較操作,怎么辦呢? 如果只執行 比較但不進行打包操作呢?是不是很復雜呢 ? 一 標志位…

RK3588 安裝ffmpeg6.1.2

在安裝 ffmpeg 在 RK3588 開發板上時,你需要確保你的開發環境(例如 Ubuntu、Debian 或其他 Linux 發行版)已經設置好了交叉編譯工具鏈,以便能夠針對 RK3588 架構編譯軟件。以下是一些步驟和指導,幫助你安裝 FFmpeg: 1. 安裝依賴項 首先,確保你的系統上安裝了所有必要的…

leetcode day25 28 KMP算法

28找出字符串中第一個匹配項的下標 給你兩個字符串 haystack 和 needle &#xff0c;請你在 haystack 字符串中找出 needle 字符串的第一個匹配項的下標&#xff08;下標從 0 開始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;則返回 -1 。 示例 1&#xff…

編程語言介紹:Rust

什么是Rust Rust是由Mozilla研究院開發的一種系統級編程語言&#xff0c;旨在提供更好的內存安全保證&#xff0c;同時保持高性能&#xff0c;自2010年首次發布以來&#xff0c;Rust以其安全性、并發性和實用性迅速獲得了廣泛的關注。Rust最獨特的特性之一是其所有權模型&#…

Java Spring MVC (2)

常見的Request Controller 和 Response Controller 的區別 用餐廳點餐來理解 想象你去一家餐廳吃飯&#xff1a; Request Controller&#xff08;接單員&#xff09;&#xff1a;負責處理你的點餐請求&#xff0c;記錄你的口味、桌號等信息。Response Controller&#xff08…

Oracle 字符類型對比

本文以 Oracle12c 為例 1.主要區別對比 類型存儲方式最大長度字符集支持適用場景備注?CHAR(M)固定長度空格填充2000 字節&#xff0c;M 代表字節長度默認字符集固定長度編碼實際存儲長度固定為定義長度&#xff08;如 CHAR(10) 始終占 10 字節&#xff09;?VARCHAR2(M)可變長…

Linux系列:如何用heaptrack跟蹤.NET程序的非托管內存泄露

一&#xff1a;背景 1. 講故事 前面跟大家分享過一篇 C# 調用 C代碼引發非托管內存泄露 的文章&#xff0c;這是一個故意引發的正向泄露&#xff0c;這一篇我們從逆向的角度去洞察引發泄露的禍根代碼&#xff0c;這東西如果在 windows 上還是很好處理的&#xff0c;很多人知道開…

vite.config.js 是Vite 項目的配置文件,分析具體用法

vite.config.js 是 Vite 項目的配置文件&#xff0c;用于定義項目的構建、開發服務器、插件等配置選項。以下是示例代碼中各部分的作用分析&#xff1a; 1. 導入模塊 import { fileURLToPath, URL } from node:url import { defineConfig } from vite import vue from vitejs…

行為模式---責任鏈模式

概念 責任鏈模式是一種行為設置模式&#xff0c;它的核心思想就是將請求的發送者和接收者進行解耦&#xff0c;每個接收者都可以處理請求。 在責任鏈模式中將每個接收者連成一個鏈條&#xff0c;當有請求發送上來的時候會經過每一個接收者。直到消息被處理。 適用場景 1、當…

pytest結合allure

Allure 一、文檔二、指令三、裝飾器3.1 allure.step裝飾器3.2 allure.description裝飾器3.3 allure.title裝飾器3.4 allure.link、allure.issue 和 allure.testcase裝飾器3.5 allure.epic、allure.feature 和 allure.story裝飾器3.6 allure.severity裝飾器 一、文檔 allure文檔…

前端知識點---http.createHttp()的理解(arkts)

通俗易懂的例子&#xff1a;點外賣 &#x1f354;&#x1f964; 想象一下&#xff0c;你在家里點外賣&#xff0c;HTTP 請求就像是你和餐廳之間的溝通方式。 1?? 沒有 http.createHttp()&#xff1a;每次點餐都重新撥電話 &#x1f4de; 如果你每次點餐都重新撥打餐廳的電話…

大模型開發(五):P-Tuning項目——新零售決策評價系統(下)

P-Tuning項目——新零售決策評價系統&#xff08;下&#xff09; 0 前言1 P-Tuning原理2 數據處理 0 前言 上篇文章我們介紹了使用PET方式微調BERT模型&#xff0c;PET屬于提示詞微調的一種&#xff0c;另一種比較常見的提示詞微調是P-Tuning&#xff0c;我們今天在相同的項目…