- 本地模式(local):單機運行,將Spark應(yīng)用以多線程方式直接運行在本地,通常只用于測試。我一般都會在windows環(huán)境下做充足的測試,無誤以后才會打包提交到集群去執(zhí)行。慎重!
- YARN/mesos模式:運行在資源管理系統(tǒng)上,對于Yarn存在兩種細的模式,yarn-client和yarn-cluster,它們是有區(qū)別的。
一張圖知曉yarn-client模式
一張圖知曉yarn-cluster模式
為了安全起見,如果模型結(jié)果文件最終都是存于HDFS上的話,都支持使用yarn-cluster模式,即使某一個節(jié)點出問題,不影響整個任務(wù)的提交和執(zhí)行。
總結(jié):很多做大數(shù)據(jù)挖掘的朋友,代碼能力和大數(shù)據(jù)生態(tài)圈的技術(shù)會是一個軟弱,其實這點是很不好的,關(guān)鍵時候容易吃大虧。而我上面所提的,都是圍繞著寫好一個場景模型,從code實現(xiàn)到上線發(fā)布都需要留心的知識點。多一份了解,少一分無知。況且一天談什么算法模型,落地都成困難,更別提上線以后對模型的參數(shù)修改和特征篩選。
第三部分:創(chuàng)作第一個數(shù)據(jù)挖掘算法(樸素貝葉斯)
看過以前文章的小伙伴都應(yīng)該知道,在業(yè)務(wù)層面上,使用場景最多的模型大體歸納為以下四類:
- 分類模型,去解決有監(jiān)督性樣本學(xué)習(xí)的分類場景。
- 聚類模型,去自主判別用戶群體之間的相似度。
- 綜合得分模型,去結(jié)合特征向量和權(quán)重大小計算出評估值。
- 預(yù)測響應(yīng)模型,去以歷為鑒,預(yù)測未來。
所以我這里首先以一個簡單的分類算法來引導(dǎo)大家去code出算法背后的計算邏輯,讓大家知曉這樣一個流程。
樸素貝葉斯的實現(xiàn)流程
- 理解先驗概率和后驗概率的區(qū)別?
a.先驗概率:是指根據(jù)以往經(jīng)驗和分析得到的概率。簡單來說,就是經(jīng)驗之談,打趣來說——不聽老人言,吃虧在眼前。
b.后驗概率:是指通過調(diào)查或其它方式獲取新的附加信息,去修正發(fā)生的概率。也就是參考的信息量更多、更全。
- 它們之間的轉(zhuǎn)換,推導(dǎo)出貝葉斯公式
條件概率:
注:公式中P(AB)為事件AB的聯(lián)合概率,P(A|B)為條件概率,表示在B條件下A的概率,P(B)為事件B的概率。
推導(dǎo)過程:
將P(AB)帶入表達式
貝葉斯公式:
簡單來說,后驗概率 = ( 先驗概率 * 似然度)/標準化常量。
擴展:
三、如何去理解樸素二字?
樸素貝葉斯基于一個簡單的假定:給定特征向量之間相互條件獨立。
樸素體現(xiàn):
考慮到P(B1B2...Bn)對于所有類別都是一樣的。而對于樸素貝葉斯的分類場景并需要準確得到某種類別的可能性,更多重點在于比較分類結(jié)果偏向那種類別的可能性更大。因此從簡化度上,還可以對上述表達式進行優(yōu)化。
簡化公式:
這也是樸素貝葉斯得以推廣使用一個原因,一方面降低了計算的復(fù)雜度,一方面卻沒有很大程度上影響分類的準確率。
但客觀來說,樸素的假設(shè)也是這個算法存在缺陷的一個方面,有利有弊。
四、如何動手實現(xiàn)樸素貝葉斯算法
這里面有很多細節(jié),但是為了迎合文章的主題,不考慮業(yè)務(wù),只考慮實現(xiàn)。我們假設(shè)已經(jīng)存在了下面幾個東西: