本書的目標,是讓非機器學習領(lǐng)域甚至非計算機專業(yè)出身但有學習需求的人,輕松地掌握機器學習的基本知識,從而擁有相關(guān)的實戰(zhàn)能力。
本書通過AI“小白”小冰拜師程序員咖哥學習機器學習的對話展開,內(nèi)容輕松,實戰(zhàn)性強,主要包括機器學習快速上手路徑、數(shù)學和Python 基礎(chǔ)知識、機器學習基礎(chǔ)算法(線性回歸和邏輯回歸)、深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、經(jīng)典算法、集成學習、無監(jiān)督和半監(jiān)督等非監(jiān)督學習類型、強化學習實戰(zhàn)等內(nèi)容,以及相關(guān)實戰(zhàn)案例。本書所有案例均通過Python及Scikit-learn 機器學習庫和Keras 深度學習框架實現(xiàn),同時還包含豐富的數(shù)據(jù)分析和數(shù)據(jù)可視化內(nèi)容。
本書適合對AI 感興趣的程序員、項目經(jīng)理、在校大學生以及任何想以零基礎(chǔ)學機器學習的人,用以入門機器學習領(lǐng)域,建立從理論到實戰(zhàn)的知識通道。
——零基礎(chǔ)入門機器學習技術(shù),該怎么學?
——面對機器學習龐大的知識體系,覺得無法上手?
——人工智能的算法、理論、技術(shù)好抽象,總是看不懂?
如果你遇到了這些問題,那么這本機器學習“小白書”正是你的選擇——“硬核”的機器學習書也可以很有趣!
1.本書以AI菜鳥“小冰”拜師程序員“咖哥”為背景,精心設(shè)計了一條貼合零基礎(chǔ)讀者的入門路線。
2.本書強調(diào)實戰(zhàn),書中的案例都源自真實項目,方便讀者動手操作和應(yīng)用,連接入門與業(yè)務(wù),力求讓大家快速領(lǐng)會機器學習內(nèi)涵,從而擁有在人工智能領(lǐng)域深耕的能力。
3.所有案例均通過Python及Scikit-learn 機器學習庫和Keras 深度學習框架實現(xiàn),同時還包含豐富的數(shù)據(jù)分析和數(shù)據(jù)可視化內(nèi)容。
4.為讀者提供配套全書源代碼、和大量案例數(shù)據(jù)集下載。
黃佳,新加坡埃森哲公司高級顧問,人工智能專家,機器學習和云計算高級工程師。計算機世界獎學金獲得者,新加坡政府獎學金獲得者。黃佳先生IT從業(yè)近20年,參與過公共事業(yè)、醫(yī)療、金融等多領(lǐng)域大型人工智能項目,對政府、企業(yè)和事業(yè)單位的數(shù)據(jù)智能化項目如何成功落地有著非常深刻的思考和洞見。
引子:AI 菜鳥的挑戰(zhàn)—100 天上線智能預(yù)警系統(tǒng)
第1 課 機器學習快速上手路徑—唯有實戰(zhàn)
1.1 機器學習的家族譜
1.1.1 新手入門機器學習的3 個好消息
1.1.2 機器學習就是從數(shù)據(jù)中發(fā)現(xiàn)規(guī)律
1.1.3 機器學習的類別—監(jiān)督學習及其他
1.1.4 機器學習的重要分支—深度學習
1.1.5 機器學習新熱點—強化學習
1.1.6 機器學習的兩大應(yīng)用場景—回歸與分類
1.1.7 機器學習的其他應(yīng)用場景
1.2 快捷的云實戰(zhàn)學習模式
1.2.1 在線學習平臺上的機器學習課程
1.2.2 用Jupyter Notebook 直接實戰(zhàn)
1.2.3 用Google Colab 開發(fā)第一個機器學習程序
1.2.4 在Kaggle 上參與機器學習競賽
1.2.5 在本機上“玩”機器學習
1.3 基本機器學習術(shù)語
1.3.1 特征
1.3.2 標簽
1.3.3 模型
1.4 Python 和機器學習框架
1.4.1 為什么選擇用Python
1.4.2 機器學習和深度學習框架
1.5 機器學習項目實戰(zhàn)架構(gòu)
1.5.1 第1 個環(huán)節(jié):問題定義
1.5.2 第2 個環(huán)節(jié):數(shù)據(jù)的收集和預(yù)處理
1.5.3 第3 個環(huán)節(jié):選擇機器學習模型
1.5.4 第4 個環(huán)節(jié):訓(xùn)練機器,確定參數(shù)
1.5.5 第5 個環(huán)節(jié):超參數(shù)調(diào)試和性能優(yōu)化
1.6 本課內(nèi)容小結(jié)
1.7 課后練習
第2 課 數(shù)學和Python 基礎(chǔ)知識—一天搞定
2.1 函數(shù)描述了事物間的關(guān)系
2.1.1 什么是函數(shù)
2.1.2 機器學習中的函數(shù)
2.2 捕捉函數(shù)的變化趨勢
2.2.1 連續(xù)性是求導(dǎo)的前提條件
2.2.2 通過求導(dǎo)發(fā)現(xiàn)y 如何隨x 而變
2.2.3 凸函數(shù)有一個全局最低點
2.3 梯度下降是機器學習的動力之源
2.3.1 什么是梯度
2.3.2 梯度下降:下山的隱喻
2.3.3 梯度下降有什么用
2.4 機器學習的數(shù)據(jù)結(jié)構(gòu)—張量
2.4.1 張量的軸、階和形狀
2.4.2 標量—0D(階)張量
2.4.3 向量—1D(階)張量
2.4.4 矩陣—2D(階)張量
2.4.5 序列數(shù)據(jù) —3D(階)張量
2.4.6 圖像數(shù)據(jù) —4D(階)張量
2.4.7 視頻數(shù)據(jù)—5D(階)張量
2.4.8 數(shù)據(jù)的維度和空間的維度
2.5 Python 的張量運算
2.5.1 機器學習中張量的創(chuàng)建
2.5.2 通過索引和切片訪問張量中的數(shù)據(jù)
2.5.3 張量的整體操作和逐元素運算
2.5.4 張量的變形和轉(zhuǎn)置
2.5.5 Python 中的廣播
2.5.6 向量和矩陣的點積運算
2.6 機器學習的幾何意義
2.6.1 機器學習的向量空間
2.6.2 深度學習和數(shù)據(jù)流形
2.7 概率與統(tǒng)計研究了隨機事件的規(guī)律
2.7.1 什么是概率
2.7.2 正態(tài)分布
2.7.3 標準差和方差
2.8 本課內(nèi)容小結(jié)
2.9 課后練習
第3 課 線性回歸—預(yù)測網(wǎng)店的銷售額
3.1 問題定義:小冰的網(wǎng)店廣告該如何投放
3.2 數(shù)據(jù)的收集和預(yù)處理
3.2.1 收集網(wǎng)店銷售額數(shù)據(jù)
3.2.2 數(shù)據(jù)讀取和可視化
3.2.3 數(shù)據(jù)的相關(guān)分析
3.2.4 數(shù)據(jù)的散點圖
3.2.5 數(shù)據(jù)集清洗和規(guī)范化
3.2.6 拆分數(shù)據(jù)集為訓(xùn)練集和測試集
3.2.7 把數(shù)據(jù)歸一化
3.3 選擇機器學習模型
3.3.1 確定線性回歸模型
3.3.2 假設(shè)(預(yù)測)函數(shù)—h (x )
3.3.3 損失(誤差)函數(shù)—L (w ,b )
3.4 通過梯度下降找到最佳參數(shù)
3.4.1 訓(xùn)練機器要有正確的方向
3.4.2 凸函數(shù)確保有最小損失點
3.4.3 梯度下降的實現(xiàn)
3.4.4 學習速率也很重要
3.5 實現(xiàn)一元線性回歸模型并調(diào)試超參數(shù)
3.5.1 權(quán)重和偏置的初始值
3.5.2 進行梯度下降
3.5.3 調(diào)試學習速率
3.5.4 調(diào)試迭代次數(shù)
3.5.5 在測試集上進行預(yù)測
3.5.6 用輪廓圖描繪L 、w 和b 的關(guān)系
3.6 實現(xiàn)多元線性回歸模型
3.6.1 向量化的點積運算
3.6.2 多變量的損失函數(shù)和梯度下降
3.6.3 構(gòu)建一個線性回歸函數(shù)模型
3.6.4 初始化權(quán)重并訓(xùn)練機器
3.7 本課內(nèi)容小結(jié)
3.8 課后練習
第4 課 邏輯回歸—給病患和鳶尾花分類
4.1 問題定義:判斷客戶是否患病
4.2 從回歸問題到分類問題
4.2.1 機器學習中的分類問題
4.2.2 用線性回歸+ 階躍函數(shù)完成分類
4.2.3 通過Sigmiod 函數(shù)進行轉(zhuǎn)換
4.2.4 邏輯回歸的假設(shè)函數(shù)
4.2.5 邏輯回歸的損失函數(shù)
4.2.6 邏輯回歸的梯度下降
4.3 通過邏輯回歸解決二元分類問題
4.3.1 數(shù)據(jù)的準備與分析
4.3.2 建立邏輯回歸模型
4.3.3 開始訓(xùn)練機器
4.3.4 測試分類結(jié)果
4.3.5 繪制損失曲線
4.3.6 直接調(diào)用Sklearn 庫
4.3.7 啞特征的使用
4.4 問題定義:確定鳶尾花的種類
4.5 從二元分類到多元分類
4.5.1 以一對多
4.5.2 多元分類的損失函數(shù)
4.6 正則化、欠擬合和過擬合
4.6.1 正則化
4.6.2 欠擬合和過擬合
4.6.3 正則化參數(shù)
4.7 通過邏輯回歸解決多元分類問題
4.7.1 數(shù)據(jù)的準備與分析
4.7.2 通過Sklearn 實現(xiàn)邏輯回歸的多元分類
4.7.3 正則化參數(shù)—C 值的選擇
4.8 本課內(nèi)容小結(jié)
4.9 課后練習
第5 課 深度神經(jīng)網(wǎng)絡(luò)—找出可能流失的客戶
5.1 問題定義:咖哥接手的金融項目
5.2 神經(jīng)網(wǎng)絡(luò)的原理
5.2.1 神經(jīng)網(wǎng)絡(luò)極簡史
5.2.2 傳統(tǒng)機器學習算法的局限性
5.2.3 神經(jīng)網(wǎng)絡(luò)的優(yōu)勢
5.3 從感知器到單隱層網(wǎng)絡(luò)
5.3.1 感知器是最基本的神經(jīng)元
5.3.2 假設(shè)空間要能覆蓋特征空間
5.3.3 單神經(jīng)元特征空間的局限性
5.3.4 分層:加入一個網(wǎng)絡(luò)隱層
5.4 用Keras 單隱層網(wǎng)絡(luò)預(yù)測客戶流失率
5.4.1 數(shù)據(jù)的準備與分析
5.4.2 先嘗試邏輯回歸算法
5.4.3 單隱層神經(jīng)網(wǎng)絡(luò)的Keras 實現(xiàn)
5.4.4 訓(xùn)練單隱層神經(jīng)網(wǎng)絡(luò)
5.4.5 訓(xùn)練過程的圖形化顯示
5.5 分類數(shù)據(jù)不平衡問題:只看準確率夠用嗎
5.5.1 混淆矩陣、精確率、召回率和F1 分數(shù)
5.5.2 使用分類報告和混淆矩陣
5.5.3 特征縮放的魔力
5.5.4 閾值調(diào)整、欠采樣和過采樣
5.6 從單隱層神經(jīng)網(wǎng)絡(luò)到深度神經(jīng)網(wǎng)絡(luò)
5.6.1 梯度下降:正向傳播和反向傳播
5.6.2 深度神經(jīng)網(wǎng)絡(luò)中的一些可調(diào)超參數(shù)
5.6.3 梯度下降優(yōu)化器
5.6.4 激活函數(shù):從Sigmoid 到ReLU
5.6.5 損失函數(shù)的選擇
5.6.6 評估指標的選擇
5.7 用Keras 深度神經(jīng)網(wǎng)絡(luò)預(yù)測客戶流失率
5.7.1 構(gòu)建深度神經(jīng)網(wǎng)絡(luò)
5.7.2 換一換優(yōu)化器試試
5.7.3 神經(jīng)網(wǎng)絡(luò)正則化:添加Dropout 層
5.8 深度神經(jīng)網(wǎng)絡(luò)的調(diào)試及性能優(yōu)化
5.8.1 使用回調(diào)功能
5.8.2 使用TensorBoard
5.8.3 神經(jīng)網(wǎng)絡(luò)中的過擬合
5.8.4 梯度消失和梯度爆炸
5.9 本課內(nèi)容小結(jié)
5.10 課后練習
第6課 卷積神經(jīng)網(wǎng)絡(luò)—識別狗狗的圖像
6.1 問題定義:有趣的狗狗圖像識別
6.2 卷積網(wǎng)絡(luò)的結(jié)構(gòu)
6.3 卷積層的原理
6.3.1 機器通過“模式”進行圖像識別
6.3.2 平移不變的模式識別
6.3.3 用滑動窗口抽取局部特征
6.3.4 過濾器和響應(yīng)通道
6.3.5 對特征圖進行卷積運算
6.3.6 模式層級結(jié)構(gòu)的形成
6.3.7 卷積過程中的填充和步幅
6.4 池化層的功能
6.5 用卷積網(wǎng)絡(luò)給狗狗圖像分類
6.5.1 圖像數(shù)據(jù)的讀入
6.5.2 構(gòu)建簡單的卷積網(wǎng)絡(luò)
6.5.3 訓(xùn)練網(wǎng)絡(luò)并顯示誤差和準確率
6.6 卷積網(wǎng)絡(luò)性能優(yōu)化
6.6.1 第一招:更新優(yōu)化器并設(shè)置學習速率
6.6.2 第二招:添加Dropout 層
6.6.3 “大殺器”:進行數(shù)據(jù)增強
6.7 卷積網(wǎng)絡(luò)中特征通道的可視化
6.8 各種大型卷積網(wǎng)絡(luò)模型
6.8.1 經(jīng)典的VGGNet
6.8.2 采用Inception 結(jié)構(gòu)的GoogLeNet
6.8.3 殘差網(wǎng)絡(luò)ResNet
6.9 本課內(nèi)容小結(jié)
6.10 課后練習
第7 課 循環(huán)神經(jīng)網(wǎng)絡(luò)—鑒定留言及探索系外行星
7.1 問題定義:鑒定評論文本的情感屬性
7.2 循環(huán)神經(jīng)網(wǎng)絡(luò)的原理和結(jié)構(gòu)
7.2.1 什么是序列數(shù)據(jù)
7.2.2 前饋神經(jīng)網(wǎng)絡(luò)處理序列數(shù)據(jù)的局限性
7.2.3 循環(huán)神經(jīng)網(wǎng)絡(luò)處理序列問題的策略
7.2.4 循環(huán)神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)
7.3 原始文本如何轉(zhuǎn)化成向量數(shù)據(jù)
7.3.1 文本的向量化:分詞
7.3.2 通過One-hot 編碼分詞
7.3.3 詞嵌入
7.4 用SimpleRNN 鑒定評論文本
7.4.1 用Tokenizer 給文本分詞
7.4.2 構(gòu)建包含詞嵌入的SimpleRNN
7.4.3 訓(xùn)練網(wǎng)絡(luò)并查看驗證準確率
7.5 從SimpleRNN 到LSTM
7.5.1 SimpleRNN 的局限性
7.5.2 LSTM 網(wǎng)絡(luò)的記憶傳送帶
7.6 用LSTM 鑒定評論文本
7.7 問題定義:太陽系外哪些恒星有行星環(huán)繞
7.8 用循環(huán)神經(jīng)網(wǎng)絡(luò)處理時序問題
7.8.1 時序數(shù)據(jù)的導(dǎo)入與處理
7.8.2 建模:CNN 和RNN 的組合
7.8.3 輸出閾值的調(diào)整
7.8.4 使用函數(shù)式API
7.9 本課內(nèi)容小結(jié)
7.10 課后練習
第8 課 經(jīng)典算法“寶刀未老”
8.1 K 最近鄰
8.2 支持向量機
8.3 樸素貝葉斯
8.4 決策樹
8.4.1 熵和特征節(jié)點的選擇
8.4.2 決策樹的深度和剪枝
8.5 隨機森林
8.6 如何選擇最佳機器學習算法
8.7 用網(wǎng)格搜索超參數(shù)調(diào)優(yōu)
8.8 本課內(nèi)容小結(jié)
8.9 課后練習
第9 課 集成學習“笑傲江湖”
9.1 偏差和方差—機器學習性能優(yōu)化的風向標
9.1.1 目標:降低偏差與方差
9.1.2 數(shù)據(jù)集大小對偏差和方差的影響
9.1.3 預(yù)測空間的變化帶來偏差和方差的變化
9.2 Bagging 算法—多個基模型的聚合
9.2.1 決策樹的聚合
9.2.2 從樹的聚合到隨機森林
9.2.3 從隨機森林到極端隨機森林
9.2.4 比較決策樹、樹的聚合、隨機森林、極端隨機森林的效率
9.3 Boosting 算法—鍛煉弱模型的“肌肉”
9.3.1 AdaBoost 算法
9.3.2 梯度提升算法
9.3.3 XGBoost 算法
9.3.4 Bagging 算法與Boosting 算法的不同之處
9.4 Stacking/Blending 算法—以預(yù)測結(jié)果作為新特征
9.4.1 Stacking 算法
9.4.2 Blending 算法
9.5 Voting/Averaging 算法—集成基模型的預(yù)測結(jié)果
9.5.1 通過Voting 進行不同算法的集成
9.5.2 通過Averaging 集成不同算法的結(jié)果
9.6 本課內(nèi)容小結(jié)
9.7 課后練習
第10 課 監(jiān)督學習之外—其他類型的機器學習
10.1 無監(jiān)督學習—聚類
10.1.1 K 均值算法
10.1.2 K 值的選�。菏种夥�
10.1.3 用聚類輔助理解營銷數(shù)據(jù)
10.2 無監(jiān)督學習—降維
10.2.1 PCA 算法
10.2.2 通過PCA 算法進行圖像特征采樣
10.3 半監(jiān)督學習
10.3.1 自我訓(xùn)練
10.3.2 合作訓(xùn)練
10.3.3 半監(jiān)督聚類
10.4 自監(jiān)督學習
10.4.1 潛隱空間
10.4.2 自編碼器
10.4.3 變分自編碼器
10.5 生成式學習
10.5.1 機器學習的生成式
10.5.2 生成式對抗網(wǎng)絡(luò)
10.6 本課內(nèi)容小結(jié)
10.7 課后練習
第11 課 強化學習實戰(zhàn)—咖哥的冰湖挑戰(zhàn)
11.1 問題定義:幫助智能體完成冰湖挑戰(zhàn)
11.2 強化學習基礎(chǔ)知識
11.2.1 延遲滿足
11.2.2 更復(fù)雜的環(huán)境
11.2.3 強化學習中的元素
11.2.4 智能體的視角
11.3 強化學習基礎(chǔ)算法Q-Learning 詳解
11.3.1 迷宮游戲的示例
11.3.2 強化學習中的局部最優(yōu)
11.3.3 ε -Greedy 策略
11.3.4 Q-Learning 算法的偽代碼
11.4 用Q-Learning 算法來解決冰湖挑戰(zhàn)問題
11.4.1 環(huán)境的初始化
11.4.2 Q-Learning 算法的實現(xiàn)
11.4.3 Q-Table 的更新過程
11.5 從Q-Learning 算法到SARSA算法
11.5.1 異策略和同策略
11.5.2 SARSA 算法的實現(xiàn)
11.6 用SARSA 算法來解決冰湖挑戰(zhàn)問題
11.7 Deep Q Network 算法:用深度網(wǎng)絡(luò)實現(xiàn)Q-Learning
11.8 本課內(nèi)容小結(jié)
11.9 課后練習
尾聲:如何實現(xiàn)機器學習中的知識遷移及持續(xù)性的學習
練習答案