機器學習——集成學習框架(GBDT、XGBoost、LightGBM、CatBoost)、調參方法

一、集成學習框架

訓練樣本較少的結構化數據領域,Boosting算法仍然是常用項

XGBoost、CatBoost和LightGBM都是以決策樹為基礎的集成學習框架

三個學習框架的發展是XGBoost是在GBDT的基礎上優化而來,CatBoost和LightGBM是在XGBoost的基礎上優化而來

三個學習框架的決策樹構造方式XGBoost是按照層生成(level-wise)得到的是對稱樹,避免過擬合但存在冗余分裂;CatBoost也是對稱樹,其為完全二叉樹;LightGBM使用的是葉子生長(level-wise),其得到是一個不對稱樹

三個學習框架對類別特征的處理XGBoost不能自動處理類別特征,對于其中的類別特征,需要人工手動出來成數值形式用于模型訓練;LightGBM只需要指定類別特征名稱,其內置的算法會自動對其進行處理;CatBoost是專門處理類別特征,其中內置的目標變量統計的特征編碼方式實現對數據類別特征的高效處理

知識補充:對稱樹關注的是結構對稱性,而完全二叉樹強調層序填充的完整性。兩者在定義、構造條件和應用場景上截然不同,但也存在交集(如完全對稱的滿二叉樹)

對稱樹:二叉樹的左右子樹呈鏡像對稱,不能出現左或右子樹缺失,或者對應對稱節點值不等的情況

完全二叉樹:深度為k的二叉樹,若其前k-1層節點數達到最大值,且第k層節點從左到右。

連續排列,則稱為完全二叉樹

在對某一數據集進行多模型訓練和測試分類效果比較時:需要展現的表格效果為:

模型1

模型2

.................

模型n

基本超參數

訓練集AUC

測試集AUC

訓練時間(s)

測試時間(s)

知識補充:AUC是模型在數據上的分類排序能力量化指標,其核心價值在于評估模型擬合能力及輔助判斷過擬合

二、調參優化

機器學習中有大量的參數需要人為事先設定,這些統稱為超參數(hyperparameter),常見的就如同epoch、batch_size、樹深度、學習率和正則化系數等參數的設定
下面來介紹機器學習中常用的調參方法:需要強調的是超參數的最優選擇是在模型的驗證過程中,即此時需要用到驗證集,需要提取對數據集劃分好(因為超參數是不參與模型內部參數的自動更新,其是通過外部調優確定最佳取值)

①隨機調參法( random search,不是所有超參數組合都嘗試)

其采用的方式是對給定分布中抽樣規定數量的參數,對這些抽樣的超參數進行實驗,選取其中模型驗證集損失誤差最小時的超參數組合即可。有時這種方式更為高效

②網格搜索法(grid search,所有超參數組合都嘗試)

這種方法的思路很好理解,其主要適用的場景包括:優化三個及其以下的超參數數量。具體方法:比如我現在有三個參數a/b/c,我想得到三個參數組合的最優模型參數,那么我預先設定三個參數的候選值列表(預設一個待搜索的參數列表空間):a:[0.1,0.3.0.5],b:[50,100,150],c:[3,5,7],那么此時總共的組合方式為3×3×3=27種(笛卡爾乘積組合),此時就依次遍歷這27種組合用于模型的參數設置,選擇其中模型驗證集損失誤差最小時的超參數組合即可

③貝葉斯調參優化法(bayesian optimization,這種方式可以同時出來很多參數,當然其計算資源的增加也是指數級別的增加)

貝葉斯優化調參是目前最好的調參方法,貝葉斯優化的核心價值在于以最少試錯成本逼近全局最優解。其中的優化方法涉及高斯過程和貝葉斯定理。其高斯過程的核心是對已有的數據點預測區域進行函數建模,求其不確定性和概率分布,對其中概率較大的區間的進行迭代,使得模型的損失達到最低時對應的超參數組合選擇,但是這種方式比較消耗計算資源

其核心思想很好理解:比如在使用貝葉斯優化方法時,我希望在目前選擇的一個參數1條件下(前提),使得其去組合另外一個參數2,使得模型效果更好,那么我怎么更好的去尋找到滿足前提條件中最好的值(即這個前提條件是最優的),此時尋找的方法就可以使用高斯過程,找到這個最好的前提條件值,此時就只需要對另外一個參數2做考慮即可,迭代參數2的范圍,找到模型性能最好的那組對應的超參數組合。幸運的是,目前這個好理解但實現復雜的方法已經被封裝在bayes_opt中,可以在pycharm中直接調用使用

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

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

相關文章

第十五章:Python的Pandas庫詳解及常見用法

在數據分析領域,Python的Pandas庫是一個不可或缺的工具。它提供了高效的數據結構和數據分析工具,使得數據處理變得簡單而直觀。本文將詳細介紹Pandas庫的基本功能、常見用法,并通過示例代碼演示如何使用Pandas進行數據處理。最后,…

【Python桌面應用】PySide6 界面開發完全指南

文章目錄 1. 引言2. PySide6 簡介與安裝2.1 什么是PySide62.2 PySide6 vs. PyQt62.3 安裝PySide62.4 開發環境配置建議 3. Qt 設計原理3.1 Qt對象模型3.2 信號與槽機制3.3 Qt坐標系統3.4 Qt樣式表(QSS) 4. 創建第一個應用4.1 基本應用結構4.2 主窗口與應用生命周期4.3 使用面向…

用 pytorch 從零開始創建大語言模型(三):編碼注意力機制

從零開始創建大語言模型(Python/pytorch )(三):編碼注意力機制 3 編碼注意力機制3.1 建模長序列的問題3.2 使用注意力機制捕捉數據依賴關系3.3 通過自注意力關注輸入的不同部分3.3.1 一個沒有可訓練權重的簡化自注意力…

Spring中的IOC及AOP概述

前言 Spring 框架的兩大核心設計思想是 IOC(控制反轉) 和 AOP(面向切面編程)。它們共同解決了代碼耦合度高、重復邏輯冗余等問題。 IOC(控制反轉) 1.核心概念 控制反轉(Inversion of Control…

STM32_HAL開發環境搭建【Keil(MDK-ARM)、STM32F1xx_DFP、 ST-Link、STM32CubeMX】

安裝Keil(MDK-ARM)【集成開發環境IDE】 我們會在Keil(MDK-ARM)上去編寫代碼、編譯代碼、燒寫代碼、調試代碼。 Keil(MDK-ARM)的安裝方法: 教學視頻的第02分03秒開始看。 安裝過程中請修改一下下面兩個路徑,避免占用C盤空間。 Core就是Keil(MDK-ARM)的…

python 第三方庫 - dotenv讀取配置文件

.env 文件是一種用于存儲環境變量的配置文件,常用于項目的運行環境設置。環境變量是操作系統層面的一些變量,它們可以被應用程序訪問和使用,通常包含敏感信息或特定于環境的配置,如數據庫連接信息、API 密鑰、調試模式等。 安裝p…

用python壓縮圖片大小

下載庫 cmd開命令或者PyCharm執行都行 pip install pillow2. 然后就是代碼 from PIL import Imagedef compress_image(input_path, output_path, quality85, max_sizeNone):"""壓縮圖片大小。參數:- input_path: 輸入圖片路徑- output_path: 輸出圖片路徑- qu…

【自用記錄】本地關聯GitHub以及遇到的問題

最近終于又想起GitHub,想上傳代碼和項目到倉庫里。 由于很早之前有在本地連接過GitHub(但沒怎么用),現在需要重新搞起(操作忘得差不多)。 在看教程實操的過程中遇到了一些小問題,遂記錄一下。 前…

在一個scss文件中定義變量,在另一個scss文件中使用

_variables.scss文件 : $line-gradient-init-color: linear-gradient(90deg, #8057ff 0%, #936bff 50%, #b892ff 100%); $line-gradient-hover-color: linear-gradient(90deg, #936bff 0%, #b892ff 50%, #f781ce 100%); $line-gradient-active-color: linear-gradient(90deg, …

從零開始研發GPS接收機連載——19、自制GPS接收機的春運之旅

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 從零開始研發GPS接收機連載——19、自制GPS接收機的春運之旅 許久未曾更新這個系列,并非我平日里對這事兒沒了興致,不再愿意折騰。實則是受限于自身條…

智能駕駛功能LCC車道保持居中

畫龍現象就是LCC常見bug LDW車道偏離預警 LKA車道保持 聲音其實就是蜂鳴器 有些車是40 有些是60

Java全棧面試寶典:線程機制與Spring依賴注入深度解析

目錄 一、Java線程核心機制 🔥 問題3:start()與run()的底層執行差異 線程啟動流程圖解 核心差異對照表 代碼驗證示例 🔥 問題4:Thread與Runnable的六大維度對比 類關系UML圖 最佳實踐代碼 🔥 問題5&#xff1…

使用ANTLR4解析Yaml,JSON和Latex

文章目錄 ANTLR4基本使用**1. 安裝 Java 運行時(必需)****2. 安裝 ANTLR4 命令行工具****方法一:通過包管理器(推薦)****macOS/Linux (Homebrew)****Windows (Chocolatey)** **方法二:手動安裝(…

NixVis 開源輕量級 Nginx 日志分析工具

NixVis NixVis 是一款基于 Go 語言開發的、開源輕量級 Nginx 日志分析工具,專為自部署場景設計。它提供直觀的數據可視化和全面的統計分析功能,幫助您實時監控網站流量、訪問來源和地理分布等關鍵指標,無需復雜配置即可快速部署使用。 演示…

黑盒測試的等價類劃分法(輸入數據劃分為有效的等價類和無效的等價類)

重點: 有效等價和單個無效等價各取1個即可 1、正向用例:一條盡可能覆蓋多條2、逆向用例:每一條數據,都是一條單獨用例。 步驟: 1、明確需求 2、確定有效和無效等價 3、根據有效和無效造數據編寫用例 3、適用場景 針對:需要有大量數據測試輸入, …

Linux Mem -- 通過reserved-memory縮減內存

目錄 1. reserved-memory縮減內存 2. 為什么要通過2段512GB預留內存實現該縮減呢? 3. reserved-momery中的no-map屬性 4. 預留的的內存是否會被統計到系統MemTotal中? 本文是解決具體的一些思考總結,和Linux內核的reserved-memory機制相關…

多線程—synchronized原理

上篇文章: 多線程—鎖策略https://blog.csdn.net/sniper_fandc/article/details/146508232?fromshareblogdetail&sharetypeblogdetail&sharerId146508232&sharereferPC&sharesourcesniper_fandc&sharefromfrom_link 目錄 1 synchronized的鎖…

AWS混合云部署實戰:打造企業級數字化轉型的“黃金架構”

引言 “上云是必然,但全部上云未必是必然。”在數字化轉型的深水區,企業面臨的核心矛盾日益凸顯:如何在享受公有云敏捷性的同時,滿足數據主權、低延遲和遺留系統兼容的剛性需求? AWS混合云憑借“云上云下一張網”的獨…

進程模型5-0號進程

內核版本架構作者GitHubCSDNLinux-3.0.1armv7-ALux1206 0號進程的作用 在 Linux 中除了 init_task 0號進程,所有的線/進程都是通過 do_fork 函數復制父線/進程創建得到,因為 0號進程產生時沒有任何進程可以參照,只能通過靜態方式構造進程描述…

計算機二級考前急救(Word篇)

重點題(20套,標黃為精選10套):4,15,17,19,21,24,25,27,36,40,12,18,20,22&…