本書是一本關(guān)于數(shù)據(jù)流挖掘與在線學習算法的著作,該書全面、系統(tǒng)闡述了數(shù)據(jù)流機器學習的模型、算法、平臺與實例。全書共10 章,分為4 個部分:第1 部分包括第1~3 章,介紹數(shù)據(jù)流機器學習基礎(chǔ)知識;第2 部分(第4~6章)介紹基于頻繁模式的數(shù)據(jù)挖掘與在線學習算法;第3 部分是基于模型的在線學習算法,包括第7 章在線稀疏學習模型和第8 章在線低秩表示模型;第4 部分(第9、10 章)介紹基于實例的數(shù)據(jù)流概念演變檢測和在線學習算法。對每種典型在線學習算法的背景、模型定義、算法設(shè)計思想以及相關(guān)實驗分析等,書中都有都完整的闡述。同時,也詳細分析了一些與在線學習密切相關(guān)的離線數(shù)據(jù)挖掘和機器學習算法與應用。
本書的實驗平臺開源、簡單易用。每章后面都設(shè)計了操作性強的課程實驗。在圖書下載專區(qū)目錄下,免費提供了本書代碼和相關(guān)教學配套資源的在線瀏覽與下載。
本書適合作為高等學校數(shù)據(jù)科學與大數(shù)據(jù)應用、智能科學與技術(shù)、人工智能等專業(yè)本科生和研究生的教材與教學參考書,也可供研究數(shù)據(jù)流挖掘與在線學習算法的科技人員閱讀和使用。
(1)內(nèi)容全面、案例豐富,對各種在線學習算法的背景、相關(guān)工作、模型定義、算法設(shè)計思想、以及實驗方案與結(jié)果分析等,都有完整的闡述。
(2)聚焦大數(shù)據(jù)分析核心問題,詳細介紹與分析了多種典型的在線學習模型與算法,采用的實驗平臺開源、簡單易用。每章后面都設(shè)計了可操作性的課程實驗,并在圖書的附錄部分提供課程實驗參考報告和其他教學與科研資料。
前言
流數(shù)據(jù)是大數(shù)據(jù)的重要來源,在線學習算法作為一種增量式的機器學習技術(shù),是數(shù)據(jù)流挖掘的有效工具。早期的統(tǒng)計機器學習算法批量訓練整個數(shù)據(jù)集,顯然不能適應流數(shù)據(jù)的動態(tài)學習場景。在線學習范式的出現(xiàn),給大數(shù)據(jù)時代的機器學習帶來了深刻的影響。統(tǒng)計機器學習算法的增量化,大體上有基于模型的在線學習、基于頻繁模式的在線學習和基于實例的在線學習等方式�;谀P偷脑诰€學習包括在線稀疏學習模型(第7 章)、在線低秩表示模型(第8 章)等�;谀J降臋C器學習算法包括批量挖掘頻繁模式算法(第4章和第5 章)、批次更新的流模式挖掘算法(第6 章)等�;趯嵗脑诰€學習算法包括基于實例塊的概念演變檢測(第9 章)、自適應存儲K 近鄰算法(第10 章)等。書中歸納總結(jié)了在線學習模型與算法基礎(chǔ)知識,完整闡述了每種典型在線學習算法的背景、模型定義、算法設(shè)計思想、相關(guān)實驗分析等。從這個意義上說,本書是一部數(shù)據(jù)流挖掘與在線學習算法的專著。
細心的讀者可以看到,圖書內(nèi)容為教學做了精心安排。使用機器學習對數(shù)據(jù)進行分析,目前已成為計算機學科的基礎(chǔ)內(nèi)容。近幾年全國眾多各層次高校陸續(xù)開設(shè)了數(shù)據(jù)科學與大數(shù)據(jù)應用、人工智能、智能科學與技術(shù)等新工科專業(yè),還有不少高校在軟件工程、計算機科學與技術(shù)等專業(yè)里增設(shè)了機器學習、數(shù)據(jù)挖掘等數(shù)據(jù)分析類課程。筆者自2016 年承擔了大數(shù)據(jù)基礎(chǔ)大數(shù)據(jù)實時分析離線大數(shù)據(jù)分析三門課程的主講教學任務(wù),迄今已為四屆本科學生完整上完這三門大數(shù)據(jù)分析類課程。教學實踐中,深切體會到選用合適的新工科課程教材的艱難與重要。促使筆者自己動手寫一本教科書的主因是2022 年下學期的學生只開設(shè)一門大數(shù)據(jù)分析技術(shù)課程,原來分開三門課程尚且難以選到勉強適用的教材(主要是英文的),躊躇后決定融合三門課程的科研與教學實踐經(jīng)驗,以筆者自己的視角來展現(xiàn)大數(shù)據(jù)分析技術(shù),唯望拋磚引玉,為初學者略盡綿薄之力。
筆者認為,一本好的大數(shù)據(jù)分析教材,一要新,能基本覆蓋重要的前沿材料,要求作者身處科研前沿,專著作為教科書是一件很平常的事情。二要全,所選教學材料不適用或缺失部分開發(fā)成相對完整的內(nèi)容,便于引導、示范和培養(yǎng)學生的開發(fā)能力。三要合,即整個教材內(nèi)容要適合所教的學生,這點尤為重要。與市面上流行的數(shù)據(jù)分析圖書不同,本書的基本架構(gòu)為Java Weka MOA,更便于教學與開發(fā):①Java 是一門卓越的程序設(shè)計語言,信息學科(不僅僅是計算機)的學生都系統(tǒng)學習過這門語言。Weka 和MOA 著名分析平臺都采用Java 語言開發(fā),通過在Eclipse 工程中引入weka.jar、moa.jar、sizeofag.jar外部包,很容易上手基于平臺的新算法Java 代碼二次開發(fā)。②Weka 是批量數(shù)據(jù)挖掘和機器學習領(lǐng)域最Z高水平開源軟件,集成了統(tǒng)計機器學習絕大部分算法。除了提供便利的預處理、數(shù)據(jù)挖掘、可視化等圖形化操作,Weka 還明確定義了應用程序編程接口API,很容易嵌入到用戶自己的Java 工程項目中。③MOA 是一個面向流數(shù)據(jù)挖掘的平臺,集成了一些典型的在線學習算法。MOA 生成各種數(shù)據(jù)流,算法評估、參數(shù)選擇、結(jié)果展示等都以圖形化方式操作。還提供了API 調(diào)用開發(fā)新的在線學習算法。
全書共10 章,大致可分為4 個部分:第1 部分包括第1~3 章,介紹數(shù)據(jù)流機器學習基礎(chǔ)知識;第2 部分(第4~6 章)、第3 部分(第7、8 章)、第4 部分(第9、10 章)分別介紹基于頻繁模式、基于模型、基于實例的各種典型的數(shù)據(jù)挖掘和在線學習算法。前3 章之外的后續(xù)各章均相對獨立,讀者可根據(jù)自身情況選擇使用。每章之后都設(shè)計了課程實驗,并在書中給出了各個實驗報告供參考。實驗報告與各章內(nèi)容相對獨立,可根據(jù)教學目標和課時情況靈活選用。
本書的研究工作得到了湖南省自然科學基金面上項目(No. 2019JJ40111)和湖南省普通高校教學改革研究項目(No. HNJG-2021-0777)的資助,作者表示衷心的感謝。書中不少原始材料源自作者近年教學實踐中本科學生的實驗報告或畢業(yè)設(shè)計論文,在此列出他們的姓名以致謝意:岳登峰、黃世琛、周中梁、李開、馬家旺、鄭霖濤、易俊威、廖莎、周貴飛、肖倩斌、李長裕、李珊。作者的碩士研究生劉基旺、廖旭紅、江華分別以第4 章和第6 章、第5 章和第9 章、第10 章為主要內(nèi)容進行課題研究與開發(fā),深化與豐富了書稿材料。廖旭紅同學通讀全稿幫助發(fā)現(xiàn)了許多筆誤。作者感謝教研室、學院以及學校相關(guān)部門領(lǐng)導與同事們的大力支持與幫助。另外,特別感謝中國電力出版社的相關(guān)工作人員,為本書的順利出版付出了大量的辛苦勞動。
筆者從數(shù)據(jù)流挖掘與在線學習算法視角撰寫大數(shù)據(jù)分析教材,還有很多重要、前沿的材料未能覆蓋,即便覆蓋到的部分也僅是管中窺豹,更多內(nèi)容需要與后續(xù)課程配合學習。大數(shù)據(jù)分析技術(shù)發(fā)展極迅速,分支領(lǐng)域眾多。筆者才疏學淺,僅略知皮毛,加上時間和精力有限,書中如有疏漏之處,懇請讀者諸君不吝賜教。
李志杰
2022 年6 月
李志杰,男,博士,副教授,碩士研究生導師,中國通信學會高級會員。主要研究方向為大數(shù)據(jù)在線學習,主持湖南省自然科學基金面上項目 1項;作為第1作者在《計算機研究與發(fā)展》、《計算機科學與探索》、ICDM、IJCNN等國內(nèi)外期刊和學術(shù)會議發(fā)表論文10多篇,EI收錄7篇。主講《大數(shù)據(jù)基礎(chǔ)》、《大數(shù)據(jù)實時分析》、《離線大數(shù)據(jù)分析》等課程;主持湖南省普通高校教學改革項目 1 項,湖南理工學院教研教改項目 1 項。兼任中國通信學會第一屆云計算與大數(shù)據(jù)應用委員會委員、《計算機學報》學術(shù)刊物審稿人。
目錄
前言
第1 章 數(shù)據(jù)流機器學習 . 1
1.1 大數(shù)據(jù)的兩種計算模式 .1
1.1.1 大數(shù)據(jù)離線分析 .1
1.1.2 批量處理方法 2
1.1.3 大數(shù)據(jù)實時分析 .3
1.1.4 在線學習方法 4
1.2 離線分析平臺Weka .5
1.2.1 數(shù)據(jù)挖掘和機器學習 5
1.2.2 圖形用戶界面 6
1.2.3 ARFF 格式與示例數(shù)據(jù)集 .8
1.2.4 預處理過濾器 10
1.2.5 屬性選擇 11
1.2.6 可視化 12
1.3 數(shù)據(jù)流挖掘 .14
1.3.1 數(shù)據(jù)流挖掘循環(huán)過程 14
1.3.2 分類器評估 .15
1.3.3 分類方法 16
1.3.4 回歸 .22
1.3.5 聚類 .24
1.3.6 頻繁模式挖掘 27
1.4 數(shù)據(jù)流變化處理方法 30
1.4.1 數(shù)據(jù)流分布統(tǒng)計測試 30
1.4.2 概念漂移數(shù)據(jù)流產(chǎn)生 31
1.4.3 漂移評估與探測 33
1.4.4 自適應滑動窗口 . 34
1.4.5 數(shù)據(jù)流特征高維問題 35
1.4.6 噪音數(shù)據(jù)流處理 . 36
1.5 大規(guī)模在線分析平臺MOA . 37
1.5.1 圖形用戶界面 37
1.5.2 命令行操作 39
1.5.3 數(shù)據(jù)源和數(shù)據(jù)流生成器 . 41
課程實驗1 實驗平臺安裝與操作 44
1.6.1 實驗目的 . 44
1.6.2 實驗環(huán)境 . 44
1.6.3 安裝平臺 . 44
1.6.4 平臺操作 . 47
參考文獻 . 50
第2 章 MOA 平臺機器學習實例 . 52
2.1 MOA 分類 52
2.1.1 MOA 分類器 . 52
2.1.2 樸素貝葉斯增量分類器 . 53
2.1.3 Hoeffding 自適應窗口樹 55
2.1.4 MOA 分類實戰(zhàn)操作 . 57
2.2 集成分類實例 65
2.2.1 裝袋算法 . 65
2.2.2 提升算法 . 66
2.2.3 隨機森林算法 68
2.2.4 MOA 集成實戰(zhàn)操作 . 69
2.3 MOA 聚類 78
2.3.1 MOA 聚類設(shè)置 78
2.3.2 DBSCAN 密度聚類 81
2.3.3 Den-Stream 數(shù)據(jù)流聚類 . 82
2.3.4 MOA 聚類實戰(zhàn)操作 . 83
2.4 頻繁閉合項集挖掘算法 . 90
2.4.1 MOA 擴展包 . 90
2.4.2 MOA 加載配置IncMine 擴展包 91
2.4.3 Java 調(diào)用IncMine 對象和選項 92
2.4.4 Eclipse 環(huán)境下開發(fā)IncMine 代碼 93
課程實驗2 數(shù)據(jù)分類 95
2.5.1 實驗目的 95
2.5.2 實驗環(huán)境 96
2.5.3 Weka 分類 96
2.5.4 MOA 分類 99
參考文獻 104
第3 章 數(shù)據(jù)流在線學習模型與典型算法 105
3.1 數(shù)據(jù)流挖掘sketch 105
3.1.1 sketch 概念與包含的操作 105
3.1.2 自適應滑動窗口ADwin 106
3.1.3 數(shù)據(jù)流挖掘幾種代表性sketch . 108
3.2 在線學習定義與類型 . 116
3.2.1 在線學習定義 . 116
3.2.2 在線學習算法類型劃分 117
3.2.3 在線學習常用數(shù)據(jù)集 . 120
3.2.4 集成學習與并行化處理方式 . 124
3.3 基于批次FCIs 的滑動窗口更新 . 126
3.3.1 semi-FCI 概念 . 126
3.3.2 基于批次的IncMine 滑動窗口更新 . 127
3.4 在線低秩表示矩陣更新 128
3.4.1 低秩矩陣模型 . 128
3.4.2 在線更新低秩表示矩陣 129
3.5 在線對偶平均多任務(wù)學習框架 130
3.5.1 任務(wù)與特征選擇混合范數(shù) 130
3.5.2 特征權(quán)重矩陣在線更新 131
3.6 在線-離線結(jié)合的數(shù)據(jù)流聚類算法 . 132
3.6.1 層次聚類算法 . 132
3.6.2 基于密度的聚類算法 . 132
3.7 數(shù)據(jù)流微分類器集成檢測概念演變 . 133
3.7.1 微分類器集成 . 133
3.7.2 概念演變檢測與分類 . 134
3.8 在線惰性自適應學習算法 135
3.8.1 雙存儲機制 135
3.8.2 SAM-KNN 分類 135
課程實驗3 數(shù)據(jù)聚類 . 136
3.9.1 實驗目的 136
3.9.2 實驗環(huán)境 136
3.9.3 Weka 聚類 136
3.9.4 MOA 聚類 139
參考文獻 141
第4 章 離線挖掘頻繁閉合項集 . 144
4.1 算法背景 144
4.1.1 離線挖掘頻繁項集 . 144
4.1.2 頻繁閉合項集 145
4.2 Charm 批量挖掘頻繁閉合項集 146
4.2.1 項集-事務(wù)集鍵值對 146
4.2.2 Itemset-Tidset 前綴搜索樹 . 147
4.2.3 Charm 處理關(guān)系表型數(shù)據(jù) . 148
4.2.4 Charm 偽代碼 148
4.3 程序主類實現(xiàn) 150
4.3.1 Charm 程序組成 150
4.3.2 Main 類代碼 150
4.4 模式分類的性能比較 155
4.4.1 Output 類代碼 155
4.4.2 模式與訓練數(shù)據(jù)集分類 157
4.4.3 抗噪音性能 . 158
課程實驗4 頻繁模式挖掘 . 159
4.5.1 實驗目的 159
4.5.2 實驗環(huán)境 159
4.5.3 Weka 頻繁項與關(guān)聯(lián)規(guī)則挖掘 . 160
參考文獻 162
第5 章 頻繁子序列與基因表達數(shù)據(jù)雙向聚類 . 163
5.1 雙向聚類算法 163
5.1.1 單向聚類與全局模式 163
5.1.2 雙聚類與局部模式 . 163
5.2 基因表達保序子矩陣方法與實現(xiàn) . 164
5.2.1 基因表達保序子矩陣 164
5.2.2 頻繁閉合子序列挖掘算法 . 165
5.2.3 Charm_Seq 程序結(jié)構(gòu) 166
5.3 Main 類代碼 167
5.4 AlgoCharm_Bitset 類代碼 171
課程實驗5 基因數(shù)據(jù)局部模式挖掘 . 177
5.5.1 實驗目的 177
5.5.2 實驗環(huán)境 177
5.5.3 輸入基因表達數(shù)據(jù) 178
5.5.4 基因表達值排序 178
5.5.5 基因表達值替換為列標簽 179
5.5.6 挖掘公共閉合子序列 . 180
5.5.7 Charm_Seq 雙向聚類信息 182
參考文獻 183
第6 章 數(shù)據(jù)流顯露模式與貝葉斯分類 184
6.1 基于模式的數(shù)據(jù)流分類方法 . 184
6.1.1 數(shù)據(jù)流分類流程 184
6.1.2 基于模式的數(shù)據(jù)流分類 185
6.2 IncMine 算法 185
6.2.1 算法思想 185
6.2.2 Main 代碼 . 186
6.2.3 IncMine 輸入數(shù)據(jù)流 187
6.3 IncMine 概念漂移檢測 . 189
6.3.1 概念漂移種類 . 189
6.3.2 基于頻繁項集數(shù)量監(jiān)控概念漂移 190
6.4 基于顯露模式的數(shù)據(jù)流貝葉斯分類算法 192
6.4.1 貝葉斯分類與顯露模式 192
6.4.2 關(guān)系表型數(shù)據(jù)流半懶惰學習 . 193
6.4.3 實驗結(jié)果與分析 195
課程實驗6 IncMine 概念漂移檢測 196
6.5.1 實驗目的 196
6.5.2 實驗環(huán)境 196
6.5.3 命令行方式運行IncMine 196
6.5.4 Eclipse 環(huán)境下IncMine 配置與運行 . 197
6.5.5 合成數(shù)據(jù)流 199
6.5.6 概念漂移檢測 . 200
參考文獻 201
第7 章 在線特征稀疏學習 202
7.1 嵌入式特征選擇 202
7.1.1 特征子集搜索 . 202
7.1.2 L1 正則稀疏化 204
7.1.3 LASSO 的在線學習算法 . 206
7.2 多任務(wù)在線學習與特征選擇 207
7.2.1 正則化對偶平均在線學習框架 207
7.2.2 多任務(wù)學習時空代價分析 . 209
7.3 多任務(wù)加速在線學習算法 . 210
7.3.1 加速的多任務(wù)在線學習算法 210
7.3.2 求解權(quán)重矩陣的閉式解 211
7.3.3 算法收斂理論分析 . 212
7.4 協(xié)同過濾在線學習 . 215
7.4.1 概率矩陣分解 215
7.4.2 對偶平均加速在線PMF . 216
7.4.3 實驗驗證 218
課程實驗7 KDD Cup99 分類實戰(zhàn) 220
7.5.1 實驗目的 220
7.5.2 實驗環(huán)境 220
7.5.3 數(shù)據(jù)集預處理 221
7.5.4 分類性能比較 225
參考文獻 227
第8 章 低秩表示在線學習 228
8.1 字典學習與稀疏表示 228
8.1.1 字典學習 229
8.1.2 數(shù)據(jù)集字典學習優(yōu)化與求解 230
8.2 低秩子空間學習 231
8.2.1 預備知識 231
8.2.2 魯棒主成分分析 233
8.2.3 低秩矩陣表示 234
8.3 魯棒主成分分析求解 234
8.3.1 RPCA 優(yōu)化表達式 235
8.3.2 RPCA 求解 235
8.3.3 圖像背景建模應用 . 237
8.4 低秩矩陣表示求解 . 237
8.4.1 LRR 優(yōu)化表達式 . 238
8.4.2 LRR 求解 . 238
8.4.3 數(shù)據(jù)表示矩陣Z 稀疏性 239
8.5 結(jié)構(gòu)化增量子空間聚類算法 . 240
8.5.1 靜態(tài)學習階段 . 240
8.5.2 構(gòu)建相似矩陣 . 241
8.5.3 相似度矩陣的動態(tài)更新 242
8.5.4 結(jié)構(gòu)化增量子空間聚類算法 . 242
8.6 噪音魯棒增量子空間表示算法 243
8.6.1 靜態(tài)子空間結(jié)構(gòu) 243
8.6.2 相似度矩陣的動態(tài)更新 244
8.6.3 噪音魯棒增量子空間表示算法 244
課程實驗8 基于詞袋模型的文本數(shù)據(jù)分類 . 245
8.7.1 實驗目的 245
8.7.2 實驗環(huán)境 245
8.7.3 Weka 文本分類 245
8.7.4 MOA 文本分類 . 249
參考文獻 251
第9 章 可變數(shù)據(jù)流重復類與新類檢測 252
9.1 重復性概念 252
9.1.1 數(shù)據(jù)流分布重現(xiàn) 252
9.1.2 分類器再利用 . 252
9.2 微分類器與ART 聚類 254
9.2.1 微分類器與微簇 254
9.2.2 K 均值聚類 255
9.2.3 ART 聚類 256
9.3 自適應諧振理論ART 256
9.3.1 ART 處理流程 257
9.3.2 網(wǎng)絡(luò)學習算法 . 258
9.3.3 ART 聚類示例 259
9.4 微分類器集成與分類 . 263
9.4.1 可變數(shù)據(jù)流構(gòu)建微分類器集成 264
9.4.2 集成分類與離群點識別 264
9.5 新類檢測 266
9.5.1 U-outliers 定量度量 . 266
9.5.2 新類檢測 267
課程實驗9 K 均值聚類分析 . 267
9.6.1 實驗目的 267
9.6.2 實驗環(huán)境 268
9.6.3 Weka 平臺K 均值聚類 268
9.6.4 MOA 平臺K 均值聚類相關(guān)分析 270
參考文獻 273
第10 章 KNN 自適應存儲處理異質(zhì)概念漂移 . 274
10.1 數(shù)據(jù)流測試-訓練交替評估方式 274
10.1.1 交替測試訓練錯誤評估 274
10.1.2 數(shù)據(jù)流概念漂移種類 275
10.2 自適應存儲模型 276
10.2.1 模型體系結(jié)構(gòu) 276
10.2.2 SAM-KNN 分類 277
10.3 SAM 模型自適應性 . 278
10.3.1 模型參數(shù) . 278
10.3.2 STM 新概念適應性 278
10.3.3 清理與轉(zhuǎn)化實例操作 279
10.3.4 LTM 聚類壓縮 . 280
10.4 集成SAM-KNN . 280
10.4.1 SAM 在線裝袋 . 280
10.4.2 SAM 集成算法 . 281
10.4.3 參數(shù)對集成分類準確度的影響分析 282
課程實驗10 KNN 分類方法 . 284
10.5.1 實驗目的 . 284
10.5.2 實驗環(huán)境 . 284
10.5.3 Weka 平臺KNN 分類 284
10.5.4 MOA 平臺SAM-KNN 分類 287
參考文獻 289