




已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄第1章分類與回歸61.1支持向量機(jī)61.1.1算法描述和定義61.1.2輸入?yún)?shù)和含義61.1.3代碼展示61.1.4應(yīng)用場(chǎng)景61.2邏輯回歸61.2.1算法描述和定義61.2.2輸入?yún)?shù)和含義61.2.3代碼展示61.2.4應(yīng)用場(chǎng)景61.3線性回歸61.3.1算法描述和定義61.3.2輸入?yún)?shù)和含義61.3.3代碼展示61.3.4應(yīng)用場(chǎng)景61.4樸素貝葉斯61.4.1算法描述和含義61.4.2輸入?yún)?shù)和含義61.4.3代碼展示61.4.4應(yīng)用場(chǎng)景61.5決策樹61.5.1算法描述和定義71.5.2輸入?yún)?shù)和含義71.5.3代碼展示71.5.4應(yīng)用場(chǎng)景71.6隨機(jī)森林71.6.1算法描述和定義71.6.2輸入?yún)?shù)和含義71.6.3代碼展示71.6.4應(yīng)用場(chǎng)景71.7梯度提升樹71.7.1算法描述和定義71.7.2輸入?yún)?shù)和含義71.7.3代碼展示71.7.4應(yīng)用場(chǎng)景71.8保序回歸71.8.1算法描述和定義71.8.2輸入?yún)?shù)和含義71.8.3代碼展示71.8.4應(yīng)用場(chǎng)景7第2章協(xié)同過濾82.1算法描述和定義82.2輸入?yún)?shù)和含義82.3代碼展示82.4應(yīng)用場(chǎng)景8第3章聚類93.1K-means93.1.1算法描述和定義93.1.2輸入?yún)?shù)和含義93.1.3代碼展示93.1.4應(yīng)用場(chǎng)景93.2高斯混合93.2.1算法描述和定義93.2.2輸入?yún)?shù)和含義93.2.3代碼展示93.2.4應(yīng)用場(chǎng)景93.3快速迭代聚類(圖片)93.3.1算法描述和定義103.3.2輸入?yún)?shù)和含義103.3.3代碼展示103.3.4應(yīng)用場(chǎng)景103.4三層貝葉斯概率模型103.4.1算法描述和定義103.4.2輸入?yún)?shù)和含義103.4.3代碼展示103.4.4應(yīng)用場(chǎng)景103.5二分K-means聚類103.5.1算法描述和定義103.5.2輸入?yún)?shù)和含義103.5.3代碼展示103.5.4應(yīng)用場(chǎng)景103.6流K-means103.6.1算法描述和定義103.6.2輸入?yún)?shù)和含義103.6.3代碼展示103.6.4應(yīng)用場(chǎng)景10第4章降維算法114.1奇異值分解114.1.1算法描述和定義114.1.2輸入?yún)?shù)和含義114.1.3代碼展示114.1.4應(yīng)用場(chǎng)景114.2主成分分析(PCA)114.2.1算法描述和定義114.2.2輸入?yún)?shù)和含義114.2.3代碼展示114.2.4應(yīng)用場(chǎng)景11第5章統(tǒng)計(jì)125.1相關(guān)統(tǒng)計(jì)125.1.1算法描述和定義125.1.2輸入?yún)?shù)和含義125.1.3代碼展示125.1.4應(yīng)用場(chǎng)景125.2分層采樣125.2.1算法描述和定義125.2.2輸入?yún)?shù)和含義125.2.3代碼展示125.2.4應(yīng)用場(chǎng)景125.3假設(shè)檢驗(yàn)125.3.1算法描述和定義125.3.2輸入?yún)?shù)和含義125.3.3代碼展示125.3.4應(yīng)用場(chǎng)景125.4流式顯著性測(cè)試125.4.1算法描述和定義125.4.2輸入?yún)?shù)和含義125.4.3代碼展示125.4.4應(yīng)用場(chǎng)景125.5隨機(jī)數(shù)發(fā)生器125.5.1算法描述和定義135.5.2輸入?yún)?shù)和含義135.5.3代碼展示135.5.4應(yīng)用場(chǎng)景135.6核密度估計(jì)135.6.1算法描述和定義135.6.2輸入?yún)?shù)和含義135.6.3代碼展示135.6.4應(yīng)用場(chǎng)景13第6章特征抽取和變換146.1TF-IDF146.1.1算法描述和定義146.1.2輸入?yún)?shù)和含義146.1.3代碼展示146.1.4應(yīng)用場(chǎng)景146.2詞到變量146.2.1算法描述和定義146.2.2輸入?yún)?shù)和含義146.2.3代碼展示146.2.4應(yīng)用場(chǎng)景146.3標(biāo)準(zhǔn)化146.3.1算法描述和定義146.3.2輸入?yún)?shù)和含義146.3.3代碼展示146.3.4應(yīng)用場(chǎng)景146.4正規(guī)化146.4.1算法描述和定義146.4.2輸入?yún)?shù)和含義146.4.3代碼展示146.4.4應(yīng)用場(chǎng)景14第1章 分類與回歸1.1 支持向量機(jī)1.1.1 算法描述和定義神經(jīng)網(wǎng)絡(luò)與支持向量機(jī)(包含核方法)都是非線性分類模型。1986年,Rummelhart與McClelland發(fā)明了神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)算法Back Propagation。后來,Vapnik等人于1992年提出了支持向量機(jī)。神經(jīng)網(wǎng)絡(luò)是多層(通常是三層)的非線性模型,支持向量機(jī)利用核技巧把非線性問題轉(zhuǎn)換成線性問題。神經(jīng)網(wǎng)絡(luò)與支持向量機(jī)一直處于“競(jìng)爭(zhēng)”關(guān)系。Scholkopf是Vapnik的大弟子,支持向量機(jī)與核方法研究的領(lǐng)軍人物。據(jù)Scholkopf說,Vapnik當(dāng)初發(fā)明支持向量機(jī)就是想干掉神經(jīng)網(wǎng)絡(luò)(He wanted to kill Neural Network)。支持向量機(jī)確實(shí)很有效,一段時(shí)間支持向量機(jī)一派占了上風(fēng)。由于神經(jīng)網(wǎng)絡(luò)等較新興的機(jī)器學(xué)習(xí)方法的研究遇到一些重要的困難,比如如何確定網(wǎng)絡(luò)結(jié)構(gòu)的問題、過學(xué)習(xí)與欠學(xué)習(xí)問題、局部極小點(diǎn)問題等,使得SVM迅速發(fā)展和完善,在解決小樣本 、非線性及高維模式識(shí)別問題中表現(xiàn)出許多特有的優(yōu)勢(shì),并能夠推廣應(yīng)用到函數(shù)擬合等其他機(jī)器學(xué)習(xí)問題中.從此迅速的發(fā)展起來 現(xiàn)在已經(jīng)在許多領(lǐng)域(生物信息學(xué),文本和手寫識(shí)別等)都取得了成功的應(yīng)用。在地球物理反演當(dāng)中解決非線性反演也有顯著成效,例如(支持向量機(jī)在預(yù)測(cè)地下水涌水量問題等)?,F(xiàn)在已知該算法被被應(yīng)用的主要有:石油測(cè)井中利用測(cè)井資料預(yù)測(cè)地層孔隙度及粘粒含量、天氣預(yù)報(bào)工作等。通過核函數(shù)將特征映射到其他維度1.1.2 輸入?yún)?shù)和含義1.1.3 代碼展示import java.text.SimpleDateFormatimport java.util.Date import org.apache.spark.mllib.classification.SVMModel, SVMWithSGD import org.apache.spark.mllib.evaluation.BinaryClassificationMetrics import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.mllib.util.MLUtils import org.apache.spark.SparkConf, SparkContext val data = MLUtils.loadLibSVMFile(sc, /root/sample_libsvm_data.txt)val splits = data.randomSplit(Array(0.6, 0.4), seed = 11L) val training = splits(0).cache() val test = splits(1)val numIterations = 10 val model = SVMWithSGD.train(training, numIterations)val scoreAndLabels = test.map point = val score = 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.1.4 應(yīng)用場(chǎng)景1.主要用來處理分類問題1.2 邏輯回歸1.2.1 算法描述和定義邏輯回歸的模型是一個(gè)非線性模型,sigmoid函數(shù),又稱邏輯回歸函數(shù)。但是它本質(zhì)上又是一個(gè)線性回歸模型,因?yàn)槌gmoid映射函數(shù)關(guān)系,其他的步驟,算法都是線性回歸的??梢哉f,邏輯回歸,都是以線性回歸為理論支持的。只不過,線性模型,無法做到sigmoid的非線性形式,sigmoid可以輕松處理0/1分類問題1.2.2 輸入?yún)?shù)和含義輸入數(shù)據(jù):1|2 1|3 1|4 1|5 1|6 0|7 0|8 0|9 0|10 0|111.2.3 代碼展示代碼展示:import org.apache.spark.mllib.classification.LogisticRegressionWithSGD import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LabeledPoint import org.apache.spark.SparkConf, SparkContextval data = sc.textFile(/root/ttt1.txt) /獲取數(shù)據(jù)集路徑 val parsedData = data.map line = val parts = line.split(|) LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split( ).map(_.toDouble) .cache() /轉(zhuǎn)化數(shù)據(jù)格式 parsedData.foreach(println) val model = 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.01.2.4 應(yīng)用場(chǎng)景1) 可用于概率預(yù)測(cè),也可用于分類。2) 僅能用于線性問題3) 廣告系統(tǒng)中進(jìn)行CTR預(yù)估,推薦系統(tǒng)中的預(yù)估轉(zhuǎn)換率,反垃圾系統(tǒng)中的識(shí)別垃圾內(nèi)容1.3 線性回歸1.3.1 算法描述和定義什么是線性回歸步驟:線性回歸分析的整個(gè)過程可以簡(jiǎn)單描述為如下三個(gè)步驟:1. 尋找合適的預(yù)測(cè)函數(shù),即上文中的 h(x)用來預(yù)測(cè)輸入數(shù)據(jù)的判斷結(jié)果。這個(gè)過程時(shí)非常關(guān)鍵的,需要對(duì)數(shù)據(jù)有一定的了解或分析,知道或者猜測(cè)預(yù)測(cè)函數(shù)的“大概”形式,比如是線性函數(shù)還是非線性函數(shù),若是非線性的則無法用線性回歸來得出高質(zhì)量的結(jié)果。 2.構(gòu)造一個(gè)Loss函數(shù)(損失函數(shù)),該函數(shù)表示預(yù)測(cè)的輸出(h)與訓(xùn)練數(shù)據(jù)標(biāo)簽之間的偏差,可以是二者之間的差(h-y)或者是其他的形式(如平方差開方)。綜合考慮所有訓(xùn)練數(shù)據(jù)的“損失”,將Loss求和或者求平均,記為 J()函數(shù),表示所有訓(xùn)練數(shù)據(jù)預(yù)測(cè)值與實(shí)際類別的偏差。 3.顯然, J() 函數(shù)的值越小表示預(yù)測(cè)函數(shù)越準(zhǔn)確(即h函數(shù)越準(zhǔn)確),所以這一步需要做的是找到 J() 函數(shù)的最小值。找函數(shù)的最小值有不同的方法,Spark中采用的是梯度下降法(stochastic gradient descent, SGD)。1.3.2 輸入?yún)?shù)和含義1.3.3 代碼展示輸入數(shù)據(jù):銷量 廣告費(fèi) 價(jià)格10,5 38,4 36,3 312,6 3代碼:import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regression.LinearRegressionWithSGD, LabeledPoint import org.apache.spark.SparkConf, SparkContextval data = sc.textFile(/root/ttt.txt) /獲取數(shù)據(jù)集路徑 val parsedData = data.map line = /開始對(duì)數(shù)據(jù)集處理 val parts = line.split(,) /根據(jù)逗號(hào)進(jìn)行分區(qū) LabeledPoint(parts(0).toDouble, Vectors.dense(parts(1).split( ).map(_.toDouble) .cache() /轉(zhuǎn)化數(shù)據(jù)格式 parsedData.foreach(println) val model = LogisticRegressionWithSGD.train(parsedData, 50) /建立模型println(result) /打印預(yù)測(cè)結(jié)果輸出數(shù)據(jù):scala val result = model.predict(Vectors.dense(5,3) /通過模型預(yù)測(cè)模型 result: Double = 9.853582413207473scala val result = model.predict(Vectors.dense(10,3) result: Double = 17.4548908798616971.3.4 應(yīng)用場(chǎng)景 營(yíng)銷和促銷分析,如評(píng)估直接郵件促銷或一個(gè)電臺(tái)廣告活動(dòng)的成功情況。 根據(jù)歷史數(shù)據(jù)預(yù)測(cè)股票升降、匯率浮動(dòng)或其他頻繁變動(dòng)的金融信息。 分析制造和工業(yè)流程。 文本挖掘。 分析多個(gè)輸入和相對(duì)較少的輸出之間的復(fù)雜關(guān)系的任何預(yù)測(cè)模型1.4 樸素貝葉斯1.4.1 算法描述和含義描述:對(duì)于給出的待分類項(xiàng),求解在此項(xiàng)出現(xiàn)的條件下各個(gè)類別出現(xiàn)的概率,哪個(gè)最大,就認(rèn)為此待分類項(xiàng)屬于哪個(gè)類別步驟:(1)根據(jù)具體情況確定特征屬性,并對(duì)每個(gè)特征屬性進(jìn)行適當(dāng)劃分,然后由人工對(duì)一部分待分類項(xiàng)進(jìn)行分類,形成訓(xùn)練樣本集合。這一階段的輸入是所有待分類數(shù)據(jù),輸出是特征屬性和訓(xùn)練樣本(2)生成分類器,即計(jì)算每個(gè)類別在訓(xùn)練樣本中的出現(xiàn)頻率及每個(gè)特征屬性劃分對(duì)每個(gè)類別的條件概率估計(jì),并將結(jié)果記錄(3)使用分類器對(duì)待分類項(xiàng)進(jìn)行分類,其輸入是分類器和待分類項(xiàng),輸出是待分類項(xiàng)與類別的映射關(guān)系,由程序完成。1.4.2 輸入?yún)?shù)和含義1.輸入數(shù)據(jù)是LabeledPoint格式2.lambda:參數(shù)為平滑參數(shù),默認(rèn)為1,可改3.modelType:貝葉斯類型,多項(xiàng)為multinomial1.4.3 代碼展示數(shù)據(jù):代碼:結(jié)果:1.4.4 應(yīng)用場(chǎng)景1. 醫(yī)生對(duì)病人進(jìn)行診斷2. 賬號(hào)分類等1.5 決策樹1.5.1 算法描述和定義描述:是一個(gè)預(yù)測(cè)模型,它表示對(duì)象屬性和對(duì)象值之間的一種映射,樹中的每一個(gè)節(jié)點(diǎn)表示對(duì)象屬性的判斷條件,其分支表示符合節(jié)點(diǎn)條件的對(duì)象。樹的葉子節(jié)點(diǎn)表示對(duì)象所屬的預(yù)測(cè)結(jié)果步驟:1.將所有記錄看作是一個(gè)節(jié)點(diǎn)2.遍歷每個(gè)變量的每種分割方式,找到最好的分割點(diǎn)3.利用分割點(diǎn)將記錄分割成兩個(gè)子結(jié)點(diǎn) C1 和 C24.對(duì)子結(jié)點(diǎn) C1 和 C2 重復(fù)執(zhí)行步驟 b)、c),直到滿足特定條件為止1.5.2 輸入?yún)?shù)和含義1.numClasses:分類數(shù)2.categoricalFeaturesInfo:為空則意味著所有的特征為連續(xù)變量3.impurity:純度計(jì)算4.numTrees:樹的個(gè)數(shù)5.maxDepth:樹的最大層數(shù)6.maxBins:特征最大裝箱數(shù)1.5.3 輸入?yún)?shù)和含義1.5.4 代碼展示數(shù)據(jù):代碼:結(jié)果:1.5.5 應(yīng)用場(chǎng)景作為分類、預(yù)測(cè)問題的典型支持技術(shù),它在用戶劃分、行為預(yù)測(cè)、規(guī)則梳理等方面具有廣泛的應(yīng)用前景1.6 隨機(jī)森林1.6.1 算法描述和定義描述:使用隨機(jī)的方式建立一個(gè)森林,森林里面有很多的決策樹組成,隨機(jī)森林的每一棵決策樹之間是沒有關(guān)聯(lián)的。在得到森林之后,當(dāng)有一個(gè)新的輸入樣本進(jìn)入的時(shí)候, 就讓森林的每一棵決策樹分別進(jìn)行一下判斷,看看這個(gè)樣本應(yīng)該屬于哪一類(對(duì)于分類算法),然后看看哪一類能被選擇最多,就預(yù)測(cè)這個(gè)樣本為那一類。步驟:1) 從樣本集中有放回隨機(jī)采樣選出n個(gè)樣本2) 從所有特征中隨機(jī)選擇k個(gè)特征,對(duì)選出的樣本利用這些特征建立決策樹3) 重復(fù)以上兩步m次,即生成m棵決策樹,形成隨機(jī)森林4) 對(duì)于新數(shù)據(jù),經(jīng)過每棵樹決策,最后投票確認(rèn)分到哪一類1.6.2 輸入?yún)?shù)和含義1.numClasses:分類數(shù)2.categoricalFeaturesInfo:為空則意味著所有的特征為連續(xù)變量3.impurity:純度計(jì)算4.numTrees:樹的個(gè)數(shù)5.maxDepth:樹的最大層數(shù)6.maxBins:特征最大裝箱數(shù)7.featureSubsetStrategy:特征子集采樣策略,auto表示算法自取1.6.3 代碼展示數(shù)據(jù): 測(cè)試數(shù)據(jù):代碼:預(yù)測(cè)結(jié)果和決策樹:1.6.4 應(yīng)用場(chǎng)景網(wǎng)絡(luò)游戲流失預(yù)測(cè)的場(chǎng)景,人體識(shí)別1.7 梯度提升樹1.7.1 算法描述和定義思想:Boosting思想是訓(xùn)練多個(gè)模型,利用每個(gè)模型進(jìn)行投票,每個(gè)模型的權(quán)重都一樣,對(duì)于分類問題,取總票數(shù)最多作為分類,對(duì)于回歸,取平均值。利用多個(gè)弱分類器,集成一個(gè)性能高的分類器,梯度提升樹采用的是boosting的思想每一次建立模型是在之前建立模型損失函數(shù)的梯度下降方向。這句話有一點(diǎn)拗口,損失函數(shù)描述的是模型的不靠譜程度,損失函數(shù)越大,則說明模型越容易出錯(cuò)(其實(shí)這里有一個(gè)方差、偏差均衡的問題,但是這里就假設(shè)損失函數(shù)越大,模型越容易出錯(cuò))。如果我們的模型能夠讓損失函數(shù)持續(xù)的下降,則說明我們的模型在不停的改進(jìn),而最好的方式就是讓損失函數(shù)在其梯度的方向上下降。1.7.2 輸入?yún)?shù)和含義1.boostingStrategy:要說明是分類還是回歸2.trainingData:訓(xùn)練數(shù)據(jù)1.7.3 代碼展示代碼:結(jié)果:1.7.4 應(yīng)用場(chǎng)景點(diǎn)擊率預(yù)測(cè),幾乎可用于所有的回歸問題(線性/非線性),也可以用來做搜索引擎排序應(yīng)用RankNet、推薦算法1.8 保序回歸1.8.1 算法描述和定義從該序列的首元素往后觀察,一旦出現(xiàn)亂序現(xiàn)象停止該輪觀察,從該亂序元素開始逐個(gè)吸收元素組成一個(gè)序列,直到該序列所有元素的平均值小于或等于下一個(gè)待吸收的元素。1.8.2 輸入?yún)?shù)和含義1.輸入數(shù)據(jù)以(feature,label)進(jìn)行排序1.8.3 代碼展示輸入數(shù)據(jù):代碼:結(jié)果展示:1.8.4 應(yīng)用場(chǎng)景判斷藥物是否有陽性反應(yīng)等第2章 協(xié)同過濾2.1 算法描述和定義描述:協(xié)同過濾是利用集體智慧的一個(gè)典型方法。要理解什么是協(xié)同過濾 (Collaborative Filtering, 簡(jiǎn)稱CF),首先想一個(gè)簡(jiǎn)單的問題,如果你現(xiàn)在想看個(gè)電影,但你不知道具體看哪部,你會(huì)怎么做?大部分的人會(huì)問問周圍的朋友,看看最近有什么好看的電影推 薦,而我們一般更傾向于從口味比較類似的朋友那里得到推薦。這就是協(xié)同過濾的核心思想步驟:1. 收集用戶偏好2. 找到相似的用戶和物品3. 計(jì)算并推薦2.2 輸入?yún)?shù)和含義用戶 電影 評(píng)分 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:42.3 代碼展示val splits = ratings.randomSplit(Array( 0.8 , 0.2 ), seed = 111 l)val training = splits( 0 ).repartition(numPartitions)val test = splits( 1 ).repartition(numPartitions)val rank = 12val lambda = 0.01val numIterations = 20val model = ALS.train(ratings, rank, numIterations, lambda)users.take( 5 )/ArrayInt = Array(384, 1084, 4904, 3702, 5618)查看用戶編號(hào)為384的用戶的預(yù)測(cè)結(jié)果中預(yù)測(cè)評(píng)分排前10的商品:val userId = users.take( 1 )( 0 ) /384val K = 10val topKRecs = model.recommendProducts(userId, K)println(topKRecs.mkString( n )/ Rating(384,2545,8.354966018818265)/ Rating(384,129,8.113083736094676)/ Rating(384,184,8.038113395650853)/ Rating(384,811,7.983433591425284)/ Rating(384,1421,7.912044967873945)/ Rating(384,1313,7.719639594879865)/ Rating(384,2892,7.53667094600392)輸出數(shù)據(jù)集:基于用戶的推薦:384用戶預(yù)測(cè)評(píng)分前4個(gè)/ Rating(384,2545,8.354966018818265)/ Rating(384,129,8.113083736094676)/ Rating(384,184,8.038113395650853)/ Rating(384,811,7.983433591425284)基于商品的推薦:顯示跟該用戶評(píng)分商品最相近的商品/ (2055,0.9999999999999999)/ (2051,0.9138311231145874)/ (3520,0.8739823400539756)/ (2190,0.8718466671129721)/ (2050,0.8612639515847019)/ (1011,0.8466911667526461)/ (2903,0.8455764332511272)實(shí)時(shí)推薦可以把訓(xùn)練出來的模型保存,發(fā)布成web接口,在啟動(dòng)的時(shí)候生成或加載訓(xùn)練模型,然后提供API接口返回推薦接口val data = sc.textFile( data/ml-1m/ratings.dat )接下來解析文件內(nèi)容,獲得用戶對(duì)商品的評(píng)分記錄:val ratings = data.map(_.split( : ) match case Array(user, item, rate, ts) =Rating(user.toInt, item.toInt, rate.toDouble).cache()2.4 應(yīng)用場(chǎng)景1. 推薦物品2. 發(fā)現(xiàn)興趣相似的用戶第3章 聚類3.1 K-means3.1.1 算法描述和定義步驟:1.選擇 K 個(gè)點(diǎn)作為初始聚類中心2.計(jì)算其余所有點(diǎn)到聚類中心的距離,并把每個(gè)點(diǎn)劃分到離它最近的聚類中心所在的聚類中去。3. 重新計(jì)算每個(gè)聚類中所有點(diǎn)的平均值,并將其作為新的聚類中心點(diǎn)算法在初始點(diǎn)選擇上遵循一個(gè)基本原則: 初始聚類中心點(diǎn)相互之間的距離應(yīng)該盡可能的遠(yuǎn)3.1.2 輸入?yún)?shù)和含義1.k表示期望的聚類的個(gè)數(shù)。2.maxInterations表示方法單次運(yùn)行最大的迭代次數(shù)。3.runs表示算法被運(yùn)行的次數(shù)。K-means 算法不保證能返回全局最優(yōu)的聚類結(jié)果,所以在目標(biāo)數(shù)據(jù)集上多次跑 K-means 算法,有助于返回最佳聚類結(jié)果。4.initializationMode表示初始聚類中心點(diǎn)的選擇方式, 目前支持隨機(jī)選擇或者 K-means|方式。默認(rèn)是 K-means|。5.initializationSteps表示 K-means|方法中的部數(shù)。6.epsilon表示 K-means 算法迭代收斂的閥值。7.seed表示集群初始化時(shí)的隨機(jī)種子。3.1.3 代碼展示輸入數(shù)據(jù):代碼:輸出結(jié)果:K 選擇示例代碼片段val ks:ArrayInt = Array(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)ks.foreach(cluster = val model:KMeansModel = KMeans.train(parsedTrainingData, cluster,30,1) val ssd = puteCost(parsedTrainingData) println(sum of squared distances of points to their nearest center when k= + cluster + - + ssd)3.1.4 應(yīng)用場(chǎng)景一般是用來對(duì)數(shù)據(jù)對(duì)象按照其特征屬性進(jìn)行分組,經(jīng)常被應(yīng)用在客戶分群,欺詐檢測(cè),圖像分析等領(lǐng)域3.2 高斯混合3.2.1 算法描述和定義描述:它實(shí)際上與K-Means十分相像,主要的不同在于K-Means的結(jié)果是某個(gè)點(diǎn)被分到 了某個(gè)類上,而GMM得到的結(jié)果則是某個(gè)點(diǎn)屬于某一類的概率是多少思路:給定數(shù)據(jù),假定它們是由GMM生成出來的,那么我們只要根據(jù)數(shù)據(jù)推出GMM的概率分布來就可以了GMM的實(shí)現(xiàn)過程中,主要涉及三個(gè)scala文件:1.GuassianMixtureModel.scala。管理混合高斯模型,主要參數(shù)是weights(各個(gè)高斯分布的權(quán)重組成的數(shù)組)、gaussians(各個(gè)多元高斯分布組成的數(shù)組)。2.GaussianMixture.scala。訓(xùn)練高斯混合模型的主要類,主要參數(shù)有k(聚類數(shù))、convergenceTol(似然函數(shù)收斂閾值)、maxIterations(迭代次數(shù))。3.MultivariateGaussian.scala。多元高斯分布類,主要參數(shù)有mu(各個(gè)特征的平均值)、sigma(各個(gè)特征之間的協(xié)方差)。3.2.2 輸入?yún)?shù)和含義1.k is the number of desired clusters./期望得到的聚類數(shù)2.convergenceTol is the maximum change in log-likelihood at which we consider convergence achieved./收斂閾值3.maxIterations is the maximum number of iterations to perform without reaching convergence./最大迭代次數(shù)4.initialModel is an optional starting point from which to start the EM algorithm. If this parameter is omitted, a random starting point will be constructed from the data./初始模型,如果該參數(shù)被省略,則使用一個(gè)隨機(jī)的初始點(diǎn)3.2.3 代碼展示代碼:/docs/latest/mllib-clustering.html#gaussian-mixture結(jié)果:3.2.4 應(yīng)用場(chǎng)景3.3 快速迭代聚類(圖片)3.3.1 算法描述和定義有幾個(gè)步驟或關(guān)鍵的地方:/s/blog_573ef4200102wqzi.html網(wǎng)絡(luò)或關(guān)聯(lián)的現(xiàn)象在現(xiàn)代社會(huì)中非常普遍,比如電話網(wǎng)絡(luò),社交網(wǎng)絡(luò),網(wǎng)頁的鏈接,文獻(xiàn)的引用,基因分析等等。用我們能夠理解的方式來思考關(guān)系,最直接也最直觀的方式就是關(guān)系圖:但是這個(gè)方式只能針對(duì)簡(jiǎn)單關(guān)系,節(jié)點(diǎn)多了,聯(lián)系復(fù)雜了也就沒法繼續(xù)玩下去了。像下面這種關(guān)系網(wǎng)絡(luò)該怎么用手工的方式畫出來和分析呢?而這種復(fù)雜的關(guān)系圖在電話、微博、微信中卻是再常見不過的了。步驟:1、先將關(guān)系圖轉(zhuǎn)為矩陣表示,識(shí)別號(hào)需要轉(zhuǎn)換為從0開始的索引數(shù)2、初始向量為每行初值之和除以矩陣總和,即初始向量的構(gòu)成和歸一化3、對(duì)矩陣的每行做歸一化處理,使其轉(zhuǎn)變?yōu)殡S機(jī)矩陣【或稱概率轉(zhuǎn)移矩陣,總之是這類矩陣的名字而已】4、其中(2)的處理比較特別。按理可以是任意非零向量,但按(2)的方式得到的初始向量收斂到穩(wěn)態(tài)的速度很快5、迭代后得到的向量再對(duì)其做歸一化處理3.3.2 輸入?yún)?shù)和含義3.3.3 代碼展示代碼:輸出結(jié)果:3.3.4 應(yīng)用場(chǎng)景以應(yīng)用到電話關(guān)聯(lián)中的用戶分類當(dāng)中 分類后可以對(duì)用戶做群體操作3.4 三層貝葉斯概率模型3.4.1 算法描述和定義LDA是給文本建模的一種方法,屬于生成模型。生成模型是指該模型可以隨機(jī)生成可觀測(cè)的數(shù)據(jù),LDA可以隨機(jī)生成一篇由N個(gè)主題組成的文章。通過對(duì)文本的建模,可以對(duì)文本進(jìn)行主題分類,判斷相似度等。LDA通過將文本映射到主題空間,即認(rèn)為一篇文章有若干主題隨機(jī)組成,從而獲得文本間的關(guān)系。LDA模型有一個(gè)前提:bag of word。意思是認(rèn)為文檔就是一個(gè)詞的集合,忽略任何語法或者出現(xiàn)順序關(guān)系。對(duì)于語料庫中的每篇文檔,LDA定義了如下生成過程(generativeprocess):1.對(duì)每一篇文檔,從主題分布中抽取一個(gè)主題;2.從上述被抽到的主題所對(duì)應(yīng)的單詞分布中抽取一個(gè)單詞;3.重復(fù)上述過程直至遍歷文檔中的一個(gè)單詞。每語料庫中的每一篇文檔與T(通過反復(fù)試驗(yàn)等方法事先給定)個(gè)主題的一個(gè)多項(xiàng)分布 (multinomialdistribution)相對(duì)應(yīng),將該多項(xiàng)分布記為。每個(gè)主題又與詞匯表(vocabulary)中的V個(gè)單詞的一個(gè)多項(xiàng)分布相對(duì)應(yīng),將這個(gè)多項(xiàng)分布記為。LDA整體流程先定義一些字母的含義: 文檔集合D,topic集合T D中每個(gè)文檔d看作一個(gè)單詞序列,wi表示第i個(gè)單詞,設(shè)d有n個(gè)單詞。(LDA里面稱之為word bag,實(shí)際上每個(gè)單詞的出現(xiàn)位置對(duì)LDA算法無影響) D中涉及的所有不同單詞組成一個(gè)大集合VOCABULARY(簡(jiǎn)稱VOC)LDA以文檔集合D作為輸入(會(huì)有切詞,去停用詞,取詞干等常見的預(yù)處理,略去不表),希望訓(xùn)練出的兩個(gè)結(jié)果向量(設(shè)聚成k個(gè)Topic,VOC中共包含m個(gè)詞): 對(duì)每個(gè)D中的文檔d,對(duì)應(yīng)到不同topic的概率d,其中,pti表示d對(duì)應(yīng)T中第i個(gè)topic的概率。計(jì)算方法是直觀的,pti=nti/n,其中nti表示d中對(duì)應(yīng)第i個(gè)topic的詞的數(shù)目,n是d中所有詞的總數(shù)。 對(duì)每個(gè)T中的topic t,生成不同單詞的概率t,其中,pwi表示t生成VOC中第i個(gè)單詞的概率。計(jì)算方法同樣很直觀,pwi=Nwi/N,其中Nwi表示對(duì)應(yīng)到topic t的VOC中第i個(gè)單詞的數(shù)目,N表示所有對(duì)應(yīng)到topic t的單詞總數(shù)。LDA的核心公式如下:p(w|d) = p(w|t)*p(t|d)直觀的看這個(gè)公式,就是以Topic作為中間層,可以通過當(dāng)前的d和t給出了文檔d中出現(xiàn)單詞w的概率。其中p(t|d)利用d計(jì)算得到,p(w|t)利用t計(jì)算得到。實(shí)際上,利用當(dāng)前的d和t,我們可以為一個(gè)文檔中的一個(gè)單詞計(jì)算它對(duì)應(yīng)任意一個(gè)Topic時(shí)的p(w|d),然后根據(jù)這些結(jié)果來更新這個(gè)詞應(yīng)該對(duì)應(yīng)的topic。然后,如果這個(gè)更新改變了這個(gè)單詞所對(duì)應(yīng)的Topic,就會(huì)反過來影響d和t。LDA學(xué)習(xí)過程LDA算法開始時(shí),先隨機(jī)地給d和t賦值(對(duì)所有的d和t)。然后上述過程不斷重復(fù),最終收斂到的結(jié)果就是LDA的輸出。再詳細(xì)說一下這個(gè)迭代的學(xué)習(xí)過程:1)針對(duì)一個(gè)特定的文檔ds中的第i單詞wi,如果令該單詞對(duì)應(yīng)的topic為tj,可以把上述公式改寫為:pj(wi|ds) = p(wi|tj)*p(tj|ds)先不管這個(gè)值怎么計(jì)算(可以先理解成直接從ds和tj中取對(duì)應(yīng)的項(xiàng)。實(shí)際沒這么簡(jiǎn)單,但對(duì)理解整個(gè)LDA流程沒什么影響,后文再說)。2)現(xiàn)在我們可以枚舉T中的topic,得到所有的pj(wi|ds),其中j取值1k。然后可以根據(jù)這些概率值結(jié)果為ds中的第i個(gè)單詞wi選擇一個(gè)topic。最簡(jiǎn)單的想法是取令pj(wi|ds)最大的tj(注意,這個(gè)式子里只有j是變量),即argmaxjpj(wi|ds)當(dāng)然這只是一種方法(好像還不怎么常用),實(shí)際上這里怎么選擇t在學(xué)術(shù)界有很多方法,我還沒有好好去研究。3)然后,如果ds中的第i個(gè)單詞wi在這里選擇了一個(gè)與原先不同的topic,就會(huì)對(duì)d和t有影響了(根據(jù)前面提到過的這兩個(gè)向量的計(jì)算公式可以很容易知道)。它們的影響又會(huì)反過來影響對(duì)上面提到的p(w|d)的計(jì)算。對(duì)D中所有的d中的所有w進(jìn)行一次p(w|d)的計(jì)算并重新選擇topic看作一次迭代。這樣進(jìn)行n次循環(huán)迭代之后,就會(huì)收斂到LDA所需要的結(jié)果了。/a123456ei/article/details/227674291.主題模型:到底什么是主題模型。一個(gè)主題,可以簡(jiǎn)單的認(rèn)為是語義相似的詞的集合,比如說“愛”和“喜歡”,或者“討厭”或者“厭惡”一樣,所以這時(shí)候可以把主題想象成為一個(gè)桶,而桶里面放的是出現(xiàn)概率較高的詞,并且這些詞和主題有著很強(qiáng)的相關(guān)性。2.生成模型:現(xiàn)在假設(shè)我們有大量的文檔,那么我們?cè)趺茨軌蛏芍黝}呢?這時(shí)候要用到生成模型的概念,讓我們用概率模型,來寫一篇文章。假如說我們要寫一篇文章,那么這篇文章主要是關(guān)于什么的呢,也就是說它的主題是什么呢?哦,是關(guān)于愛情、親情和友情的。并且這些主題在文章中都占有一定的比例,或者說主題在文檔中具有一定的分布(多項(xiàng)式分布)。那么接下來怎么去表達(dá)這些主題呢?嗯,用句子表達(dá)。當(dāng)然再細(xì)化一下,就是使用詞語來表達(dá),也就是從一個(gè)主題的“桶”里面挑選出來詞語,而這些詞語在主題當(dāng)中又服從一定的分布(多項(xiàng)式分布)(通常這些詞要進(jìn)行一定的預(yù)處理,比如剔除stopword,對(duì)于英文來說還要stemming,當(dāng)然中文似乎不用stemming了)。所以說一篇文章可以這樣立體化的表示:doc|-|.|topic_1topic_2topic_m而topic_i|-|.|word_1word_2word_n所以說一篇文章中的每個(gè)詞可以是通過以一定的概率選擇了某個(gè)主題(正如選擇了愛情、親情這樣的主題一樣),然后從這個(gè)主題當(dāng)中又以一定的概率選擇詞語來進(jìn)行表達(dá),這樣的過程就是一個(gè)生成模型。在這樣的定義下,每篇文檔中詞語出現(xiàn)的概率為:使用矩陣表示就是:其中C中的每一列表示每個(gè)文檔中詞語出現(xiàn)的概率(或者說成文檔中詞語的分布),中的每一列表示每個(gè)主題中每個(gè)單詞出現(xiàn)的概率,每一列表示文檔中每個(gè)主題出現(xiàn)的概率。產(chǎn)生文章過程:對(duì)于一篇文檔,我們通過p(|)產(chǎn)生,這是主題在此文檔中對(duì)應(yīng)的多項(xiàng)分布,通過多項(xiàng)分布抽取一個(gè)主題Z,然后我們?cè)購闹黝}Z對(duì)應(yīng)的多項(xiàng)分布中抽取一個(gè)單詞w。將這個(gè)過程重復(fù)N次便產(chǎn)生了一篇文章。用語言表述的話:1. 對(duì)每一篇文檔,從主題分布中抽取一個(gè)主題;2. 從上述被抽到的主題所對(duì)應(yīng)的單詞分布中抽取一個(gè)單詞;3. 重復(fù)上述過程直至遍歷文檔中的每一個(gè)單詞。/pirage/article/details/502193233.4.2 輸入?yún)?shù)和含義每一列代表一個(gè)單詞3.4.3 代碼展示輸出結(jié)果:3.4.4 應(yīng)用場(chǎng)景1.判斷兩個(gè)文檔的關(guān)聯(lián)程度使用的方法是查看兩個(gè)文檔中出現(xiàn)相同的單詞的個(gè)數(shù),就如TF-IDF,這種方法未能夠找到隱藏到文本后面的主題關(guān)聯(lián)(或者語義關(guān)聯(lián)),可能兩個(gè)文檔包含的相同的單詞不多,但是他們表達(dá)的主題卻是一樣或者相似的。正如:“喬布斯離我們而去了?!焙汀疤O果價(jià)格會(huì)不會(huì)降”一樣。2. 可以用在商品銷售量的 主題提取當(dāng)中 通過不同的銷售量 得到相應(yīng)的主題以及主題中最主要的銷售商品有哪些3.5 二分K-means聚類3.5.1 算法描述和定義步驟:1.初始化全部點(diǎn)的質(zhì)心,并建立所需要的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)2.對(duì)每一個(gè)簇嘗試二分(最開始就是一個(gè)簇),選出最好的3.更新各個(gè)簇的元素個(gè)數(shù)算法主要分為以下步驟,一開始是把所有數(shù)據(jù)初始化為一個(gè)cluster,第二步從所有cluster 中選其中一個(gè)出來用基本k-means算法(k設(shè)為2)再劃分成兩個(gè)cluster(初始時(shí)只有一個(gè)cluster).然后是一直重復(fù)第二步的劃分(選一個(gè)cluster劃成兩個(gè))直到得到k個(gè)cluster算法停止。算法如下:1. 把所有數(shù)據(jù)作為一個(gè)cluster加入cluster list2. Repeat3. 從cluster list中挑選一個(gè)SSE最大的cluster出來4. for i=1 to 預(yù)設(shè)的循環(huán)次數(shù)5. 用k-means算法把挑出來的cluster劃分成兩個(gè)子cluster6. 計(jì)算兩個(gè)子cluster的SSE和7. end for8.把for循環(huán)中 sse和最小的 那兩個(gè)子cluster加入cluster list9. until cluster list 擁有K個(gè)cluster3.5.2 輸入?yún)?shù)和含義3.5.3 代碼展示代碼:結(jié)果:3.5.4 應(yīng)用場(chǎng)景1. 克服K均值算法收斂于局部最小值的問題2. 分析一個(gè)公司的客戶分類3. 電子商務(wù)中分析商品相似度,歸類商品3.6 流K-means3.6.1 算法描述和定義3.6.2 輸入?yún)?shù)和含義searcher- A Searcher that is used for performing nearest neighbor search. It MUST BE EMPTY initially because it will be used to keep track of the cluster centroids.numClusters- An estimated number of clusters to generate for the data points. This can adjusted, but the actual number will depend on the data. ThedistanceCutoff- The initial distance cutoff representing the value of the di
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)濟(jì)法基礎(chǔ)復(fù)習(xí)思路探索試題及答案
- pvc代加工合同協(xié)議書
- 股份合同轉(zhuǎn)讓協(xié)議書范文
- 2025年VFP考試易錯(cuò)試題及答案總結(jié)
- 瓜分計(jì)算機(jī)二級(jí)試題及答案大禮包
- 農(nóng)村租魚塘合同協(xié)議書
- 邏輯推理考試的注意事項(xiàng)試題及答案
- C語言考生指南試題及答案
- 工地包瓦工合同協(xié)議書
- 商業(yè)砸墻合同協(xié)議書模板
- 2024年美睫技術(shù)考核試題及答案
- 實(shí)施質(zhì)量管理體系的好處
- 中國(guó)化的馬克思主義(毛澤東思想)概論知到課后答案智慧樹章節(jié)測(cè)試答案2025年春上海思博職業(yè)技術(shù)學(xué)院
- 醫(yī)院B超室工作制度
- 民航綜合測(cè)試題及答案
- 2025年蘇州社工考試試題及答案
- 2025-2030中國(guó)光敏聚酰亞胺(PSPI)行業(yè)現(xiàn)狀調(diào)查與前景策略分析研究報(bào)告
- 中國(guó)國(guó)際大學(xué)生創(chuàng)新大賽(2025)職教賽道重點(diǎn)培育項(xiàng)目申報(bào)表
- 2025年先進(jìn)技術(shù)并購協(xié)議
- ISO9001:2015、ISO22000、HACCP三合一內(nèi)審檢查表2023版
- 《律政俏佳人》課件
評(píng)論
0/150
提交評(píng)論