【文章內(nèi)容簡(jiǎn)介】
中心點(diǎn)相互之間的距離應(yīng)該盡可能的遠(yuǎn) 輸入?yún)?shù)和含義表示期望的聚類的個(gè)數(shù)。表示方法單次運(yùn)行最大的迭代次數(shù)。表示算法被運(yùn)行的次數(shù)。Kmeans 算法不保證能返回全局最優(yōu)的聚類結(jié)果,所以在目標(biāo)數(shù)據(jù)集上多次跑 Kmeans 算法,有助于返回最佳聚類結(jié)果。表示初始聚類中心點(diǎn)的選擇方式, 目前支持隨機(jī)選擇或者 Kmeans||方式。默認(rèn)是 Kmeans||。 Kmeans||方法中的部數(shù)。表示 Kmeans 算法迭代收斂的閥值。表示集群初始化時(shí)的隨機(jī)種子。 代碼展示輸入數(shù)據(jù):代碼:輸出結(jié)果:K 選擇示例代碼片段val ks:Array[Int] = Array(3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)(cluster = { val model:KMeansModel = (parsedTrainingData, cluster,30,1) val ssd = (parsedTrainingData) println(sum of squared distances of points to their nearest center when k= + cluster + + ssd))} 應(yīng)用場(chǎng)景一般是用來(lái)對(duì)數(shù)據(jù)對(duì)象按照其特征屬性進(jìn)行分組,經(jīng)常被應(yīng)用在客戶分群,欺詐檢測(cè),圖像分析等領(lǐng)域 高斯混合 算法描述和定義描述:它實(shí)際上與KMeans十分相像,主要的不同在于KMeans的結(jié)果是某個(gè)點(diǎn)被分到 了某個(gè)類上,而GMM得到的結(jié)果則是某個(gè)點(diǎn)屬于某一類的概率是多少思路:給定數(shù)據(jù),假定它們是由GMM生成出來(lái)的,那么我們只要根據(jù)數(shù)據(jù)推出GMM的概率分布來(lái)就可以了GMM的實(shí)現(xiàn)過(guò)程中,主要涉及三個(gè)scala文件:。管理混合高斯模型,主要參數(shù)是weights(各個(gè)高斯分布的權(quán)重組成的數(shù)組)、gaussians(各個(gè)多元高斯分布組成的數(shù)組)。訓(xùn)練高斯混合模型的主要類,主要參數(shù)有k(聚類數(shù))、convergenceTol(似然函數(shù)收斂閾值)、maxIterations(迭代次數(shù))。多元高斯分布類,主要參數(shù)有mu(各個(gè)特征的平均值)、sigma(各個(gè)特征之間的協(xié)方差)。 輸入?yún)?shù)和含義 is the number of desired clusters.//期望得到的聚類數(shù) is the maximum change in loglikelihood at which we consider convergence achieved.//收斂閾值 is the maximum number of iterations to perform without reaching convergence.//最大迭代次數(shù) 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) 代碼展示代碼:結(jié)果: 應(yīng)用場(chǎng)景 快速迭代聚類(圖片) 算法描述和定義有幾個(gè)步驟或關(guān)鍵的地方:網(wǎng)絡(luò)或關(guān)聯(lián)的現(xiàn)象在現(xiàn)代社會(huì)中非常普遍,比如電話網(wǎng)絡(luò),社交網(wǎng)絡(luò),網(wǎng)頁(yè)的鏈接,文獻(xiàn)的引用,基因分析等等。用我們能夠理解的方式來(lái)思考關(guān)系,最直接也最直觀的方式就是關(guān)系圖: 但是這個(gè)方式只能針對(duì)簡(jiǎn)單關(guān)系,節(jié)點(diǎn)多了,聯(lián)系復(fù)雜了也就沒(méi)法繼續(xù)玩下去了。像下面這種關(guān)系網(wǎng)絡(luò)該怎么用手工的方式畫出來(lái)和分析呢?而這種復(fù)雜的關(guān)系圖在電話、微博、微信中卻是再常見(jiàn)不過(guò)的了。步驟:先將關(guān)系圖轉(zhuǎn)為矩陣表示,識(shí)別號(hào)需要轉(zhuǎn)換為從0開(kāi)始的索引數(shù)初始向量為每行初值之和除以矩陣總和,即初始向量的構(gòu)成和歸一化對(duì)矩陣的每行做歸一化處理,使其轉(zhuǎn)變?yōu)殡S機(jī)矩陣【或稱概率轉(zhuǎn)移矩陣,總之是這類矩陣的名字而已】其中(2)的處理比較特別。按理可以是任意非零向量,但按(2)的方式得到的初始向量收斂到穩(wěn)態(tài)的速度很快迭代后得到的向量再對(duì)其做歸一化處理 輸入?yún)?shù)和含義 代碼展示代碼:輸出結(jié)果: 應(yīng)用場(chǎng)景以應(yīng)用到電話關(guān)聯(lián)中的用戶分類當(dāng)中 分類后可以對(duì)用戶做群體操作 三層貝葉斯概率模型 算法描述和定義LDA是給文本建模的一種方法,屬于生成模型。生成模型是指該模型可以隨機(jī)生成可觀測(cè)的數(shù)據(jù),LDA可以隨機(jī)生成一篇由N個(gè)主題組成的文章。通過(guò)對(duì)文本的建模,可以對(duì)文本進(jìn)行主題分類,判斷相似度等。LDA通過(guò)將文本映射到主題空間,即認(rèn)為一篇文章有若干主題隨機(jī)組成,從而獲得文本間的關(guān)系。LDA模型有一個(gè)前提:bag of word。意思是認(rèn)為文檔就是一個(gè)詞的集合,忽略任何語(yǔ)法或者出現(xiàn)順序關(guān)系。對(duì)于語(yǔ)料庫(kù)中的每篇文檔,LDA定義了如下生成過(guò)程(generativeprocess):,從主題分布中抽取一個(gè)主題;;。每語(yǔ)料庫(kù)中的每一篇文檔與T(通過(guò)反復(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è)單詞序列 w1,w2,...,wn ,wi表示第i個(gè)單詞,設(shè)d有n個(gè)單詞。(LDA里面稱之為word bag,實(shí)際上每個(gè)單詞的出現(xiàn)位置對(duì)LDA算法無(wú)影響) D中涉及的所有不同單詞組成一個(gè)大集合VOCABULARY(簡(jiǎn)稱VOC)LDA以文檔集合D作為輸入(會(huì)有切詞,去停用詞,取詞干等常見(jiàn)的預(yù)處理,略去不表),希望訓(xùn)練出的兩個(gè)結(jié)果向量(設(shè)聚成k個(gè)Topic,VOC中共包含m個(gè)詞): 對(duì)每個(gè)D中的文檔d,對(duì)應(yīng)到不同topic的概率θd pt1,..., ptk,其中,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 pw1,..., pwm,其中,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作為中間層,可以通過(guò)當(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é)果來(lái)更新這個(gè)詞應(yīng)該對(duì)應(yīng)的topic。然后,如果這個(gè)更新改變了這個(gè)單詞所對(duì)應(yīng)的Topic,就會(huì)反過(guò)來(lái)影響θd和φt。LDA學(xué)習(xí)過(guò)程LDA算法開(kāi)始時(shí),先隨機(jī)地給θd和φt賦值(對(duì)所有的d和t)。然后上述過(guò)程不斷重復(fù),最終收斂到的結(jié)果就是LDA的輸出。再詳細(xì)說(shuō)一下這個(gè)迭代的學(xué)習(xí)過(guò)程: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í)際沒(méi)這么簡(jiǎn)單,但對(duì)理解整個(gè)LDA流程沒(méi)什么影響,后文再說(shuō))。2)現(xiàn)在我們可以枚舉T中的topic,得到所有的pj(wi|ds),其中j取值1~k。然后可以根據(jù)這些概率值結(jié)果為ds中的第i個(gè)單詞wi選擇一個(gè)topic。最簡(jiǎn)單的想法是取令pj(wi|ds)最大的tj(注意,這個(gè)式子里只有j是變量),即argmax[j]pj(wi|ds)當(dāng)然這只是一種方法(好像還不怎么常用),實(shí)際上這里怎么選擇t在學(xué)術(shù)界有很多方法,我還沒(méi)有好好去研究。3)然后,如果ds中的第i個(gè)單詞wi在這里選擇了一個(gè)與原先不同的topic,就會(huì)對(duì)θd和φt有影響了(根據(jù)前面提到過(guò)的這兩個(gè)向量的計(jì)算公式可以很容易知道)。它們的影響又會(huì)反過(guò)來(lái)影響對(duì)上面提到的p(w|d)的計(jì)算。對(duì)D中所有的d中的所有w進(jìn)行一次p(w|d)的計(jì)算并重新選擇topic看作一次迭代。這樣進(jìn)行n次循環(huán)迭代之后,就會(huì)收斂到LDA所需要的結(jié)果了。: 到底什么是主題模型。一個(gè)主題,可以簡(jiǎn)單的認(rèn)為是語(yǔ)義相似的詞的集合,比如說(shuō)“愛(ài)”和“喜歡”,或者“討厭”或者“厭惡”一樣,所以這時(shí)候可以把主題想象成為一個(gè)桶,而桶里面放的是出現(xiàn)概率較高的詞,并且這些詞和主題有著很強(qiáng)的相關(guān)性。:現(xiàn)在假設(shè)我們有大量的文檔,那么我們?cè)趺茨軌蛏芍黝}呢?這時(shí)候要用到生成模型的概念,讓我們用概率模型,來(lái)寫一篇文章。假如說(shuō)我們要寫一篇文章,那么這篇文章主要是關(guān)于什么的呢,也就是說(shuō)它的主題是什么呢?哦,是關(guān)于愛(ài)情、親情和友情的。并且這些主題在文章中都占有一定的比例,或者說(shuō)主題在文檔中具有一定的分布(多項(xiàng)式分布)。