梯度提升算法實戰——基於XGBoost和scikit-learn

[美]科里·韋德(Corey Wade),張生軍

  • 出版商: 清華大學
  • 出版日期: 2024-04-01
  • 售價: $594
  • 貴賓價: 9.5$564
  • 語言: 簡體中文
  • ISBN: 7302659516
  • ISBN-13: 9787302659518
  • 立即出貨

  • 梯度提升算法實戰——基於XGBoost和scikit-learn-preview-1
  • 梯度提升算法實戰——基於XGBoost和scikit-learn-preview-2
  • 梯度提升算法實戰——基於XGBoost和scikit-learn-preview-3
梯度提升算法實戰——基於XGBoost和scikit-learn-preview-1

相關主題

商品描述

XGBoost是一種經過行業驗證的開源軟件庫,為快速高效地處理數十億數據點提供了梯度提升框架。首先,本書在介紹機器學習和XGBoost在scikit-learn中的應用後,逐步深入梯度提升背後的理論知識。讀者將學習決策樹,並分析在機器學習環境中的裝袋技術,同時學習拓展到XGBoost的超參數;並將從零開始構建梯度提升模型,將梯度提升擴展到大數據領域,同時通過計時器的使用瞭解速度限制。接著,本書重點探討XGBoost的細節,著重於速度提升和通過數學推導導出參數。通過詳細案例研究,讀者將練習使用scikit-learn及原始的Python API構建和微調XGBoost分類器與回歸器;並學習如何利用XGBoost的超參數來提高評分、糾正缺失值、縮放不平衡數據集,並微調備選基學習器。最後,讀者將學習應用高級XGBoost技術,如構建非相關的集成模型、堆疊模型,並使用稀疏矩陣、定製轉換器和管道為行業部署準備模型。 本書適合作為高等學校電腦專業、軟件工程專業的高年級本科生及研究生教材,同時適合有一定機器學習基礎的數據科學家、機器學習工程師和研究人員閱讀,可為解決復雜的機器學習問題提供實用指導。

目錄大綱

目錄

第一部分 裝袋和提升

第1章 機器學習概覽 2

1.1 XGBoost概覽 2

1.2 數據整理 3

1.2.1 數據集1:自行車租賃數據集 3

1.2.2 理解數據 5

1.2.3 糾正空值 7

1.3 回歸預測 12

1.3.1 預測自行車租賃數量 12

1.3.2 保存數據以備將來使用 12

1.3.3 聲明預測列和目標列 13

1.3.4 理解回歸 13

1.3.5 訪問 scikit-learn 14

1.3.6 關閉警告信息 14

1.3.7 線性回歸建模 14

1.3.8 XGBoost 16

1.3.9 XGBRegressor 16

1.3.10 交叉驗證 17

1.4 分類預測 20

1.4.1 什麽是分類? 20

1.4.2 數據集2:人口普查數據集 21

1.4.3 XGBoost分類器 26

1.5 總結 27

第2章 深入淺出決策樹 28

2.1 介紹XGBoost決策樹 28

2.2 探索決策樹 29

2.2.1 第一個決策樹模型 29

2.2.2 決策樹內部結構 30

2.3 對比方差和偏差 32

2.4 調整決策樹超參數 35

2.4.1 決策樹回歸器 35

2.4.2 一般超參數 37

2.4.3 綜合微調超參數 43

2.5 實例:預測心臟病 43

2.5.1 心臟病數據集 43

2.5.2 決策樹分類器 45

2.5.3 選擇超參數 46

2.5.4 縮小範圍 46

2.5.5 feature_importances_ 47

2.6 總結 49

第3章 隨機森林與裝袋法 50

3.1 裝袋集成 50

3.1.1 集成方法 50

3.1.2 自助聚合 51

3.2 探索隨機森林 52

3.2.1 隨機森林分類器 52

3.2.2 隨機森林回歸器 54

3.3 隨機森林超參數 55

3.3.1 oob_score 55

3.3.2 n_estimators 56

3.3.3 warm_start 57

3.3.4 自助法 58

3.3.5 冗長度 59

3.3.6 決策樹超參數 59

3.4 實例:突破隨機森林邊界 59

3.4.1 準備數據集 60

3.4.2 n_estimators 60

3.4.3 cross_val_score 61

3.4.4 微調超參數 61

3.4.5 隨機森林的缺點 65

3.5 總結 66

第4章 從梯度提升到XGBoost 67

4.1 從裝袋到提升 67

4.1.1 AdaBoost簡介 68

4.1.2 有所區別的梯度提升算法 68

4.2 梯度提升的工作原理 69

4.2.1 殘差 69

4.2.2 學習如何從零開始構建梯度提升模型 70

4.2.3 在 scikit-learn 中構建梯度提升模型 73

4.3 修改梯度提升超參數 74

4.3.1 learning_rate 74

4.3.2 基學習器 76

4.3.3 subsample 77

4.3.4 RandomizedSearchCV 78

4.3.5 XGBoost 80

4.4 接近大數據——梯度提升與XGBoost的比較 80

4.4.1 介紹系外行星數據集 81

4.4.2 預處理系外行星數據集 82

4.4.3 構建梯度提升分類器 83

4.4.4 時間模塊 83

4.4.5 比較速度 84

4.5 總結 86

第二部分 XGBoost

第5章 XGBoost揭秘 88

5.1 設計XGBoost 88

5.1.1 背景描述 88

5.1.2 設計特點 89

5.2 分析 XGBoost 參數 91

5.3 構建XGBoost模型 94

5.3.1 鳶尾花數據集 95

5.3.2 糖尿病數據集 97

5.4 案例:尋找希格斯玻色子 99

5.4.1 物理學背景 99

5.4.2 Kaggle競賽 100

5.4.3 XGBoost和希格斯玻色子挑戰賽 100

5.4.4 數據 100

5.4.5 評分 103

5.4.6 權重 104

5.4.7 模型 105

5.5 總結 107

第6章 XGBoost 超參數 108

6.1 準備數據和基礎模型 108

6.1.1 心臟病數據集 108

6.1.2 XGBClassifier 110

6.1.3 StratifiedKFold 111

6.1.4 基線模型 112

6.1.5 結合 GridSearchCV 和 RandomizedSearchCV 112

6.2 優化 XGBoost 超參數 113

6.3 應用提前停止 117

6.3.1 什麽是提前停止? 118

6.3.2 eval_set 和 eval_metric 118

6.3.3 early_stopping_rounds 120

6.4 組合超參數 121

6.4.1 一次一個超參數 121

6.4.2 超參數調整 124

6.5 總結 126

第7章 用XGBoost發現系外行星 127

7.1 尋找系外行星 127

7.1.1 背景描述 128

7.1.2 系外行星數據集 128

7.1.3 繪制數據圖表 129

7.1.4 準備數據 132

7.1.5 初始化 XGBClassifier 133

7.2 分析混淆矩陣 134

7.2.1 confusion_matrix 134

7.2.2 classification_report 135

7.2.3 備選評分方法 137

7.3 重採樣不平衡數據 139

7.3.1 重採樣 139

7.3.2 欠採樣 139

7.3.3 過採樣 141

7.4 調整和縮放 XGBClassifier 143

7.4.1 調整權重 144

7.4.2 調整 XGBClassifier 145

7.4.3 鞏固成果 151

7.4.4 分析結果 153

7.5 總結 154

第三部分 XGBoost進階

第8章 XGBoost的備選基學習器 156

8.1 備選基學習器概覽 156

8.1.1 gblinear 157

8.1.2 DART 157

8.1.3 XGBoost隨機森林 158

8.2 應用 gblinear 158

8.2.1 將 gblinear 應用於糖尿病數據集 158

8.2.2 線性數據集 164

8.2.3 gblinear 分析 166

8.3 比較DART 166

8.3.1 DART與XGBRegressor 166

8.3.2 使用XGBClassifier的DART 167

8.3.3 DART超參數 168

8.3.4 修改DART超參數 170

8.3.5 DART分析 171

8.4 尋找 XGBoost 隨機森林 172

8.4.1 將隨機森林作為基學習器使用 172

8.4.2 作為XGBoost模型的隨機森林 173

8.4.3 分析XGBoost隨機森林 175

8.5 總結 175

第9章 XGBoost Kaggle 大師 176

9.1 探索Kaggle競賽 176

9.1.1 Kaggle競賽中的XGBoost 176

9.1.2 Kaggle競賽的結構 177

9.1.3 保留集(hold-out set) 178

9.2 工程新列 180

9.2.1 什麽是特徵工程? 180

9.2.2 Uber和Lyft的數據集 180

9.3 構建非相關集成 187

9.3.1 模型範圍 188

9.3.2 相關性 190

9.3.3 機器學習集成中的相關性 191

9.3.4 VotingClassifier 集成 194

9.4 堆疊模型 195

9.4.1 什麽是堆疊? 195

9.4.2 scikit-learn 中的堆疊 195

9.5 總結 196

第10章 XGBoost模型部署 197

10.1 混合數據編碼 197

10.1.1 加載數據 197

10.1.2 清除空值 199

10.1.3 獨熱編碼 201

10.1.4 將一個獨熱編碼矩陣和數值列合並 202

10.2 自定義 scikit-learn 轉換器 204

10.2.1 定製轉換器 204

10.2.2 預處理管道 209

10.3 完成一個 XGBoost 模型 210

10.3.1 第一個 XGBoost 模型 210

10.3.2 微調 XGBoost 超參數 211

10.3.3 測試模型 215

10.4 構建機器學習管道 216

10.5 總結 218

附 錄 本書相關網址 219