




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Spark應用開發技術本章主要講述SparkMLlib算法庫、邏輯回歸實現用戶分類。通過學習本節將能夠學習SparkMLlib算法庫、邏輯回歸實現用戶分類。通過本節學習可以:理解機器學習的基本概念理解MLlib的概念以及算法掌握MLlib算法的基本調用掌握MLlib實現邏輯回歸算法掌握MLlib模型評價方法了解Mllib算法庫機器學習概念、機器學習常用算法、算法與算法包以邏輯回歸實現用戶分類分析思路、數據處理、Mllib實現Logisti回歸、代碼實現1.背景“泰迪杯”數據挖掘競賽網站作為一個競賽型的網站,不僅發布了很多競賽的相關信息,除此之外還有很多其他類型的網頁信息,其中就包括公司主營的業務培訓的相關信息。每個網頁都屬于某一類網頁標簽,例如“培訓”“競賽”“項目”等,用戶對于某個網頁的訪問可以轉化為用戶對某類標簽的訪問記錄。現有一份記錄了用戶對各網頁標簽的統計數據,如圖所示,這份數據包括用戶對“泰迪杯”數據挖掘競賽網站中各個網頁標簽的訪問記錄。表中的第1列id,代表用戶id。標簽列“status”,標識了用戶是否訪問過培訓標簽相關的網頁。如果訪問過,則值為1,表示此用戶對于培訓有參加的意向;反之其值為0,表示此用戶對于培訓沒有參加的意向。其他的標簽列共有30個它們的值各自表示了用戶訪問該網頁標簽的訪問次數。比如,標簽列“項目”的值為3,則表示用戶訪問項目標簽相關的網頁共有3次。如果根據標簽列“status”進行簡單分類,則所有用戶被分成了兩類:有意向培訓用戶和無意向培訓用戶。以邏輯回歸實現用戶分類2.分析目標建立分類模型,識別出有意向培訓用戶。原始數據需要被分為兩部分:訓練數據及測試數據。使用訓練數據訓練預測模型,使用測試數據來預測用戶是否有培訓意向,從而達到驗證模型的目的。這里使用樣本數據中的標簽列“status”作為模型的目標列,其他30個標簽列的數據作為屬性列來構建一個分類模型。應用分類模型就可以對用戶進行分類,從而推測出新用戶是否有培訓意向。使用MLlib中的邏輯回歸算法包實現用戶分類,包括以下幾個步驟構建模型數據訓練模型模型分類及結果優化以邏輯回歸實現用戶分類3.分析思路針對案例步驟和調用算法流程,基本步驟包含以下幾個方面數據清理后將原始數據處理成算法需要的模型數據找到SparkMLlib關于Logistic回歸的算法包,了解如何導入算法包明確算法包所需模型參數的含義,設置合適的參數建立模型利用Spark已有的或自己實現的評估算法評估模型效果根據評估結果選擇是否要修改模型參數進行調優選擇調試出來的較好的模型參數重新訓練模型,預測測試集的分類將輸出結果輸出到HDFS以邏輯回歸實現用戶分類3.數據處理以邏輯回歸實現用戶分類原始的輸入數據為用戶對各個標簽的訪問次數,其中被訪問的標簽有30個,每個用戶對每個標簽的訪問次數都被記錄下來。每個用戶都有一個用戶識別Id,并且數據帶有一個類別標簽status模型數據要求為LabeledPoint類型的數據,第一個參數設置為用戶類別,第二個參數設置為用戶變量,并且用戶類別和用戶變量應該為Double類型。根據數據要求,先將原始數據的第一列用戶Id和第一行的列名去除,然后將數據上傳到HDFS上數據列與列之間用逗號分隔,用戶標簽作為第一列3.數據處理以邏輯回歸實現用戶分類在數據中對每個用戶標簽訪問次數進行統計,看看是否有對所有標簽都沒有訪問的情況,代碼如右上圖所示數據集中有高達9427個用戶對所有標簽都沒有訪問過,經過分析可能是數據前期獲取過程中存在一些無價值標簽被刪除的情況,針對這種情況造成的數據問題在這里不做考慮,直接對數據進行處理,刪除訪問次數都為0的記錄,并將數據重新存儲到HDFS,代碼如右下圖所示4.MLlib實現Logistic回歸MLlib的邏輯回歸類有兩個:LogisticRegressionWithSGD和LogisticRegressionWithLBFGS,前者基于隨機梯度下降,只支持2分類,后者基于LBFGS優化損失函數,支持多分類。LBFGS的性能比SGD更好一些,因此選擇LBFGS建模。為了測試模型的效果,將數據按照8:2的比例分成兩部分,80%作為訓練數據,20%作為測試數據。以邏輯回歸實現用戶分類4.MLlib實現Logistic回歸MLlib的邏輯回歸類有兩個:LogisticRegressionWithSGD和LogisticRegressionWithLBFGS,前者基于隨機梯度下降,只支持2分類,后者基于LBFGS優化損失函數,支持多分類。LBFGS的性能比SGD更好一些,因此選擇LBFGS建模。為了測試模型的效果,將數據按照8:2的比例分成兩部分,80%作為訓練數據,20%作為測試數據。以邏輯回歸實現用戶分類4.MLlib實現Logistic回歸調用MLlib中的相關類,包括實現模型的LogisticRegressionWithLBFGS,加載模型的LogisticRegressionModel類,輸入數據類型LabeledPoint類,以及用于評估的BinaryClassificationMetrics對象以邏輯回歸實現用戶分類4.MLlib實現Logistic回歸讀取數據集,轉化成模型需要的LabeledPoint類型,并且根據8:2比例分割數據得到訓練集和測試集采用LogisticRegressionWithLBFGS類來訓練模型,有一個參數setNumClasses(),用于設置分類個數,這里設置分類個數為2,然后通過run()方法加載訓練集到模型中,并且設置分類閾值為0.5(默認也是0.5)以邏輯回歸實現用戶分類4.MLlib實現Logistic回歸以邏輯回歸實現用戶分類根據訓練好的模型預測測試集的數據,并且將預測類別與真實類別組合成(prediction,label)的二元組,代碼如右上圖所示因為數據可能存在的不平衡,通過準確度并不能準確反映模型的好壞,所以采用精確率、召回率、F值這3個指標來判斷。通過BinaryClassificationMetrics對象計算二分類模型的精確率、召回率、F值、ROC曲線,代碼如右下圖所示4.MLlib實現Logistic回歸precision和recall的結果如圖所示,這里是以默認閾值0.5做為閾值來進行0跟1分類的,分到1的概率超過0.5記為類1,小于等于0.5記為類0。以邏輯回歸實現用戶分類4.MLlib實現Logistic回歸綜合precision和recall,通過F1值計算總的模型效果,值默認為1,結果如圖所示以邏輯回歸實現用戶分類4.MLlib實現Logistic回歸由于數據可能存在不平衡的問題,因此對數據的閾值做一個調整,將閾值設為0.7,表示概率超過0.7才記為類1,否則記為類0將閾值設為0.8,分類到1的概率超過0.8記為1類,否則為0類,F值只有0.6893,所以提高閾值并不能使模型分類效果更好,還是選擇默認閾值0.5。以邏輯回歸實現用戶分類5.整體實現以邏輯回歸實現用戶分類在IntellijIDEA環境中建一個Scala工程,命名為logistic在src下建一個package叫training,然后建一個ScalaClass命名為Logistic_User在Logistic_User添加需要的環境配置以及模型建立所需要的代碼5.整體實現將Logistic_User類打成Jar包,命名為logister.jar上傳Jar包到Linux下的/opt目錄,進入Spark安裝目錄下的bin目錄,執行以下代碼--master指定為yarn-cluster的運行方式,設置內存為512m,核數為1,--class后面跟著的是程序名,接著是Jar包名。剩下的參數是程序設置的輸入參數。輸入路徑:/tipdm/data.txt輸出模型路徑:/user/root/logistic_model評估指標路徑:f1Score_path閾值:0.5數據分隔符:,訓練集比例:0.8以邏輯回歸實現用戶分類5.整體實現以邏輯回歸實現用戶分類模型生成了2個文件夾,一個保存模型的文件,一個評價指標文件。其中模型存儲文件logistic_model下有一個存放模型具體數據的文件data,如右上圖所示還有一個存放模型元數據的文件metadata,如右下圖所示5.整體實現模型評價指標輸出中只有閾值1.0后的值才是模型的評價指標值,如圖所示以邏輯回歸實現用戶分類5.整體實現當用戶想要使用訓練好的模型進行預測時,以測試集為例,只需要運行以下代碼加載模型即可利用SparkMLlib,根據所提供的數據訓練培訓用戶分類模型,并且根據預測結果進行模型調優,發現較好的分類閾值為0.5,利用閾值0.5所訓練的模型預測測試集
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年石獅市公辦學校招聘編制內教師真題
- 浙江臺州職業技術學院招聘筆試真題2024
- 安徽省阜陽市三中2023-2024學年高一10月月考生物 無答案
- 天津市河東區2023屆高三一模歷史試題含解析
- 物理班級學習效率提升的實踐試題及答案
- 小學教師如何進行教育教學反思試題及答案
- 生肖情商測試題及答案
- 數字博覽會幼兒園數學試題及答案
- 施工現場安全提醒2025年試題及答案
- 教育學試題及答案考研
- 中級出版專業技術人員職業資格2025年筆試題庫附答案
- 專利代繳年費合同協議
- 《騰訊戰略投資》課件
- 2024中國國新基金管理有限公司相關崗位招聘7人筆試參考題庫附帶答案詳解
- 2025屆浙江省杭州市高三下學期二模物理試題(原卷版+解析版)
- 登高車安全培訓
- 成人重癥患者顱內壓增高防控護理專家共識(2024版)解讀課件
- 在線監測運維管理體系
- 英語課件 外研版(2019)選擇性必修四 Unit6 Developing ideas
- 2025年數獨考試試題及答案
- 化工工藝學知到智慧樹章節測試課后答案2024年秋廣州大學
評論
0/150
提交評論