本書中內容將目前工程應用中主流的基礎算法、機器學習算法和人工智能算法都做了詳盡的介紹,不僅如此還囊括了當前熱門算法內容,例如分類算法、聚類算法、推薦算法等。本書充分利用了最新算法的應用研究結果,從實例的角度為讀者展現一個清晰的算法應用,不拘泥于算法枯燥的理論,更多的從實用價值、工程價值的角度為讀者呈現。本書中的算法廣泛應用于各個領域,可以在自然語言處理研究、數據分析與挖掘、商務智能、廣告與商品推薦等領域中深入應用。秉承數據結合算法產生價值的理論體系,作者在介紹算法的同時與數據緊密關聯,并結合多年實際工作經驗將算法的內容闡述淋漓盡致。本書中的算法研究在當前甚至未來相當一段時間都具有很高的實際意義。
劉凡平,碩士,畢業于中國科學技術大學軟件系統設計專業。曾任職微軟亞太研發集團,從事互聯網廣告與分布式實時計算相關研發工作。后任職百度(中國)有限公司,并擔任高級研發工程師。擅長于搜索引擎、大數據分析、分布式計算等相關研發工作,曾出版《大數據搜索引擎原理分析及編程實現》,是Iveely開源搜索引擎的主要貢獻者之一,也是執著于將互聯網技術演繹為藝術的完美追求者。
第1章 算法基礎 1
1.1 基礎算法分析類型 1
1.1.1 分治法 1
1.1.2 動態規劃法 2
1.1.3 回溯法 3
1.1.4 分支限界法 4
1.1.5 貪心法 4
1.2 算法性能分析 5
1.3 概率論與數理統計基礎 6
1.4 距離計算 8
1.4.1 歐氏距離 8
1.4.2 馬氏距離 9
1.4.3 曼哈頓距離 9
1.4.4 切比雪夫距離 9
1.4.5 閔氏距離 9
1.4.6 海明距離 10
1.5 排序算法 10
1.5.1 快速排序 11
1.5.2 歸并排序 11
1.5.3 堆排序 13
1.5.4 基數排序 15
1.5.5 外排序 16
1.6 字符壓縮編碼 17
1.6.1 哈夫曼編碼 17
1.6.2 香農-范諾編碼 21
1.7 本章小結 24
第2章 數據查找與資源分配算法 25
2.1 數值查找算法 25
2.1.1 二分搜索算法 25
2.1.2 分塊查找 27
2.1.3 哈希查找 28
2.2 字符串查找算法 30
2.2.1 Knuth-Morris-Pratt算法 31
2.2.2 Boyer-Moore算法 34
2.2.3 Sunday算法 37
2.3 海量數據中的查找 39
2.3.1 基于布隆過濾器查找 39
2.3.2 倒排索引查找 41
2.4 銀行家算法 43
2.5 背包問題 45
2.5.1 0-1背包問題 45
2.5.2 部分背包問題 47
2.6 本章小結 47
第3章 路徑分析算法 49
3.1 基于Dijkstra算法的路徑分析 49
3.1.1 應用示例:極地探險 49
3.1.2 基于Dijkstra的最短路徑規劃 50
3.2 基于Floyd算法的路徑分析 53
3.2.1 應用示例:任意兩個城市之間的最短路徑 53
3.2.2 Floyd原理 54
3.2.3 基于Floyd算法計算兩個城市最短距離 56
3.3 基于A*算法的路徑搜索 58
3.3.1 應用實例:繞過障礙區到達目的地 58
3.3.2 A*算法與最短距離計算 59
3.4 基于維特比算法的概率路徑 61
3.4.1 應用實例:推斷天氣狀態 61
3.4.2 維特比算法思想 62
3.4.3 計算天氣狀態 62
3.5 最長公共子序列問題 64
3.5.1 概要 64
3.5.2 最長公共子串 64
3.5.3 最長公共子序列原理 66
3.5.4 實例:求兩字符串的最長公共子序列 66
3.6 本章小結 68
第4章 相似度分析算法 69
4.1 應用實例:海量網頁相似度分析 69
4.2 基于Jaccard相似系數的相似度計算 70
4.2.1 計算流程 70
4.2.2 狹義Jaccard相似系數 71
4.2.3 廣義Jaccard相似系數 71
4.3 基于MinHash的相似性算法 71
4.3.1 與Jaccard相似性關系 71
4.3.2 計算網頁文本相似性過程 72
4.4 向量空間模型 73
4.4.1 詞袋模型 73
4.4.2 TF-IDF算法 74
4.5 基于余弦相似性算法的相似度分析 76
4.5.1 原理基礎 76
4.5.2 公式解析 77
4.5.3 計算網頁文本相似性過程 77
4.6 基于語義主題模型的相似度算法 78
4.7 基于SimHash算法的指紋碼 80
4.7.1 SimHash引入 81
4.7.2 SimHash的計算流程 81
4.7.3 計算重復信息 83
4.8 相似度算法的差異性 84
4.9 本章小結 85
第5章 數據分類算法 86
5.1 基于樸素貝葉斯分類器 86
5.1.1 有監督分類與無監督分類 87
5.1.2 應用實例:識別車厘子與櫻桃 88
5.1.3 分類流程歸納 91
5.1.4 應用擴展:垃圾郵件識別 92
5.1.5 常用評價指標 96
5.2 基于AdaBoost分類器 100
5.2.1 AdaBoost概述 100
5.2.2 AdaBoost算法具體流程 101
5.2.3 AdaBoost算法的應用實例 102
5.2.4 AdaBoost算法的優點 105
5.3 基于支持向量機的分類器 105
5.3.1 線性可分與線性不可分 106
5.3.2 感知器 107
5.3.3 支持向量機 108
5.4 基于K鄰近算法的分類器 109
5.4.1 應用實例:電影觀眾興趣發現 109
5.4.2 核心思想 109
5.4.3 電影觀眾興趣發現 110
5.5 本章小結 113
第6章 數據聚類算法 115
6.1 采用系統聚類法 115
6.1.1 概述 116
6.1.2 最短距離法 117
6.1.3 重心聚類法 119
6.1.4 動態聚類法 120
6.2 基于K-Means聚類算法 122
6.2.1 應用實例:新聞聚類 122
6.2.2 邏輯流程 123
6.2.3 實現新聞聚類分析 124
6.2.4 K-Means++ 128
6.2.5 K-中心點聚類算法 129
6.2.6 ISODATA聚類算法 130
6.3 基于密度的DBSCAN算法 131
6.4 基于BIRCH算法的聚類分析 133
6.4.1 聚類特征 133
6.4.2 聚類特征樹 134
6.5 聚類與分類差異 135
6.6 本章小結 136
第7章 數據預測與估算算法 137
7.1 產生式模型與判別式模型 137
7.2 基于最大似然估計的預測 138
7.3 基于線性回歸的估算 140
7.3.1 概要 140
7.3.2 最小二乘法 141
7.4 基于最大期望算法分析 143
7.5 基于隱馬爾科夫模型預測 144
7.5.1 應用實例:高溫天氣與行為概率 144
7.5.2 原理分析 145
7.5.3 高溫天氣與行為概率 147
7.6 基于條件隨機場的序列預測 151
7.6.1 應用實例 151
7.6.2 原理分析 151
7.6.3 條件隨機場的優缺點 153
7.7 本章小結 154
第8章 數據決策分析算法 155
8.1 基于ID3算法的決策分析 156
8.1.1 信息量 156
8.1.2 信息熵 156
8.1.3 信息增益 157
8.1.4 ID3算法流程 157
8.1.5 ID3算法的應用 157
8.2 基于C4.5算法的分類決策樹 159
8.2.1 概要 159
8.2.1 應用實例 159
8.3 基于分類回歸樹的決策劃分 161
8.3.1 概要 162
8.3.2 應用實例:決策劃分 163
8.3.2 剪枝 164
8.4 基于隨機森林的決策分類 168
8.4.1 隨機森林的特點 169
8.4.2 隨機森林的構造方法 169
8.4.3 應用實例:決定車厘子的售價層次 170
8.5 本章小結 172
第9章 數據關聯規則分析算法 174
9.1 基于Apriori算法的關聯項分析 174
9.1.1 應用實例:超市的貨架擺放問題 175
9.1.2 基本概要 175
9.1.3 算法原理 176
9.1.4 有效擺放貨架 176
9.2 基于FP-Growth算法的關聯性分析 179
9.2.1 構建FP樹 179
9.2.2 頻繁項分析 181
9.2.3 與Apripri算法比較 184
9.3 基于Eclat算法的頻繁項集挖掘 184
9.4 本章小結 185
第10章 數據與推薦算法 187
10.1 概要 187
10.1.1 推薦算法發展 188
10.1.2 協同過濾推薦 189
10.2 基于Item-Based協同過濾推薦 190
10.2.1 Item-Based基本思想 190
10.2.2 Slope One實例:基于評分推薦 190
10.3 基于User-Based協同過濾推薦 193
10.3.1 應用實例:根據人群的推薦 194
10.3.2 User-Based與Item-Based對比 197
10.4 基于潛在因子算法的推薦 198
10.4.1 應用實例:新聞推薦 198
10.4.2 流行度與推薦 200
10.5 推薦算法與效果評價 201
10.6 本章小結 203