基於Spark的機器學習實踐 (九) - 聚類算法

0 相關源碼

1 k-平均算法(k-means clustering)概述

1.1 回顧無監督學習

◆ 分類、迴歸都屬於監督學習

◆ 無監督學習是不需要用戶去指定標籤的

◆ 而我們看到的分類、迴歸算法都需要用戶輸入的訓練數據集中給定一個個明確的y值

1.2 k-平均算法與無監督學習

◆ k-平均算法是無監督學習的一種

◆ 它不需要人爲指定一個因變量,即標籤y ,而是由程序自己發現,給出類別y

◆ 除此之外,無監督算法還有PCA,GMM等

源於信號處理中的一種向量量化方法,現在則更多地作爲一種聚類分析方法流行於數據挖掘領域。
k-平均聚類的目的是:把n 個點(可以是樣本的一次觀察或一個實例)劃分到k個聚類中,使得每個點都屬於離他最近的均值(此即聚類中心)對應的聚類,以之作爲聚類的標準。
這個問題將歸結爲一個把數據空間劃分爲Voronoi cells的問題。

這個問題在計算上是NP困難的,不過存在高效的啓發式算法
一般情況下,都使用效率比較高的啓發式算法,它們能夠快速收斂於一個局部最優解。
這些算法通常類似於通過迭代優化方法處理高斯混合分佈的最大期望算法(EM算法)。
而且,它們都使用聚類中心來爲數據建模;然而k-平均聚類傾向於在可比較的空間範圍內尋找聚類,期望-最大化技術卻允許聚類有不同的形狀。

k-平均聚類與k-近鄰之間沒有任何關係(後者是另一流行的機器學習技術)。

2 k-平均算法原理

2.1 k-平均算法描述

◆ 設置需要聚類的類別個數K ,以及n個訓練樣本,隨機初始化K個聚類中心

◆ 計算每個樣本與聚類中心的距離,樣本選擇最近的聚類中心作爲其
類別;重新選擇聚類中心

◆ 迭代執行上一步,直到算法收斂

  • 算法圖示
    基於Spark的機器學習實踐 (九) - 聚類算法
    基於Spark的機器學習實踐 (九) - 聚類算法

3 Kmeans算法實戰

k-means是最常用的聚類算法之一,它將數據點聚類成預定義數量的聚類
MLlib實現包括一個名爲kmeans ||的k-means ++方法的並行變體。
KMeans作爲Estimator實現,並生成KMeansModel作爲基本模型。

基於Spark的機器學習實踐 (九) - 聚類算法
基於Spark的機器學習實踐 (九) - 聚類算法

  • 代碼
    基於Spark的機器學習實踐 (九) - 聚類算法
  • 結果
    基於Spark的機器學習實踐 (九) - 聚類算法

4 LDA算法概述

4.1 LDA算法介紹

◆ LDA即文檔主題生成模型 ,該算法是一種無監督學習

◆ 將主題對應聚類中心,文檔作爲樣本,則LDA也是一種聚類算法

◆ 該算法用來將多個文檔劃分爲K個主題 ,與Kmeans類似

隱含狄利克雷分佈(英語:Latent Dirichlet allocation,簡稱LDA),是一種[主題模型],它可以將文檔集中每篇文檔的主題按照[概率分佈]的形式給出。
同時它是一種[無監督學習]算法,在訓練時不需要手工標註的訓練集,需要的僅僅是文檔集以及指定主題的數量k即可。
此外LDA的另一個優點則是,對於每一個主題均可找出一些詞語來描述它。
LDA首先由 David M. Blei、吳恩達邁克爾·I·喬丹於2003年提出,目前在[文本挖掘]領域包括文本主題識別、文本分類以及文本相似度計算方面都有應用。

5 LDA算法原理

5.1 LDA算法概述

◆ LDA是一種基於概率統計的生成算法

◆ 一種常用的主題模型,可以對文檔主題進行聚類,同樣也可以用在其他非文檔的數據中

◆ LDA算法是通過找到詞、文檔與主題三者之間的統計學關係進行推斷的

5.2 LDA算法的原理

◆ 文檔的條件概率可以表示爲
基於Spark的機器學習實踐 (九) - 聚類算法
基於Spark的機器學習實踐 (九) - 聚類算法

6 LDA算法實踐

LDA實現爲支持EMLDAOptimizer和OnlineLDAOptimizer的Estimator,並生成LDAModel作爲基本模型。如果需要,專家用戶可以將EMLDAOptimizer生成的LDAModel轉換爲DistributedLDAModel。

基於Spark的機器學習實踐 (九) - 聚類算法

  • 代碼
    基於Spark的機器學習實踐 (九) - 聚類算法
  • prediction.show()
    基於Spark的機器學習實踐 (九) - 聚類算法
  • topics.show(false)
    基於Spark的機器學習實踐 (九) - 聚類算法

Spark機器學習實踐系列

X 聯繫我

基於Spark的機器學習實踐 (九) - 聚類算法

Java交流羣

博客

知乎

Github

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章