1. 程式人生 > >基於Spark的機器學習實踐 (九) - 聚類算法

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

最大化 images red 系列 手工 pic ref amp itl

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個聚類中心

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

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

  • 算法圖示
    技術分享圖片
    技術分享圖片

3 Kmeans算法實戰

  • 官方文檔指南
    技術分享圖片

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

技術分享圖片
技術分享圖片

  • 代碼
    技術分享圖片
  • 結果
    技術分享圖片

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算法的原理

◆ 文檔的條件概率可以表示為
技術分享圖片
技術分享圖片

6 LDA算法實踐

  • 官方文檔指南
    技術分享圖片

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

技術分享圖片

  • 代碼
    技術分享圖片
  • prediction.show()
    技術分享圖片
  • topics.show(false)
    技術分享圖片

Spark機器學習實踐系列

  • 基於Spark的機器學習實踐 (一) - 初識機器學習
  • 基於Spark的機器學習實踐 (二) - 初識MLlib
  • 基於Spark的機器學習實踐 (三) - 實戰環境搭建
  • 基於Spark的機器學習實踐 (四) - 數據可視化
  • 基於Spark的機器學習實踐 (六) - 基礎統計模塊
  • 基於Spark的機器學習實踐 (七) - 回歸算法
  • 基於Spark的機器學習實踐 (八) - 分類算法
  • 基於Spark的機器學習實踐 (九) - 聚類算法

X 聯系我

技術分享圖片

Java交流群

博客

知乎

Github

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