《Spark應(yīng)用開(kāi)發(fā)技術(shù)》課件-02-以邏輯回歸實(shí)現(xiàn)用戶分類_第1頁(yè)
《Spark應(yīng)用開(kāi)發(fā)技術(shù)》課件-02-以邏輯回歸實(shí)現(xiàn)用戶分類_第2頁(yè)
《Spark應(yīng)用開(kāi)發(fā)技術(shù)》課件-02-以邏輯回歸實(shí)現(xiàn)用戶分類_第3頁(yè)
《Spark應(yīng)用開(kāi)發(fā)技術(shù)》課件-02-以邏輯回歸實(shí)現(xiàn)用戶分類_第4頁(yè)
《Spark應(yīng)用開(kāi)發(fā)技術(shù)》課件-02-以邏輯回歸實(shí)現(xiàn)用戶分類_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Spark應(yīng)用開(kāi)發(fā)技術(shù)本章主要講述SparkMLlib算法庫(kù)、邏輯回歸實(shí)現(xiàn)用戶分類。通過(guò)學(xué)習(xí)本節(jié)將能夠?qū)W習(xí)SparkMLlib算法庫(kù)、邏輯回歸實(shí)現(xiàn)用戶分類。通過(guò)本節(jié)學(xué)習(xí)可以:理解機(jī)器學(xué)習(xí)的基本概念理解MLlib的概念以及算法掌握MLlib算法的基本調(diào)用掌握MLlib實(shí)現(xiàn)邏輯回歸算法掌握MLlib模型評(píng)價(jià)方法了解Mllib算法庫(kù)機(jī)器學(xué)習(xí)概念、機(jī)器學(xué)習(xí)常用算法、算法與算法包以邏輯回歸實(shí)現(xiàn)用戶分類分析思路、數(shù)據(jù)處理、Mllib實(shí)現(xiàn)Logisti回歸、代碼實(shí)現(xiàn)1.背景“泰迪杯”數(shù)據(jù)挖掘競(jìng)賽網(wǎng)站作為一個(gè)競(jìng)賽型的網(wǎng)站,不僅發(fā)布了很多競(jìng)賽的相關(guān)信息,除此之外還有很多其他類型的網(wǎng)頁(yè)信息,其中就包括公司主營(yíng)的業(yè)務(wù)培訓(xùn)的相關(guān)信息。每個(gè)網(wǎng)頁(yè)都屬于某一類網(wǎng)頁(yè)標(biāo)簽,例如“培訓(xùn)”“競(jìng)賽”“項(xiàng)目”等,用戶對(duì)于某個(gè)網(wǎng)頁(yè)的訪問(wèn)可以轉(zhuǎn)化為用戶對(duì)某類標(biāo)簽的訪問(wèn)記錄?,F(xiàn)有一份記錄了用戶對(duì)各網(wǎng)頁(yè)標(biāo)簽的統(tǒng)計(jì)數(shù)據(jù),如圖所示,這份數(shù)據(jù)包括用戶對(duì)“泰迪杯”數(shù)據(jù)挖掘競(jìng)賽網(wǎng)站中各個(gè)網(wǎng)頁(yè)標(biāo)簽的訪問(wèn)記錄。表中的第1列id,代表用戶id。標(biāo)簽列“status”,標(biāo)識(shí)了用戶是否訪問(wèn)過(guò)培訓(xùn)標(biāo)簽相關(guān)的網(wǎng)頁(yè)。如果訪問(wèn)過(guò),則值為1,表示此用戶對(duì)于培訓(xùn)有參加的意向;反之其值為0,表示此用戶對(duì)于培訓(xùn)沒(méi)有參加的意向。其他的標(biāo)簽列共有30個(gè)它們的值各自表示了用戶訪問(wèn)該網(wǎng)頁(yè)標(biāo)簽的訪問(wèn)次數(shù)。比如,標(biāo)簽列“項(xiàng)目”的值為3,則表示用戶訪問(wèn)項(xiàng)目標(biāo)簽相關(guān)的網(wǎng)頁(yè)共有3次。如果根據(jù)標(biāo)簽列“status”進(jìn)行簡(jiǎn)單分類,則所有用戶被分成了兩類:有意向培訓(xùn)用戶和無(wú)意向培訓(xùn)用戶。以邏輯回歸實(shí)現(xiàn)用戶分類2.分析目標(biāo)建立分類模型,識(shí)別出有意向培訓(xùn)用戶。原始數(shù)據(jù)需要被分為兩部分:訓(xùn)練數(shù)據(jù)及測(cè)試數(shù)據(jù)。使用訓(xùn)練數(shù)據(jù)訓(xùn)練預(yù)測(cè)模型,使用測(cè)試數(shù)據(jù)來(lái)預(yù)測(cè)用戶是否有培訓(xùn)意向,從而達(dá)到驗(yàn)證模型的目的。這里使用樣本數(shù)據(jù)中的標(biāo)簽列“status”作為模型的目標(biāo)列,其他30個(gè)標(biāo)簽列的數(shù)據(jù)作為屬性列來(lái)構(gòu)建一個(gè)分類模型。應(yīng)用分類模型就可以對(duì)用戶進(jìn)行分類,從而推測(cè)出新用戶是否有培訓(xùn)意向。使用MLlib中的邏輯回歸算法包實(shí)現(xiàn)用戶分類,包括以下幾個(gè)步驟構(gòu)建模型數(shù)據(jù)訓(xùn)練模型模型分類及結(jié)果優(yōu)化以邏輯回歸實(shí)現(xiàn)用戶分類3.分析思路針對(duì)案例步驟和調(diào)用算法流程,基本步驟包含以下幾個(gè)方面數(shù)據(jù)清理后將原始數(shù)據(jù)處理成算法需要的模型數(shù)據(jù)找到SparkMLlib關(guān)于Logistic回歸的算法包,了解如何導(dǎo)入算法包明確算法包所需模型參數(shù)的含義,設(shè)置合適的參數(shù)建立模型利用Spark已有的或自己實(shí)現(xiàn)的評(píng)估算法評(píng)估模型效果根據(jù)評(píng)估結(jié)果選擇是否要修改模型參數(shù)進(jìn)行調(diào)優(yōu)選擇調(diào)試出來(lái)的較好的模型參數(shù)重新訓(xùn)練模型,預(yù)測(cè)測(cè)試集的分類將輸出結(jié)果輸出到HDFS以邏輯回歸實(shí)現(xiàn)用戶分類3.數(shù)據(jù)處理以邏輯回歸實(shí)現(xiàn)用戶分類原始的輸入數(shù)據(jù)為用戶對(duì)各個(gè)標(biāo)簽的訪問(wèn)次數(shù),其中被訪問(wèn)的標(biāo)簽有30個(gè),每個(gè)用戶對(duì)每個(gè)標(biāo)簽的訪問(wèn)次數(shù)都被記錄下來(lái)。每個(gè)用戶都有一個(gè)用戶識(shí)別Id,并且數(shù)據(jù)帶有一個(gè)類別標(biāo)簽status模型數(shù)據(jù)要求為L(zhǎng)abeledPoint類型的數(shù)據(jù),第一個(gè)參數(shù)設(shè)置為用戶類別,第二個(gè)參數(shù)設(shè)置為用戶變量,并且用戶類別和用戶變量應(yīng)該為Double類型。根據(jù)數(shù)據(jù)要求,先將原始數(shù)據(jù)的第一列用戶Id和第一行的列名去除,然后將數(shù)據(jù)上傳到HDFS上數(shù)據(jù)列與列之間用逗號(hào)分隔,用戶標(biāo)簽作為第一列3.數(shù)據(jù)處理以邏輯回歸實(shí)現(xiàn)用戶分類在數(shù)據(jù)中對(duì)每個(gè)用戶標(biāo)簽訪問(wèn)次數(shù)進(jìn)行統(tǒng)計(jì),看看是否有對(duì)所有標(biāo)簽都沒(méi)有訪問(wèn)的情況,代碼如右上圖所示數(shù)據(jù)集中有高達(dá)9427個(gè)用戶對(duì)所有標(biāo)簽都沒(méi)有訪問(wèn)過(guò),經(jīng)過(guò)分析可能是數(shù)據(jù)前期獲取過(guò)程中存在一些無(wú)價(jià)值標(biāo)簽被刪除的情況,針對(duì)這種情況造成的數(shù)據(jù)問(wèn)題在這里不做考慮,直接對(duì)數(shù)據(jù)進(jìn)行處理,刪除訪問(wèn)次數(shù)都為0的記錄,并將數(shù)據(jù)重新存儲(chǔ)到HDFS,代碼如右下圖所示4.MLlib實(shí)現(xiàn)Logistic回歸MLlib的邏輯回歸類有兩個(gè):LogisticRegressionWithSGD和LogisticRegressionWithLBFGS,前者基于隨機(jī)梯度下降,只支持2分類,后者基于LBFGS優(yōu)化損失函數(shù),支持多分類。LBFGS的性能比SGD更好一些,因此選擇LBFGS建模。為了測(cè)試模型的效果,將數(shù)據(jù)按照8:2的比例分成兩部分,80%作為訓(xùn)練數(shù)據(jù),20%作為測(cè)試數(shù)據(jù)。以邏輯回歸實(shí)現(xiàn)用戶分類4.MLlib實(shí)現(xiàn)Logistic回歸MLlib的邏輯回歸類有兩個(gè):LogisticRegressionWithSGD和LogisticRegressionWithLBFGS,前者基于隨機(jī)梯度下降,只支持2分類,后者基于LBFGS優(yōu)化損失函數(shù),支持多分類。LBFGS的性能比SGD更好一些,因此選擇LBFGS建模。為了測(cè)試模型的效果,將數(shù)據(jù)按照8:2的比例分成兩部分,80%作為訓(xùn)練數(shù)據(jù),20%作為測(cè)試數(shù)據(jù)。以邏輯回歸實(shí)現(xiàn)用戶分類4.MLlib實(shí)現(xiàn)Logistic回歸調(diào)用MLlib中的相關(guān)類,包括實(shí)現(xiàn)模型的LogisticRegressionWithLBFGS,加載模型的LogisticRegressionModel類,輸入數(shù)據(jù)類型LabeledPoint類,以及用于評(píng)估的BinaryClassificationMetrics對(duì)象以邏輯回歸實(shí)現(xiàn)用戶分類4.MLlib實(shí)現(xiàn)Logistic回歸讀取數(shù)據(jù)集,轉(zhuǎn)化成模型需要的LabeledPoint類型,并且根據(jù)8:2比例分割數(shù)據(jù)得到訓(xùn)練集和測(cè)試集采用LogisticRegressionWithLBFGS類來(lái)訓(xùn)練模型,有一個(gè)參數(shù)setNumClasses(),用于設(shè)置分類個(gè)數(shù),這里設(shè)置分類個(gè)數(shù)為2,然后通過(guò)run()方法加載訓(xùn)練集到模型中,并且設(shè)置分類閾值為0.5(默認(rèn)也是0.5)以邏輯回歸實(shí)現(xiàn)用戶分類4.MLlib實(shí)現(xiàn)Logistic回歸以邏輯回歸實(shí)現(xiàn)用戶分類根據(jù)訓(xùn)練好的模型預(yù)測(cè)測(cè)試集的數(shù)據(jù),并且將預(yù)測(cè)類別與真實(shí)類別組合成(prediction,label)的二元組,代碼如右上圖所示因?yàn)閿?shù)據(jù)可能存在的不平衡,通過(guò)準(zhǔn)確度并不能準(zhǔn)確反映模型的好壞,所以采用精確率、召回率、F值這3個(gè)指標(biāo)來(lái)判斷。通過(guò)BinaryClassificationMetrics對(duì)象計(jì)算二分類模型的精確率、召回率、F值、ROC曲線,代碼如右下圖所示4.MLlib實(shí)現(xiàn)Logistic回歸precision和recall的結(jié)果如圖所示,這里是以默認(rèn)閾值0.5做為閾值來(lái)進(jìn)行0跟1分類的,分到1的概率超過(guò)0.5記為類1,小于等于0.5記為類0。以邏輯回歸實(shí)現(xiàn)用戶分類4.MLlib實(shí)現(xiàn)Logistic回歸綜合precision和recall,通過(guò)F1值計(jì)算總的模型效果,值默認(rèn)為1,結(jié)果如圖所示以邏輯回歸實(shí)現(xiàn)用戶分類4.MLlib實(shí)現(xiàn)Logistic回歸由于數(shù)據(jù)可能存在不平衡的問(wèn)題,因此對(duì)數(shù)據(jù)的閾值做一個(gè)調(diào)整,將閾值設(shè)為0.7,表示概率超過(guò)0.7才記為類1,否則記為類0將閾值設(shè)為0.8,分類到1的概率超過(guò)0.8記為1類,否則為0類,F(xiàn)值只有0.6893,所以提高閾值并不能使模型分類效果更好,還是選擇默認(rèn)閾值0.5。以邏輯回歸實(shí)現(xiàn)用戶分類5.整體實(shí)現(xiàn)以邏輯回歸實(shí)現(xiàn)用戶分類在IntellijIDEA環(huán)境中建一個(gè)Scala工程,命名為logistic在src下建一個(gè)package叫training,然后建一個(gè)ScalaClass命名為L(zhǎng)ogistic_User在Logistic_User添加需要的環(huán)境配置以及模型建立所需要的代碼5.整體實(shí)現(xiàn)將Logistic_User類打成Jar包,命名為logister.jar上傳Jar包到Linux下的/opt目錄,進(jìn)入Spark安裝目錄下的bin目錄,執(zhí)行以下代碼--master指定為yarn-cluster的運(yùn)行方式,設(shè)置內(nèi)存為512m,核數(shù)為1,--class后面跟著的是程序名,接著是Jar包名。剩下的參數(shù)是程序設(shè)置的輸入?yún)?shù)。輸入路徑:/tipdm/data.txt輸出模型路徑:/user/root/logistic_model評(píng)估指標(biāo)路徑:f1Score_path閾值:0.5數(shù)據(jù)分隔符:,訓(xùn)練集比例:0.8以邏輯回歸實(shí)現(xiàn)用戶分類5.整體實(shí)現(xiàn)以邏輯回歸實(shí)現(xiàn)用戶分類模型生成了2個(gè)文件夾,一個(gè)保存模型的文件,一個(gè)評(píng)價(jià)指標(biāo)文件。其中模型存儲(chǔ)文件logistic_model下有一個(gè)存放模型具體數(shù)據(jù)的文件data,如右上圖所示還有一個(gè)存放模型元數(shù)據(jù)的文件metadata,如右下圖所示5.整體實(shí)現(xiàn)模型評(píng)價(jià)指標(biāo)輸出中只有閾值1.0后的值才是模型的評(píng)價(jià)指標(biāo)值,如圖所示以邏輯回歸實(shí)現(xiàn)用戶分類5.整體實(shí)現(xiàn)當(dāng)用戶想要使用訓(xùn)練好的模型進(jìn)行預(yù)測(cè)時(shí),以測(cè)試集為例,只需要運(yùn)行以下代碼加載模型即可利用SparkMLlib,根據(jù)所提供的數(shù)據(jù)訓(xùn)練培訓(xùn)用戶分類模型,并且根據(jù)預(yù)測(cè)結(jié)果進(jìn)行模型調(diào)優(yōu),發(fā)現(xiàn)較好的分類閾值為0.5,利用閾值0.5所訓(xùn)練的模型預(yù)測(cè)測(cè)試集

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論