版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第8章SparkMLlib:功能強(qiáng)大的算法庫(kù)04-11月-241以Logistic實(shí)現(xiàn)用戶分類目錄了解Mllib算法庫(kù)2機(jī)器學(xué)習(xí)就是讓機(jī)器能像人一樣有學(xué)習(xí)、理解、認(rèn)識(shí)的能力。試想,如果計(jì)算機(jī)能夠?qū)Υ罅康陌┌Y治療記錄進(jìn)行歸納和總結(jié),并能夠給醫(yī)生提出適當(dāng)?shù)慕ㄗh,對(duì)于病人的康復(fù)將有重大意義。機(jī)器學(xué)習(xí)是一門人工智能的科學(xué),該領(lǐng)域的主要研究對(duì)象是人工智能,特別是如何在經(jīng)驗(yàn)學(xué)習(xí)中改善具體算法的性能。機(jī)器學(xué)習(xí)的過(guò)程就是通過(guò)計(jì)算機(jī)使算法模型利用輸入數(shù)據(jù)的規(guī)律或以往經(jīng)驗(yàn)進(jìn)行學(xué)習(xí),并對(duì)模型進(jìn)行評(píng)估,評(píng)估的性能如果達(dá)到要求就拿這個(gè)模型來(lái)測(cè)試其他的數(shù)據(jù),如果達(dá)不到要求就要調(diào)整算法來(lái)重新建立模型,再次進(jìn)行評(píng)估,如此循環(huán)往復(fù),最終獲得滿意的經(jīng)驗(yàn)來(lái)處理其他的數(shù)據(jù)。機(jī)器學(xué)習(xí)可以分為監(jiān)督學(xué)習(xí)、非監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)3種。監(jiān)督學(xué)習(xí)就是給出的訓(xùn)練數(shù)據(jù)集是有標(biāo)簽的,已經(jīng)能夠確定所給數(shù)據(jù)集的類別。半監(jiān)督學(xué)習(xí)針對(duì)的問(wèn)題是數(shù)據(jù)量超級(jí)大但是標(biāo)簽數(shù)據(jù)很少或者標(biāo)簽數(shù)據(jù)不易獲取的情況。無(wú)監(jiān)督學(xué)習(xí)與監(jiān)督學(xué)習(xí)相反,訓(xùn)練數(shù)據(jù)完全沒(méi)有標(biāo)簽,只能依靠數(shù)據(jù)間的相似性分類,例如廣泛使用的KMeans算法了解MLlib算法庫(kù)1.機(jī)器學(xué)習(xí)概念回歸算法線性回歸:根據(jù)已有數(shù)據(jù)擬合曲線,常采用的方法是最小二乘法邏輯回歸:一種與線性回歸非常類似的算法,但是線性回歸處理的是數(shù)值問(wèn)題,而邏輯回歸屬于分類算法,預(yù)測(cè)結(jié)果是離散的分類分類算法:有監(jiān)督學(xué)習(xí)的方法。分類算法是通過(guò)有類別的訓(xùn)練數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練和評(píng)估,再根據(jù)評(píng)估后的模型對(duì)未知類別數(shù)據(jù)進(jìn)行分類。主要有KNN算法、樸素貝葉斯算法、SVM支持向量機(jī)、邏輯回歸、決策樹(shù)、隨機(jī)森林等等了解MLlib算法庫(kù)機(jī)器學(xué)習(xí)常用的算法聚類算法:聚類是一種無(wú)監(jiān)督學(xué)習(xí)算法,用于將對(duì)象分到高度相似的類中。常用的聚類方法有KMeans聚類、層次聚類,比較少見(jiàn)的有SOM聚類算法、FCM聚類算法,F(xiàn)CM算法是一種以隸屬度來(lái)確定每個(gè)數(shù)據(jù)點(diǎn)屬于某個(gè)聚類程度的算法。推薦算法:推薦算法的主要特征就是可以自動(dòng)向用戶推薦他們最感興趣的東西,從而增加購(gòu)買率,提升效益。協(xié)同過(guò)濾推薦算法:有基于用戶和基于內(nèi)容兩種關(guān)聯(lián)規(guī)則的算法:將滿足支持度與置信度的共同購(gòu)買的商品推薦給買了其中一種或幾種的用戶降維算法:主要作用是壓縮數(shù)據(jù)與提升機(jī)器學(xué)習(xí)其他算法的效率。通過(guò)降維算法,可以將具有幾千個(gè)特征的數(shù)據(jù)壓縮至若干個(gè)特征。降維算法的主要代表是PCA算法(即主成分分析算法)。了解MLlib算法庫(kù)機(jī)器學(xué)習(xí)常用算法MLlib是Spark的機(jī)器學(xué)習(xí)(ML)庫(kù),旨在簡(jiǎn)化機(jī)器學(xué)習(xí)的工程實(shí)踐工作,并方便擴(kuò)展到更大規(guī)模,同時(shí)利用Spark分布式處理來(lái)實(shí)現(xiàn)模型,處理大數(shù)據(jù)全量數(shù)據(jù)的迭代計(jì)算。MLlib由一些通用的學(xué)習(xí)算法和工具組成,包括分類、回歸、聚類、協(xié)同過(guò)濾、降維等,同時(shí)還包括底層的優(yōu)化原語(yǔ)和高層的管道API。具體來(lái)說(shuō),主要包括以下幾方面的內(nèi)容算法工具:常用的學(xué)習(xí)算法,如分類、回歸、聚類和協(xié)同過(guò)濾。特征化工具:特征提取、轉(zhuǎn)化、降維,和選擇工具。管道(Pipeline):用于構(gòu)建、評(píng)估和調(diào)整機(jī)器學(xué)習(xí)管道的工具。持久性:保存和加載算法、模型和管道。實(shí)用工具:線性代數(shù)、統(tǒng)計(jì)、數(shù)據(jù)處理等工具。了解MLlib算法庫(kù)MLlib簡(jiǎn)介SparkMLlib歷史比較長(zhǎng),在1.0以前的版本即已經(jīng)包含了,提供的算法實(shí)現(xiàn)都是基于原始的RDD。主要有以下幾個(gè)發(fā)展過(guò)程。0.8版本時(shí),MLlib算法包被加入Spark,但是只支持Java和Scala兩種語(yǔ)言。1.0版本時(shí),SparkMLlib才可以支持Python語(yǔ)言。1.2版本開(kāi)始Spark機(jī)器學(xué)習(xí)庫(kù)被分為兩個(gè)包1.2以后的版本,對(duì)MLlib中的算法不斷的增加和改進(jìn)從Spark2.0開(kāi)始,基于RDD的API進(jìn)入維護(hù)模式(即不增加任何新的特性),并預(yù)期于3.0版本的時(shí)候被移除出MLlib。了解MLlib算法庫(kù)MLlib發(fā)展數(shù)據(jù)類型:在MLlib中,對(duì)不同算法包的調(diào)用都有一定的輸入數(shù)據(jù)格式,因此先了解最基本的數(shù)據(jù)類型,其中幾種常見(jiàn)數(shù)據(jù)類型如表所示了解MLlib算法庫(kù)算法與算法包數(shù)據(jù)類型描述Vector數(shù)據(jù)向量,包括稀疏向量和稠密向量LabeledPoint監(jiān)督式學(xué)習(xí)算法的數(shù)據(jù)對(duì)象,包含一個(gè)標(biāo)簽和一個(gè)特征向量Rating對(duì)產(chǎn)品的評(píng)分,用于推薦ALS算法vector:一種數(shù)據(jù)向量。MLlib支持兩種類型的局部向量:稠密和稀疏。稠密向量表示存儲(chǔ)每一個(gè)值而稀疏向量存儲(chǔ)非0向量,由兩個(gè)并行數(shù)組支持:索引和值。例如,矢量(1,0,3)稠密向量格式表示為[1.0,0.0,3.0];稀疏格式表示為(3,[0,2],[1,3]),其中3是向量的大小,后面的數(shù)組第一個(gè)為索引數(shù)組,第二個(gè)為值數(shù)組。LabeledPoint:用來(lái)表示帶標(biāo)簽的數(shù)據(jù),其中包含兩個(gè)部分,第一個(gè)為數(shù)據(jù)的類別標(biāo)簽label,由一個(gè)浮點(diǎn)數(shù)表示,第二個(gè)部分是一個(gè)特征向量feature,通常是Vector類型,其中的值是Double類型,是有類別標(biāo)簽的監(jiān)督式學(xué)習(xí)算法常用類型,在mllib.regression中。對(duì)于二進(jìn)制分類,標(biāo)簽應(yīng)該是0(負(fù))或1(正)。對(duì)于多類分類,標(biāo)簽應(yīng)該是從零開(kāi)始的類索引:0,1,2,…。Rating:該類型是ALS推薦算法所使用的類型,包括用戶Id,商品Id,以及rating評(píng)分3個(gè)部分,用戶Id,商品Id要求為Int類型,存放在mllib.recommendation中。了解MLlib算法庫(kù)算法與算法包特征提?。簃llib.feature中存在一些常見(jiàn)的特征轉(zhuǎn)化方法,主要包括創(chuàng)建特征向量和標(biāo)準(zhǔn)化數(shù)據(jù)。TF-IDF:種將文檔轉(zhuǎn)化成向量表示的方法。TF指的是詞頻,即該詞在文檔中出現(xiàn)的次數(shù),IDF是逆文檔概率,是詞在文檔集中出現(xiàn)的概率,它們的乘積表示該詞在文檔中的重要程度。HashingTF:從一個(gè)文檔中計(jì)算出給定大小的詞頻向量,并且通過(guò)哈希法排列詞向量的順序,使詞與向量能一一對(duì)應(yīng)IDF:計(jì)算逆文檔頻率,需要IDF對(duì)象調(diào)用fit()方法來(lái)獲取一個(gè)IDFModel,表示語(yǔ)料庫(kù)的逆文檔頻率。然后再通過(guò)transform()把TF向量轉(zhuǎn)為IDF向量。了解MLlib算法庫(kù)算法與算法包Tf-idf.txt數(shù)據(jù)如右圖所示,一行表示一個(gè)文檔,要求將文檔轉(zhuǎn)換成向量表示了解MLlib算法庫(kù)算法與算法包導(dǎo)入相關(guān)包讀取數(shù)據(jù)分割成單詞并序列化對(duì)每一個(gè)句子(詞袋),使用HashingTF將句子轉(zhuǎn)換為特征向量了解MLlib算法庫(kù)算法與算法包使用IDF重新調(diào)整特征向量,得到文檔轉(zhuǎn)化后的特征向量查看結(jié)果了解MLlib算法庫(kù)算法與算法包Word2Vec:Word2Vec是NLP領(lǐng)域的重要算法,它的功能是將每個(gè)word用K維的稠密向量來(lái)表達(dá),訓(xùn)練集是語(yǔ)料庫(kù),不含標(biāo)點(diǎn),以空格斷句。通過(guò)訓(xùn)練將每個(gè)詞映射成K維實(shí)數(shù)向量(K一般為模型中的超參數(shù)),通過(guò)詞之間的距離(比如余弦相似度、歐氏距離等)來(lái)判斷它們之間的語(yǔ)義相似度。每一個(gè)文檔都表示為一個(gè)單詞序列,所以一個(gè)含有M個(gè)單詞的文檔由M個(gè)K維向量組成。mllib.feature中有Word2Vec算法包,輸入數(shù)據(jù)為String類型的Iterable,其他與TF-IDF相似。了解MLlib算法庫(kù)算法與算法包對(duì)w2v數(shù)據(jù)進(jìn)行轉(zhuǎn)換了解MLlib算法庫(kù)算法與算法包了解MLlib算法庫(kù)算法與算法包統(tǒng)計(jì):最大值、最小值、平均值、方差和相似度MLlib通過(guò)mllib.stat.Statistics類中的方法提供了幾種廣泛使用的統(tǒng)計(jì)函數(shù),這些函數(shù)可以直接在RDD上使用,如表所示了解MLlib算法庫(kù)算法與算法包方法描述max/min最大值/最小值mean均值variance方差normL1/normL2L1范數(shù)/L2范數(shù)Statistics.corr(rdd,method)相關(guān)系數(shù),method可選pearson(皮爾森相關(guān))或spearman(斯皮爾曼相關(guān))Statistics.corr(rdd1,rdd2,method)計(jì)算兩個(gè)由浮點(diǎn)值組成RDD的相關(guān)矩陣,使用pearson或spearman中的一種方法Statistics.chiSqTest(rdd)LabeledPoint對(duì)象的RDD的獨(dú)立性檢驗(yàn)對(duì)如右圖所示的數(shù)據(jù)統(tǒng)計(jì)平均值、方差、相關(guān)系數(shù)了解MLlib算法庫(kù)算法與算法包數(shù)據(jù)規(guī)范化(標(biāo)準(zhǔn)化):正則化操作可以使輸入數(shù)據(jù)標(biāo)準(zhǔn)化并提高后期學(xué)習(xí)算法的效果。Spark1.6.3已經(jīng)提供了3種數(shù)據(jù)規(guī)范化的方法,Normalizer、StandardScaler和MinMaxScalerNormalizer、StandardScaler和MinMaxScaler處理的都是Vector類型的數(shù)據(jù),所以先將數(shù)據(jù)轉(zhuǎn)換成Vector類型,并且調(diào)用ml的類需要將數(shù)據(jù)也轉(zhuǎn)化成DataFrame了解MLlib算法庫(kù)算法與算法包Normalizer規(guī)范化:Normalizer是一個(gè)轉(zhuǎn)換器,它可以將多行向量輸入轉(zhuǎn)化為統(tǒng)一的形式。Normalizer的作用范圍是每一行,使每一個(gè)行向量的范數(shù)變換為一個(gè)單位范數(shù)。參數(shù)為p(默認(rèn)值:2)來(lái)指定正則化中使用的p-norm了解MLlib算法庫(kù)算法與算法包StandardScaler規(guī)范化:StandardScaler處理的對(duì)象是每一列,也就是每一維特征,將特征標(biāo)準(zhǔn)化為單位標(biāo)準(zhǔn)差或是0均值,或是0均值單位標(biāo)準(zhǔn)差。主要參數(shù)有兩個(gè)withStd:true或者false,默認(rèn)為true。表示是否將數(shù)據(jù)標(biāo)準(zhǔn)化到單位標(biāo)準(zhǔn)差。withMean:true或者false,默認(rèn)為false,表示是否變換為0均值。此種方法將產(chǎn)出一個(gè)稠密輸出,所以不適用于稀疏輸入。了解MLlib算法庫(kù)算法與算法包StandardScaler需要對(duì)數(shù)據(jù)進(jìn)行建模,獲取每一維的均值和標(biāo)準(zhǔn)差,來(lái)縮放每一維特征,如圖所示了解MLlib算法庫(kù)算法與算法包MinMaxScaler規(guī)范化:常用的最大-最小值標(biāo)準(zhǔn)化,MinMaxScaler同樣是針對(duì)每一列(即每一維特征)進(jìn)行處理。將每一維特征線性地映射到指定的區(qū)間,通常是[0,1]。它也有兩個(gè)參數(shù)可以設(shè)置。min:默認(rèn)為0,指定區(qū)間的下限。max:默認(rèn)為1,指定區(qū)間的上限。了解MLlib算法庫(kù)算法與算法包回歸:回歸指研究一組隨機(jī)變量(Y1,Y2,…,Yi)和另一組(X1,X2,…,Xk)變量之間關(guān)系的統(tǒng)計(jì)分析方法,又稱多重回歸分析。通常前者是因變量,后者是自變量?;貧w是一種監(jiān)督學(xué)習(xí)算法,利用已知標(biāo)簽或結(jié)果的訓(xùn)練數(shù)據(jù)來(lái)訓(xùn)練模型、預(yù)測(cè)結(jié)果。有監(jiān)督學(xué)習(xí)的算法要求輸入數(shù)據(jù)要使用LabeledPoint類型,其中包含一個(gè)label和一個(gè)數(shù)據(jù)特征向量。線性回歸:線性回歸是最常用的方法之一,通過(guò)一組線性組合來(lái)預(yù)測(cè)輸出值。MLlib中用于線性回歸算法的包主要有LinearRegressionWithSGD、RidgeRegressionWithSGD和LassoWithSGD,這幾種方法都是采用隨機(jī)梯度下降法求解回歸方程的邏輯回歸:邏輯回歸是一種二分類的回歸算法,預(yù)測(cè)的值為新點(diǎn)屬于哪個(gè)類的概率,對(duì)于概率大于等于閾值的分到一個(gè)類,小于閾值的分到另一個(gè)類。了解MLlib算法庫(kù)算法與算法包線性回歸的算法調(diào)用如圖所示,數(shù)據(jù)需要切割并轉(zhuǎn)化為L(zhǎng)abeledPoint類型,設(shè)置模型參數(shù)后通過(guò)train方法訓(xùn)練模型,并用所建模型的predict方法預(yù)測(cè)。最后添加了模型的存儲(chǔ)和加載的方法,這兩個(gè)方法對(duì)于其他類型的模型也一樣,除了加載模型所用的算法包不同。了解MLlib算法庫(kù)算法與算法包在MLlib中,邏輯回歸算法的輸入值為L(zhǎng)abeledPoint類型。MLlib有兩個(gè)邏輯回歸的算法包,一個(gè)是LogisticRegressionWithLBFGS,一個(gè)是LogisticRegressionWithSGB。LBFGS的效果要好于SGB,但在早期版本不可用。這些類的參數(shù)與線性回歸的參數(shù)完全一樣。LogisticRegressionWithLBFGS通過(guò)train方法可以得到一個(gè)LogisticRegressionModel,對(duì)每個(gè)點(diǎn)的預(yù)測(cè)返回一個(gè)0-1的概率,按照默認(rèn)閾值0.5把該點(diǎn)分配到其中一個(gè)類。閾值的設(shè)定可以采用setThreshold()方法在定義LogisticRegressionWithLBFGS時(shí)設(shè)置,也可以用clearThreshold()方法設(shè)置為不分類直接輸出概率值。默認(rèn)閾值設(shè)置為0.5,但是在數(shù)據(jù)不平衡情況下可以調(diào)整閾值大小。了解MLlib算法庫(kù)算法與算法包分類:分類算法包括支持向量機(jī)、樸素貝葉斯、決策樹(shù)、隨機(jī)森林以及邏輯回歸。分類算法是一種有監(jiān)督的學(xué)習(xí)方法,即訓(xùn)練數(shù)據(jù)有明確類別標(biāo)簽。因此分類會(huì)使用MLlib中的LabeledPoint類作為模型數(shù)據(jù)類型樸素貝葉斯:樸素貝葉斯分類是一種十分簡(jiǎn)單的分類算法,樸素貝葉斯思想:對(duì)于給出的特定的features,求解在此項(xiàng)出現(xiàn)條件下各個(gè)類別出現(xiàn)的概率,哪個(gè)概率最大就屬于那個(gè)類別。了解MLlib算法庫(kù)算法與算法包分類算法支持向量機(jī):支持向量機(jī)是一種通過(guò)線性或非線性分割平面的二分類方法,有0或1兩種標(biāo)簽。在MLlib中調(diào)用SVMWithSGD可以實(shí)現(xiàn)算法,位置在mllib.classification.SVMModel中,模型參數(shù)與線性回歸差不多,通過(guò)train方法可以返回一個(gè)SVMModel模型,該模型同LogisticRegressionModel模型一樣是通過(guò)閾值分類的,所以LogisticRegressionModel設(shè)置閾值的方法和清除閾值的方法都對(duì)它適用,SVMModel模型通過(guò)predict可以預(yù)測(cè)點(diǎn)的類別。決策樹(shù):決策樹(shù)是分類和回歸的常用算法,因?yàn)樗菀滋幚眍悇e特征,擴(kuò)展到多分類的問(wèn)題。MLlib支持二分類和多分類的決策樹(shù)。決策樹(shù)以節(jié)點(diǎn)樹(shù)的形式表示,每個(gè)節(jié)點(diǎn)代表一個(gè)向量,向量的不同特征值會(huì)使節(jié)點(diǎn)有多條指向下個(gè)節(jié)點(diǎn)的邊,最底層的葉子節(jié)點(diǎn)為預(yù)測(cè)的結(jié)果,可以是分類的特征也可以是連續(xù)的特征。每個(gè)節(jié)點(diǎn)的選擇都是遵循某一種使模型更加優(yōu)化的算法,例如基于信息增益最大的方法。了解MLlib算法庫(kù)算法與算法包聚類:聚類是一種無(wú)監(jiān)督學(xué)習(xí)的方法,用于將高度相似的數(shù)據(jù)分到一類中。聚類沒(méi)有類別標(biāo)簽,僅根據(jù)數(shù)據(jù)相似性進(jìn)行分類,所以通常用于數(shù)據(jù)探索、異常檢測(cè),也用于一般數(shù)據(jù)的分群。聚類的方法有很多中,計(jì)算相似度的方法也有很多,最常使用的還是KMeans聚類算法。在MLlib中的KMeans有幾個(gè)可以優(yōu)化KMeans算法的參數(shù)maxIterations:最大循環(huán)次數(shù),聚類算法的最大迭代次數(shù),默認(rèn)100。nitializationMode:指定初始化聚類中心的方法,“kmeans||”或“random”,“kmeans||”選項(xiàng)在選取初始聚類中心時(shí)會(huì)盡可能地找到K個(gè)距離較遠(yuǎn)的聚類中心,但是代價(jià)會(huì)更大些。run:算法并發(fā)運(yùn)行的數(shù)目,即運(yùn)行KMeans的次數(shù),最終的分類結(jié)果會(huì)綜合所有次數(shù)的返回結(jié)果。了解MLlib算法庫(kù)算法與算法包以安裝包所帶的示例數(shù)據(jù)kmeans_data.txt作為輸入數(shù)據(jù)上傳到HDFS下的/user/root,實(shí)現(xiàn)實(shí)現(xiàn)KMeans算法。了解MLlib算法庫(kù)算法與算法包聚類結(jié)果、聚類中心和模型誤差如圖所示了解MLlib算法庫(kù)算法與算法包關(guān)聯(lián)規(guī)則:FP算法作為一個(gè)關(guān)聯(lián)規(guī)則算法,在推薦方法也得到了應(yīng)用。FP算法主要通過(guò)大量數(shù)據(jù)的一個(gè)購(gòu)買歷史來(lái)生成頻繁項(xiàng)集,設(shè)置支持度篩選出符合支持度的頻繁項(xiàng)集,根據(jù)頻繁項(xiàng)集生成一些規(guī)則后通過(guò)置信度過(guò)濾出最有說(shuō)服力的規(guī)則。通過(guò)規(guī)則可以完成推薦、分類等工作。mllib.fpm.FPGrowth是MLlib實(shí)現(xiàn)FP算法的算法包,通過(guò)run方法找出符合支持度的頻繁項(xiàng)集,generateAssociationRules方法找出符合置信度的規(guī)則。了解MLlib算法庫(kù)算法與算法包目前熱門的推薦算法主要是協(xié)同過(guò)濾算法,協(xié)同過(guò)濾算法有基于內(nèi)容和基于用戶兩個(gè)方面,主要是根據(jù)用戶歷史記錄和對(duì)商品的評(píng)分記錄,計(jì)算用戶間的相似性,找出最為相似的用戶的購(gòu)買商品推薦給用戶。MLlib目前有一個(gè)實(shí)現(xiàn)推薦算法的包為ALS,根據(jù)用戶對(duì)各種產(chǎn)品的交互和評(píng)分來(lái)推薦新產(chǎn)品,通過(guò)最小二乘法來(lái)求解模型。ALS在mllib.recommendation.ALS,要求輸入類型為mllib.recommendation.Rating類型的RDD,通過(guò)train訓(xùn)練出來(lái)的模型對(duì)象為mllib.recommendation.MatrixFactorizationModel。ALS有顯示評(píng)分(默認(rèn))和隱式反饋(ALS.trainImplicit()),顯示評(píng)分用戶對(duì)商品有明確評(píng)分,預(yù)測(cè)結(jié)果也是評(píng)分,隱式反饋評(píng)分是用戶和產(chǎn)品的交互置信度,預(yù)測(cè)結(jié)果也是置信度。ALS的模型優(yōu)化參數(shù)有以下幾個(gè)。rank:要使用的特征向量,更大效果更好,但是代價(jià)更大,默認(rèn)為10。iterations:要迭代的次數(shù),默認(rèn)為10。lambda:正則化參數(shù),默認(rèn)0.01。alpha:用來(lái)在隱式ALS中計(jì)算置信度的常量,默認(rèn)1.0。了解MLlib算法庫(kù)算法與算法包讀取ALS示例數(shù)據(jù)并將數(shù)據(jù)轉(zhuǎn)化為Rating類型,設(shè)置模型參數(shù),通過(guò)ALS.train的方法訓(xùn)練模型,再通過(guò)predict預(yù)測(cè)用戶對(duì)商品的評(píng)分,比較實(shí)際值和預(yù)測(cè)值來(lái)計(jì)算模型的誤差。了解MLlib算法庫(kù)算法與算法包MLlib也考慮到模型評(píng)估的重要性,在mllib.evaluation包中定義了很多函數(shù),主要分布在BinaryClassificationMetrics和MulticlassMetrics等這些類中。使用這些類,可以從(預(yù)測(cè),實(shí)際值)對(duì)組成的RDD上創(chuàng)建一個(gè)Metrics對(duì)象,計(jì)算召回率、準(zhǔn)確率、F值、ROC曲線等評(píng)價(jià)指標(biāo)。Metrics對(duì)應(yīng)方法如表所示了解MLlib算法庫(kù)MLlib中的模型評(píng)估指標(biāo)方法Precision(精確度)metrics.precisionByThresholdRecall(召回率)metrics.recallByThresholdF-measure(F值)metrics.fMeasureByThresholdROC曲線metrics.rocPrecision-Recall曲線metrics.prAreaUnderROCCurve(ROC曲線下的面積)metrics.areaUnderROCAreaUnderPrecision-RecallCurve(Precision-Recall曲線下的面積)metrics.areaUnderPR1以Logistic實(shí)現(xiàn)用戶分類目錄了解MLlib庫(kù)2“泰迪杯”數(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)用戶。以Logistic實(shí)現(xiàn)用戶分類1.背景建立分類模型,識(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)化以Logistic實(shí)現(xiàn)用戶分類分析目標(biāo)針對(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以Logistic實(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)簽作為第一列以Logistic實(shí)現(xiàn)用戶分類數(shù)據(jù)處理在數(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,代碼如右下圖所示以Logistic實(shí)現(xiàn)用戶分類數(shù)據(jù)處理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ù)。以Logistic實(shí)現(xiàn)用戶分類MLlib實(shí)現(xiàn)Logistic回歸調(diào)用MLlib中的相關(guān)類,包括實(shí)現(xiàn)模型的LogisticRegressionWithLBFGS,加載模型的LogisticRegressionModel類,輸入數(shù)據(jù)類型LabeledPoint類,以及用于評(píng)估的BinaryClassificationMetrics對(duì)象以Logistic實(shí)現(xiàn)用戶分類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)以Logistic實(shí)現(xiàn)用戶分類MLlib實(shí)現(xiàn)Logistic回歸根據(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曲線,代碼如右下圖所示以Logistic實(shí)現(xiàn)用戶分類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。以Logistic實(shí)現(xiàn)用戶分類MLlib實(shí)現(xiàn)Logistic回歸綜合precision和recall,通過(guò)F1值計(jì)算總的模
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技創(chuàng)新中的安全文明生產(chǎn)管理講解
- 2025年蘇州工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年福州黎明職業(yè)技術(shù)學(xué)院高職單招高職單招英語(yǔ)2016-2024歷年頻考點(diǎn)試題含答案解析
- 高效閱讀法與家庭教育親子共讀的魅力
- 教育心理學(xué)在實(shí)驗(yàn)教學(xué)中的運(yùn)用與資源開(kāi)發(fā)
- 技術(shù)創(chuàng)新與農(nóng)業(yè)可持續(xù)發(fā)展路徑研究
- 2025年湖南鐵路科技職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年常考版參考題庫(kù)含答案解析
- 2025年湖南民族職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025至2030年FSO圖像光傳輸教學(xué)演示系統(tǒng)項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年鑄銅網(wǎng)球運(yùn)動(dòng)員項(xiàng)目可行性研究報(bào)告
- 2025年度新能源汽車充電站運(yùn)營(yíng)權(quán)轉(zhuǎn)讓合同樣本4篇
- 第5課 隋唐時(shí)期的民族交往與交融 課件(23張) 2024-2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 2024年全國(guó)職業(yè)院校技能大賽高職組(生產(chǎn)事故應(yīng)急救援賽項(xiàng))考試題庫(kù)(含答案)
- 老年上消化道出血急診診療專家共識(shí)2024
- 廣東省廣州黃埔區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期期末物理試卷(含答案)
- 學(xué)校安全工作計(jì)劃及行事歷
- 《GMP基礎(chǔ)知識(shí)培訓(xùn)》課件
- 2025屆江蘇省無(wú)錫市天一中學(xué)高一上數(shù)學(xué)期末質(zhì)量檢測(cè)試題含解析
- 數(shù)學(xué)家華羅庚課件
- 貴州茅臺(tái)酒股份有限公司招聘筆試題庫(kù)2024
- 《納米技術(shù)簡(jiǎn)介》課件
評(píng)論
0/150
提交評(píng)論