産品特色
編輯推薦
介紹並實現機器學習的主流算法
麵嚮日常任務的高效實戰內容
《機器學習實戰》沒有從理論角度來揭示機器學習算法背後的數學原理,而是通過“原理簡述+問題實例+實際代碼+運行效果”來介紹每一個算法。學習計算機的人都知道,計算機是一門實踐學科,沒有真正實現運行,很難真正理解算法的精髓。這本書的好處就是邊學邊用,非常適閤於急需邁進機器學習領域的人員學習。實際上,即使對於那些對機器學習有所瞭解的人來說,通過代碼實現也能進一步加深對機器學習算法的理解。
《機器學習實戰》的代碼采用Python語言編寫。Python代碼簡單優雅、易於上手,科學計算軟件包眾多,已經成為不少大學和研究機構進行計算機教學和科學計算的語言。相信Python編寫的機器學習代碼也能讓讀者盡快領略到這門學科的精妙之處。
內容簡介
機器學習是人工智能研究領域中一個極其重要的研究方嚮,在現今的大數據時代背景下,捕獲數據並從中萃取有價值的信息或模式,成為各行業求生存、謀發展的決定性手段,這使得這一過去為分析師和數學傢所專屬的研究領域越來越為人們所矚目。
《機器學習實戰》主要介紹機器學習基礎,以及如何利用算法進行分類,並逐步介紹瞭多種經典的監督學習算法,如k近鄰算法、樸素貝葉斯算法、Logistic迴歸算法、支持嚮量機、AdaBoost集成方法、基於樹的迴歸算法和分類迴歸樹(CART)算法等。第三部分則重點介紹無監督學習及其一些主要算法:k均值聚類算法、Apriori算法、FP-Growth算法。第四部分介紹瞭機器學習算法的一些附屬工具。
《機器學習實戰》通過精心編排的實例,切入日常工作任務,摒棄學術化語言,利用高效的可復用Python代碼來闡釋如何處理統計數據,進行數據分析及可視化。通過各種實例,讀者可從中學會機器學習的核心算法,並能將其運用於一些策略性任務中,如分類、預測、推薦。另外,還可用它們來實現一些更高級的功能,如匯總和簡化等。
作者簡介
Peter Harrington,擁有電氣工程學士和碩士學位,他曾經在美國加州和中國的英特爾公司工作7年。Peter擁有5項美國專利,在三種學術期刊上發錶過文章。他現在是Zillabyte公司的首席科學傢,在加入該公司之前,他曾擔任2年的機器學習軟件顧問。Peter在業餘時間還參加編程競賽和建造3D打印機。
精彩書評
“易學易懂,用處很大。”
——Alexandre Alves,Oracle CEP的架構師
“精心織構的代碼完美地詮釋齣機器學習的核心要義。”
——Patrick Toohey,Mettler-Toledo Hi-Speed軟件工程師
“實例很棒!可用於任何領域!”
——John Griffin,Hibernate Search in Action一書的閤作者
“敘述循序漸進,巧妙地闡述瞭算法之間的差異。”
——Stephen McKamey,Isomer Innovations技術實踐總監
目錄
第一部分 分類
第1章 機器學習基礎
1.1 何謂機器學習
1.1.1 傳感器和海量數據
1.1.2 機器學習非常重要
1.2 關鍵術語
1.3 機器學習的主要任務
1.4 如何選擇閤適的算法
1.5 開發機器學習應用程序的步驟
1.6 Python語言的優勢
1.6.1 可執行僞代碼
1.6.2 Python比較流行
1.6.3 Python語言的特色
1.6.4 Python語言的缺點
1.7 NumPy函數庫基礎
1.8 本章小結
第2章 k-近鄰算法
2.1 k-近鄰算法概述
2.1.1 準備:使用Python導入數據
2.1.2 從文本文件中解析數據
2.1.3 如何測試分類器
2.2 示例:使用k-近鄰算法改進約會網站的配對效果
2.2.1 準備數據:從文本文件中解析數據
2.2.2 分析數據:使用Matplotlib創建散點圖
2.2.3 準備數據:歸一化數值
2.2.4 測試算法:作為完整程序驗證分類器
2.2.5 使用算法:構建完整可用係統
2.3 示例:手寫識彆係統
2.3.1 準備數據:將圖像轉換為測試嚮量
2.3.2 測試算法:使用k-近鄰算法識彆手寫數字
2.4 本章小結
第3章 決策樹
3.1 決策樹的構造
3.1.1 信息增益
3.1.2 劃分數據集
3.1.3 遞歸構建決策樹
3.2 在Python中使用Matplotlib注解繪製樹形圖
3.2.1 Matplotlib注解
3.2.2 構造注解樹
3.3 測試和存儲分類器
3.3.1 測試算法:使用決策樹執行分類
3.3.2 使用算法:決策樹的存儲
3.4 示例:使用決策樹預測隱形眼鏡類型
3.5 本章小結
第4章 基於概率論的分類方法:樸素貝葉斯
4.1 基於貝葉斯決策理論的分類方法
4.2 條件概率
4.3 使用條件概率來分類
4.4 使用樸素貝葉斯進行文檔分類
4.5 使用Python進行文本分類
4.5.1 準備數據:從文本中構建詞嚮量
4.5.2 訓練算法:從詞嚮量計算概率
4.5.3 測試算法:根據現實情況修改分類器
4.5.4 準備數據:文檔詞袋模型
4.6 示例:使用樸素貝葉斯過濾垃圾郵件
4.6.1 準備數據:切分文本
4.6.2 測試算法:使用樸素貝葉斯進行交叉驗證
4.7 示例:使用樸素貝葉斯分類器從個人廣告中獲取區域傾嚮
4.7.1 收集數據:導入RSS源
4.7.2 分析數據:顯示地域相關的用詞
4.8 本章小結
第5章 Logistic迴歸
5.1 基於Logistic迴歸和Sigmoid函數的分類
5.2 基於最優化方法的最佳迴歸係數確定
5.2.1 梯度上升法
5.2.2 訓練算法:使用梯度上升找到最佳參數
5.2.3 分析數據:畫齣決策邊界
5.2.4 訓練算法:隨機梯度上升
5.3 示例:從疝氣病癥預測病馬的死亡率
5.3.1 準備數據:處理數據中的缺失值
5.3.2 測試算法:用Logistic迴歸進行分類
5.4 本章小結
第6章 支持嚮量機
6.1 基於最大間隔分隔數據
6.2 尋找最大間隔
6.2.1 分類器求解的優化問題
6.2.2 SVM應用的一般框架
6.3 SMO高效優化算法
6.3.1 Platt的SMO算法
6.3.2 應用簡化版SMO算法處理小規模數據集
6.4 利用完整Platt SMO算法加速優化
6.5 在復雜數據上應用核函數
6.5.1 利用核函數將數據映射到高維空間
6.5.2 徑嚮基核函數
6.5.3 在測試中使用核函數
6.6 示例:手寫識彆問題迴顧
6.7 本章小結
第7章 利用AdaBoost元算法提高分類
性能
7.1 基於數據集多重抽樣的分類器
7.1.1 bagging:基於數據隨機重抽樣的分類器構建方法
7.1.2 boosting
7.2 訓練算法:基於錯誤提升分類器的性能
7.3 基於單層決策樹構建弱分類器
7.4 完整AdaBoost算法的實現
7.5 測試算法:基於AdaBoost的分類
7.6 示例:在一個難數據集上應用AdaBoost
7.7 非均衡分類問題
7.7.1 其他分類性能度量指標:正確率、召迴率及ROC麯綫
7.7.2 基於代價函數的分類器決策控製
7.7.3 處理非均衡問題的數據抽樣方法
7.8 本章小結
第二部分 利用迴歸預測數值型數據
第8章 預測數值型數據:迴歸
8.1 用綫性迴歸找到最佳擬閤直綫
8.2 局部加權綫性迴歸
8.3 示例:預測鮑魚的年齡
8.4 縮減係數來“理解”數據
8.4.1 嶺迴歸
8.4.2 lasso
8.4.3 前嚮逐步迴歸
8.5 權衡偏差與方差
8.6 示例:預測樂高玩具套裝的價格
8.6.1 收集數據:使用Google購物的API
8.6.2 訓練算法:建立模型
8.7 本章小結
第9章 樹迴歸
9.1 復雜數據的局部性建模
9.2 連續和離散型特徵的樹的構建
9.3 將CART算法用於迴歸
9.3.1 構建樹
9.3.2 運行代碼
9.4 樹剪枝
9.4.1 預剪枝
9.4.2 後剪枝
9.5 模型樹
9.6 示例:樹迴歸與標準迴歸的比較
9.7 使用Python的Tkinter庫創建GUI
9.7.1 用Tkinter創建GUI
9.7.2 集成Matplotlib和Tkinter
9.8 本章小結
第三部分 無監督學習
第10章 利用K-均值聚類算法對未標注數據分組
10.1 K-均值聚類算法
10.2 使用後處理來提高聚類性能
10.3 二分K-均值算法
10.4 示例:對地圖上的點進行聚類
10.4.1 Yahoo! PlaceFinder API
10.4.2 對地理坐標進行聚類
10.5 本章小結
第11章 使用Apriori算法進行關聯分析
11.1 關聯分析
11.2 Apriori原理
11.3 使用Apriori算法來發現頻繁集
11.3.1 生成候選項集
11.3.2 組織完整的Apriori算法
11.4 從頻繁項集中挖掘關聯規則
11.5 示例:發現國會投票中的模式
11.5.1 收集數據:構建美國國會投票記錄的事務數據集
11.5.2 測試算法:基於美國國會投票記錄挖掘關聯規則
11.6 示例:發現毒蘑菇的相似特徵
11.7 本章小結
第12章 使用FP-growth算法來高效發現頻繁項集
12.1 FP樹:用於編碼數據集的有效方式
12.2 構建FP樹
12.2.1 創建FP樹的數據結構
12.2.2 構建FP樹
12.3 從一棵FP樹中挖掘頻繁項集
12.3.1 抽取條件模式基
12.3.2 創建條件FP樹
12.4 示例:在Twitter源中發現一些共現詞
12.5 示例:從新聞網站點擊流中挖掘
12.6 本章小結
第四部分 其他工具
第13章 利用PCA來簡化數據
13.1 降維技術
13.2 PCA
13.2.1 移動坐標軸
13.2.2 在NumPy中實現PCA
13.3 示例:利用PCA對半導體製造數據降維
13.4 本章小結
第14章 利用SVD簡化數據
14.1 SVD的應用
14.1.1 隱性語義索引
14.1.2 推薦係統
14.2 矩陣分解
14.3 利用Python實現SVD
14.4 基於協同過濾的推薦引擎
14.4.1 相似度計算
14.4.2 基於物品的相似度還是基於用戶的相似度?
14.4.3 推薦引擎的評價
14.5 示例:餐館菜肴推薦引擎
14.5.1 推薦未嘗過的菜肴
14.5.2 利用SVD提高推薦的效果
14.5.3 構建推薦引擎麵臨的挑戰
14.6 基於SVD的圖像壓縮
14.7 本章小結
第15章 大數據與MapReduce
15.1 MapReduce:分布式計算的框架
15.2 Hadoop流
15.2.1 分布式計算均值和方差的mapper
15.2.2 分布式計算均值和方差的reducer
15.3 在Amazon網絡服務上運行Hadoop程序
15.3.1 AWS上的可用服務
15.3.2 開啓Amazon網絡服務之旅
15.3.3 在EMR上運行Hadoop作業
15.4 MapReduce上的機器學習
15.5 在Python中使用mrjob來自動化MapReduce
15.5.1 mrjob與EMR的無縫集成
15.5.2 mrjob的一個MapReduce腳本剖析
15.6 示例:分布式SVM的Pegasos算法
15.6.1 Pegasos算法
15.6.2 訓練算法:用mrjob實現MapReduce版本的SVM
15.7 你真的需要MapReduce嗎?
15.8 本章小結
附錄A Python入門
附錄B 綫性代數
附錄C 概率論復習
附錄D 資源
索引
版權聲明
精彩書摘
7.1.1 bagging:基於數據隨機重抽樣的分類器構建方法
自舉匯聚法(bootstrap aggregating),也稱為bagging方法,是在從原始數據集選擇S次後得到S個新數據集的一種技術。新數據集和原數據集的大小相等。每個數據集都是通過在原始數據集中隨機選擇一個樣本來進行替換而得到的①。這裏的替換就意味著可以多次地選擇同一樣本。這一性質就允許新數據集中可以有重復的值,而原始數據集的某些值在新集閤中則不再齣現。
在S個數據集建好之後,將某個學習算法分彆作用於每個數據集就得到瞭S個分類器。當我們要對新數據進行分類時,就可以應用這S個分類器進行分類。與此同時,選擇分類器投票結果中最多的類彆作為最後的分類結果。
當然,還有一些更先進的bagging方法,比如隨機森林(random forest)。有關這些方法的一個很好的討論材料參見網頁接下來我們將注意力轉嚮一個與bagging類似的集成分類器方法boosting。
7.1.2 boosting
boosting是一種與bagging很類似的技術。不論是在boosting還是bagging當中,所使用的多個分類器的類型都是一緻的。但是在前者當中,不同的分類器是通過串行訓練而獲得的,每個新分類器都根據已訓練齣的分類器的性能來進行訓練。boosting是通過集中關注被已有分類器錯分的那些數據來獲得新的分類器。
由於boosting分類的結果是基於所有分類器的加權求和結果的,因此boosting與bagging不太一樣。bagging中的分類器權重是相等的,而boosting中的分類器權重並不相等,每個權重代錶的是其對應分類器在上一輪迭代中的成功度。
boosting方法擁有多個版本,本章將隻關注其中一個最流行的版本AdaBoost。
下麵我們將要討論AdaBoost背後的一些理論,並揭示其效果不錯的原因。
7.2訓練算法:基於錯誤提升分類器的性能
能否使用弱分類器和多個實例來構建一個強分類器?這是一個非常有趣的理論問題。這裏的“弱”意味著分類器的性能比隨機猜測要略好,但是也不會好太多。這就是說,在二分類情況下弱分類器的錯誤率會高於50%,而“強”分類器的錯誤率將會低很多。AdaBoost算法即脫胎於上述理論問題。
AdaBoost是adaptive boosting(自適應boosting)的縮寫,其運行過程如下:訓練數據中的每個樣本,並賦予其一個權重,這些權重構成瞭嚮量D。一開始,這些權重都初始化成相等值。首先在訓練數據上訓練齣一個弱分類器並計算該分類器的錯誤率,然後在同一數據集上再次訓練弱分類器。在分類器的第二次訓練當中,將會重新調整每個樣本的權重,其中第一次分對的樣本的權重將會降低,而第一次分錯的樣本的權重將會提高。為瞭從所有弱分類器中得到最終的分類結果,AdaBoost為每個分類器都分配瞭一個權重值alpha,這些alpha值是基於每個弱分類器的錯誤率進行計算的。其中,錯誤率ε的定義為:
而alpha的計算公式如下:
AdaBoost算法的流程如圖7—1所示。
前言/序言
大學畢業後,我先後在加利福尼亞和中國大陸的Intel公司工作。最初,我打算工作兩年之後迴學校讀研究生,但是幸福時光飛逝而過,轉眼就過去瞭六年。那時,我意識到我必須迴到校園。我不想上夜校或進行在綫學習,我就想坐在大學校園裏吸納學校傳授的所有知識。在大學裏,最好的方麵不是你研修的課程或從事的研究,而是一些外圍活動:與人會麵、參加研討會、加入組織、旁聽課程,以及學習未知的知識。
在2008年,我幫助籌備一個招聘會。我同一個大型金融機構的人交談,他們希望我去應聘他們機構的一個對信用卡建模(判斷某人是否會償還貸款)的崗位。他們問我對隨機分析瞭解多少,那時,我並不能確定“隨機”一詞的意思。他們提齣的工作地點令我無法接受,所以我決定不再考慮瞭。但是,他們說的“隨機”讓我很感興趣,於是我拿來課程目錄,尋找含有“隨機”字樣的課程,我看到瞭“離散隨機係統”。我沒有注冊就直接旁聽瞭這門課,完成課後作業,參加考試,最終被授課教授發現。但是她很仁慈,讓我繼續學習,這讓我非常感激。上這門課,是我第一次看到將概率應用到算法中。在這之前,我見過一些算法將平均值作為外部輸入,但這次不同,方差和均值都是這些算法中的內部值。這門課主要討論時間序列數據,其中每一段數據都是一個均勻間隔樣本。我還找到瞭名稱中包含
機器學習實戰 [Machine learning in action] 下載 mobi epub pdf txt 電子書