sparkmlib算法使用有代碼輸入輸出_第1頁
sparkmlib算法使用有代碼輸入輸出_第2頁
sparkmlib算法使用有代碼輸入輸出_第3頁
sparkmlib算法使用有代碼輸入輸出_第4頁
sparkmlib算法使用有代碼輸入輸出_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

57/58目錄第1章 分類與回歸 61.1 支持向量機 61.1.1 算法描述和定義 61.1.2 輸入?yún)?shù)和含義 61.1.3 代碼展示 61.1.4 應用場景 61.2 邏輯回歸 61.2.1 算法描述和定義 61.2.2 輸入?yún)?shù)和含義 61.2.3 代碼展示 61.2.4 應用場景 61.3 線性回歸 61.3.1 算法描述和定義 61.3.2 輸入?yún)?shù)和含義 61.3.3 代碼展示 61.3.4 應用場景 61.4 樸素貝葉斯 61.4.1 算法描述和含義 61.4.2 輸入?yún)?shù)和含義 61.4.3 代碼展示 61.4.4 應用場景 61.5 決策樹 61.5.1 算法描述和定義 71.5.2 輸入?yún)?shù)和含義 71.5.3 代碼展示 71.5.4 應用場景 71.6 隨機森林 71.6.1 算法描述和定義 71.6.2 輸入?yún)?shù)和含義 71.6.3 代碼展示 71.6.4 應用場景 71.7 梯度提升樹 71.7.1 算法描述和定義 71.7.2 輸入?yún)?shù)和含義 71.7.3 代碼展示 71.7.4 應用場景 71.8 保序回歸 71.8.1 算法描述和定義 71.8.2 輸入?yún)?shù)和含義 71.8.3 代碼展示 71.8.4 應用場景 7第2章 協(xié)同過濾 82.1 算法描述和定義 82.2 輸入?yún)?shù)和含義 82.3 代碼展示 82.4 應用場景 8第3章 聚類 93.1 K-means 93.1.1 算法描述和定義 93.1.2 輸入?yún)?shù)和含義 93.1.3 代碼展示 93.1.4 應用場景 93.2 高斯混合 93.2.1 算法描述和定義 93.2.2 輸入?yún)?shù)和含義 93.2.3 代碼展示 93.2.4 應用場景 93.3 快速迭代聚類(圖片) 93.3.1 算法描述和定義 103.3.2 輸入?yún)?shù)和含義 103.3.3 代碼展示 103.3.4 應用場景 103.4 三層貝葉斯概率模型 103.4.1 算法描述和定義 103.4.2 輸入?yún)?shù)和含義 103.4.3 代碼展示 103.4.4 應用場景 103.5 二分K-means聚類 103.5.1 算法描述和定義 103.5.2 輸入?yún)?shù)和含義 103.5.3 代碼展示 103.5.4 應用場景 103.6 流K-means 103.6.1 算法描述和定義 103.6.2 輸入?yún)?shù)和含義 103.6.3 代碼展示 103.6.4 應用場景 10第4章 降維算法 114.1 奇異值分解 114.1.1 算法描述和定義 114.1.2 輸入?yún)?shù)和含義 114.1.3 代碼展示 114.1.4 應用場景 114.2 主成分分析(PCA) 114.2.1 算法描述和定義 114.2.2 輸入?yún)?shù)和含義 114.2.3 代碼展示 114.2.4 應用場景 11第5章 統(tǒng)計 125.1 相關(guān)統(tǒng)計 125.1.1 算法描述和定義 125.1.2 輸入?yún)?shù)和含義 125.1.3 代碼展示 125.1.4 應用場景 125.2 分層采樣 125.2.1 算法描述和定義 125.2.2 輸入?yún)?shù)和含義 125.2.3 代碼展示 125.2.4 應用場景 125.3 假設(shè)檢驗 125.3.1 算法描述和定義 125.3.2 輸入?yún)?shù)和含義 125.3.3 代碼展示 125.3.4 應用場景 125.4 流式顯著性測試 125.4.1 算法描述和定義 125.4.2 輸入?yún)?shù)和含義 125.4.3 代碼展示 125.4.4 應用場景 125.5 隨機數(shù)發(fā)生器 125.5.1 算法描述和定義 135.5.2 輸入?yún)?shù)和含義 135.5.3 代碼展示 135.5.4 應用場景 135.6 核密度估計 135.6.1 算法描述和定義 135.6.2 輸入?yún)?shù)和含義 135.6.3 代碼展示 135.6.4 應用場景 13第6章 特征抽取和變換 146.1 TF-IDF 146.1.1 算法描述和定義 146.1.2 輸入?yún)?shù)和含義 146.1.3 代碼展示 146.1.4 應用場景 146.2 詞到變量 146.2.1 算法描述和定義 146.2.2 輸入?yún)?shù)和含義 146.2.3 代碼展示 146.2.4 應用場景 146.3 標準化 146.3.1 算法描述和定義 146.3.2 輸入?yún)?shù)和含義 146.3.3 代碼展示 146.3.4 應用場景 146.4 正規(guī)化 146.4.1 算法描述和定義 146.4.2 輸入?yún)?shù)和含義 146.4.3 代碼展示 146.4.4 應用場景 14

分類與回歸支持向量機算法描述和定義神經(jīng)網(wǎng)絡(luò)與支持向量機(包含核方法)都是非線性分類模型。1986年,Rummelhart與McClelland創(chuàng)造了神經(jīng)網(wǎng)絡(luò)的學習算法BackPropagation。后來,Vapnik等人于1992年提出了支持向量機。神經(jīng)網(wǎng)絡(luò)是多層(通常是三層)的非線性模型,支持向量機利用核技巧把非線性問題轉(zhuǎn)換成線性問題。

神經(jīng)網(wǎng)絡(luò)與支持向量機一直處于“競爭〞關(guān)系。

Scholkopf是Vapnik的大弟子,支持向量機與核方法研究的領(lǐng)軍人物。據(jù)Scholkopf說,Vapnik當初創(chuàng)造支持向量機就是想’干掉’神經(jīng)網(wǎng)絡(luò)(HewantedtokillNeuralNetwork)。支持向量機確實很有效,一段時間支持向量機一派占了上風。由于HYPERLINK神經(jīng)網(wǎng)絡(luò)等較新興的HYPERLINK機器學習方法的研究遇到一些重要的困難,比方如何確定網(wǎng)絡(luò)結(jié)構(gòu)的問題、過學習與欠學習問題、局部極小點問題等,使得SVM迅速開展和完善,在解決小樣本、非線性及高維模式識別問題中表現(xiàn)出許多特有的優(yōu)勢,并能夠推廣應用到函數(shù)擬合等其他HYPERLINK機器學習問題中.從此迅速的開展起來現(xiàn)在已經(jīng)在許多領(lǐng)域(生物信息學,文本和手寫識別等)都取得了成功的應用。在地球物理反演當中解決非線性反演也有顯著成效,例如(支持向量機在預測地下水涌水量問題等)?,F(xiàn)在該算法被被應用的主要有:石油測井中利用測井資料預測地層孔隙度及粘粒含量、天氣預報工作等。通過核函數(shù)將特征映射到其他維度輸入?yún)?shù)和含義代碼展示importjava.text.SimpleDateFormatimportjava.util.Dateimportorg.apache.spark.mllib.classification.{SVMModel,SVMWithSGD}importorg.apache.spark.mllib.evaluation.BinaryClassificationMetricsimportorg.apache.spark.mllib.linalg.Vectorsimportorg.apache.spark.mllib.regression.LabeledPointimportorg.apache.spark.mllib.util.MLUtilsimportorg.apache.spark.{SparkConf,SparkContext}valdata=MLUtils.loadLibSVM,"/root/sample_libsvm_data.txt")valsplits=data.randomSplit(Array(0.6,0.4),seed=11L)valtraining=splits(0).cache()valtest=splits(1)valnumIterations=10valmodel=SVMWithSGD.train(training,numIterations)valscoreAndLabels=test.map{point=>valscore=model.predict(point.features)(score,point.label)}scoreAndLabels.take(10).foreach(println)輸出數(shù)據(jù):(-893656.2467488575,0.0)(553216.1154887225,1.0)(-1030793.6628224523,0.0)(-660018.4363039621,0.0)(473494.1478776787,1.0)(474484.8472541839,1.0)(625896.1173054989,1.0)(-1179877.5567907898,0.0)(459173.33117972035,1.0)(547268.1947242465,1.0)應用場景1.主要用來處理分類問題邏輯回歸算法描述和定義邏輯回歸的模型是一個非線性模型,sigmoid函數(shù),又稱邏輯回歸函數(shù)。但是它本質(zhì)上又是一個線性回歸模型,因為除去igmoid映射函數(shù)關(guān)系,其他的步驟,算法都是線性回歸的??梢哉f,邏輯回歸,都是以線性回歸為理論支持的。只不過,線性模型,無法做到sigmoid的非線性形式,sigmoid可以輕松處理0/1分類問題輸入?yún)?shù)和含義輸入數(shù)據(jù):1|21|31|41|51|60|70|80|90|100|11代碼展示代碼展示:importorg.apache.spark.mllib.classification.LogisticRegressionWithSGDimportorg.apache.spark.mllib.linalg.Vectorsimportorg.apache.spark.mllib.regression.LabeledPointimportorg.apache.spark.{SparkConf,SparkContext}valdata=sc.textFile("/root/ttt1.txt")//獲取數(shù)據(jù)集路徑valparsedData=data.map{line=>valparts=line.split('|')LabeledPoint(parts(0).toDouble,Vectors.dense(parts(1).split('').map(_.toDouble)))}.cache()//轉(zhuǎn)化數(shù)據(jù)格式parsedData.foreach(println)valmodel=LogisticRegressionWithSGD.train(parsedData,50)println(model.predict(Vectors.dense(10)))輸出數(shù)據(jù):scala>println(model.predict(Vectors.dense(10)))0.0scala>println(model.predict(Vectors.dense(11)))0.0scala>println(model.predict(Vectors.dense(20)))0.0應用場景可用于概率預測,也可用于分類。僅能用于線性問題廣告系統(tǒng)中進行CTR預估,推薦系統(tǒng)中的預估轉(zhuǎn)換率,反垃圾系統(tǒng)中的識別垃圾內(nèi)容線性回歸算法描述和定義什么是線性回歸步驟:線性回歸分析的整個過程可以簡單描述為如下三個步驟:尋找適宜的預測函數(shù),即上文中的h(x)用來預測輸入數(shù)據(jù)的判斷結(jié)果。這個過程時非常關(guān)鍵的,需要對數(shù)據(jù)有一定的了解或分析,知道或者猜想預測函數(shù)的“大概〞形式,比方是線性函數(shù)還是非線性函數(shù),若是非線性的則無法用線性回歸來得出高質(zhì)量的結(jié)果。2.構(gòu)造一個Loss函數(shù)(損失函數(shù)),該函數(shù)表示預測的輸出(h)與訓練數(shù)據(jù)標簽之間的偏差,可以是二者之間的差(h-y)或者是其他的形式(如平方差開方)。綜合考慮所有訓練數(shù)據(jù)的“損失〞,將Loss求和或者求平均,記為J(θ)函數(shù),表示所有訓練數(shù)據(jù)預測值與實際類別的偏差。3.顯然,J(θ)函數(shù)的值越小表示預測函數(shù)越準確(即h函數(shù)越準確),所以這一步需要做的是找到J(θ)函數(shù)的最小值。找函數(shù)的最小值有不同的方法,Spark中采用的是梯度下降法(stochasticgradientdescent,SGD)。輸入?yún)?shù)和含義代碼展示輸入數(shù)據(jù):銷量廣告費價格10,538,436,3312,63代碼:importorg.apache.spark.mllib.linalg.Vectorsimportorg.apache.spark.mllib.regression.{LinearRegressionWithSGD,LabeledPoint}importorg.apache.spark.{SparkConf,SparkContext}valdata=sc.textFile("/root/ttt.txt")//獲取數(shù)據(jù)集路徑valparsedData=data.map{line=>//開始對數(shù)據(jù)集處理valparts=line.split(',')//根據(jù)逗號進行分區(qū)LabeledPoint(parts(0).toDouble,Vectors.dense(parts(1).split('').map(_.toDouble)))}.cache()//轉(zhuǎn)化數(shù)據(jù)格式parsedData.foreach(println)valmodel=LogisticRegressionWithSGD.train(parsedData,50)//建立模型println(result)//打印預測結(jié)果輸出數(shù)據(jù):scala>valresult=model.predict(Vectors.dense(5,3))//通過模型預測模型result:Double=9.853582413207473scala>valresult=model.predict(Vectors.dense(10,3))result:Double=17.454890879861697應用場景營銷和促銷分析,如評估直接郵件促銷或一個電臺廣告活動的成功情況。根據(jù)歷史數(shù)據(jù)預測股票升降、匯率浮動或其他頻繁變動的金融信息。分析制造和工業(yè)流程。文本挖掘。分析多個輸入和相對較少的輸出之間的復雜關(guān)系的任何預測模型樸素貝葉斯算法描述和含義描述:對于給出的待分類項,求解在此項出現(xiàn)的條件下各個類別出現(xiàn)的概率,哪個最大,就認為此待分類項屬于哪個類別步驟: (1)根據(jù)具體情況確定特征屬性,并對每個特征屬性進行適當劃分,然后由人工對一局部待分類項進行分類,形成訓練樣本集合。這一階段的輸入是所有待分類數(shù)據(jù),輸出是特征屬性和訓練樣本(2)生成分類器,即計算每個類別在訓練樣本中的出現(xiàn)頻率及每個特征屬性劃分對每個類別的條件概率估計,并將結(jié)果記錄(3)使用分類器對待分類項進行分類,其輸入是分類器和待分類項,輸出是待分類項與類別的映射關(guān)系,由程序完成。輸入?yún)?shù)和含義1.輸入數(shù)據(jù)是LabeledPoint格式 2.lambda:參數(shù)為平滑參數(shù),默認為1,可改 3.modelType:貝葉斯類型,多項為multinomial代碼展示數(shù)據(jù):代碼:結(jié)果:應用場景醫(yī)生對病人進行診斷賬號分類等決策樹算法描述和定義描述:是一個預測模型,它表示對象屬性和對象值之間的一種映射,樹中的每一個節(jié)點表示對象屬性的判斷條件,其分支表示符合節(jié)點條件的對象。樹的葉子節(jié)點表示對象所屬的預測結(jié)果步驟:1.將所有記錄看作是一個節(jié)點2.遍歷每個變量的每種分割方式,找到最好的分割點3.利用分割點將記錄分割成兩個子結(jié)點C1和C24.對子結(jié)點C1和C2重復執(zhí)行步驟b)、c),直到滿足特定條件為止輸入?yún)?shù)和含義 1.numClasses:分類數(shù) 2.categoricalFeaturesInfo:為空則意味著所有的特征為連續(xù)變量 3.impurity:純度計算 4.numTrees:樹的個數(shù) 5.maxDepth:樹的最大層數(shù) 6.maxBins:特征最大裝箱數(shù)輸入?yún)?shù)和含義代碼展示數(shù)據(jù):代碼:結(jié)果:應用場景作為分類、預測問題的典型支持技術(shù),它在用戶劃分、行為預測、規(guī)則梳理等方面具有廣泛的應用前景隨機森林算法描述和定義描述:使用隨機的方式建立一個森林,森林里面有很多的決策樹組成,隨機森林的每一棵決策樹之間是沒有關(guān)聯(lián)的。在得到森林之后,當有一個新的輸入樣本進入的時候,就讓森林的每一棵決策樹分別進行一下判斷,看看這個樣本應該屬于哪一類(對于分類算法),然后看看哪一類能被選擇最多,就預測這個樣本為那一類。步驟:從樣本集中有放回隨機采樣選出n個樣本從所有特征中隨機選擇k個特征,對選出的樣本利用這些特征建立決策樹重復以上兩步m次,即生成m棵決策樹,形成隨機森林對于新數(shù)據(jù),經(jīng)過每棵樹決策,最后投票確認分到哪一類輸入?yún)?shù)和含義 1.numClasses:分類數(shù) 2.categoricalFeaturesInfo:為空則意味著所有的特征為連續(xù)變量 3.impurity:純度計算 4.numTrees:樹的個數(shù) 5.maxDepth:樹的最大層數(shù) 6.maxBins:特征最大裝箱數(shù) 7.featureSubsetStrategy:特征子集采樣策略,auto表示算法自取代碼展示數(shù)據(jù):測試數(shù)據(jù): 代碼:預測結(jié)果和決策樹:應用場景網(wǎng)絡(luò)游戲流失預測的場景,人體識別梯度提升樹算法描述和定義思想:Boosting思想是訓練多個模型,利用每個模型進行投票,每個模型的權(quán)重都一樣,對于分類問題,取總票數(shù)最多作為分類,對于回歸,取平均值。利用多個弱分類器,集成一個性能高的分類器,梯度提升樹采用的是boosting的思想每一次建立模型是在之前建立模型損失函數(shù)的梯度下降方向。這句話有一點拗口,損失函數(shù)描述的是模型的不靠譜程度,損失函數(shù)越大,則說明模型越容易出錯(其實這里有一個方差、偏差均衡的問題,但是這里就假設(shè)損失函數(shù)越大,模型越容易出錯)。如果我們的模型能夠讓損失函數(shù)持續(xù)的下降,則說明我們的模型在不停的改良,而最好的方式就是讓損失函數(shù)在其梯度的方向上下降。輸入?yún)?shù)和含義 1.boostingStrategy:要說明是分類還是回歸 2.trainingData:訓練數(shù)據(jù)代碼展示代碼:結(jié)果:應用場景點擊率預測,幾乎可用于所有的回歸問題(線性/非線性),也可以用來做搜索引擎排序應用RankNet、推薦算法保序回歸算法描述和定義從該序列的首元素往后觀察,一旦出現(xiàn)亂序現(xiàn)象停止該輪觀察,從該亂序元素開始逐個吸收元素組成一個序列,直到該序列所有元素的平均值小于或等于下一個待吸收的元素。輸入?yún)?shù)和含義1.輸入數(shù)據(jù)以(feature,label)進行排序代碼展示輸入數(shù)據(jù):代碼:結(jié)果展示:應用場景判斷藥物是否有陽性反應等協(xié)同過濾算法描述和定義描述:協(xié)同過濾是利用集體智慧的一個典型方法。要理解什么是協(xié)同過濾(CollaborativeFiltering,簡稱CF),首先想一個簡單的問題,如果你現(xiàn)在想看個電影,但你不知道具體看哪部,你會怎么做?大局部的人會問問周圍的朋友,看看最近有什么好看的電影推薦,而我們一般更傾向于從口味比較類似的朋友那里得到推薦。這就是協(xié)同過濾的核心思想步驟:收集用戶偏好找到相似的用戶和物品計算并推薦輸入?yún)?shù)和含義用戶電影評分1::480::51::520::51::539::51::586::51::588::51::589::51::594::51::616::52::110::52::151::32::260::53::1148::43::1246::43::1252::4代碼展示valsplits=ratings.randomSplit(Array(0.8,0.2),seed=111l)valtraining=splits(0).repartition(numPartitions)valtest=splits(1).repartition(numPartitions)valrank=12vallambda=0.01valnumIterations=20valmodel=ALS.train(ratings,rank,numIterations,lambda)users.take(5)//Array[Int]=Array(384,1084,4904,3702,5618)查看用戶編號為384的用戶的預測結(jié)果中預測評分排前10的商品:valuserId=users.take(1)(0)//384valK=10valtopKRecs=model.recommendProducts(userId,K)println(topKRecs.mkString("\n"))//Rating(384,2545,8.354966018818265)//Rating(384,129,8.1676)//Rating(384,184,8.0381)//Rating(384,811,7.983433591425284)//Rating(384,1421,7.9125)//Rating(384,1313,7.719639594879865)//Rating(384,2892,7.53667094600392)輸出數(shù)據(jù)集:基于用戶的推薦:384用戶預測評分前4個//Rating(384,2545,8.354966018818265)//Rating(384,129,8.1676)//Rating(384,184,8.0381)//Rating(384,811,7.983433591425284)基于商品的推薦:顯示跟該用戶評分商品最相近的商品//(2055,0.9999999999999999)//(2051,0.95874)//(3520,0.8739823400539756)//(2190,0.8718466671129721)//(2050,0.8612639515847019)//(1011,0.8466911667526461)//(2903,0.8455764332511272)實時推薦可以把訓練出來的模型保存,發(fā)布成web接口,在啟動的時候生成或加載訓練模型,然后提供API接口返回推薦接口valdata=sc.textFile("data/ml-1m/ratings.dat")接下來解析文件內(nèi)容,獲得用戶對商品的評分記錄:valratings=data.map(_.split("::")match{caseArray(user,item,rate,ts)=>Rating(user.toInt,item.toInt,rate.toDouble)}).cache()應用場景推薦物品發(fā)現(xiàn)興趣相似的用戶聚類K-means算法描述和定義步驟: 1.選擇K個點作為初始聚類中心2.計算其余所有點到聚類中心的距離,并把每個點劃分到離它最近的聚類中心所在的聚類中去。3.重新計算每個聚類中所有點的平均值,并將其作為新的聚類中心點算法在初始點選擇上遵循一個根本原則:初始聚類中心點相互之間的距離應該盡可能的遠輸入?yún)?shù)和含義1.k

表示期望的聚類的個數(shù)。2.maxInterations

表示方法單次運行最大的迭代次數(shù)。3.runs

表示算法被運行的次數(shù)。K-means算法不保證能返回全局最優(yōu)的聚類結(jié)果,所以在目標數(shù)據(jù)集上屢次跑K-means算法,有助于返回最正確聚類結(jié)果。4.initializationMode

表示初始聚類中心點的選擇方式,目前支持隨機選擇或者K-means||方式。默認是K-means||。5.initializationSteps表示K-means||方法中的部數(shù)。6.epsilon

表示K-means算法迭代收斂的閥值。7.seed

表示集群初始化時的隨機種子。代碼展示輸入數(shù)據(jù):代碼:輸出結(jié)果:K選擇例如代碼片段valks:Array[Int]=Array(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)ks.foreach(cluster=>{valmodel:KMeansModel=KMeans.train(parsedTrainingData,cluster,30,1)valssd=puteCost(parsedTrainingData)println("sumofsquareddistancesofpointstotheirnearestcenterwhenk="+cluster+"->"+ssd))}應用場景一般是用來對數(shù)據(jù)對象按照其特征屬性進行分組,經(jīng)常被應用在客戶分群,欺詐檢測,圖像分析等領(lǐng)域高斯混合算法描述和定義描述:它實際上與K-Means十分相像,主要的不同在于K-Means的結(jié)果是某個點被分到了某個類上,而GMM得到的結(jié)果則是某個點屬于某一類的概率是多少思路:給定數(shù)據(jù),假定它們是由GMM生成出來的,那么我們只要根據(jù)數(shù)據(jù)推出GMM的概率分布來就可以了GMM的實現(xiàn)過程中,主要涉及三個scala文件:1.GuassianMixtureModel.scala。管理混合高斯模型,主要參數(shù)是weights(各個高斯分布的權(quán)重組成的數(shù)組)、gaussians(各個多元高斯分布組成的數(shù)組)。2.GaussianMixture.scala。訓練高斯混合模型的主要類,主要參數(shù)有k(聚類數(shù))、convergenceTol(似然函數(shù)收斂閾值)、maxIterations(迭代次數(shù))。3.MultivariateGaussian.scala。多元高斯分布類,主要參數(shù)有mu(各個特征的平均值)、sigma(各個特征之間的協(xié)方差)。輸入?yún)?shù)和含義1.kisthenumberofdesiredclusters.//期望得到的聚類數(shù)2.convergenceTolisthemaximumchangeinlog-likelihoodatwhichweconsiderconvergenceachieved.//收斂閾值3.maxIterationsisthemaximumnumberofiterationstoperformwithoutreachingconvergence.//最大迭代次數(shù)4.initialModelisanoptionalstartingpointfromwhichtostarttheEMalgorithm.Ifthisparameterisomitted,arandomstartingpointwillbeconstructedfromthedata.//初始模型,如果該參數(shù)被省略,則使用一個隨機的初始點代碼展示代碼:結(jié)果:應用場景快速迭代聚類(圖片)算法描述和定義有幾個步驟或關(guān)鍵的地方:HYPERLINK網(wǎng)絡(luò)或關(guān)聯(lián)的現(xiàn)象在現(xiàn)代社會中非常普遍,比方電話網(wǎng)絡(luò),社交網(wǎng)絡(luò),網(wǎng)頁的鏈接,文獻的引用,基因分析等等。用我們能夠理解的方式來思考關(guān)系,最直接也最直觀的方式就是關(guān)系圖: 但是這個方式只能針對簡單關(guān)系,節(jié)點多了,聯(lián)系復雜了也就沒法繼續(xù)玩下去了。像下面這種關(guān)系網(wǎng)絡(luò)該怎么用手工的方式畫出來和分析呢?而這種復雜的關(guān)系圖在電話、微博、微信中卻是再常見不過的了。步驟:1、先將關(guān)系圖轉(zhuǎn)為矩陣表示,識別號需要轉(zhuǎn)換為從0開始的索引數(shù)2、初始向量為每行初值之和除以矩陣總和,即初始向量的構(gòu)成和歸一化3、對矩陣的每行做歸一化處理,使其轉(zhuǎn)變?yōu)殡S機矩陣【或稱概率轉(zhuǎn)移矩陣,總之是這類矩陣的名字而已】4、其中(2)的處理比較特別。按理可以是任意非零向量,但按(2)的方式得到的初始向量收斂到穩(wěn)態(tài)的速度很快5、迭代后得到的向量再對其做歸一化處理輸入?yún)?shù)和含義代碼展示代碼:輸出結(jié)果:應用場景以應用到電話關(guān)聯(lián)中的用戶分類當中分類后可以對用戶做群體操作三層貝葉斯概率模型算法描述和定義LDA是給文本建模的一種方法,屬于生成模型。生成模型是指該模型可以隨機生成可觀測的數(shù)據(jù),LDA可以隨機生成一篇由N個主題組成的文章。通過對文本的建模,可以對文本進行主題分類,判斷相似度等。LDA通過將文本映射到主題空間,即認為一篇文章有若干主題隨機組成,從而獲得文本間的關(guān)系。LDA模型有一個前提:bagofword。意思是認為文檔就是一個詞的集合,忽略任何語法或者出現(xiàn)順序關(guān)系。對于語料庫中的每篇文檔,LDA定義了如下生成過程(generativeprocess):1.對每一篇文檔,從主題分布中抽取一個主題;2.從上述被抽到的主題所對應的單詞分布中抽取一個單詞;3.重復上述過程直至遍歷文檔中的一個單詞。每語料庫中的每一篇文檔與T(通過反復試驗等方法事先給定)個主題的一個多項分布(multinomialdistribution)相對應,將該多項分布記為θ。每個主題又與詞匯表(vocabulary)中的V個單詞的一個多項分布相對應,將這個多項分布記為φ。LDA整體流程先定義一些字母的含義:文檔集合D,topic集合TD中每個文檔d看作一個單詞序列<w1,w2,...,wn>,wi表示第i個單詞,設(shè)d有n個單詞。(LDA里面稱之為wordbag,實際上每個單詞的出現(xiàn)位置對LDA算法無影響)D中涉及的所有不同單詞組成一個大集合VOCABULARY(簡稱VOC)LDA以文檔集合D作為輸入(會有切詞,去停用詞,取詞干等常見的預處理,略去不表),希望訓練出的兩個結(jié)果向量(設(shè)聚成k個Topic,VOC中共包含m個詞):對每個D中的文檔d,對應到不同topic的概率θd

<pt1,...,ptk

>,其中,pti表示d對應T中第i個topic的概率。計算方法是直觀的,pti=nti/n,其中nti表示d中對應第i個topic的詞的數(shù)目,n是d中所有詞的總數(shù)。對每個T中的topict,生成不同單詞的概率φt

<pw1,...,pwm

>,其中,pwi表示t生成VOC中第i個單詞的概率。計算方法同樣很直觀,pwi=Nwi/N,其中Nwi表示對應到topict的VOC中第i個單詞的數(shù)目,N表示所有對應到topict的單詞總數(shù)。LDA的核心公式如下:p(w|d)=p(w|t)*p(t|d)直觀的看這個公式,就是以Topic作為中間層,可以通過當前的θd和φt給出了文檔d中出現(xiàn)單詞w的概率。其中p(t|d)利用θd計算得到,p(w|t)利用φt計算得到。

實際上,利用當前的θd和φt,我們可以為一個文檔中的一個單詞計算它對應任意一個Topic時的p(w|d),然后根據(jù)這些結(jié)果來更新這個詞應該對應的topic。然后,如果這個更新改變了這個單詞所對應的Topic,就會反過來影響θd和φt。LDA學習過程

LDA算法開始時,先隨機地給θd和φt賦值(對所有的d和t)。然后上述過程不斷重復,最終收斂到的結(jié)果就是LDA的輸出。再詳細說一下這個迭代的學習過程:

1)針對一個特定的文檔ds中的第i單詞wi,如果令該單詞對應的topic為tj,可以把上述公式改寫為:

pj(wi|ds)=p(wi|tj)*p(tj|ds)

先不管這個值怎么計算(可以先理解成直接從θds和φtj中取對應的項。實際沒這么簡單,但對理解整個LDA流程沒什么影響,后文再說)。

2)現(xiàn)在我們可以枚舉T中的topic,得到所有的pj(wi|ds),其中j取值1~k。然后可以根據(jù)這些概率值結(jié)果為ds中的第i個單詞wi選擇一個topic。最簡單的想法是取令pj(wi|ds)最大的tj(注意,這個式子里只有j是變量),即

argmax[j]pj(wi|ds)

當然這只是一種方法(好似還不怎么常用),實際上這里怎么選擇t在學術(shù)界有很多方法,我還沒有好好去研究。

3)然后,如果ds中的第i個單詞wi在這里選擇了一個與原先不同的topic,就會對θd和φt有影響了(根據(jù)前面提到過的這兩個向量的計算公式可以很容易知道)。它們的影響又會反過來影響對上面提到的p(w|d)的計算。對D中所有的d中的所有w進行一次p(w|d)的計算并重新選擇topic看作一次迭代。這樣進行n次循環(huán)迭代之后,就會收斂到LDA所需要的結(jié)果了。HYPERLINK1.主題模型: 到底什么是主題模型。一個主題,可以簡單的認為是語義相似的詞的集合,比方說“愛〞和“喜歡〞,或者“討厭〞或者“厭惡〞一樣,所以這時候可以把主題想象成為一個桶,而桶里面放的是出現(xiàn)概率較高的詞,并且這些詞和主題有著很強的相關(guān)性。2.生成模型:現(xiàn)在假設(shè)我們有大量的文檔,那么我們怎么能夠生成主題呢?這時候要用到生成模型的概念,讓我們用概率模型,來寫一篇文章。假設(shè)說我們要寫一篇文章,那么這篇文章主要是關(guān)于什么的呢,也就是說它的主題是什么呢?哦,是關(guān)于愛情、親情和友情的。并且這些主題在文章中都占有一定的比例,或者說主題在文檔中具有一定的分布(多項式分布)。那么接下來怎么去表達這些主題呢?嗯,用句子表達。當然再細化一下,就是使用詞語來表達,也就是從一個主題的“桶〞里面挑選出來詞語,而這些詞語在主題當中又服從一定的分布(多項式分布)(通常這些詞要進行一定的預處理,比方剔除stopword,對于英文來說還要stemming,當然中文似乎不用stemming了)。所以說一篇文章可以這樣立體化的表示: doc

|

|

|...

|

topic_1

topic_2

topic_m

topic_i

|

|

|...

|

word_1

word_2

word_n

所以說一篇文章中的每個詞可以是通過以一定的概率選擇了某個主題(正如選擇了愛情、親情這樣的主題一樣),然后從這個主題當中又以一定的概率選擇詞語來進行表達,這樣的過程就是一個生成模型。在這樣的定義下,每篇文檔中詞語出現(xiàn)的概率為:使用矩陣表示就是:其中C中的每一列表示每個文檔中詞語出現(xiàn)的概率(或者說成文檔中詞語的分布),Φ中的每一列表示每個主題中每個單詞出現(xiàn)的概率,θ每一列表示文檔中每個主題出現(xiàn)的概率。產(chǎn)生文章過程:對于一篇文檔,我們通過p(θ|α)產(chǎn)生θ,這是主題在此文檔中對應的多項分布,通過多項分布抽取一個主題Z,然后我們再從主題Z對應的多項分布中抽取一個單詞w。將這個過程重復N次便產(chǎn)生了一篇文章。用語言表述的話:

1.對每一篇文檔,從主題分布中抽取一個主題;2.從上述被抽到的主題所對應的單詞分布中抽取一個單詞;3.重復上述過程直至遍歷文檔中的每一個單詞。HYPERLINK輸入?yún)?shù)和含義每一列代表一個單詞代碼展示輸出結(jié)果:應用場景1.判斷兩個文檔的關(guān)聯(lián)程度使用的方法是查看兩個文檔中出現(xiàn)相同的單詞的個數(shù),就如HYPERLINKTF-IDF,這種方法未能夠找到隱藏到文本后面的主題關(guān)聯(lián)(或者語義關(guān)聯(lián)),可能兩個文檔包含的相同的單詞不多,但是他們表達的主題卻是一樣或者相似的。正如:“喬布斯離我們而去了。〞和“蘋果價格會不會降〞一樣。2.可以用在商品銷售量的主題提取當中通過不同的銷售量得到相應的主題以及主題中最主要的銷售商品有哪些二分K-means聚類算法描述和定義步驟:1.初始化全部點的質(zhì)心,并建立所需要的數(shù)據(jù)存儲結(jié)構(gòu)2.對每一個簇嘗試二分(最開始就是一個簇),選出最好的3.更新各個簇的元素個數(shù)算法主要分為以下步驟,一開始是把所有數(shù)據(jù)初始化為一個cluster,第二步從所有cluster中選其中一個出來用根本k-means算法(k設(shè)為2)再劃分成兩個cluster(初始時只有一個cluster).然后是一直重復第二步的劃分(選一個cluster劃成兩個)直到得到k個cluster算法停止。算法如下:1.把所有數(shù)據(jù)作為一個cluster參加clusterlist2.Repeat3.

從clusterlist中挑選一個SSE[最大]的cluster出來4.

fori=1to預設(shè)的循環(huán)次數(shù)5.

用k-means算法把挑出來的cluster劃分成兩個子cluster6.

計算兩個子cluster的SSE和7.

endfor8.

把for循環(huán)中[sse和最小的]那兩個子cluster參加clusterlist9.untilclusterlist擁有K個cluster輸入?yún)?shù)和含義代碼展示代碼:結(jié)果:應用場景克服K均值算法收斂于局部最小值的問題分析一個公司的客戶分類電子商務中分析商品相似度,歸類商品流K-means算法描述和定義輸入?yún)?shù)和含義searcher

-ASearcherthatisusedforperformingnearestneighborsearch.ItMUSTBEEMPTYinitiallybecauseitwillbeusedtokeeptrackoftheclustercentroids.numClusters

-Anestimatednumberofclusterstogenerateforthedatapoints.Thiscanadjusted,buttheactualnumberwilldependonthedata.ThedistanceCutoff

-Theinitialdistancecutoffrepresentingthevalueofthedistancebetweenapointanditsclosestcentroidafterwhichthenewpointwilldefinitelybeassignedtoanewcluster.beta

-RatioofgeometricprogressiontousewhenincreasingdistanceCutoff.Afternincreases,distanceCutoffbecomesdistanceCutoff*beta^n.AsmallervalueincreasesthedistanceCutofflessaggressively.clusterLogFactor

-Valuemultipliedwiththenumberofpointscountedsofarestimatingthenumberofclusterstoaimfor.Ifthefinalnumberofclustersisknownandthisclusteringisonlyforasketchofthedata,thiscanbethefinalnumberofclusters,k.clusterOvershoot

-Multiplicativeslackfactorforslowingdownthecollapseoftheclusters.可以通過stream處理增量的培訓數(shù)據(jù)和測試數(shù)據(jù)代碼展示代碼:局部輸出結(jié)果:應用場景降維算法奇異值分解算法描述和定義思想:SVD的想法抽象點來看就是將一個N行M列的評分矩陣R(R[u][i]代表第u個用戶對第i個物品的評分),分解成一個N行F列的用戶因子矩陣P(P[u][k]表示用戶u對因子k的喜好程度)和一個M行F列的物品因子矩陣Q(Q[i][k]表示第i個物品的因子k的程度)輸入?yún)?shù)和含義 1.K:矩陣列數(shù)代碼展示輸入數(shù)據(jù): 代碼:結(jié)果展示:RowMatrix矩陣左奇異向量奇異值右奇異值應用場景比方做featurereduction的PCA,還有做搜索引擎語義層次檢索的LSI(LatentSemanticIndexing),LSA(隱性語義分析)、推薦系統(tǒng)、特征壓縮(或稱數(shù)據(jù)降維),基于SVD的協(xié)同過濾推薦系統(tǒng)主成分分析(PCA)算法描述和定義定義:可以將特征向量投影到低維空間,實現(xiàn)對特征向量的降維步驟:數(shù)據(jù)預處理。這里預處理包含兩個局部:均值歸一化和屬性范圍調(diào)整。均值歸一化是相應屬性減去其平均值;而屬性范圍則在歸一化基礎(chǔ)上除以屬性方差。計算特征之間的協(xié)方差矩陣。該矩陣是一個n*n的對稱矩陣計算協(xié)方差矩陣的特征值和特征向量將特征值從大到小排序保存最上面的N個特征向量將原數(shù)據(jù)映射到由N個特征向量構(gòu)成的新空間中輸入?yún)?shù)和含義局部數(shù)據(jù):代碼展示代碼:結(jié)果展示:應用場景主要用作降維處理,對數(shù)據(jù)進行預處理統(tǒng)計相關(guān)統(tǒng)計算法描述和定義相關(guān)系數(shù)是用以反映變量之間相關(guān)關(guān)系密切程度的統(tǒng)計指標。簡單的來說就是相關(guān)系數(shù)絕對值越大(值越接近1或者-1),當取值為0表示不相關(guān),取值為(0~-1]表示負相關(guān),取值為(0,

1]表示正相關(guān)。則表示數(shù)據(jù)越可進行線性擬合。輸入?yún)?shù)和含義1.0,2.0,3.0,4.05.0,6.0,6.0,6.0代碼展示應用場景1.估計某地家用電器的潛在用戶分層采樣算法描述和定義定義:根據(jù)在抽樣時,將總體分成互不交叉的層,然后按照一定的比例,從各層獨立地抽取一定數(shù)量的個體,將各層取出的個體合在一起作為樣本輸入?yún)?shù)和含義將字符串長度為2劃分為層1和層2,對層1和層2按不同的概率進行抽樣

數(shù)據(jù)aabbccddeeaaabbbcccDddeee代碼展示輸出數(shù)據(jù):(2,aa)(1,bbb)(2,bb)(1,ccc)(2,cc)(1,ddd)(2,dd)(1,eee)(2,ee)(1,aaa)應用場景范圍:總體中由差異明顯的幾局部組成即可卡方檢驗算法描述和定義描述:卡方檢驗是對樣本的頻數(shù)分布所來自總體分布是否服從某種理論分布或某種假設(shè)分所所作的假設(shè)檢驗??ǚ綑z驗在多數(shù)情況下不是對總體參數(shù)的檢驗,而是對總體分布的假設(shè)檢驗。所以,卡方檢驗屬于自由分布的非參數(shù)檢驗??ǚ綑z驗可以同時處理一個因素分為多種類別,或多種因素各有多種類別的資料。總之,但凡可以應用比率進行檢驗的資料,都可以應用卡方檢驗。輸入?yún)?shù)和含義分析一下吸煙與性別是否獨立代碼展示代碼:結(jié)果: 統(tǒng)計量:pearson、獨立性:1、值:5.48、概率:0.019。應用場景1.特定用戶某項指標的分布與大盤的分布是否差異很大隨機數(shù)發(fā)生器算法描述和定義描述:用于隨機數(shù)的生成,眾所周知,我們平時所使用的無論什么編程語言都會提供一個隨機數(shù)函數(shù),它是由HYPERLINK\o"算法與數(shù)據(jù)結(jié)構(gòu)知識庫"算法計算得出的,是可以預測的,也就是說當隨機種子相同時,對于同一個隨機函數(shù),得出的隨機數(shù)列是固定不變的,與之對應的就是真隨機數(shù)它是真正的隨機數(shù),無法預測且無周期性;真隨機數(shù)發(fā)生器。輸入?yún)?shù)和含義代碼展示println("normalRDD:")valrandomNum=normalRDD(sc,3)randomNum.foreach(println)println("uniformRDD:")uniformRDD(sc,3).foreach(println)println("poissonRDD:")poissonRDD(sc,5,3).foreach(println)println("exponentialRDD:")exponentialRDD(sc,7,3).foreach(println)println("gammaRDD:")gammaRDD(sc,3,3,3).foreach(println)結(jié)果展示:normalRDD:0.1946550.428476258336029260.432676150766411uniformRDD:0.24384505520726240.737410.24235558263747725poissonRDD:2.02.04.0exponentialRDD:12.21494.6825545782205040.9758739534780947gammaRDD:15.36294549067940112.56916.284582685039609應用場景列統(tǒng)計匯總算法描述和定義描述:計算每列最大值、最小值、平均值、方差值、L1范數(shù)、L2范數(shù)輸入?yún)?shù)和含義輸入數(shù)據(jù)1.1,1

溫馨提示

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

評論

0/150

提交評論