求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

Mahout實戰檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋
Mahout實戰

《Mahout實戰》是Mahout領域的權威著作,出自該項目核心成員之手,立足實踐,全面介紹了基於Apache Mahout的機器學習技術。《Mahout實戰》開篇從Mahout的故事講起,接着分三部分探討了推薦系統、聚類和分類,最後的附錄涵蓋JVM調優、Mahout 數學知識和相關資源。 《Mahout實戰》適合所有數據分析和數據挖掘人員閱讀,需要有Java語言基礎。

基本內容

外文名:Mahout in Action

作者:歐文 (Sean Owen) Robin Anil

出版時間:2014年3月1日

開本:16 開

類型:計算機與互聯網

書名:Mahout實戰

出版社:人民郵電出版社

頁數:321 頁

ISBN:7115347220

語種:簡體中文

內容簡介

Apache基金會官方推薦

Mahout核心團隊權威力作

大數據時代機器學習的實戰經典

圖書目錄

第1章 初識Mahout

1.1 Mahout的故事

1.2 Mahout的機器學習主題

1.2.1 推薦引擎

1.2.2 聚類

1.2.3 分類

1.3 利用Mahout和Hadoop處理大規模數據

1.4 安裝Mahout

1.4.1 Java和IDE

1.4.2 安裝Maven

1.4.3 安裝Mahout

1.4.4 安裝Hadoop

1.5 小結

第一部分 推薦

第2章 推薦系統

2.1 推薦的定義

2.2 運行第一個推薦引擎

2.2.1 創建輸入

2.2.2 創建一個推薦程序

2.2.3 分析輸出

2.3 評估一個推薦程序

2.3.1 訓練數據與評分

2.3.2 運行RecommenderEvaluator

2.3.3 評估結果

2.4 評估查准率與查全率

2.4.1 運行RecommenderIRStats—Evaluator

2.4.2 查准率和查全率的問題

2.5 評估GroupLens數據集

2.5.1 提取推薦程序的輸入

2.5.2 體驗其他推薦程序

2.6 小結

第3章 推薦數據的表示

3.1 偏好數據的表示

3.1.1 Preference對象

3.1.2 PreferenceArray及其實現

3.1.3 改善聚合的性能

3.1.4 FastByIDMap和FastIDSet

3.2 內存級DataModel

3.2.1 GenericDataModel

3.2.2 基於文件的數據

3.2.3 可刷新組件

3.2.4 更新文件

3.2.5 基於數據庫的數據

3.2.6 JDBC和MySQL

3.2.7 通過JNDI進行配置

3.2.8 利用程序進行配置

3.3 無偏好值的處理

3.3.1 何時忽略值

3.3.2 無偏好值時的內存級表示

3.3.3 選擇兼容的實現

3.4 小結

第4章 進行推薦

4.1 理解基於用戶的推薦

4.1.1 推薦何時會出錯

4.1.2 推薦何時是正確的

4.2 探索基於用戶的推薦程序

4.2.1 算法

4.2.2 基於GenericUserBased—Recommender實現算法

4.2.3 嘗試GroupLens數據集

4.2.4 探究用戶鄰域

4.2.5 固定大小的鄰域

4.2.6 基於閾值的鄰域

4.3 探索相似性度量

4.3.1 基於皮爾遜相關係數的相似度

4.3.2 皮爾遜相關係數存在的問題

4.3.3 引入權重

4.3.4 基於歐氏距離定義相似度

4.3.5 採用餘弦相似性度量

4.3.6 採用斯皮爾曼相關係數基於相對排名定義相似度

4.3.7 忽略偏好值基於谷本係數計算相似度

4.3.8 基於對數似然比更好地計算相似度

4.3.9 推測偏好值

4.4 基於物品的推薦

4.4.1 算法

4.4.2 探究基於物品的推薦程序

4.5 Slope—one推薦算法

4.5.1 算法

4.5.2 Slope—one實踐

4.5.3 DiffStorage和內存考慮

4.5.4 離線計算量的分配

4.6 最新以及試驗性質的推薦算法

4.6.1 基於奇異值分解的推薦算法

4.6.2 基於線性插值物品的推薦算法

4.6.3 基於聚類的推薦算法

4.7 對比其他推薦算法

4.7.1 為Mahout引入基於內容的技術

4.7.2 深入理解基於內容的推薦算法

4.8 對比基於模型的推薦算法

4.9 小結

第5章 讓推薦程序實用化

5.1 分析來自約會網站的樣本數據

5.2 找到一個有效的推薦程序

5.2.1 基於用戶的推薦程序

5.2.2 基於物品的推薦程序

5.2.3 slope—one推薦程序

5.2.4 評估查准率和查全率

5.2.5 評估性能

5.3 引入特定域的信息

5.3.1 採用一個定製的物品相似性度量

5.3.2 基於內容進行推薦

5.3.3 利用IDRescorer修改推薦結果

5.3.4 在IDRescorer中引入性別

5.3.5 封裝一個定製的推薦程序

5.4 為匿名用戶做推薦

5.4.1 利用PlusAnonymousUser—DataModel處理臨時用戶

5.4.2 聚合匿名用戶

5.5 創建一個支持Web訪問的推薦程序

5.5.1 封裝WAR文件

5.5.2 測試部署

5.6 更新和監控推薦程序

5.7 小結

第6章 分布式推薦

6.1 分析Wikipedia數據集

6.1.1 挑戰規模

6.1.2 分布式計算的優缺點

6.2 設計一個基於物品的分布式推薦算法

6.2.1 構建共現矩陣

6.2.2 計算用戶向量

6.2.3 生成推薦結果

6.2.4 解讀結果

6.2.5 分布式實現

6.3 基於MapReduce實現分布式算法

6.3.1 MapReduce簡介

6.3.2 向MapReduce轉換:生成用戶向量

6.3.3 向MapReduce轉換:計算共現關係

6.3.4 向MapReduce轉換:重新思考矩陣乘

6.3.5 向MapReduce轉換:通過部分乘積計算矩陣乘

6.3.6 向MapReduce轉換:形成推薦

6.4 在Hadoop上運行MapReduce

6.4.1 安裝Hadoop

6.4.2 在Hadoop上執行推薦

6.4.3 配置mapper和reducer

6.5 偽分布式推薦程序

6.6 深入理解推薦

6.6.1 在雲上運行程序

6.6.2 考慮推薦的非傳統用法

6.7 小結

第二部分 聚類

第7章 聚類介紹

7.1 聚類的基本概念

7.2 項目相似性度量

7.3 Hello World:運行一個簡單的聚類示例

7.3.1 生成輸入數據

7.3.2 使用Mahout聚類

7.3.3 分析輸出結果

7.4 探究距離測度

7.4.1 歐氏距離測度

7.4.2 平方歐氏距離測度

7.4.3 曼哈頓距離測度

7.4.4 餘弦距離測度

7.4.5 谷本距離測度

7.4.6 加權距離測度

7.5 在簡單示例上使用各種距離測度

7.6 小結

第8章 聚類數據的表示

8.1 向量可視化

8.1.1 將數據轉換為向量

8.1.2 準備Mahout所用的向量

8.2 將文本文檔表示為向量

8.2.1 使用TF—IDF改進加權

8.2.2 通過n—gram搭配詞考察單詞的依賴性

8.3 從文檔中生成向量

8.4 基于歸一化改善向量的質量

8.5 小結

第9章 Mahout中的聚類算法

9.1 k—means聚類

9.1.1 關於k—means你需要了解的

9.1.2 運行k—means聚類

9.1.3 通過canopy聚類尋找最佳k值

9.1.4 案例學習:使用k—means對新聞聚類

9.2 超越k—means: 聚類技術概覽

9.2.1 不同類型的聚類問題

9.2.2 不同的聚類方法

9.3 模糊k—means聚類

9.3.1 運行模糊k—means聚類

9.3.2 多模糊會過度嗎

9.3.3 案例學習:用模糊k—means對新聞進行聚類

9.4 基於模型的聚類

9.4.1 k—means的不足

9.4.2 狄利克雷聚類

9.4.3 基於模型的聚類示例

9.5 用LDA進行話題建模

9.5.1 理解LDA

9.5.2 對比TF—IDF與LDA

9.5.3 LDA參數調優

9.5.4 案例學習:尋找新聞文檔中的話題

9.5.5 話題模型的應用

9.6 小結

第10章 評估並改善聚類質量

10.1 檢查聚類輸出

10.2 分析聚類輸出

10.2.1 距離測度與特徵選擇

10.2.2 簇間與簇內距離

10.2.3 簇的混合與重疊

10.3 改善聚類質量

10.3.1 改進文檔向量生成過程

10.3.2 編寫自定義距離測度

10.4 小結

第11章 將聚類用於生產環境

11.1 Hadoop下運行聚類算法的快速入門

11.1.1 在本地Hadoop集群上運行聚類算法

11.1.2 定製Hadoop配置

11.2 聚類性能調優

11.2.1 在計算密集型操作中避免性能缺陷

11.2.2 在I/O密集型操作中避免性能缺陷

11.3 批聚類及在線聚類

11.3.1 案例分析:在線新聞聚類

11.3.2 案例分析:對維基百科文章聚類

11.4 小結

第12章 聚類的實際應用

12.1 發現Twitter上的相似用戶

12.1.1 數據預處理及特徵加權

12.1.2 避免特徵選擇中的常見陷阱

12.2 為Last.fm上的藝術家推薦標籤

12.2.1 利用共現信息進行標籤推薦

12.2.2 構建Last.fm藝術家詞典

12.2.3 將Last.fm標籤轉換成以藝術家為特徵的向量

12.2.4 在Last.fm數據上運行k—means算法

12.3 分析Stack Overflow數據集

12.3.1 解析Stack Overflow數據集

12.3.2 在Stack Overflow中發現聚類問題

12.4 小結

第三部分 分類

第13章 分類

13.1 為什麼用Mahout做分類

13.2 分類系統基礎

13.2.1 分類、推薦和聚類的區別

13.2.2 分類的應用

13.3 分類的工作原理

13.3.1 模型

13.3.2 訓練、測試與生產

13.3.3 預測變量與目標變量

13.3.4 記錄、字段和值

13.3.5 預測變量值的4種類型

13.3.6 有監督學習與無監督學習

13.4 典型分類項目的工作流

13.4.1 第一階段工作流:訓練分類模型

13.4.2 第二階段工作流:評估分類模型

13.4.3 第三階段工作流:在生產中使用模型

13.5 循序漸進的簡單分類示例

13.5.1 數據和挑戰

13.5.2 訓練一個模型來尋找顏色填充:初步設想

13.5.3 選擇一個學習算法來訓練模型

13.5.4 改進填充顏色分類器的性能

13.6 小結

第14章 訓練分類器

14.1 提取特徵以構建分類器

14.2 原始數據的預處理

14.2.1 原始數據的轉換

14.2.2 一個計算營銷的例子

14.3 將可分類數據轉換為向量

14.3.1 用向量表示數據

14.3.2 用Mahout API做特徵散列

14.4 用SGD對20 Newsgroups數據集進行分類

14.4.1 開始:數據集預覽

14.4.220 Newsgroups數據特徵的解析和詞條化

14.4.320 Newsgroups數據的訓練代碼

14.5 選擇訓練分類器的算法

14.5.1 非並行但仍很強大的算法:SGD和SVM

14.5.2 樸素分類器的力量:樸素貝葉斯及補充樸素貝葉斯

14.5.3 精密結構的力量:隨機森林算法

14.6 用樸素貝葉斯對20 Newsgroups數據分類

14.6.1 開始:為樸素貝葉斯提取數據

14.6.2 訓練樸素貝葉斯分類器

14.6.3 測試樸素貝葉斯模型

14.7 小結

第15章 分類器評估及調優

15.1 Mahout中的分類器評估

15.1.1 獲取即時反饋

15.1.2 確定分類「好」的含義

15.1.3 認識不同的錯誤代價

15.2 分類器評估API

15.2.1 計算AUC

15.2.2 計算混淆矩陣和熵矩陣

15.2.3 計算平均對數似然

15.2.4 模型剖析

15.2.520 Newsgroups語料上SGD分類器的性能指標計算

15.3 分類器性能下降時的處理

15.3.1 目標泄漏

15.3.2 特徵提取崩潰

15.4 分類器性能調優

15.4.1 問題調整

15.4.2 分類器調優

15.5 小結

第16章 分類器部署

16.1 巨型分類系統的部署過程

16.1.1 理解問題

16.1.2 根據需要優化特徵提取過程

16.1.3 根據需要優化向量編碼

16.1.4 部署可擴展的分類器服務

16.2 確定規模和速度需求

16.2.1 多大才算大

16.2.2 在規模和速度之間折中

16.3 對大型系統構建訓練流水線

16.3.1 獲取並保留大規模數據

16.3.2 非規範化及下採樣

16.3.3 訓練中的陷阱

16.3.4 快速讀取數據並對其進行編碼

16.4 集成Mahout分類器

16.4.1 提前計劃:集成中的關鍵問題

16.4.2 模型序列化

16.5 案例:一個基於Thrift的分類服務器

16.5.1 運行分類服務器

16.5.2 訪問分類器服務

16.6 小結

第17章 案例分析——Shop It To Me

17.1 Shop It To Me選擇Mahout的原因

17.1.1 Shop It To Me公司簡介

17.1.2 Shop It To Me需要分類系統的原因

17.1.3 對Mahout向外擴展

17.2 郵件交易系統的一般結構

17.3 訓練模型

17.3.1 定義分類項目的目標

17.3.2 按時間劃分

17.3.3 避免目標泄漏

17.3.4 調整學習算法

17.3.5 特徵向量編碼

17.4 加速分類過程

17.4.1 特徵向量的線性組合

17.4.2 模型得分的線性擴展

17.5 小結

附錄A JVM調優

附錄B Mahout數學基礎

附錄C 相關資源

索引

作者簡介

Sean Owen 現為大數據公司Cloudera數據產品總監,Myrrix創始人,曾任Apache Mahout項目管理委員會委員、谷歌高級軟件工程師,是Mobile Web和Taste框架(現屬於Mahout項目)的主力開發者。Owen擁有哈佛大學計算機科學專業學士學位

Robin Anil 谷歌公司負責地圖與廣告方向的軟件工程師,Apache Mahout項目管理委員會委員,為Mahout開發了貝葉斯分類器和頻繁模式挖掘實現,曾經在雅虎公司任高級軟件工程師

Ted Dunning MapR Technologies公司首席應用架構師,Apache Mahout和Zookeeper項目管理委員會成員,為Mahout聚類、分類、矩陣分解算法做出了貢獻,曾任DeepDyve公司CTO及多家公司首席科學家

Ellen Friedman Apache Mahout項目代碼提交者,生物化學博士學位,經驗豐富的科技作家,作品涵蓋計算機、分子生物學、醫學和地球科學

媒體推薦

「全面介紹Mahout機器學習實戰的佳作。」 ——Isabel Drost,Apache Mahout創始人

「深入淺出,複雜概念都講解得透徹明白。」 ——Rick Wagner,Red Hat

「出自核心開發團隊之手,學習Mahout必讀。" ——Philipp K. Janert,Gnuplot in Action作者[1]

參考文獻