本書是數據挖掘和機器學習領域的經典暢銷教材,被國內外眾多名校選用。第4版新增了關于深度學習和概率方法的重要章節,同時,備受歡迎的機器學習軟件Weka也再度升級。書中全面覆蓋了該領域的實用技術,致力于幫助讀者理解不同技術的工作方式和應用方式,從而學會在工程實踐和商業項目中解決真實問題。本書適合作為高等院校相關課程的教材,同時也適合業內技術人員閱讀參考。
前 言
Data Mining: Practical Machine Learning Tools and Techniques, Fourth Edition
計算和通信的結合建立了一個以信息為基礎的新領域。但絕大多數信息尚處于原始狀態,即以數據形式存在的狀態。假如我們將數據定義為被記錄下來的事實,那么“信息”就是隱藏于這些記錄事實的數據中的一系列模式或預期。在數據庫中蘊藏了大量具有潛在重要性的信息,這些信息尚未被發現和利用,我們的任務就是將這些信息釋放出來。
數據挖掘是將隱含的、尚不為人知的同時又是潛在有用的信息從數據中提取出來。為此我們編寫計算機程序,自動在數據庫中篩選有用的規律或模式。如果能發現一些明顯的模式,則可以將其歸納出來,以對未來的數據進行準確預測。當然,數據挖掘結果中肯定會出現一些問題,比如許多模式可能是價值不大的或者沒有實際意義的,還有一些可能是虛假的,或者是由于某些具體數據集的巧合而產生的。在現實世界中,數據是不完美的:有些被人為篡改,有些會丟失。我們觀察到的所有東西都不是完全精確的:任何規律都有例外,并且總會出現不符合任何一個規律的實例。算法必須具有足夠的健壯性以應付不完美的數據,并能提取出不精確但有用的規律。
機器學習為數據挖掘提供了技術基礎,能夠將信息從數據庫的原始數據中提取出來,以可以理解的形式表達,并可用于多種用途。這是一種抽象化過程:如實地全盤接收現有數據,然后在此基礎上推導出所有隱藏在這些數據中的結構。本書將介紹在數據挖掘實踐中為了發現和描述數據中的結構模式而采用的機器學習工具與技術。
就像所有新興技術都會受到商界的強烈關注一樣,關于數據挖掘應用的報道可謂是鋪天蓋地。夸張的報道宣稱通過設立學習算法就能從浩瀚的數據汪洋中發現那些神秘的規律,其實機器學習絕沒有什么魔法,也沒有什么隱藏的力量,更沒有什么巫術,有的只是一些能將有用信息從原始數據中提取出來的簡單和實用的技術。本書將介紹這些技術,并展示它們是如何工作的。
在許多應用中,機器學習使得從數據樣本中獲取結構描述成為可能。這種結構描述可用于預測、解釋和理解。有些數據挖掘應用側重于預測,即從數據所描述的過去預測將來在新情況下會發生什么,通常是預測新的樣本分類。但也許人們更感興趣的是,“學習”的結果是一個可以用來對樣本進行分類的真實結構描述。這種結構描述不僅支持預測,也支持解釋和理解。根據經驗,在絕大多數數據挖掘實踐應用中,用戶感興趣的莫過于掌握樣本的本質。事實上,這是機器學習優于傳統統計模型的一個主要優點。
本書詮釋了多種多樣的機器學習方法。其中部分出于方便教學的目的而僅僅羅列了一些簡單方案,以清楚解釋基本思想如何實現。其他則更多考慮到具體實現而列舉了很多應用于實際工作中的真實系統。在這些方法中,有很多都是近幾年發展起來的。
我們創建了一套綜合軟件以說明書中的思想。軟件名稱是懷卡托智能分析環境(Waikato
Environment for Knowledge Analysis),簡稱Weka,它的Java源代碼參見www.cs.waikato.ac.nz/ml/weka。Weka幾乎可以完整地、產業化地實現本書中所包含的所有技術。它包括了機器學習方法的說明性代碼以及具體實現。針對一些簡單技術,它提供了清楚而簡潔的實例,以幫助理解機器學習中的相關機理。Weka還提供了一個工作平臺,完整、實用、高水準地實現了很多流行的學習方案,這些方案能夠運用于實際的數據挖掘項目或學術研究。最后,它還包括了一個形如Java類庫的框架,這個框架支持嵌入式機器學習的應用乃至新學習方案的實現。
本書旨在介紹用于數據挖掘領域的機器學習工具和技術。讀完本書后,你將對這些技術有所了解,并能體會到它們的功效和實用價值。如果你希望用自己的數據進行實驗,用Weka就能輕松做到。但Weka絕不是唯一的選擇,例如,免費統計計算環境R就包含許多機器學習算法。Python編程語言的愛好者可能更喜歡流行的scikit-learn庫。用于分布式計算的現代“大數據”框架也支持機器學習,如Apache Spark。在實際應用中,部署機器學習的選擇有很多。本書僅討論基本的學習算法,沒有深入研究特定軟件的實現細節,但會在恰當的位置指出所討論的算法可以在Weka軟件的什么位置找到。本書還簡要介紹了其他機器學習軟件,如用于高維數據的“深度學習”。不過,大多數具體軟件的信息被歸納到了附錄中。
提供數據挖掘案例研究的商業書籍中往往涉及一些非常實用的方法,這些方法與當前機器學習教材中出現的更理論化、更原則化的方法之間存在鴻溝,本書跨越了這個鴻溝。這個鴻溝相當大,為了讓機器學習技術應用得到成果,需要理解它們是如何工作的。這不是一種可以盲目應用而后便期待好結果出現的技術。不同的問題需要用不同的技術解決,但是根據實際問題來選擇合適的技術并非易事,你需要知道到底有多少種可能的解決方案。本書所論及的技術范圍相當廣泛,并不囿于某種特定的商業軟件或方案。書中給出了大量實例,但是展示實例所采用的數據集卻小得足以讓你搞清楚實例的整個過程。真實的數據集太大,不能做到這一點(而且真實數據集的獲取常受限于商業機密)。本書所選擇的
目 錄
Data Mining: Practical Machine Learning Tools and Techniques, Fourth Edition
譯者序
前言
致謝
第一部分 數據挖掘基礎
第1章 緒論 2
1.1 數據挖掘和機器學習 2
1.1.1 描述結構模式 3
1.1.2 機器學習 5
1.1.3 數據挖掘 6
1.2 簡單的例子:天氣問題和其他問題 6
1.2.1 天氣問題 6
1.2.2 隱形眼鏡:一個理想化的問題 8
1.2.3 鳶尾花:一個經典的數值型數據集 9
1.2.4 CPU性能:引入數值預測 10
1.2.5 勞資協商:一個更真實的例子 11
1.2.6 大豆分類:一個經典的機器學習的成功例子 12
1.3 應用領域 14
1.3.1 Web挖掘 14
1.3.2 包含判斷的決策 15
1.3.3 圖像篩選 15
1.3.4 負載預測 16
1.3.5 診斷 17
1.3.6 市場和銷售 17
1.3.7 其他應用 18
1.4 數據挖掘過程 19
1.5 機器學習和統計學 20
1.6 將泛化看作搜索 21
1.6.1 枚舉概念空間 22
1.6.2 偏差 22
1.7 數據挖掘和道德問題 24
1.7.1 再識別 24
1.7.2 使用個人信息 25
1.7.3 其他問題 26
1.8 拓展閱讀及參考文獻 26
第2章 輸入:概念、實例和屬性 29
2.1 概念 29
2.2 實例 31
2.2.1 關系 31
2.2.2 其他實例類型 34
2.3 屬性 35
2.4 輸入準備 36
2.4.1 數據收集 37
2.4.2 ARFF格式 37
2.4.3 稀疏數據 39
2.4.4 屬性類型 40
2.4.5 缺失值 41
2.4.6 不正確的值 42
2.4.7 非均衡數據 42
2.4.8 了解數據 43
2.5 拓展閱讀及參考文獻 43
第3章 輸出:知識表達 44
3.1 表 44
3.2 線性模型 44
3.3 樹 46
3.4 規則 49
3.4.1 分類規則 49
3.4.2 關聯規則 52
3.4.3 包含例外的規則 53
3.4.4 表達能力更強的規則 54
3.5 基于實例的表達 56
3.6 聚類 58
3.7 拓展閱讀及參考文獻 59
第4章 算法:基本方法 60
4.1 推斷基本規則 60
4.2 簡單概率模型 63
4.2.1 缺失值和數值屬性 65
4.2.2 用于文檔分類的樸素貝葉斯 67
4.2.3 討論 68
4.3 分治法:創建決策樹 69
4.3.1 計算信息量 71
4.3.2 高度分支屬性 73
4.4 覆蓋算法:建立規則 74
4.4.1 規則與樹 75
4.4.2 一個簡單的覆蓋算法 76
4.4.3 規則與決策列表 79
4.5 關聯規則挖掘 79
4.5.1 項集 80
4.5.2 關聯規則 81
4.5.3 高效地生成規則 84
4.6 線性模型 86
4.6.1 數值預測:線性回歸 86
4.6.2 線性分類:logistic回歸 87
4.6.3 使用感知機的線性分類 89
4.6.4 使用Winnow的線性分類 90
4.7 基于實例的學習 91
4.7.1 距離函數 92
4.7.2 高效尋找最近鄰 92
4.7.3 討論 96
4.8 聚類 96
4.8.1 基于距離的迭代聚類 97
4.8.2 更快的距離計算 98
4.8.3 選擇簇的個數 99
4.8.4 層次聚類 100
4.8.5 層次聚類示例 101
4.8.6 增量聚類 102
4.8.7 分類效用 104
4.8.8 討論 106
4.9 多實例學習 107
4.9.1 聚集輸入 107
4.9.2 聚集輸出 107
4.10 拓展閱讀及參考文獻 108
4.11 Weka實現 109
第5章 可信度:評估學習結果 111
5.1 訓練和測試 111
5.2 預測性能 113
5.3 交叉驗證 115
5.4 其他評估方法 116
5.4.1 留一交叉驗證法 116
5.4.2 自助法 116
5.5 超參數選擇 117
5.6 數據挖掘方法比較 118
5.7 預測概率 121
5.7.1 二次損失函數 121
5.7.2 信息損失函數 122
5.7.3 討論 123
5.8 計算成本 123
5.8.1 成本敏感分類 125
5.8.2 成本敏感學習 126
5.8.3 提升圖 126
5.8.4 ROC曲線 129
5.8.5 召回率–精確率曲線 130
5.8.6 討論 131
5.8.7 成本曲線 132
5.9 評估數值預測 134
5.10 最小描述長度原理 136
5.11 將MDL原理應用于聚類 138
5.12 使用驗證集進行模型選擇 138
5.13 拓展閱讀及參考文獻 139
第二部分 高級機器學習方案
第6章 樹和規則 144
6.1 決策樹 144
6.1.1 數值屬性 144
6.1.2 缺失值 145
6.1.3 剪枝 146
6.1.4 估計誤差率 147
6.1.5 決策樹歸納法的復雜度 149
6.1.6 從決策樹到規則 150
6.1.7 C4.5:選擇和選項 150
6.1.8 成本–復雜度剪枝 151
6.1.9 討論 151
6.2 分類規則 152
6.2.1 選擇測試的標準 152
6.2.2 缺失值和數值屬性 153
6.2.3 生成好的規則 153
6.2.4 使用全局優化 155
6.2.5 從局部決策樹中獲得規則 157
6.2.6 包含例外的規則 158
6.2.7 討論 160
6.3 關聯規則 161
6.3.1 建立頻繁模式樹 161
6.3.2 尋找大項集 163
6.3.3 討論 166
6.4 Weka 實現 167
第7章 基于實例的學習和線性模型的擴展 168
7.1 基于實例的學習 168
7.1.1 減少樣本集的數量 168
7.1.2 對噪聲樣本集剪枝 169
7.1.3 屬性加權 170
7.1.4 泛化樣本集 170
7.1.5 用于泛化樣本集的距離函數 171
7.1.6 泛化的距離函數 172
7.1.7 討論 172
7.2 擴展線性模型 173
7.2.1 最大間隔超平面 173
7.2.2 非線性類邊界