本書的目標,是讓非機器學習領域甚至非計算機專業(yè)出身但有學習需求的人,輕松地掌握機器學習的基本知識,從而擁有相關的實戰(zhàn)能力。
本書通過AI“小白”小冰拜師程序員咖哥學習機器學習的對話展開,內容輕松,實戰(zhàn)性強,主要包括機器學習快速上手路徑、數(shù)學和Python 基礎知識、機器學習基礎算法(線性回歸和邏輯回歸)、深度神經(jīng)網(wǎng)絡、卷積神經(jīng)網(wǎng)絡、循環(huán)神經(jīng)網(wǎng)絡、經(jīng)典算法、集成學習、無監(jiān)督和半監(jiān)督等非監(jiān)督學習類型、強化學習實戰(zhàn)等內容,以及相關實戰(zhàn)案例。本書所有案例均通過Python及Scikit-learn 機器學習庫和Keras 深度學習框架實現(xiàn),同時還包含豐富的數(shù)據(jù)分析和數(shù)據(jù)可視化內容。
本書適合對AI 感興趣的程序員、項目經(jīng)理、在校大學生以及任何想以零基礎學機器學習的人,用以入門機器學習領域,建立從理論到實戰(zhàn)的知識通道。
——零基礎入門機器學習技術,該怎么學?
——面對機器學習龐大的知識體系,覺得無法上手?
——人工智能的算法、理論、技術好抽象,總是看不懂?
如果你遇到了這些問題,那么這本機器學習“小白書”正是你的選擇——“硬核”的機器學習書也可以很有趣!
1.本書以AI菜鳥“小冰”拜師程序員“咖哥”為背景,精心設計了一條貼合零基礎讀者的入門路線。
2.本書強調實戰(zhàn),書中的案例都源自真實項目,方便讀者動手操作和應用,連接入門與業(yè)務,力求讓大家快速領會機器學習內涵,從而擁有在人工智能領域深耕的能力。
3.所有案例均通過Python及Scikit-learn 機器學習庫和Keras 深度學習框架實現(xiàn),同時還包含豐富的數(shù)據(jù)分析和數(shù)據(jù)可視化內容。
4.為讀者提供配套全書源代碼、和大量案例數(shù)據(jù)集下載。
黃佳,新加坡埃森哲公司高級顧問,人工智能專家,機器學習和云計算高級工程師。計算機世界獎學金獲得者,新加坡政府獎學金獲得者。黃佳先生IT從業(yè)近20年,參與過公共事業(yè)、醫(yī)療、金融等多領域大型人工智能項目,對政府、企業(yè)和事業(yè)單位的數(shù)據(jù)智能化項目如何成功落地有著非常深刻的思考和洞見。
引子:AI 菜鳥的挑戰(zhàn)—100 天上線智能預警系統(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 機器學習的兩大應用場景—回歸與分類
1.1.7 機器學習的其他應用場景
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 基本機器學習術語
1.3.1 特征
1.3.2 標簽
1.3.3 模型
1.4 Python 和機器學習框架
1.4.1 為什么選擇用Python
1.4.2 機器學習和深度學習框架
1.5 機器學習項目實戰(zhàn)架構
1.5.1 第1 個環(huán)節(jié):問題定義
1.5.2 第2 個環(huán)節(jié):數(shù)據(jù)的收集和預處理
1.5.3 第3 個環(huán)節(jié):選擇機器學習模型
1.5.4 第4 個環(huán)節(jié):訓練機器,確定參數(shù)
1.5.5 第5 個環(huán)節(jié):超參數(shù)調試和性能優(yōu)化
1.6 本課內容小結
1.7 課后練習
第2 課 數(shù)學和Python 基礎知識—一天搞定
2.1 函數(shù)描述了事物間的關系
2.1.1 什么是函數(shù)
2.1.2 機器學習中的函數(shù)
2.2 捕捉函數(shù)的變化趨勢
2.2.1 連續(xù)性是求導的前提條件
2.2.2 通過求導發(fā)現(xiàn)y 如何隨x 而變
2.2.3 凸函數(shù)有一個全局最低點
2.3 梯度下降是機器學習的動力之源
2.3.1 什么是梯度
2.3.2 梯度下降:下山的隱喻
2.3.3 梯度下降有什么用
2.4 機器學習的數(shù)據(jù)結構—張量
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 張量的變形和轉置
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 本課內容小結
2.9 課后練習
第3 課 線性回歸—預測網(wǎng)店的銷售額
3.1 問題定義:小冰的網(wǎng)店廣告該如何投放
3.2 數(shù)據(jù)的收集和預處理
3.2.1 收集網(wǎng)店銷售額數(shù)據(jù)
3.2.2 數(shù)據(jù)讀取和可視化
3.2.3 數(shù)據(jù)的相關分析
3.2.4 數(shù)據(jù)的散點圖
3.2.5 數(shù)據(jù)集清洗和規(guī)范化
3.2.6 拆分數(shù)據(jù)集為訓練集和測試集
3.2.7 把數(shù)據(jù)歸一化
3.3 選擇機器學習模型
3.3.1 確定線性回歸模型
3.3.2 假設(預測)函數(shù)—h (x )
3.3.3 損失(誤差)函數(shù)—L (w ,b )
3.4 通過梯度下降找到最佳參數(shù)
3.4.1 訓練機器要有正確的方向
3.4.2 凸函數(shù)確保有最小損失點
3.4.3 梯度下降的實現(xiàn)
3.4.4 學習速率也很重要
3.5 實現(xiàn)一元線性回歸模型并調試超參數(shù)
3.5.1 權重和偏置的初始值
3.5.2 進行梯度下降
3.5.3 調試學習速率
3.5.4 調試迭代次數(shù)
3.5.5 在測試集上進行預測
3.5.6 用輪廓圖描繪L 、w 和b 的關系
3.6 實現(xiàn)多元線性回歸模型
3.6.1 向量化的點積運算
3.6.2 多變量的損失函數(shù)和梯度下降
3.6.3 構建一個線性回歸函數(shù)模型
3.6.4 初始化權重并訓練機器
3.7 本課內容小結
3.8 課后練習
第4 課 邏輯回歸—給病患和鳶尾花分類
4.1 問題定義:判斷客戶是否患病
4.2 從回歸問題到分類問題
4.2.1 機器學習中的分類問題
4.2.2 用線性回歸+ 階躍函數(shù)完成分類
4.2.3 通過Sigmiod 函數(shù)進行轉換
4.2.4 邏輯回歸的假設函數(shù)
4.2.5 邏輯回歸的損失函數(shù)
4.2.6 邏輯回歸的梯度下降
4.3 通過邏輯回歸解決二元分類問題
4.3.1 數(shù)據(jù)的準備與分析
4.3.2 建立邏輯回歸模型
4.3.3 開始訓練機器
4.3.4 測試分類結果
4.3.5 繪制損失曲線
4.3.6 直接調用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 本課內容小結
4.9 課后練習
第5 課 深度神經(jīng)網(wǎng)絡—找出可能流失的客戶
5.1 問題定義:咖哥接手的金融項目
5.2 神經(jīng)網(wǎng)絡的原理
5.2.1 神經(jīng)網(wǎng)絡極簡史
5.2.2 傳統(tǒng)機器學習算法的局限性
5.2.3 神經(jīng)網(wǎng)絡的優(yōu)勢
5.3 從感知器到單隱層網(wǎng)絡
5.3.1 感知器是最基本的神經(jīng)元
5.3.2 假設空間要能覆蓋特征空間
5.3.3 單神經(jīng)元特征空間的局限性
5.3.4 分層:加入一個網(wǎng)絡隱層
5.4 用Keras 單隱層網(wǎng)絡預測客戶流失率
5.4.1 數(shù)據(jù)的準備與分析
5.4.2 先嘗試邏輯回歸算法
5.4.3 單隱層神經(jīng)網(wǎng)絡的Keras 實現(xiàn)
5.4.4 訓練單隱層神經(jīng)網(wǎng)絡
5.4.5 訓練過程的圖形化顯示
5.5 分類數(shù)據(jù)不平衡問題:只看準確率夠用嗎
5.5.1 混淆矩陣、精確率、召回率和F1 分數(shù)
5.5.2 使用分類報告和混淆矩陣
5.5.3 特征縮放的魔力
5.5.4 閾值調整、欠采樣和過采樣
5.6 從單隱層神經(jīng)網(wǎng)絡到深度神經(jīng)網(wǎng)絡
5.6.1 梯度下降:正向傳播和反向傳播
5.6.2 深度神經(jīng)網(wǎng)絡中的一些可調超參數(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)絡預測客戶流失率
5.7.1 構建深度神經(jīng)網(wǎng)絡
5.7.2 換一換優(yōu)化器試試
5.7.3 神經(jīng)網(wǎng)絡正則化:添加Dropout 層
5.8 深度神經(jīng)網(wǎng)絡的調試及性能優(yōu)化
5.8.1 使用回調功能
5.8.2 使用TensorBoard
5.8.3 神經(jīng)網(wǎng)絡中的過擬合
5.8.4 梯度消失和梯度爆炸
5.9 本課內容小結
5.10 課后練習
第6課 卷積神經(jīng)網(wǎng)絡—識別狗狗的圖像
6.1 問題定義:有趣的狗狗圖像識別
6.2 卷積網(wǎng)絡的結構
6.3 卷積層的原理
6.3.1 機器通過“模式”進行圖像識別
6.3.2 平移不變的模式識別
6.3.3 用滑動窗口抽取局部特征
6.3.4 過濾器和響應通道
6.3.5 對特征圖進行卷積運算
6.3.6 模式層級結構的形成
6.3.7 卷積過程中的填充和步幅
6.4 池化層的功能
6.5 用卷積網(wǎng)絡給狗狗圖像分類
6.5.1 圖像數(shù)據(jù)的讀入
6.5.2 構建簡單的卷積網(wǎng)絡
6.5.3 訓練網(wǎng)絡并顯示誤差和準確率
6.6 卷積網(wǎng)絡性能優(yōu)化
6.6.1 第一招:更新優(yōu)化器并設置學習速率
6.6.2 第二招:添加Dropout 層
6.6.3 “大殺器”:進行數(shù)據(jù)增強
6.7 卷積網(wǎng)絡中特征通道的可視化
6.8 各種大型卷積網(wǎng)絡模型
6.8.1 經(jīng)典的VGGNet
6.8.2 采用Inception 結構的GoogLeNet
6.8.3 殘差網(wǎng)絡ResNet
6.9 本課內容小結
6.10 課后練習
第7 課 循環(huán)神經(jīng)網(wǎng)絡—鑒定留言及探索系外行星
7.1 問題定義:鑒定評論文本的情感屬性
7.2 循環(huán)神經(jīng)網(wǎng)絡的原理和結構
7.2.1 什么是序列數(shù)據(jù)
7.2.2 前饋神經(jīng)網(wǎng)絡處理序列數(shù)據(jù)的局限性
7.2.3 循環(huán)神經(jīng)網(wǎng)絡處理序列問題的策略
7.2.4 循環(huán)神經(jīng)網(wǎng)絡的結構
7.3 原始文本如何轉化成向量數(shù)據(jù)
7.3.1 文本的向量化:分詞
7.3.2 通過One-hot 編碼分詞
7.3.3 詞嵌入
7.4 用SimpleRNN 鑒定評論文本
7.4.1 用Tokenizer 給文本分詞
7.4.2 構建包含詞嵌入的SimpleRNN
7.4.3 訓練網(wǎng)絡并查看驗證準確率
7.5 從SimpleRNN 到LSTM
7.5.1 SimpleRNN 的局限性
7.5.2 LSTM 網(wǎng)絡的記憶傳送帶
7.6 用LSTM 鑒定評論文本
7.7 問題定義:太陽系外哪些恒星有行星環(huán)繞
7.8 用循環(huán)神經(jīng)網(wǎng)絡處理時序問題
7.8.1 時序數(shù)據(jù)的導入與處理
7.8.2 建模:CNN 和RNN 的組合
7.8.3 輸出閾值的調整
7.8.4 使用函數(shù)式API
7.9 本課內容小結
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ù)調優(yōu)
8.8 本課內容小結
8.9 課后練習
第9 課 集成學習“笑傲江湖”
9.1 偏差和方差—機器學習性能優(yōu)化的風向標
9.1.1 目標:降低偏差與方差
9.1.2 數(shù)據(jù)集大小對偏差和方差的影響
9.1.3 預測空間的變化帶來偏差和方差的變化
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 算法—以預測結果作為新特征
9.4.1 Stacking 算法
9.4.2 Blending 算法
9.5 Voting/Averaging 算法—集成基模型的預測結果
9.5.1 通過Voting 進行不同算法的集成
9.5.2 通過Averaging 集成不同算法的結果
9.6 本課內容小結
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 自我訓練
10.3.2 合作訓練
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)絡
10.6 本課內容小結
10.7 課后練習
第11 課 強化學習實戰(zhàn)—咖哥的冰湖挑戰(zhàn)
11.1 問題定義:幫助智能體完成冰湖挑戰(zhàn)
11.2 強化學習基礎知識
11.2.1 延遲滿足
11.2.2 更復雜的環(huán)境
11.2.3 強化學習中的元素
11.2.4 智能體的視角
11.3 強化學習基礎算法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)絡實現(xiàn)Q-Learning
11.8 本課內容小結
11.9 課后練習
尾聲:如何實現(xiàn)機器學習中的知識遷移及持續(xù)性的學習
練習答案