機器學習:軟件工程方法與實現

張春強 張和平 唐 振 著

  • 出版商: 機械工業
  • 出版日期: 2020-12-01
  • 定價: $654
  • 售價: 8.5$556
  • 語言: 簡體中文
  • 頁數: 444
  • 裝訂: 平裝
  • ISBN: 7111669223
  • ISBN-13: 9787111669227
  • 相關分類: Machine Learning
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

這是一部指導讀者如何將軟件工程的思想、方法、工具和策略應用到機器學習實踐中的著作。
作者融合了自己10年的工程實踐經驗,以Python為工具,詳細闡述機器學習核心概念、原理和實現,並提供了數據分析和處理、特徵選擇、模型調參和大規模模型上線系統架構等多個高質量源碼包和工業應用框架,旨在幫助讀者提高代碼的設計質量和機器學習項目的工程效率。
全書共16章,分為4個部分:
第一部分 工程基礎篇(1~3章)
介紹了機器學習和軟件工程的融合,涉及理論、方法、工程化的數據科學環境和數據準備;
第二部分 機器學習基礎篇(4、5章)
講述了機器學習建模流程、核心概念,數據分析方法;
第三部分 特徵篇(6~8章)
詳細介紹了多種特徵離散化方法和實現、特徵自動衍生工具和自動化的特徵選擇原理與實現;
第四部分 模型篇(9~16章)
首先,深入地剖析了線性模型、樹模型和集成模型的原理,以及模型調參方法、自動調參、模型性能評估和模型解釋等;然後,通過5種工程化的模型上線方法講解了模型即服務;最後,講解了模型的穩定性監控的方法與實現,這是機器學習項目的最後一環。

2020年國家提出“新基建”發展策略,人工智能脫穎而出,機器學習作為人工智能的基礎,勢頭強勁。本書視角獨特,以Python為工具,將軟件工程中的方法應用到機器學習實踐中,重視方法論和工程實踐的融合,是一本“道”與“術”深度結合的方法指南。
方法論
用軟件工程(Software Engineering)中的工具、方法和理論指導機器學習的實踐活動,如測試驅動開發方法、機器學習項目管理方法、標準化的數據科學環境等。
提出機器學習是一門實踐學科,突出其工具、方法和策略的重要性,強調實際項目中時間、人力成本等權衡策略。
工業實踐
以機器學習全生命周期為脈絡,全面呈現了機器學習項目開發的完整鏈路,並融入了當下機器學習在互聯網金融領域的應用技術,同時提供了高質量的軟件設計和代碼實現,包括:
數據分析包
特徵離散化包
特徵選擇包
集成模型框架包
XGBoost自動調參包
大規模模型上線系統架構和源碼
一名優秀的機器學習工程師一定是一名合格的程序員,願他們推動機器學習實踐中“最後一公里”的落地!

作者簡介

張春強 
是一位具有3年C/C++、7年大數據和機器學習經驗且富有創造力的技術專家,在技術一線摸爬滾打近10年,先後就職於大型IT、世界500強企業,目前就職於某大型金融科技集團,負責數據挖掘、機器學習相關工作的管理和研發。
時隔5年,他再次為讀者書寫了一本技術專著。


張和平 
現就職於某互聯網金融集團科技公司,任大數據模型工程師,負責機器學習在金融風控和用戶運營方面的應用工作,善於運用機器學習、數據挖掘、知識圖譜和大數據技術解決實際的業務問題。
在大數據風控建模、用戶畫像、大數據平台建設等方面有豐富的實踐經驗。

目錄大綱

前言
第一部分 工程基礎篇
第1章 機器學習軟件工程方法 2
1.1 機器學習簡述 2
1.1.1 機器學習與人工智能、深度學習等的關系 2
1.1.2 機器學習類別與範式 4
1.2 軟件工程方法 13
1.2.1 機器學習中的軟件工程 15
1.2.2 編碼和測試 18
1.3 樸素貝葉斯測試驅動開發案例 21
1.3.1 開發準備 22
1.3.2 開發郵件分類器 24
1.4 本章小結 29
第2章 工程環境準備 30
2.1 Anaconda 31
2.1.1 安裝Anaconda 31
2.1.2 使用conda管理環境 32
2.1.3 Jupyter Notebook 基礎使用和示例 34
2.2 使用Pipenv定製Python環境 37
2.2.1 Pipenv簡介 38
2.2.2 Pipenv基礎使用和示例 39
2.3 Docker打包環境 41
2.3.1 Docker簡述 42
2.3.2 Docker架構 43
2.3.3 Docker基礎使用和示例 45
2.3.4 打包示例 46
2.4 標準化在數據科學項目中的意義 48
2.5 數據科學項目工程環境 49
2.5.1 開發鏡像 50
2.5.2 項目工程模板 51
2.5.3 操作演示 54
2.6 本章小結 55
第3章 實驗數據準備 56
3.1 常用數據分佈 56
3.1.1 伯努利分佈 58
3.1.2 二項分佈 58
3.1.3 泊松分佈 58
3.1.4 均勻分佈 59
3.1.5 正態分佈 59
3.1.6 指數分佈 60
3.2 開源數據集 62
3.2.1 開源數據集介紹 62
3.2.2 scikit-learn中的數據集 63
3.3 scikit-learn數據集生成接口 66
3.3.1 常用接口 66
3.3.2 分類模型隨機數據生成 67
3.3.3 回歸模型隨機數據生成 68
3.3.4 聚類模型隨機數據生成 69
3.4 隨機數生成簡介 70
3.4.1 隨機數生成的原理和概念 71
3.4.2 隨機數生成示例 72
3.4.3 隨機數應用場景介紹 72
3.5 本章小結 73
第二部分 機器學習基礎篇
第4章 機器學習項目流程與核心概念 76
4.1 機器學習項目流程 76
4.1.1 如何定義Y 78
4.1.2 如何取樣X 81
4.1.3 如何劃分數據集 83
4.1.4 如何選擇學習算法 84
4.1.5 數據分析和處理 85
4.1.6 特徵工程 87
4.1.7 模型訓練與調參 88
4.1.8 模型評估與報告 89
4.1.9 模型部署 91
4.1.10 模型監控 91
4.1.11 模型重訓或重建 92
4.2 機器學習算法8個核心概念 92
4.2.1 損失函數和正則化 92
4.2.2 欠擬合與過擬合、偏差與方差 98
4.2.3 交叉驗證 101
4.2.4 數據泄露 104
4.3 本章小結 106
第5章 數據分析與處理 107
5.1 變量的類型 107
5.2 常用分析方法 108
5.2.1 整體數據概覽 109
5.2.2 單變量可視化分析 110
5.2.3 雙變量可視化分析 113
5.2.4 多變量可視化分析 118
5.3 缺失值分析與處理 120
5.3.1 數據缺失的類型 120
5.3.2 查看缺失情況 120
5.3.3 缺失值處理方式 122
5.4 異常值分析與處理 126
5.4.1 查看異常情況 126
5.4.2 異常值處理 129
5.5 數據分析工具包開發實戰 129
5.5.1 核心功能 129
5.5.2 使用示例 130
5.5.3 核心代碼 131
5.6 本章小結 139
第三部分 特徵篇
第6章 特徵工程 142
6.1 特徵工程簡介 142
6.2 特徵處理基礎方法和實現 144
6.2.1 定量特徵 146
6.2.2 序數特徵 148
6.2.3 類別特徵 149
6.2.4 WOE編碼 153
6.2.5 日期特徵 155
6.3 特徵離散化方法和實現 156
6.3.1 等寬和等頻離散法 158
6.3.2 信息熵分箱原理與實現 161
6.3.3 Best-KS分箱原理與實現 167
6.3.4 卡方分箱原理與實現 172
6.3.5 分箱效果 178
6.4 本章小結 178
第7章 基於Featuretools的自動特徵衍生 180
7.1 特徵衍生 180
7.2 Featuretools簡介 181
7.2.1 安裝 182
7.2.2 核心概念和接口介紹 182
7.3 Featuretools原理 186
7.3.1 特徵綜合抽象 187
7.3.2 深度特徵綜合算法 187
7.4 Featuretools實踐案例 189
7.4.1 流程 189
7.4.2 捷信數據 189
7.4.3 構建實體和實體集 191
7.4.4 構建關系 193
7.4.5 特徵基元 196
7.4.6 深度特徵合成 197
7.5 本章小結 198
第8章 特徵選擇 199
8.1 特徵選擇概述 199
8.1.1 特徵選擇及其意義 200
8.1.2 業務層特徵選擇 200
8.1.3 技術層特徵選擇 201
8.2 特徵選擇流程與模式 204
8.2.1 數據質量和特徵質量 204
8.2.2 串聯和並聯流程 205
8.2.3 特徵選擇結果評價 206
8.3 特徵預測力指標 206
8.3.1 相關性指標 207
8.3.2 關聯性指標 208
8.4 過濾法與實現 211
8.4.1 常用單指標過濾法 211
8.4.2 相關性與IV雙指標過濾法 213
8.4.3 最小冗餘最大相關 214
8.5 包裹法與實現 215
8.5.1 前向選擇實現 217
8.5.2 後向選擇實現 218
8.5.3 Stepwise實現 219
8.6 嵌入法與實現 222
8.6.1 基於隨機森林的特徵選擇 222
8.6.2 基於正則的特徵選擇 223
8.7 特徵選擇工具包開發實戰 224
8.8 本章小結 230
第四部分 模型篇
第9章 線性模型 232
9.1 普通線性回歸模型 232
9.1.1 線性回歸 233
9.1.2 線性回歸的假設 236
9.1.3 線性模型如何解決非線性問題 236
9.2 廣義線性模型 238
9.2.1 建模方法論 238
9.2.2 示例 240
9.3 正則化的回歸 240
9.3.1 正則化原理 240
9.3.2 Lasso和Ridge回歸 241
9.3.3 正則化效果演示 241
9.4 邏輯回歸 247
9.4.1 模型原理 247
9.4.2 最大似然估計 249
9.4.3 LogisticRegression解析與示例 249
9.5 金融評分卡 252
9.5.1 評分卡簡介 252
9.5.2 加性原理 253
9.5.3 評分刻度與實現 254
9.6 解決共線性 257
9.7 本章小結 257
第10章 樹模型 259
10.1 樹結構 259
10.2 決策樹 260
10.3 決策樹算法 261
10.3.1 熵和基尼指數 261
10.3.2 ID3算法 263
10.3.3 C4.5算法 266
10.3.4 CART 267
10.4 樹的剪枝 269
10.4.1 預剪枝 269
10.4.2 後剪枝 269
10.5 特徵處理 270
10.5.1 連續值處理 271
10.5.2 缺失值處理 271
10.6 決策樹實現示例 272
10.7 本章小結 275
第11章 集成模型 276
11.1 模型的可變組件 276
11.1.1 數據集之行列採樣 277
11.1.2 算法之同質和異質 277
11.2 層次化的集成方法 278
11.2.1 投票組合法 278
11.2.2 前向逐步疊加法 280
11.3 Bagging方法 281
11.3.1 Bootstrap和Aggregating 281
11.3.2 Bagging模型性能分析實驗 282
11.3.3 Bagging偏差和方差解析 286
11.3.4 隨機森林 289
11.4 Boosting方法 291
11.4.1 Boosting的原理與實現示例 291
11.4.2 Boosting建模解析示例 299
11.4.3 Boosting的集大成者:XGBoost 300
11.5 Stacking概述與實現示例 301
11.6 Super Learner與ML-Ensemble 304
11.6.1 Super Learner實現示例 305
11.6.2 ML-Ensemble集成庫 307
11.7 本章小結 312
第12章 模型調參 313
12.1 模型調參概述 313
12.1.1 調參問題定義 313
12.1.2 超參數和作弊的隨機種子 314
12.1.3 調參三要素 315
12.2 調參流程和方法 316
12.2.1 調參流程 316
12.2.2 超參選取策略和特定模型超參推薦 317
12.2.3 自動調參之元學習和代理模型 318
12.3 Model-Free方法 321
12.3.1 網格搜索 321
12.3.2 隨機搜索 323
12.4 XGBoost自動調參工具開發實戰 324
12.4.1 功能和易用性設計 324
12.4.2 使用示例 325
12.4.3 代碼清單 326
12.5 貝葉斯方法 333
12.5.1 貝葉斯優化介紹 333
12.5.2 BayesianOptimization優化實例 334
12.6 部分開源調參項目簡介 337
12.6.1 Ray-Tune 337
12.6.2 optuna 339
12.7 本章小結 341
第13章 模型性能評估 342
13.1 訓練誤差vs測試誤差 342
13.2 模型評估常見的數據切割方法 343
13.2.1 留出法 343
13.2.2 交叉驗證法 345
13.2.3 留一法 346
13.2.4 自助取樣法 347
13.3 性能度量 348
13.3.1 分類任務 348
13.3.2 回歸任務 357
13.4 本章小結 360
第14章 模型解釋 361
14.1 模型解釋概述 361
14.1.1 模型解釋的意義 362
14.1.2 局部和全局解釋 363
14.2 模型解釋可視化方法 364
14.2.1 PDP 364
14.2.2 ICE 370
14.3 解釋線性模型 371
14.4 解釋樹模型 372
14.4.1 樹模型特徵的重要性 373
14.4.2 決策路徑 374
14.4.3 Treeinterpreter 375
14.5 模型無關解釋方法 378
14.5.1 特徵重要性方法 378
14.5.2 代理模型:LIME 380
14.5.3 基於博弈論的SHAP 383
14.6 本章小結 390
第15章 模型上線之模型即服務 391
15.1 模型上線方案 391
15.1.1 是否提供獨立服務 392
15.1.2 是否提取模型細節 392
15.2 提取系數上線:回歸模型和評分卡 393
15.3 自動規則提取上線:決策樹示例 393
15.3.1 規則轉化為Python代碼 395
15.3.2 規則轉化為C/Java等代碼 396
15.3.3 規則轉化為SQL代碼 396
15.4 PMML和ONNX 398
15.4.1 PMML 398
15.4.2 ONNX 400
15.5 編譯為共享庫加速預測 401
15.5.1 Treelite原理 401
15.5.2 使用示例 402
15.5.3 部署方法 403
15.6 原生模型持久化 404
15.6.1 寫接口 405
15.6.2 讀接口 406
15.7 RESTful Web Services構建 406
15.7.1 快速構建API服務 407
15.7.2 自動化模型上線框架設計與實現 409
15.8 基於Docker大規模微服務上線架構 417
15.8.1 架構設計 417
15.8.2 定製鏡像 418
15.8.3 編排可擴展服務示例 419
15.9 本章小結 420
第16章 模型穩定性監控 421
16.1 背景和監控方法 421
16.1.1 背景 421
16.1.2 監控方法 422
16.2 PSI和CSI 423
16.2.1 PSI 423
16.2.2 CSI 425
16.3 工程實現 425
16.3.1 功能簡介 426
16.3.2 代碼清單和示例 426
16.4 其他監控角度 429
16.5 監控異常處理方案 430
16.6 本章小結 430