關于我們
書單推薦
新書推薦
|
深入機器學習 本書將帶領讀者一起主動擁抱機器學習,快樂翻越高等數(shù)學、算法分析、工程實踐這三座大山。面對三類讀者(會用即可、想深入學習、想成為專家)的學習動機和閱讀需求,全書一共用19章來講解機器學習的各種模型,包括機器學習中基礎和關鍵的線性回歸、邏輯回歸、決策樹、貝葉斯、支持向量機、KNN等。全書具有語言表達輕快、模型講解細致、圖表配備眾多的特色。 本書可供計算機、人工智能、大數(shù)據(jù)等專業(yè)的大學生、研究生閱讀,也可供需要用到機器學習技術的廣大工程技術人員、研究人員作為參考。 機器學習對于眾多軟件從業(yè)人員的誘惑是無需多言的。然而櫻桃好吃樹難栽,大多數(shù)初學者最終未能到達成功的彼岸,不少甚至連中途未到就放棄了。 工作關系,我也曾經多次試圖走進機器學習的殿堂。每次所下的決心雖然不小但卻無功而返。放棄的原因并不復雜,經常都是由于對一個概念、一個原理、一個公式實在無法理解所導致的。比如,我看過的書中,關于線性回歸都是引用現(xiàn)成的算法函數(shù),沒有看到過這個函數(shù)在數(shù)學上倒底是怎么實現(xiàn)的,因此對于給定的幾個散點,如果不借助現(xiàn)成的算法函數(shù),我確實沒搞明白怎么才能擬合出相應的回歸方程。線性回歸是機器學習算法中最基本、最簡單的算法,但我怎么敢說自己真正理解了線性回歸呢? 相關的圖書買了不少看了不少,浪費些腦細胞不算事兒,心里不好邁過的那道坎是買書浪費了很多錢。作為一名老圖書編輯,牢騷之后往往會對所看的這些書做一些思考或幻想,比如:你不講一下機器學習實驗環(huán)境配置讀者怎么邊學邊做?這個算法原理感覺這么晦澀到底是因為作者水平太高還是因為我水平太低?這個數(shù)學公式如果給出推導過程我是不是就不用東查西查了?公式中的這些符號為什么不能解釋一下?這個地方如果能舉個例子該有多好?這個地方配個圖多直觀?…… 我向大家推薦鄧子云老師這本機器學習的書,僅僅是因為我在編輯此書的過程中感覺到,他精確地假設了我的水平,他精確地知道每一個知識點怎么講、講到什么程度我才能懂,他精確地知道我在每一個地方會產生什么樣的疑惑。后來有一次與鄧老師吃飯時我說:鄧老師,你就像我肚子里的蛔蟲,鄧老師說:你學習過程中遇到的坑我基本都遇到過,我只是盡力把坑填平。 簡單的一句話,背后凝聚的是鄧子云老師多年關于機器學習的教學、知識、實踐、經驗、思考及責任。這本七十余萬字的長篇巨著,蘊含了數(shù)百張精心設計的實戰(zhàn)插圖,數(shù)十個的公式詳細推導過程及講解,字里行間的點點珠璣,深入淺出的醍醐灌頂…… 盡管感覺本書還有不少可優(yōu)化之處,但它確實使我在機器學習的征途中走出了最遠的距離。 周春元 機器學習涉及的知識特別多,令人應接不睱;實際工程應用非常廣,令人不得不學。目前,很多高校開設了人工智能、大數(shù)據(jù)專業(yè),很多企業(yè)也需要用到人工智能技術。人工智能、大數(shù)據(jù)基礎的知識領域自然還是機器學習。于是,學習機器學習的人越來越多。 當前市面上已有不少有關機器學習的圖書。有的淺嘗輒止,一種模型三五頁就講完了,讓人大致明白但又感覺不著地;有的滿版公式,讓人不得要領;有的只有理論講解沒有實例,讓人不好動手練習。我覺得根據(jù)讀者對知識的學習訴求和規(guī)律來寫作圖書可以解決這些問題。我把對機器學習有學習動機的讀者分成三類: 1.會用即可的讀者。這類讀者的訴求是只要會用某個類庫(如scikit-learn)建立簡單的機器學習模型、能做數(shù)據(jù)分析和預測即可。針對這類讀者,寫一大堆數(shù)學公式沒有意義。 2.想深入學習的讀者。這類讀者的訴求是要學懂每個模型的數(shù)學原理,會推導公式。這類讀者得掌握微積分、線性代數(shù)、概率論、統(tǒng)計學這四門課程的知識。 3.想成為專家的讀者。這類讀者的訴求是要學習每種模型的高級知識,并能融會貫通地使用開發(fā)工具找到較為理想的模型參數(shù)。那就需要掌握一些更為復雜的數(shù)據(jù)結構、算法分析與設計知識,并能接受厚重的知識閱讀量。 為了滿足這三類讀者的訴求,考慮到機器學習的模型眾多,我不打算在本書中講解所有的機器學習模型,而是針對機器學習中基礎和關鍵的線性回歸、邏輯回歸、決策樹、貝葉斯、支持向量機、KNN這六種模型來進行詳細講解,并采取如下的寫法: 1.第1、2章用于打基礎。講解有關機器學習的基本概念,說明如何使用Python編程做簡單的開發(fā)。 2.對每個模型分3章來講解。第1章滿足會用即可的讀者;第2章滿足想深入學習的讀者;第3章滿足想成為專家的讀者。由于KNN模型相對簡單一些,沒有編寫第3章。 3.每個模型均有實例講解。有的使用scikit-learn庫編程實現(xiàn),有的自主編程實現(xiàn)。我認為理解了原理,完全可以自己編程實現(xiàn),只是我們沒有必要這么做。多數(shù)情況下,使用類庫編程即可,理解原理則還能有目標地調節(jié)參數(shù)來找到更為理想的模型。 本書有三點特色: 1.語言表達輕快。我比較喜歡閱讀文字表達像聊天的圖書,自己寫作也將運用這種風格,盡管可能會損失一點數(shù)學的嚴謹性。 2.模型講解細致。對每個模型有關的數(shù)學知識、原理、公式推導都講得很細致。 3.圖表配備眾多。一圖決勝千里,能用圖表達出原理就用圖表達。全書一共配了280多幅插圖和80多張表格。 如果讀者能把本書通讀下來,相信再去閱讀有關某一種模型的專著和學術論文將會輕松很多,也將能看得懂滿版的數(shù)學公式;而且用于工程實踐也不會是難事,讀者要做的更多的是分析業(yè)務場景的需求、構建模型所需的數(shù)據(jù)。 鑒于作者的水平有限,疏漏之處在所難免,敬請讀者多批評、指教,我的郵箱是dengziyun@126.com,歡迎來信溝通交流。 感謝中國水利水電出版社萬水分社的周春元副總經理,他經常和我探討選題的寫作、宣傳和讀者的需求,給了我創(chuàng)作的動力。感謝我的夫人黃婧女士,她承擔了大量的家務及帶孩子的事務,使得我有時間在工作之余進行創(chuàng)作。還要感謝參考文獻中的很多作者及CSDN、博客園、知乎上的很多博主,他們的創(chuàng)作成果為我的寫作提供了大量的參考資料。 本書的創(chuàng)作只是個開始,如果讀者反饋寫得還不錯,我將繼續(xù)創(chuàng)作討論機器學習其他模型的圖書。最后給出全書為三類讀者準備的學習路線總圖供閱讀、參考。 為減輕讀者購書成本,本書采用了黑白印刷,這可能導致某些圖片的印刷效果不如彩色印刷效果好。因此,特將本書所有圖片及書中源代碼打包,如有需要,讀者可掃描下方二維碼進行免費下載。 鄧子云:工學博士,教授,擅長將復雜的問題簡單化,酷愛機器學習與數(shù)學,希望通過本書,把個人在機器學習方面的心得、經驗、系統(tǒng)性知識,分享給那些正在經受機器學習中的復雜概念、原理、數(shù)學推導等問題困擾的同學或同仁。已出版著作20余本,發(fā)表論文110余篇。主持過國家級、省部級科研課題40余項。 前言 第1章 認知機器學習 1 1.1 什么是機器學習 2 1.1.1 理解機器學習的定義 2 1.1.2 機器學習有哪些模型 3 1.2 怎么學習機器學習 4 1.2.1 學習的總體步驟 4 1.2.2 理清工具與原理的關系 4 1.3 搭建開發(fā)環(huán)境 5 1.3.1 下載和安裝Anaconda 5 1.3.2 Anaconda的5個工具軟件 5 1.4 小結 6 第2章 打下開發(fā)基礎 7 2.1 學會使用常用的數(shù)據(jù)結構 8 2.1.1 列表 8 2.1.2 字典 10 2.1.3 numpy 11 2.2 能用matplotlib繪圖 15 2.2.1 畫點 15 2.2.2 畫線 16 2.2.3 畫面 16 2.2.4 畫多個子圖 16 2.3 能編程保存和加載機器學習模型 18 2.3.1 保存模型 18 2.3.2 加載模型 18 2.4 小結 18 第3章 入門先學會使用線性回歸 19 3.1 初步理解線性回歸 20 3.1.1 涉及的主要術語 20 3.1.2 線性方程的表達 21 3.1.3 擬合出的線的樣子 24 3.2 了解線性回歸的過程 26 3.2.1 做線性回歸的過程 26 3.2.2 模型的評價指標 27 3.2.3 數(shù)據(jù)集的劃分 29 3.3 做線性回歸的實例 30 3.3.1 用圖觀察數(shù)據(jù)項之間的關系 31 3.3.2 對數(shù)據(jù)集進行劃分 33 3.3.3 用數(shù)據(jù)訓練模型 34 3.3.4 用模型做預測 35 3.3.5 對模型做評價 38 3.4 使用更復雜的線性回歸模型 46 3.4.1 以一元高次方程為模型 46 3.4.2 以多元一次方程為模型 51 3.4.3 以多元高次方程為模型 54 3.5 小結 58 第4章 學習線性回歸背后的數(shù)學原理 60 4.1 補充學習高等數(shù)學知識 62 4.1.1 導數(shù)的意義 62 4.1.2 常用的求導法則 62 4.1.3 求某點的導數(shù)值 65 4.1.4 復合函數(shù)的導數(shù) 68 4.1.5 偏導數(shù) 70 4.1.6 行列式及其計算方法 72 4.1.7 矩陣及其計算方法 76 4.1.8 線性方程組的解法 81 4.2 理解和使用最小二乘法 85 4.2.1 為什么叫最小二乘法 85 4.2.2 求解一元一次方程模型的參數(shù) 87 4.2.3 求解多元一次方程模型的參數(shù) 94 4.2.4 求解一元高次方程和多元高次方程模型的參數(shù) 101 4.2.5 多種模型之間的比較 101 4.3 學習和使用梯度下降法 102 4.3.1 什么是梯度和梯度下降法 102 4.3.2 多元函數(shù)的梯度下降法 104 4.3.3 設置迭代的出口和學習率 110 4.3.4 線性回歸的梯度下降法 113 4.3.5 由誤差函數(shù)的圖形引發(fā)對極小值的討論 119 4.3.6 遍歷訓練數(shù)據(jù)做線性回歸的三種梯度下降法 122 4.4 小結 126 第5章 深入淺出線性回歸的高級知識 128 5.1 模型優(yōu)化要解決什么問題 129 5.1.1 欠擬合、過擬合和恰當擬合 129 5.1.2 怎么解決過擬合的問題 130 5.2 用嶺回歸對線性回歸模型做懲罰 130 5.2.1 做嶺回歸用最小二乘法時的數(shù)學原理 131 5.2.2 用嶺跡法找到合適的λ值 132 5.2.3 做嶺回歸用梯度下降法時的數(shù)學原理 135 5.2.4 用交叉驗證法找到合適的λ值 136 5.3 用Lasso回歸對線性回歸模型做懲罰 146 5.3.1 Lasso回歸的數(shù)學原理 146 5.3.2 從圖形上理解Lasso回歸 150 5.3.3 用坐標軸下降法做Lasso回歸 152 5.4 化繁為簡使用scikit-learn庫 164 5.4.1 用最小二乘法做線性回歸 164 5.4.2 做嶺回歸 166 5.4.3 做Lasso回歸 172 5.4.4 使用彈性網絡做線性回歸 174 5.5 小結 177 第6章 學會使用邏輯回歸 179 6.1 初步理解邏輯回歸 180 6.1.1 涉及的主要術語 180 6.1.2 線性分類的圖形表達 180 6.1.3 邏輯回歸的圖形表達 183 6.2 用scikit-learn庫做邏輯回歸 185 6.2.1 引入乳腺癌數(shù)據(jù)集 186 6.2.2 用邏輯回歸預測乳腺癌 187 6.2.3 評估邏輯回歸模型 190 6.2.4 得到模型參數(shù) 192 6.2.5 得到分類的可能性值 193 6.3 解決多分類的問題 194 6.3.1 引入鳶尾花數(shù)據(jù)集 194 6.3.2 用One-Vs-All解決多分類問題 195 6.3.3 用One-Vs-One解決多分類問題 203 6.4 小結 205 第7章 學習邏輯回歸背后的數(shù)學原理 207 7.1 補充學習高等數(shù)學知識 208 7.1.1 凸函數(shù)和Hessian矩陣 208 7.1.2 大數(shù)定律和中心極限定理 210 7.1.3 正態(tài)分布和伯努利分布 211 7.1.4 條件概率和似然函數(shù) 212 7.2 理解邏輯回歸的數(shù)學原理 213 7.2.1 找到合適的用于優(yōu)化的函數(shù) 213 7.2.2 在邏輯回歸中使用梯度下降法的數(shù)學原理 215 7.3 用梯度下降法求解邏輯回歸模型 216 7.3.1 將鳶尾花分成兩類 216 7.3.2 預測乳腺癌 220 7.4 小結 222 第8章 深入淺出邏輯回歸的高級知識 224 8.1 對邏輯回歸做正則化 226 8.1.1 理解L2正則化的數(shù)學原理 226 8.1.2 用L2正則化預測乳腺癌 226 8.1.3 用其他懲罰方式做邏輯回歸 228 8.2 化繁為簡使用scikit-learn庫 228 8.2.1 熟悉并使用LogisticRegression類 228 8.2.2 熟悉并使用SGDClassifier類 230 8.2.3 熟悉并使用LogisticRegressionCV 類 232 8.2.4 用LogisticRegression類做多分類 233 8.3 補充學習一些更高級的數(shù)學知識 234 8.3.1 泰勒公式 235 8.3.2 牛頓法和擬牛頓法的優(yōu)化原理 239 8.3.3 lbfgs優(yōu)化方法 247 8.3.4 newton-cg優(yōu)化方法 248 8.3.5 liblinear優(yōu)化方法 255 8.3.6 sag和saga優(yōu)化方法 257 8.4 用softmax解決多分類問題 262 8.4.1 多分類的原理 262 8.4.2 畫出多分類的界線 266 8.5 小結 269 第9章 學會使用樸素貝葉斯 271 9.1 初步理解樸素貝葉斯 272 9.1.1 樸素貝葉斯定理的一些基本術語 272 9.1.2 樸素貝葉斯怎么得出屬于某一類的概率 274 9.2 用scikit-learn做樸素貝葉斯分類 276 9.2.1 使用GuassianNB類做鳶尾花分類 276 9.2.2 使用MultinomialNB類和BernoulliNB類 278 9.3 小結 279 第10章 學習樸素貝葉斯背后的數(shù)學原理 281 10.1 理解樸素貝葉斯分類的數(shù)學原理 282 10.1.1 理解全概率公式并推導樸素貝葉斯公式 282 10.1.2 利用樸素的內涵再推演樸素貝葉斯公式 284 10.2 進一步說明scikit-learn中做樸素貝葉斯分類的類 285 10.2.1 再看GuassianNB類 285 10.2.2 再看MultinomialNB類和BernoulliNB類 287 10.3 做區(qū)分垃圾郵件和非垃圾郵件的項目實戰(zhàn) 288 10.3.1 理解spambase數(shù)據(jù)集 288 10.3.2 使用3種樸素貝葉斯模型區(qū)分垃圾郵件和非垃圾郵件 289 10.4 小結 291 第11章 深入淺出貝葉斯的高級知識 292 11.1 會用有向圖表達貝葉斯網絡 293 11.1.1 深刻理解獨立和互斥的概念 293 11.1.2 用有向無環(huán)圖表達貝葉斯網絡 294 11.1.3 理解貝葉斯網絡的3種基本結構 296 11.1.4 打貝葉斯球來分析兩個事件是否關聯(lián) 299 11.2 使用pgmpy建模貝葉斯網絡 301 11.2.1 安裝pgmpy 301 11.2.2 構建某女士結交男友決策的貝葉斯網絡 301 11.2.3 用貝葉斯網絡做預測 308 11.2.4 讓貝葉斯網絡自動學習到條件概率表 310 11.3 小結 311 第12章 學會使用決策樹 313 12.1 初步理解決策樹 314 12.1.1 決策樹中的一些專業(yè)術語 314 12.1.2 常見的3種決策樹算法 315 12.2 用scikit-learn做決策樹分類 315 12.2.1 用信息增益做分類 316 12.2.2 用基尼指數(shù)做分類 317 12.2.3 畫出決策樹 319 12.3 小結 321 第13章 學習決策樹背后的數(shù)學原理 322 13.1 學會計算決策樹的專業(yè)術語表示的量 323 13.1.1 計算信息熵 323 13.1.2 計算信息增益 326 13.1.3 計算信息增益比 328 13.1.4 計算基尼指數(shù) 328 13.1.5 計算基尼指數(shù)增加值 330 13.2 理解3種決策樹算法 330 13.2.1 理解ID3決策樹算法 330 13.2.2 scikit-learn庫用信息增益生成決策樹的算法 335 13.2.3 理解CART算法 339 13.2.4 用CART算法做分類 341 13.2.5 用CART算法做回歸 342 13.3 深入學習用scikit-learn做決策樹分類和回歸 343 13.3.1 DecisionTreeClassifier類的方法和屬性 343 13.3.2 DecisionTreeRegressor類的方法和屬性 345 13.3.3 用決策樹做鳶尾花分類 346 13.3.4 用決策樹做房價回歸分析 351 13.4 小結 355 第14章 深入淺出決策樹的高級知識 357 14.1 學會選擇和調節(jié)決策樹模型的參數(shù) 358 14.1.1 用交叉驗證法選擇更好的參數(shù) 358 14.1.2 用GridSearchCV類調節(jié)參數(shù)模型 363 14.2 理解后剪枝的原理并做實現(xiàn) 367 14.2.1 后剪枝有哪些策略 367 14.2.2 后剪枝之MEP策略 368 14.2.3 后剪枝之REP策略 377 14.2.4 后剪枝之PEP策略 378 14.2.5 后剪枝之CCP策略 382 14.3 小結 386 第15章 學會使用支持向量機 388 15.1 初步理解支持向量機 389 15.1.1 線性支持向量機 389 15.1.2 非線性支持向量機 389 15.2 用scikit-learn做支持向量機分類 390 15.2.1 做線性分類 390 15.2.2 做非線性分類 392 15.3 小結 394 第16章 學習支持向量機背后的數(shù)學原理 395 16.1 學會計算距離 396 16.1.1 兩點之間的距離 396 16.1.2 點到超平面的距離 398 16.1.3 函數(shù)距離和幾何距離 402 16.2 學懂拉格朗日乘數(shù)法 402 16.2.1 用拉格朗日乘數(shù)法求等式約束下的極值 403 16.2.2 再次深刻理解梯度 406 16.2.3 用拉格朗日乘數(shù)法求不等式約束下的極值 408 16.2.4 用拉格朗日乘數(shù)法和KKT應對更復雜的情況 411 16.3 理解支持向量機的數(shù)學原理 413 16.3.1 從感知機談起 414 16.3.2 感知機模型的感知策略 416 16.3.3 用感知機模型做鳶尾花的二分類 419 16.4 硬間隔支持向量機 424 16.4.1 構建出目標函數(shù)及約束不等式 425 16.4.2 用拉格朗日乘數(shù)法求解目標函數(shù)和約束不等式 427 16.5 小結 432 第17章 深入淺出支持向量機的高級知識 434 17.1 用SMO算法求解硬間隔支持向量機的λ 435 17.1.1 轉化優(yōu)化問題 436 17.1.2 迭代更新的辦法 438 17.2 軟間隔支持向量機 441 17.2.1 軟間隔支持向量機的優(yōu)化問題 441 17.2.2 迭代時對參數(shù)值的剪輯 443 17.2.3 求解其他參數(shù)值 445 17.2.4 求解軟間隔支持向量機模型的步驟總結 446 17.2.5 合頁損失函數(shù) 447 17.3 自己編程實現(xiàn)支持向量機 448 17.3.1 實現(xiàn)SMO算法 448 17.3.2 實現(xiàn)二分類應用 453 17.4 非線性支持向量機 455 17.4.1 理解非線性支持向量機的原理 455 17.4.2 學懂Mercer定理 458 17.4.3 最簡單的線性核函數(shù) 458 17.4.4 多項式核函數(shù) 460 17.4.5 高斯核函數(shù) 461 17.4.6 Sigmoid核函數(shù) 464 17.5 用支持向量機做回歸分析 465 17.5.1 理解支持向量回歸的原理 465 17.5.2 用拉格朗日乘數(shù)法做推導 466 17.6 深入淺出用scikit-learn做分類和回歸 467 17.6.1 熟悉線性支持向量機(LinearSVC) 467 17.6.2 熟悉非線性支持向量機(SVC) 468 17.6.3 熟悉線性向量回歸(LinearSVR)和非線性回歸(SVR) 469 17.6.4 調節(jié)非線性支持向量機的參數(shù) 469 17.6.5 調節(jié)非線性支持向量回歸模型的參數(shù) 472 17.7 小結 474 第18章 學會使用KNN 476 18.1 理解KNN的基本原理 477 18.1.1 不用數(shù)學公式講解KNN的原理 477 18.1.2 擴展到多分類和回歸應用 477 18.1.3 怎么確定KNN模型的k值 478 18.2 用KNN做分類和回歸 478 18.2.1 用KNN模型做鳶尾花分類 478 18.2.2 用KNN模型做房屋價格回歸 480 18.3 小結 482 第19章 學習KNN背后的數(shù)學原理 483 19.1 理解KNN的數(shù)學原理 484 19.1.1 用KNN做分類的數(shù)學原理 484 19.1.2 有多個備選分類及樣本數(shù)量不均衡問題的解決辦法 485 19.1.3 用KNN做回歸的數(shù)學原理 487 19.2 再次討論距離的度量 487 19.2.1 歐幾里得距離 488 19.2.2 曼哈頓距離和閔可夫斯基距離 488 19.2.3 夾角的余弦 489 19.2.4 杰卡德相似系數(shù)和杰卡德相似距離 489 19.3 利用搜索樹加速查找 489 19.3.1 構建KD樹 489 19.3.2 運用KD樹找到k個近鄰點 491 19.3.3 構建Ball樹 496 19.3.4 運用Ball樹找到k個近鄰點 499 19.4 調節(jié)KNN模型的參數(shù) 501 19.4.1 熟悉KNeighborsClassifier類 501 19.4.2 調節(jié)KNeighborsClassifier模型的參數(shù) 502 19.4.3 熟悉KNeighborsRegressor類并學會調節(jié)參數(shù) 504 19.5 小結 506 后續(xù)學習建議 508 參考文獻 509
你還可能感興趣
我要評論
|