機器學習第15天:GBDT模型

?

??主頁?Nowl

🔥專欄《機器學習實戰》?《機器學習》

📑君子坐而論道,少年起而行之?

??

文章目錄

GBDT模型介紹

Boosting

殘差

GBDT的缺點

python代碼實現

代碼

模型參數解釋

結語


GBDT模型介紹

GBDT(Gradient Boosting Decision Tree)也叫做梯度提升決策樹,它的主要思想也是集成學習(由名字可以看出GBDT的弱分類器是決策樹?),即訓練多個子模型,結合子模型來得到最終結果,但他們也有一些區別


Boosting

Boosting是GBDT與傳統集成學習的一個主要區別

傳統的集成學習訓練過程中,分類器之間不會有任何聯系,模型各自獨立訓練最后結合得出結果

?

而Boosting訓練過程中,分類器會根據上一個分類器的結果來調整,重點關注上一個分類器的誤差點,從而更好地提高模型性能

?


殘差

我們接下來來看看分類器之間是怎么聯系的,殘差代表分類器預測結果與真實值的差距

假設我們有一個預測數字的任務,目標值是40,則會有這樣一個過程

  • 第一個分類器預測結果為30,則殘差為10
  • 第二個分類器去擬合殘差,這時第二個分類器的目標值變成了10,以此類推
  • 最后得到的殘差為0,完成任務

可以看到Boosting的思想是每一個分類器去擬合前一個分類器的殘差,最后每個分類器的結果加起來就是真實值

?

GBDT的缺點

  • 由于每個分類器要等待上一個分類器的結果,故模型無法并行訓練,消耗的時間可能較多

python代碼實現

代碼

這段代碼使用的數據集是虛擬的,我們這里主要學習模型是如何構建的,在實際任務中將數據集替換為真實數據集即可

# 導入必要的庫
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score# 創建虛構的數據集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)# 劃分數據集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 初始化并訓練GBDT模型
gbdt_model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)
gbdt_model.fit(X_train, y_train)# 預測
y_pred = gbdt_model.predict(X_test)# 評估模型性能
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

模型參數解釋

  • n_estimators: 子分類器數量

  • learning_rate: 學習率

  • max_depth: 決策樹最大深度

結語

GBDT是一種優化的集成學習方法,采用了擬合殘差的新思想,廣泛應用于分類任務和回歸任務中,它還有兩個優化方法:XGBoost和LightGBM,之后會做具體介紹,敬請期待

感謝閱讀,覺得有用的話就訂閱下本專欄吧,有錯誤也歡迎指出

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

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

相關文章

vivado $clog2函數

對于.v文件在vivado中是不支持,但是可以修改為.sv或更改文件屬性使用sytemverilog來支持。 /*** Math function: $clog2 as specified in Verilog-2005** clog2 0 for value 0* ceil(log2(value)) for value > 1** This implementatio…

php+mysql期末作業小項目

目錄 1、登錄界面 2、注冊界面 3、主界面 4、學生表界面 5 、查詢學生界面?編輯 6、修改學生信息界面?編輯 7、刪除學生信息界面 8、添加學生信息界面 9、后臺數據庫?編輯 一個簡單的php?mysql項目學生信息管理系統,用于廣大學子完成期末作業的參考&…

測試架構工程師需要具備哪些能力 ?

前言 相比于我們常見的研發架構師,測試架構師是近幾年才出現的一個崗位,當然崗位title其實沒有特殊的含義,在我看來測試架構師其實更像對某一類人的抽象稱呼和對其復合能力的期待及認可。 在聊這篇文章的主題之前,先來看這樣一個…

算法訓練營Day4(鏈表)

語言 采用的Java語言,一些分析也是用于Java,請注意。 24. 兩兩交換鏈表中的節點 24. 兩兩交換鏈表中的節點 - 力扣(LeetCode) 解題 這道題就是考驗鏈表的基礎操作,但是有個語言方面的知識需要去掌握,就是|…

TCP通信

第二十一章 網絡通信 本章節主要講解的是TCP和UDP兩種通信方式它們都有著自己的優點和缺點 這兩種通訊方式不通的地方就是TCP是一對一通信 UDP是一對多的通信方式 接下來會一一講解 TCP通信 TCP通信方式呢 主要的通訊方式是一對一的通訊方式,也有著優點和缺點…

如何在Android平板上遠程連接Ubuntu服務器使用code-server代碼開發

目錄 1.ubuntu本地安裝code-server 2. 安裝cpolar內網穿透 3. 創建隧道映射本地端口 4. 安卓平板測試訪問 5.固定域名公網地址 6.結語 1.ubuntu本地安裝code-server 準備一臺虛擬機,Ubuntu或者centos都可以,這里以VMwhere ubuntu系統為例 下載code server服務…

el-table 表格多選(后端接口搜索分頁)實現已選中的記憶功能。實現表格數據和已選數據(前端分頁)動態同步更新。

實現效果:(可拉代碼下來看:vue-demo: vueDemo) 左側表格為點擊查詢調用接口查詢出來的數據,右側表格為左側表格所有選擇的數據,由前端實現分頁。 兩個el-table勾選數據聯動更新 實現邏輯: el-…

低代碼開發到底是補品還是垃圾食品?

2023,低代碼徹底火了,甚至火到沒有點相關經驗,都不好意思出去面試的程度。 從業者對低代碼的發展充滿了想象,都認為未來低代碼的商業價值不可估量。 據Gartner的最新報告顯示,2023年全球低代碼開發技術市場規模預計將…

內部文件上傳以及渲染-接口API

文件上傳 地址http://172.16.0.118:8090/api/pm/base/affix/upload請求類型POSTContent-Type:text/plain;charsetutf-8參數 prjData {"prjId":"", "jobId":"3031b2c8-c809-4110-8e88-22c80a9c1ec0721aca89-96a1-4346-9b6e-022331d221d1Nec…

【EMNLP 2023】面向Stable Diffusion的自動Prompt工程算法BeautifulPrompt

近日,阿里云人工智能平臺PAI與華南理工大學朱金輝教授團隊合作在自然語言處理頂級會議EMNLP2023上發表了BeautifulPrompt的深度生成模型,可以從簡單的圖片描述中生成高質量的提示詞,從而使文生圖模型能夠生成更美觀的圖像。BeautifulPrompt通…

【MATLAB】MODWT分解+FFT+HHT組合算法

有意向獲取代碼,請轉文末觀看代碼獲取方式~也可轉原文鏈接獲取~ 1 基本定義 MODWT分解FFTHHT組合算法是一種綜合性的信號處理方法,它結合了經驗小波變換(Empirical Wavelet Transform,EWT)、快速傅里葉變換&#xff…

25.Oracle的回收站

oracle基礎系統學習目錄 01.CentOS7靜默安裝oracle11g 02.Oracle的啟動過程 03.從簡單的sql開始 04.Oracle的體系架構 05.Oracle數據庫對象 06.Oracle數據備份與恢復 07.用戶和權限管理 08.Oracle的表 09.Oracle表的分區 10.Oracle的同義詞與序列 11.Oracle的視圖 12.Oracle的…

愛智EdgerOS之深入解析如何應用愛智的視頻流模塊完成拉流

一、ONVIF 規范和常見視頻流傳輸協議 ① ONVIF 規范 隨著視頻監控產業鏈的成熟,市面上陸陸續續出現了各式各樣的網絡攝像設備,這些設備都需要通訊協議才能進行數據傳輸。早期廠商都采用私有協議,但是現在廠商分工明確,有的負責生…

程序員的技術成長攻略

推薦語:偶爾在公眾號看到的一篇文章,寫的非常好,在此分享給各位程序員兄弟,不光是對技術成長有幫助,其他領域也是同樣適用的!建議反復閱讀,形成一套自己的技術成長策略。 原文地址:…

數據結構與算法:python棧和隊列的用法

python的棧和隊列其實都算作一個數組,棧從最后一個元素開始推出,隊列從第一個元素開始推出 # pop(0)刪除時間復雜度O(n) s [] #棧 q [] #隊列 s.append(1)#1入棧 q.append(1)#1入隊 s.pop()#出棧 q.pop(0)#出隊由于從第一個元素刪除需要挪動數組&…

【EI會議征稿】2024年粵港澳大灣區數字經濟與人工智能國際學術會議(DEAI2024)

2024年粵港澳大灣區數字經濟與人工智能國際學術會議(DEAI2024) 2024 Guangdong-Hong Kong-Macao Greater Bay Area International Conference on Digital Economy and Artificial Intelligence(DEAI2024) 2024年粵港澳大灣區數字經濟與人工智能國際學術會議(DEAI2024)由廣東科…

探索鴻蒙 TextInput組件

TextInput 根據組件名字,可以得知他是一個文本輸出框。 聲明代碼👇 TextInput({placeholder?:ResourceStr,text?:ResourceStr}); placeholder: 就是提示文本,跟網頁開發中的placeholder一樣的 text:輸入框當前的文本內容 特殊屬…

ChatGPT的進化史

真正的人工智能可以變現的完全與人類一樣思考時,世界會發生什么變化? ChatGPT就如它的名字一樣,人類創造它最初的目的只是一個聊天機器人。聊天嘛,只要你和他對話時他的回答像人類一樣自然就行了,看起來并沒什么了不起…

Linux服務器磁盤占用過高解決思路

服務器在運行時,經常出現磁盤占用過高,可能有如下原因: 1、是否有產生過大的日志文件,或者大文件中的log過大,導致磁盤占用過高; 2、查看磁盤占用情況,分析哪個目錄中文件占比最大; …

貝蒂的搗蛋小游戲~(C語言)

引言: 前面貝蒂已經給大家介紹了選擇,循環結構~,今天貝蒂就基于這兩種結構,為大家講解一種搗蛋小游戲的設計思路和方法哦。 1.游戲要求 游戲要求: 1. 電腦?動?成1~100的隨機數 2. 玩家猜數字,猜數字的過…