機(jī)器學(xué)習(xí)實(shí)戰(zhàn)
定 價(jià):69 元
叢書名:圖靈交互設(shè)計(jì)叢書
- 作者:(美),Peter Harrington 著 李銳 ,李鵬 ,曲亞東 ,王斌 譯
- 出版時(shí)間:2013/6/1
- ISBN:9787115317957
- 出 版 社:人民郵電出版社
- 中圖法分類:TP181
- 頁(yè)碼:332
- 紙張:膠版紙
- 版次:1
- 開本:16開
機(jī)器學(xué)習(xí)是人工智能研究領(lǐng)域中一個(gè)極其重要的研究方向,在現(xiàn)今的大數(shù)據(jù)時(shí)代背景下,捕獲數(shù)據(jù)并從中萃取有價(jià)值的信息或模式,成為各行業(yè)求生存、謀發(fā)展的決定性手段,這使得這一過去為分析師和數(shù)學(xué)家所專屬的研究領(lǐng)域越來越為人們所矚目。
《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》第一部分主要介紹機(jī)器學(xué)習(xí)基礎(chǔ),以及如何利用算法進(jìn)行分類,并逐步介紹了多種經(jīng)典的監(jiān)督學(xué)習(xí)算法,如k近鄰算法、樸素貝葉斯算法、Logistic回歸算法、支持向量機(jī)、AdaBoost集成方法、基于樹的回歸算法和分類回歸樹(CART)算法等。第三部分則重點(diǎn)介紹無監(jiān)督學(xué)習(xí)及其一些主要算法:k均值聚類算法、Apriori算法、FP-Growth算法。第四部分介紹了機(jī)器學(xué)習(xí)算法的一些附屬工具。
《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》通過精心編排的實(shí)例,切入日常工作任務(wù),摒棄學(xué)術(shù)化語言,利用高效的可復(fù)用Python代碼來闡釋如何處理統(tǒng)計(jì)數(shù)據(jù),進(jìn)行數(shù)據(jù)分析及可視化。通過各種實(shí)例,讀者可從中學(xué)會(huì)機(jī)器學(xué)習(xí)的核心算法,并能將其運(yùn)用于一些策略性任務(wù)中,如分類、預(yù)測(cè)、推薦。另外,還可用它們來實(shí)現(xiàn)一些更高級(jí)的功能,如匯總和簡(jiǎn)化等。
介紹并實(shí)現(xiàn)機(jī)器學(xué)習(xí)的主流算法 面向日常任務(wù)的高效實(shí)戰(zhàn)內(nèi)容 《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》沒有從理論角度來揭示機(jī)器學(xué)習(xí)算法背后的數(shù)學(xué)原理,而是通過“原理簡(jiǎn)述+問題實(shí)例+實(shí)際代碼+運(yùn)行效果”來介紹每一個(gè)算法。學(xué)習(xí)計(jì)算機(jī)的人都知道,計(jì)算機(jī)是一門實(shí)踐學(xué)科,沒有真正實(shí)現(xiàn)運(yùn)行,很難真正理解算法的精髓。這本書的最大好處就是邊學(xué)邊用,非常適合于急需邁進(jìn)機(jī)器學(xué)習(xí)領(lǐng)域的人員學(xué)習(xí)。實(shí)際上,即使對(duì)于那些對(duì)機(jī)器學(xué)習(xí)有所了解的人來說,通過代碼實(shí)現(xiàn)也能進(jìn)一步加深對(duì)機(jī)器學(xué)習(xí)算法的理解! 稒C(jī)器學(xué)習(xí)實(shí)戰(zhàn)》的代碼采用Python語言編寫。Python代碼簡(jiǎn)單優(yōu)雅、易于上手,科學(xué)計(jì)算軟件包眾多,已經(jīng)成為不少大學(xué)和研究機(jī)構(gòu)進(jìn)行計(jì)算機(jī)教學(xué)和科學(xué)計(jì)算的語言。相信Python編寫的機(jī)器學(xué)習(xí)代碼也能讓讀者盡快領(lǐng)略到這門學(xué)科的精妙之處。
大學(xué)畢業(yè)后,我先后在加利福尼亞和中國(guó)大陸的Intel公司工作。最初,我打算工作兩年之后回學(xué)校讀研究生,但是幸福時(shí)光飛逝而過,轉(zhuǎn)眼就過去了六年。那時(shí),我意識(shí)到我必須回到校園。我不想上夜校或進(jìn)行在線學(xué)習(xí),我就想坐在大學(xué)校園里吸納學(xué)校傳授的所有知識(shí)。在大學(xué)里,最好的方面不是你研修的課程或從事的研究,而是一些外圍活動(dòng):與人會(huì)面、參加研討會(huì)、加入組織、旁聽課程,以及學(xué)習(xí)未知的知識(shí)。
在2008年,我?guī)椭I備一個(gè)招聘會(huì)。我同一個(gè)大型金融機(jī)構(gòu)的人交談,他們希望我去應(yīng)聘他們機(jī)構(gòu)的一個(gè)對(duì)信用卡建模(判斷某人是否會(huì)償還貸款)的崗位。他們問我對(duì)隨機(jī)分析了解多少,那時(shí),我并不能確定“隨機(jī)”一詞的意思。他們提出的工作地點(diǎn)令我無法接受,所以我決定不再考慮了。但是,他們說的“隨機(jī)”讓我很感興趣,于是我拿來課程目錄,尋找含有“隨機(jī)”字樣的課程,我看到了“離散隨機(jī)系統(tǒng)”。我沒有注冊(cè)就直接旁聽了這門課,完成課后作業(yè),參加考試,最終被授課教授發(fā)現(xiàn)。但是她很仁慈,讓我繼續(xù)學(xué)習(xí),這讓我非常感激。上這門課,是我第一次看到將概率應(yīng)用到算法中。在這之前,我見過一些算法將平均值作為外部輸入,但這次不同,方差和均值都是這些算法中的內(nèi)部值。這門課主要討論時(shí)間序列數(shù)據(jù),其中每一段數(shù)據(jù)都是一個(gè)均勻間隔樣本。我還找到了名稱中包含“機(jī)器學(xué)習(xí)”的另一門課程。該課程中的數(shù)據(jù)并不假設(shè)滿足時(shí)間的均勻間隔分布,它包含更多的算法,但嚴(yán)謹(jǐn)性有所降低。再后來我意識(shí)到,在經(jīng)濟(jì)系、電子工程系和計(jì)算機(jī)科學(xué)系的課程中都會(huì)講授類似的算法。
2009年初,我順利畢業(yè),并在硅谷謀得了一份軟件咨詢的工作。接下來的兩年,我先后在涉及不同技術(shù)的八家公司工作,發(fā)現(xiàn)了最終構(gòu)成這本書主題的兩種趨勢(shì):第一,為了開發(fā)出競(jìng)爭(zhēng)力強(qiáng)的應(yīng)用,不能僅僅連接數(shù)據(jù)源,而需要做更多事情;第二,用人單位希望員工既懂理論也能編程。
程序員的大部分工作可以類比于連接管道,所不同的是,程序員連接的是數(shù)據(jù)流,這也為人們帶了巨大的財(cái)富。舉一個(gè)例子,我們要開發(fā)一個(gè)在線出售商品的應(yīng)用,其中主要部分是允許用戶來發(fā)布商品并瀏覽其他人發(fā)布的商品。為此,我們需要建立一個(gè)Web表單,允許用戶輸入所售商品的信息,然后將該信息傳到一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)。要讓用戶看到其他用戶所售商品的信息,就要從數(shù)據(jù)存儲(chǔ)區(qū)獲取這些數(shù)據(jù)并適當(dāng)?shù)仫@示出來。我可以確信,人們會(huì)通過這種方式掙錢,但是如果讓要應(yīng)用更好,需要加入一些智能因素。這些智能因素包括自動(dòng)刪除不適當(dāng)?shù)陌l(fā)布信息、檢測(cè)不正當(dāng)交易、給出用戶可能喜歡的商品以及預(yù)測(cè)網(wǎng)站的流量等。為了實(shí)現(xiàn)這些目標(biāo),我們需要應(yīng)用機(jī)器學(xué)習(xí)方法。對(duì)于最終用戶而言,他們并不了解幕后的“魔法”,他們關(guān)心的是應(yīng)用能有效運(yùn)行,這也是好產(chǎn)品的標(biāo)志。
一個(gè)機(jī)構(gòu)會(huì)雇用一些理論家(思考者)以及一些做實(shí)際工作的人(執(zhí)行者)。前者可能會(huì)將大部分時(shí)間花在學(xué)術(shù)工作上,他們的日常工作就是基于論文產(chǎn)生思路,然后通過高級(jí)工具或數(shù)學(xué)進(jìn)行建模。后者則通過編寫代碼與真實(shí)世界交互,處理非理想世界中的瑕疵,比如崩潰的機(jī)器或者帶噪聲的數(shù)據(jù)。完全區(qū)分這兩類人并不是個(gè)好想法,很多成功的機(jī)構(gòu)都認(rèn)識(shí)到這一點(diǎn)。(精益生產(chǎn)的一個(gè)原則就是,思考者應(yīng)該自己動(dòng)手去做實(shí)際工作。)當(dāng)招聘經(jīng)費(fèi)有限時(shí),誰更能得到工作,思考者還是執(zhí)行者?很可能是執(zhí)行者,但是現(xiàn)實(shí)中用人單位希望兩種人都要。很多事情都需要做,但當(dāng)應(yīng)用需要更高要求的算法時(shí),那么需要的人員就必須能夠閱讀論文,領(lǐng)會(huì)論文思路并通過代碼實(shí)現(xiàn),如此反復(fù)下去。
在這之前,我沒有看到在機(jī)器學(xué)習(xí)算法方面縮小思考者和執(zhí)行者之間差距的書籍。本書的目的就是填補(bǔ)這個(gè)空白,同時(shí)介紹機(jī)器學(xué)習(xí)算法的使用,使得讀者能夠構(gòu)建更成功的應(yīng)用。
Peter Harrington,擁有電氣工程學(xué)士和碩士學(xué)位,他曾經(jīng)在美國(guó)加州和中國(guó)的英特爾公司工作7年。Peter擁有5項(xiàng)美國(guó)專利,在三種學(xué)術(shù)期刊上發(fā)表過文章。他現(xiàn)在是Zillabyte公司的首席科學(xué)家,在加入該公司之前,他曾擔(dān)任2年的機(jī)器學(xué)習(xí)軟件顧問。Peter在業(yè)余時(shí)間還參加編程競(jìng)賽和建造3D打印機(jī)。
第一部分 分類
第1章 機(jī)器學(xué)習(xí)基礎(chǔ)
1.1 何謂機(jī)器學(xué)習(xí)
1.1.1 傳感器和海量數(shù)據(jù)
1.1.2 機(jī)器學(xué)習(xí)非常重要
1.2 關(guān)鍵術(shù)語
1.3 機(jī)器學(xué)習(xí)的主要任務(wù)
1.4 如何選擇合適的算法
1.5 開發(fā)機(jī)器學(xué)習(xí)應(yīng)用程序的步驟
1.6 Python語言的優(yōu)勢(shì)
1.6.1 可執(zhí)行偽代碼
1.6.2 Python比較流行
1.6.3 Python語言的特色
1.6.4 Python語言的缺點(diǎn)
1.7 NumPy函數(shù)庫(kù)基礎(chǔ)
1.8 本章小結(jié)
第2章 k-近鄰算法
2.1 k-近鄰算法概述
2.1.1 準(zhǔn)備:使用Python導(dǎo)入數(shù)據(jù)
2.1.2 從文本文件中解析數(shù)據(jù)
2.1.3 如何測(cè)試分類器
2.2 示例:使用k-近鄰算法改進(jìn)約會(huì)網(wǎng)站的配對(duì)效果
2.2.1 準(zhǔn)備數(shù)據(jù):從文本文件中解析數(shù)據(jù)
2.2.2 分析數(shù)據(jù):使用Matplotlib創(chuàng)建散點(diǎn)圖
2.2.3 準(zhǔn)備數(shù)據(jù):歸一化數(shù)值
2.2.4 測(cè)試算法:作為完整程序驗(yàn)證分類器
2.2.5 使用算法:構(gòu)建完整可用系統(tǒng)
2.3 示例:手寫識(shí)別系統(tǒng)
2.3.1 準(zhǔn)備數(shù)據(jù):將圖像轉(zhuǎn)換為測(cè)試向量
2.3.2 測(cè)試算法:使用k-近鄰算法識(shí)別手寫數(shù)字
2.4 本章小結(jié)
第3章 決策樹
3.1 決策樹的構(gòu)造
3.1.1 信息增益
3.1.2 劃分?jǐn)?shù)據(jù)集
3.1.3 遞歸構(gòu)建決策樹
3.2 在Python中使用Matplotlib注解繪制樹形圖
3.2.1 Matplotlib注解
3.2.2 構(gòu)造注解樹
3.3 測(cè)試和存儲(chǔ)分類器
3.3.1 測(cè)試算法:使用決策樹執(zhí)行分類
3.3.2 使用算法:決策樹的存儲(chǔ)
3.4 示例:使用決策樹預(yù)測(cè)隱形眼鏡類型
3.5 本章小結(jié)
第4章 基于概率論的分類方法:樸素貝葉斯
4.1 基于貝葉斯決策理論的分類方法
4.2 條件概率
4.3 使用條件概率來分類
4.4 使用樸素貝葉斯進(jìn)行文檔分類
4.5 使用Python進(jìn)行文本分類
4.5.1 準(zhǔn)備數(shù)據(jù):從文本中構(gòu)建詞向量
4.5.2 訓(xùn)練算法:從詞向量計(jì)算概率
4.5.3 測(cè)試算法:根據(jù)現(xiàn)實(shí)情況修改分類器
4.5.4 準(zhǔn)備數(shù)據(jù):文檔詞袋模型
4.6 示例:使用樸素貝葉斯過濾垃圾郵件
4.6.1 準(zhǔn)備數(shù)據(jù):切分文本
4.6.2 測(cè)試算法:使用樸素貝葉斯進(jìn)行交叉驗(yàn)證
4.7 示例:使用樸素貝葉斯分類器從個(gè)人廣告中獲取區(qū)域傾向
4.7.1 收集數(shù)據(jù):導(dǎo)入RSS源
4.7.2 分析數(shù)據(jù):顯示地域相關(guān)的用詞
4.8 本章小結(jié)
第5章 Logistic回歸
5.1 基于Logistic回歸和Sigmoid函數(shù)的分類
5.2 基于最優(yōu)化方法的最佳回歸系數(shù)確定
5.2.1 梯度上升法
5.2.2 訓(xùn)練算法:使用梯度上升找到最佳參數(shù)
5.2.3 分析數(shù)據(jù):畫出決策邊界
5.2.4 訓(xùn)練算法:隨機(jī)梯度上升
5.3 示例:從疝氣病癥預(yù)測(cè)病馬的死亡率
5.3.1 準(zhǔn)備數(shù)據(jù):處理數(shù)據(jù)中的缺失值
5.3.2 測(cè)試算法:用Logistic回歸進(jìn)行分類
5.4 本章小結(jié)
第6章 支持向量機(jī)
6.1 基于最大間隔分隔數(shù)據(jù)
6.2 尋找最大間隔
6.2.1 分類器求解的優(yōu)化問題
6.2.2 SVM應(yīng)用的一般框架
6.3 SMO高效優(yōu)化算法
6.3.1 Platt的SMO算法
6.3.2 應(yīng)用簡(jiǎn)化版SMO算法處理小規(guī)模數(shù)據(jù)集
6.4 利用完整Platt SMO算法加速優(yōu)化
6.5 在復(fù)雜數(shù)據(jù)上應(yīng)用核函數(shù)
6.5.1 利用核函數(shù)將數(shù)據(jù)映射到高維空間
6.5.2 徑向基核函數(shù)
6.5.3 在測(cè)試中使用核函數(shù)
6.6 示例:手寫識(shí)別問題回顧
6.7 本章小結(jié)
第7章 利用AdaBoost元算法提高分類
性能
7.1 基于數(shù)據(jù)集多重抽樣的分類器
7.1.1 bagging:基于數(shù)據(jù)隨機(jī)重抽樣的分類器構(gòu)建方法
7.1.2 boosting
7.2 訓(xùn)練算法:基于錯(cuò)誤提升分類器的性能
7.3 基于單層決策樹構(gòu)建弱分類器
7.4 完整AdaBoost算法的實(shí)現(xiàn)
7.5 測(cè)試算法:基于AdaBoost的分類
7.6 示例:在一個(gè)難數(shù)據(jù)集上應(yīng)用AdaBoost
7.7 非均衡分類問題
7.7.1 其他分類性能度量指標(biāo):正確率、召回率及ROC曲線
7.7.2 基于代價(jià)函數(shù)的分類器決策控制
7.7.3 處理非均衡問題的數(shù)據(jù)抽樣方法
7.8 本章小結(jié)
第二部分 利用回歸預(yù)測(cè)數(shù)值型數(shù)據(jù)
第8章 預(yù)測(cè)數(shù)值型數(shù)據(jù):回歸
8.1 用線性回歸找到最佳擬合直線
8.2 局部加權(quán)線性回歸
8.3 示例:預(yù)測(cè)鮑魚的年齡
8.4 縮減系數(shù)來“理解”數(shù)據(jù)
8.4.1 嶺回歸
8.4.2 lasso
8.4.3 前向逐步回歸
8.5 權(quán)衡偏差與方差
8.6 示例:預(yù)測(cè)樂高玩具套裝的價(jià)格
8.6.1 收集數(shù)據(jù):使用Google購(gòu)物的API
8.6.2 訓(xùn)練算法:建立模型
8.7 本章小結(jié)
第9章 樹回歸
9.1 復(fù)雜數(shù)據(jù)的局部性建!
9.2 連續(xù)和離散型特征的樹的構(gòu)建
9.3 將CART算法用于回歸
9.3.1 構(gòu)建樹
9.3.2 運(yùn)行代碼
9.4 樹剪枝
9.4.1 預(yù)剪枝
9.4.2 后剪枝
9.5 模型樹
9.6 示例:樹回歸與標(biāo)準(zhǔn)回歸的比較
9.7 使用Python的Tkinter庫(kù)創(chuàng)建GUI
9.7.1 用Tkinter創(chuàng)建GUI
9.7.2 集成Matplotlib和Tkinter
9.8 本章小結(jié)
第三部分 無監(jiān)督學(xué)習(xí)
第10章 利用K-均值聚類算法對(duì)未標(biāo)注數(shù)據(jù)分組
10.1 K-均值聚類算法
10.2 使用后處理來提高聚類性能
10.3 二分K-均值算法
10.4 示例:對(duì)地圖上的點(diǎn)進(jìn)行聚類
10.4.1 Yahoo! PlaceFinder API
10.4.2 對(duì)地理坐標(biāo)進(jìn)行聚類
10.5 本章小結(jié)
第11章 使用Apriori算法進(jìn)行關(guān)聯(lián)分析
11.1 關(guān)聯(lián)分析
11.2 Apriori原理
11.3 使用Apriori算法來發(fā)現(xiàn)頻繁集
11.3.1 生成候選項(xiàng)集
11.3.2 組織完整的Apriori算法
11.4 從頻繁項(xiàng)集中挖掘關(guān)聯(lián)規(guī)則
11.5 示例:發(fā)現(xiàn)國(guó)會(huì)投票中的模式
11.5.1 收集數(shù)據(jù):構(gòu)建美國(guó)國(guó)會(huì)投票記錄的事務(wù)數(shù)據(jù)集
11.5.2 測(cè)試算法:基于美國(guó)國(guó)會(huì)投票記錄挖掘關(guān)聯(lián)規(guī)則
11.6 示例:發(fā)現(xiàn)毒蘑菇的相似特征
11.7 本章小結(jié)
第12章 使用FP-growth算法來高效發(fā)現(xiàn)頻繁項(xiàng)集
12.1 FP樹:用于編碼數(shù)據(jù)集的有效方式
12.2 構(gòu)建FP樹
12.2.1 創(chuàng)建FP樹的數(shù)據(jù)結(jié)構(gòu)
12.2.2 構(gòu)建FP樹
12.3 從一棵FP樹中挖掘頻繁項(xiàng)集
12.3.1 抽取條件模式基
12.3.2 創(chuàng)建條件FP樹
12.4 示例:在Twitter源中發(fā)現(xiàn)一些共現(xiàn)詞
12.5 示例:從新聞網(wǎng)站點(diǎn)擊流中挖掘
12.6 本章小結(jié)
第四部分 其他工具
第13章 利用PCA來簡(jiǎn)化數(shù)據(jù)
13.1 降維技術(shù)
13.2 PCA
13.2.1 移動(dòng)坐標(biāo)軸
13.2.2 在NumPy中實(shí)現(xiàn)PCA
13.3 示例:利用PCA對(duì)半導(dǎo)體制造數(shù)據(jù)降維
13.4 本章小結(jié)
第14章 利用SVD簡(jiǎn)化數(shù)據(jù)
14.1 SVD的應(yīng)用
14.1.1 隱性語義索引
14.1.2 推薦系統(tǒng)
14.2 矩陣分解
14.3 利用Python實(shí)現(xiàn)SVD
14.4 基于協(xié)同過濾的推薦引擎
14.4.1 相似度計(jì)算
14.4.2 基于物品的相似度還是基于用戶的相似度?
14.4.3 推薦引擎的評(píng)價(jià)
14.5 示例:餐館菜肴推薦引擎
14.5.1 推薦未嘗過的菜肴
14.5.2 利用SVD提高推薦的效果
14.5.3 構(gòu)建推薦引擎面臨的挑戰(zhàn)
14.6 基于SVD的圖像壓縮
14.7 本章小結(jié)
第15章 大數(shù)據(jù)與MapReduce
15.1 MapReduce:分布式計(jì)算的框架
15.2 Hadoop流
15.2.1 分布式計(jì)算均值和方差的mapper
15.2.2 分布式計(jì)算均值和方差的reducer
15.3 在Amazon網(wǎng)絡(luò)服務(wù)上運(yùn)行Hadoop程序
15.3.1 AWS上的可用服務(wù)
15.3.2 開啟Amazon網(wǎng)絡(luò)服務(wù)之旅
15.3.3 在EMR上運(yùn)行Hadoop作業(yè)
15.4 MapReduce上的機(jī)器學(xué)習(xí)
15.5 在Python中使用mrjob來自動(dòng)化MapReduce
15.5.1 mrjob與EMR的無縫集成
15.5.2 mrjob的一個(gè)MapReduce腳本剖析
15.6 示例:分布式SVM的Pegasos算法
15.6.1 Pegasos算法
15.6.2 訓(xùn)練算法:用mrjob實(shí)現(xiàn)MapReduce版本的SVM
15.7 你真的需要MapReduce嗎?
15.8 本章小結(jié)
附錄A Python入門
附錄B 線性代數(shù)
附錄C 概率論復(fù)習(xí)
附錄D 資源
索引
版權(quán)聲明