本書內容涵蓋機器學習基礎知識的各個方面。全書分為10章。第1~3章介紹機器學習的基礎知識和數學基礎;第4~8章介紹常用的有監督學習算法;第9章介紹常見的無監督學習算法,討論聚類算法和PCA降維算法的相關知識;第10章介紹關聯算法,并對Apriori算法、FP-growth算法的原理進行詳細闡述。
本書適合普通高等院校非計算機專業開設人工智能基礎應用相關課程的教師和學生使用,也適合準備成為數據挖掘工程師的相關人員參考。
近年來,人工智能在全世界掀起了新的科技
浪潮,人工智能技術開始逐漸滲入人們生活的每
一個角落,人工智能技術的飛速發展正以顛覆性
的力量改變著人類社會和世界的面貌,人工智能
時代已悄然而至。在這一時代背景下,學習人工
智能的知識和技術已經成為時代發展對當代大學
生的新要求。因此,教育部發布《高等學校人工
智能創新行動計劃》,明確指出,積極開展“新
工科”研究與實踐,重視人工智能與計算機、控
制、數學、統計學等學科專業教育的交叉融合,
探索“人工智能+X”的人才培養模式,并提出了
人工智能賦能新工科課程群。
傳統的高等院校非計算機專業學生的計算機
公共課一直以計算機基礎、計算思維、計算機程
序設計等課程為主,這種以信息技術為驅動的課
程體系正在逐漸轉向數據挖掘、機器學習等以數
據為驅動的新課程體系,以適應人工智能賦能新
工科課程群的要求。
機器學習是人工智能重要的實現方式之一,
它極大地推動了人工智能的快速發展。將機器學
習技術設立為高等院校非計算機專業學生的公共
課程,在新的課程體系中有著至關重要的作用。
通過該課程的學習,可以培養學生數據分析、機
器學習建模和深度學習建模的能力,促進大數據
、“互聯網+”和人工智能對“四新專業”(即
新工科、新文科、新醫科和新農科)的賦能,為
各個專業培養復合型人才提供課程體系上的支撐
。同時,該課程對于激發學生的創新意識、培養
自學能力、鍛煉實際的編程能力也起著極為重要
的作用。
近年來,編者一直從事機器學習方面的研究
和教學工作,并開發了多個軟件項目,具有豐富
的教學經驗、較強的科研能力和開發軟件項目的
實際經驗,對機器學習的理論和實際應用有著深
入的理解。為了使初學機器學習的讀者能夠理解
機器學習的理論和實際應用,并初步具備使用機
器學習技術開發應用程序和解決實際問題的能力
,編者精選了機器學習方面的內容,將機器學習
理論與實踐相結合,從開發者的實踐角度出發,
注重提升學生的動手操作能力,在動手編寫代碼
的過程中,循序漸進地掌握機器學習的理論知識
和實踐技巧。為了便于讀者學習和理解,在全書
的體系結構和內容上,編者采取由淺入深、深入
淺出、循序漸進的方法,同時在大部分章節中提
供典型例題和習題。為了便于教師教學,編者將
教學內容模塊化,使其適用理、工、文不同學科
教學需求,方便教學過程中根據不同學科進行教
學內容的調整。
為了更好地將理論聯系實際,達到良好的教
學效果,本書以簡述原理、提出問題實例、給出
實際代碼、展現運行結果的方式實戰講解每一種
算法,這種使用可視化的例子展現概念的方法,
使理論知識的學習不再晦澀難懂。算法部分提供
了Python語言代碼及使用Scikit-Learn高效實
現的方法,并對其中的參數進行詳細講解,使讀
者在實踐中能進一步加深對機器學習算法的理解
。為了方便讀者的學習,本書還提供全部配套代
碼,讀者可從科學出版社職教技術出版中心網站
(www.abook.cn)上下載并進行練習。
本書由史巧碩、畢曉博、李林昊任主編,負
責全書的總體策劃與統稿、定稿工作,朱懷忠、
李娟和牛炳鑫任副主編。具體編寫分工如下:第
1章由牛炳鑫編寫,第2、3章由李林昊編寫,第4
章由朱懷忠編寫,第5、6、7章由史巧碩編寫,
第8、9章由畢曉博編寫,第10章由李娟編寫,劉
洪普、劉靖宇、王建勛和陳冀川參與了本書的校
閱、審核、調試等工作。
本書在編寫過程中,參考了大量文獻資料,
在此向這些文獻資料的作者深表感謝。限于編者
水平,書中難免有不妥之處,敬請各位讀者不吝
指正。
編者
2021年10月
第1章 緒論
1.1 機器學習與人工智能概述
1.1.1 人工智能的發展歷程
1.1.2 人工智能的四個要素
1.1.3 人工智能與機器學習
1.2 我國人工智能行業發展現狀
1.3 機器學習的發展歷程
1.4 機器學習的應用
第2章 機器學習基本概念
2.1 機器學習的定義
2.2 機器學習的任務
2.2.1 有監督學習
2.2.2 無監督學習
2.2.3 半監督學習
2.2.4 強化學習
2.3 機器學習中的常用術語
2.4 偏差與方差
2.5 機器學習的工作流程
2.6 Scikit-Learn
2.6.1 Scikit-Learn簡介
2.6.2 Scikit-Learn的安裝
2.6.3 Scikit-Learn的使用
第3章 機器學習的數學基礎
3.1 線性代數
3.1.1 標量、向量、矩陣和張量
3.1.2 矩陣和向量相乘
3.1.3 向量內積
3.1.4 向量外積
3.1.5 行列式和跡
3.2 概率論
3.2.1 離散隨機變量
3.2.2 數學期望
3.2.3 二維離散隨機變量和統計獨立性
3.2.4 二維隨機變量函數的數學期望
3.2.5 條件概率
3.2.6 全概率公式和貝葉斯公式
3.2.7 隨機向量
3.2.8 期望值、均值向量和協方差矩陣
3.2.9 連續型隨機變量
3.3 基尼指數和熵
3.3.1 基尼指數
3.3.2 熵
第4章 線性回歸
4.1 線性回歸模型
4.1.1 回歸問題
4.1.2 線性回歸模型實例
4.2 最小二乘法
4.2.1 最小二乘法的求解過程
4.2.2 線性回歸算法的實現
4.2.3 用Scikit-Learn實現線性回歸
4.2.4 最小二乘法的局限性
4.3 梯度下降法
4.3.1 梯度下降的基本概念
4.3.2 梯度下降
4.4 正則化
4.5 其他回歸模型
4.6 回歸模型評價指標
第5章 分類算法
5.1 邏輯回歸
5.1.1 分類問題
5.1.2 邏輯回歸模型
5.1.3 決策邊界
5.1.4 邏輯回歸的代價函數
5.1.5 分類模型性能指標
5.1.6 邏輯回歸實例
5.1.7 邏輯回歸的優缺點
5.2 樸素貝葉斯分類
5.2.1 貝葉斯定理
5.2.2 樸素貝葉斯分類算法
5.2.3 樸素貝葉斯實例
5.2.4 樸素貝葉斯分類算法的優缺點
5.3 生成模型與判別模型
5.4 KNN模型
5.4.1 KNN算法原理
5.4.2 KNN算法的基本過程
5.4.3 KNN算法的實現
5.4.4 使用Scikit-Learn實現KNN分類
5.4.5 KNN算法的優缺點
5.5 惰性學習模型和非參數模型
第6章 決策樹
6.1 決策樹的概念
6.2 特征選擇
6.2.1 特征選擇問題
6.2.2 信息增益
6.2.3 信息增益比
6.2.4 基尼指數的選擇
6.3 剪枝處理
6.4 常見決策樹算法
6.4.1 ID3決策樹算法
6.4.2 C4.5 決策樹算法
6.4.3 CART決策樹算法
6.5 使用Scikit-Learn類庫創建決策樹
6.5.1 創建決策樹
6.5.2 決策樹分類算法的優缺點
第7章 從感知機到支持向量機與人工神經網絡
7.1 感知機
7.1.1 感知機模型
7.1.2 感知機模型的損失函數
7.1.3 感知機模型的優化方法
7.1.4 感知機學習算法
7.1.5 感知機的局限性
7.2 支持向量機
7.2.1 線性可分的支持向量機
7.2.2 線性支持向量機以及軟間隔最大化
7.2.3 非線性支持向量機
7.2.4 使用Scikit-Learn實現支持向量機分類算法
7.2.5 支持向量機分類算法的優缺點
7.3 人工神經網絡
7.3.1 神經網絡結構
7.3.2 人工神經網絡的訓練
第8章 集成學習
8.1 Bagging
8.1.1 Bagging算法的過程和優點
8.1.2 Bagging的偏差和方差
8.2 Bagging框架的代表算法——隨機森林
8.2.1 隨機森林隨機性的體現
8.2.2 隨機森林的構建過程
8.3 Boosting
8.3.1 Boosting模型的工作機制
8.3.2 Boosting模型的兩個核心問題
8.3.3 Boosting的偏差和方差
8.4 Boosting框架的代表算法——AdaBoost算法
8.4.1 算法原理
8.4.2 算法步驟
8.4.3 AdaBoost算法的Python實現
8.5 GBDT
8.6 XGBoost
8.6.1 XGBoost簡介
8.6.2 XGBoost的優點
第9章 聚類算法
9.1 k-means聚類算法
9.1.1 經典k-means聚類算法
9.1.2 x-means聚類算法
9.2 分層聚類算法
9.2.1 簇之間的距離定義
9.2.2 層次聚類算法的原理及過程舉例
9.2.3 分層聚類算法的Python實現
9.3 降維算法
9.3.1 主成分分析
9.3.2 因子分析
9.3.3 線性判別分析
9.4 PCA降維算法的實現
9.4.1 基于特征值分解協方差矩陣實現PCA算法
9.4.2 基于SVD協方差矩陣實現PCA算法
第10章 關聯算法
10.1 基本概念
10.2 Apriori算法
10.2.1 Apriori算法思想
10.2.2 Apriori算法流程
10.3 FP-growth算