深入理解XGBoost:高效機(jī)器學(xué)習(xí)算法與進(jìn)階
定 價(jià):99 元
叢書名:智能系統(tǒng)與技術(shù)叢書
本書以機(jī)器學(xué)習(xí)基礎(chǔ)知識做鋪墊,深入剖析XGBoost的原理、分布式實(shí)現(xiàn)、模型優(yōu)化、深度應(yīng)用等。第1~3章使讀者對機(jī)器學(xué)習(xí)算法形成整體認(rèn)知,了解如何優(yōu)化模型以及評估預(yù)測結(jié)果,并熟悉常用機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)原理和應(yīng)用,如線性回歸、邏輯回歸、決策樹、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等。第4章借助實(shí)際案例,講解如何通過XGBoost解決分類、回歸、排序等問題,并介紹了XGBoost常用功能的使用方法。第5~7章是本書的重點(diǎn),從理論推導(dǎo)與源碼層面深入剖析XGBoost,涵蓋XGBoost原理與理論證明、分布式XGBoost的實(shí)現(xiàn)、XGBoost各組件的源碼解析。第8~9章為進(jìn)階內(nèi)容,著重解析算法實(shí)踐與工程應(yīng)用中的難點(diǎn),進(jìn)而幫助讀者更好地解決實(shí)際問題。第10章介紹了一些較為前沿的將樹模型與其他模型融合的研究方法,以開拓眼界,拓展思路。
1)知名互聯(lián)網(wǎng)公司工程師撰寫,打通高效機(jī)器學(xué)習(xí)脈絡(luò),掌握競賽神器XGBoost
2)以機(jī)器學(xué)習(xí)基礎(chǔ)知識做鋪墊,深入剖析XGBoost原理、分布式實(shí)現(xiàn)、模型優(yōu)化、深度應(yīng)用等
大數(shù)據(jù)時(shí)代的今天,基于規(guī)則解決具體業(yè)務(wù)問題的傳統(tǒng)方式已無法滿足企業(yè)需求,機(jī)器學(xué)習(xí)與人工智能逐漸走入人們的視野,并迅速得到了眾多企業(yè)的廣泛關(guān)注。各大互聯(lián)網(wǎng)公司相繼成立了自己的機(jī)器學(xué)習(xí)研究院,或建立機(jī)器學(xué)習(xí)團(tuán)隊(duì)。然而,隨著企業(yè)業(yè)務(wù)規(guī)模、數(shù)據(jù)規(guī)模日益擴(kuò)大,業(yè)務(wù)類型越來越復(fù)雜,怎樣在短時(shí)間內(nèi)訓(xùn)練出高準(zhǔn)確率的模型,成為許多企業(yè)面對的挑戰(zhàn)。在機(jī)器學(xué)習(xí)與人工智能的浪潮中,XGBoost憑借高效、便捷、擴(kuò)展性強(qiáng)等優(yōu)勢,在眾多開源機(jī)器學(xué)習(xí)庫中脫穎而出,廣受各大企業(yè)青睞。目前XGBoost已成為熱門的機(jī)器學(xué)習(xí)開源項(xiàng)目之一,擁有強(qiáng)大的社區(qū)支持,技術(shù)也日趨成熟。為什么要寫這本書最初寫這本書的想法萌生于兩年前。當(dāng)時(shí),一些剛接觸XGBoost的同事讓我推薦學(xué)習(xí)資料,但我發(fā)現(xiàn)除了英文論文和官方文檔外,竟找不到一本XGBoost的入門書籍。當(dāng)然,論文和官方文檔是學(xué)習(xí)XGBoost的重要參考資料,但對于剛接觸機(jī)器學(xué)習(xí)的初學(xué)者而言,學(xué)習(xí)這些資料的成本相對較高。如果沒有足夠的理論基礎(chǔ),初學(xué)者容易一開始就被細(xì)節(jié)和難點(diǎn)纏住,降低學(xué)習(xí)的積極性。XGBoost涉及的相關(guān)知識較多,資料比較分散,苦于缺乏一個(gè)系統(tǒng)、完整的學(xué)習(xí)教程可以參考,學(xué)習(xí)者不得不在搜集資料上耗費(fèi)大量時(shí)間。此外,對于XGBoost的應(yīng)用也少有完整的案例剖析。想深入理解XGBoost的學(xué)習(xí)者,只能通過研究項(xiàng)目源碼的方式進(jìn)行學(xué)習(xí),這顯然不是一個(gè)特別高效的學(xué)習(xí)方式。為了能夠深入理解XGBoost中各個(gè)組件的實(shí)現(xiàn)原理,筆者也花費(fèi)了很多時(shí)間和精力。在閱讀了相關(guān)論文文檔、深入研究源碼并多次實(shí)踐后,積累了很多學(xué)習(xí)筆記,對XGBoost也有了自己的理解,由此便萌生了將其整理成書的想法。這樣既可以幫助更多的人快速了解和學(xué)習(xí)XGBoost,使自己的學(xué)習(xí)所得發(fā)揮更大的價(jià)值,也可以在梳理所學(xué)知識的過程中進(jìn)一步提升。本書特色本書是國內(nèi)少有的系統(tǒng)、全面地介紹XGBoost技術(shù)原理的書籍,以通俗易懂的方式對XGBoost的原理和應(yīng)用進(jìn)行介紹,力求幫助讀者深入理解XGBoost。(1)講授循次而進(jìn),符合初學(xué)者的認(rèn)知規(guī)律。本書首先介紹機(jī)器學(xué)習(xí)中的常用算法,幫助讀者直觀地理解算法的基本原理,打下良好的理論基礎(chǔ)。然后由淺入深,鞭擗向里,帶領(lǐng)讀者深入探索機(jī)器學(xué)習(xí)前沿技術(shù)。(2)內(nèi)容涵蓋全面,重視理解深度。本書不僅全面覆蓋了決策樹、Gradient Tree Boosting、目標(biāo)函數(shù)近似、切分點(diǎn)查找算法等常見內(nèi)容,還詳細(xì)講解了分布式實(shí)現(xiàn)、排序?qū)W習(xí)、模型解釋性、DART等內(nèi)容。(3)案例實(shí)用豐富,幫助讀者解決實(shí)際遇到的機(jī)器學(xué)習(xí)問題。本書在每個(gè)算法講解之后都配有相應(yīng)的編程示例,不僅使讀者理解算法原理,還有助于提升靈活運(yùn)用算法的能力。另外,本書可以作為算法開發(fā)人員手邊的工具書,在學(xué)習(xí)和工作的過程中隨時(shí)查閱參考。讀者對象人工智能領(lǐng)域的算法工程師人工智能領(lǐng)域的架構(gòu)師其他對機(jī)器學(xué)習(xí)感興趣的人如何閱讀本書本書共有10章,具體內(nèi)容如下。第1章介紹了何謂機(jī)器學(xué)習(xí)和機(jī)器學(xué)習(xí)中的一些基本概念,以及機(jī)器學(xué)習(xí)應(yīng)用開發(fā)的步驟,并對集成學(xué)習(xí)的歷史發(fā)展、XGBoost的應(yīng)用場景及其優(yōu)良特性進(jìn)行了概述。第2章詳細(xì)講解了Python機(jī)器學(xué)習(xí)環(huán)境的搭建及常用開源工具包的安裝和使用,并以一個(gè)簡單的示例展示XGBoost的使用方法。第3章講述了常用機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)原理和應(yīng)用,如線性回歸、邏輯回歸、決策樹、神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)等,使讀者對機(jī)器學(xué)習(xí)算法有一個(gè)整體認(rèn)知,同時(shí)了解如何在模型訓(xùn)練過程中進(jìn)行優(yōu)化、如何對模型結(jié)果進(jìn)行評估。第4章通過scikit-learn與XGBoost相結(jié)合,以實(shí)際的案例向讀者說明如何通過XGBoost解決分類、回歸、排序等問題,并介紹了XGBoost中常用功能的使用方法。第5章深入介紹XGBoost的實(shí)現(xiàn)原理,包括Boosting算法思想、XGBoost目標(biāo)函數(shù)近似、切分點(diǎn)查找算法、排序?qū)W習(xí)、模型可解釋性等內(nèi)容,從理論上保證XGBoost的有效性,使讀者深入理解XGBoost。第6章詳細(xì)介紹了分布式XGBoost的實(shí)現(xiàn)原理,包括分布式機(jī)器學(xué)習(xí)框架Rabit,XGBoost在Spark、Flink平臺的實(shí)現(xiàn),GPU版本的實(shí)現(xiàn)等。第7章從源碼的角度深入剖析了XGBoost中各個(gè)組件的實(shí)現(xiàn)原理,詳細(xì)介紹了模型訓(xùn)練、預(yù)測、解析,以及不同目標(biāo)函數(shù)和評估函數(shù)的實(shí)現(xiàn)過程。第8章詳細(xì)介紹了如何通過模型選擇與優(yōu)化提高模型的泛化能力,從偏差和方差的角度進(jìn)行了解釋,通過交叉驗(yàn)證和Bootstrap等方法來說明模型選擇過程,并介紹了常用的超參數(shù)優(yōu)化方法。第9章通過實(shí)際案例分析,使讀者能夠深入理解XGBoost的特性并靈活運(yùn)用,能夠依據(jù)不同場景將XGBoost與其他模型融合,更好地解決實(shí)際問題。第10章介紹了業(yè)界或?qū)W術(shù)界中樹模型與其他模型融合的一些研究方法,包括GBDT LR,多層GBDT模型結(jié)構(gòu)mGBDT,樹模型與深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)的融合等。如果你是具有一定機(jī)器學(xué)習(xí)理論基礎(chǔ)的從業(yè)者,可以跳過前4章的基礎(chǔ)部分,直接從第5章開始閱讀。如果你是一位機(jī)器學(xué)習(xí)的初學(xué)者,并打算在未來深入鉆研這個(gè)方向,建議系統(tǒng)地閱讀本書,并動手實(shí)踐書中的所有實(shí)例。勘誤和支持由于筆者水平有限,編寫時(shí)間倉促,書中難免存在一些錯誤或表達(dá)不準(zhǔn)確之處,懇請讀者批評指正。如果你有更多的寶貴意見,可通過電子郵箱xgbbook2019@163.com聯(lián)系我,期待得到你們的真摯反饋,讓我們在技術(shù)之路上互勉共進(jìn)。感謝感謝中國人民大學(xué)的杜小勇老師、陳晉川老師,是他們幫我打開了科研的大門,讓我體會到鉆研知識的樂趣。感謝滴滴出行的李奘、卓呈祥、杜龍志以及所有在工作中幫助過我的同事。感謝機(jī)械工業(yè)出版社華章公司的高婧雅編輯在本書寫作過程中給予我的支持和幫助。特別感謝本書的第一讀者我的愛人高陽,因?yàn)閷懽鳎覡奚撕芏嗯惆樗臅r(shí)間,感謝她的支持和理解,也感謝她幫我進(jìn)行文稿校對。感謝她一路的支持和陪伴。
何龍
現(xiàn)就職于滴滴出行,XGBoost開源社區(qū)貢獻(xiàn)者,專注于人工智能和機(jī)器學(xué)習(xí)領(lǐng)域,從底層算法原理到上層應(yīng)用實(shí)踐都有廣泛的興趣和研究。較早接觸XGBoost,熟悉XGBoost應(yīng)用開發(fā),深入閱讀源碼,具有豐富的項(xiàng)目開發(fā)經(jīng)驗(yàn)。
前言第1章 機(jī)器學(xué)習(xí)概述11.1 何謂機(jī)器學(xué)習(xí)11.1.1 機(jī)器學(xué)習(xí)常用基本概念21.1.2 機(jī)器學(xué)習(xí)類型31.1.3 機(jī)器學(xué)習(xí)應(yīng)用開發(fā)步驟41.2 集成學(xué)習(xí)發(fā)展與XGBoost提出51.2.1 集成學(xué)習(xí)51.2.2 XGBoost61.3 小結(jié)7第2章 XGBoost驪珠初探92.1 搭建Python機(jī)器學(xué)習(xí)環(huán)境92.1.1 Jupyter Notebook102.1.2 NumPy112.1.3 Pandas182.1.4 Matplotlib322.1.5 scikit-learn392.2 搭建XGBoost運(yùn)行環(huán)境392.3 示例:XGBoost告訴你蘑菇是否有毒422.4 小結(jié)44第3章 機(jī)器學(xué)習(xí)算法基礎(chǔ)453.1 KNN453.1.1 KNN關(guān)鍵因素463.1.2 用KNN預(yù)測鳶尾花品種473.2 線性回歸523.2.1 梯度下降法533.2.2 模型評估553.2.3 通過線性回歸預(yù)測波士頓房屋價(jià)格553.3 邏輯回歸573.3.1 模型參數(shù)估計(jì)593.3.2 模型評估603.3.3 良性/惡性乳腺腫瘤預(yù)測613.3.4 softmax643.4 決策樹653.4.1 構(gòu)造決策樹663.4.2 特征選擇673.4.3 決策樹剪枝713.4.4 決策樹解決腫瘤分類問題713.5 正則化753.6 排序783.6.1 排序?qū)W習(xí)算法803.6.2 排序評價(jià)指標(biāo)813.7 人工神經(jīng)網(wǎng)絡(luò)853.7.1 感知器853.7.2 人工神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn)原理873.7.3 神經(jīng)網(wǎng)絡(luò)識別手寫體數(shù)字903.8 支持向量機(jī)923.8.1 核函數(shù)953.8.2 松弛變量973.8.3 通過SVM識別手寫體數(shù)字983.9 小結(jié)99第4章 XGBoost小試牛刀1004.1 XGBoost實(shí)現(xiàn)原理1004.2 二分類問題1014.3 多分類問題1094.4 回歸問題1134.5 排序問題1174.6 其他常用功能1214.7 小結(jié)145第5章 XGBoost原理與理論證明1465.1 CART1465.1.1 CART生成1475.1.2 剪枝算法1505.2 Boosting算法思想與實(shí)現(xiàn)1515.2.1 AdaBoost1515.2.2 Gradient Boosting1515.2.3 縮減1535.2.4 Gradient Tree Boosting1535.3 XGBoost中的Tree Boosting1545.3.1 模型定義1555.3.2 XGBoost中的Gradient Tree Boosting1565.4 切分點(diǎn)查找算法1615.4.1 精確貪心算法1615.4.2 基于直方圖的近似算法1635.4.3 快速直方圖算法1655.4.4 加權(quán)分位數(shù)概要算法1675.4.5 稀疏感知切分點(diǎn)查找算法1675.5 排序?qū)W習(xí)1695.6 DART1745.7 樹模型的可解釋性1775.7.1 Saabas1775.7.2 SHAP1795.8 線性模型原理1835.8.1 Elastic Net回歸1835.8.2 并行坐標(biāo)下降法1845.8.3 XGBoost線性模型的實(shí)現(xiàn)1855.9 系統(tǒng)優(yōu)化1875.9.1 基于列存儲數(shù)據(jù)塊的并行學(xué)習(xí)1885.9.2 緩存感知訪問1905.9.3 外存塊計(jì)算1915.10 小結(jié)192第6章 分布式XGBoost1936.1 分布式機(jī)器學(xué)習(xí)框架Rabit 1936.1.1 AllReduce1936.1.2 Rabit1956.1.3 Rabit應(yīng)用1976.2 資源管理系統(tǒng)YARN 2006.2.1 YARN的基本架構(gòu)2016.2.2 YARN的工作流程2026.2.3 XGBoost on YARN2036.3 可移植分布式XGBoost4J2056.4 基于Spark平臺的實(shí)現(xiàn)2086.4.1 Spark架構(gòu)2086.4.2 RDD2106.4.3 XGBoost4J-Spark2116.5 基于Flink平臺的實(shí)現(xiàn)2236.5.1 Flink原理簡介2246.5.2 XGBoost4J-Flink2276.6 基于GPU加速的實(shí)現(xiàn)2296.6.1 GPU及其編程語言簡介2296.6.2 XGBoost GPU加速原理2306.6.3 XGBoost GPU應(yīng)用2366.7 小結(jié)239第7章 XGBoost進(jìn)階2407.1 模型訓(xùn)練、預(yù)測及解析2407.1.1 樹模型訓(xùn)練2407.1.2 線性模型訓(xùn)練2567.1.3 模型預(yù)測2587.1.4 模型解析2617.2 樹模型更新2647.2.1 updater_colmaker2647.2.2 updater_histmaker2647.2.3 updater_fast_hist2717.2.4 其他更新器2767.3 目標(biāo)函數(shù)2787.3.1 二分類2797.3.2 回歸2807.3.3 多分類2827.3.4 排序?qū)W習(xí)2847.4 評估函數(shù)2887.4.1 概述2897.4.2 二分類2917.4.3 多分類2957.4.4 回歸2967.4.5 排序2977.5 小結(jié)299第8章 模型選擇與優(yōu)化3008.1 偏差與方差3008.2 模型選擇3038.2.1 交叉驗(yàn)證3048.2.2 Bootstrap3068.3 超參數(shù)優(yōu)化3078.3.1 網(wǎng)格搜索3088.3.2 隨機(jī)搜索3108.3.3 貝葉斯優(yōu)化3138.4 XGBoost超參數(shù)優(yōu)化3158.4.1 XGBoost參數(shù)介紹3158.4.2 XGBoost調(diào)參示例3198.5 小結(jié)334第9章 通過XGBoost實(shí)現(xiàn)廣告分類器3359.1 PCA3359.1.1 PCA的實(shí)現(xiàn)原理3359.1.2 通過PCA對人臉識別數(shù)據(jù)降維3389.1.3 利用PCA實(shí)現(xiàn)數(shù)據(jù)可視化3419.2 通過XGBoost實(shí)現(xiàn)廣告分類器3439.3 小結(jié)357第10章 基于樹模型的其他研究與應(yīng)用35810.1 GBDT、LR融合提升廣告點(diǎn)擊率35810.2 mGBDT36010.3 DEF36210.4 一種基于樹模型的強(qiáng)化學(xué)習(xí)方法36610.5 小結(jié)370