1. 程式人生 > >Spark2.0機器學習系列之11: 聚類(冪迭代聚類, power iteration clustering, PIC)

Spark2.0機器學習系列之11: 聚類(冪迭代聚類, power iteration clustering, PIC)

           在Spark2.0版本中(不是基於RDD API的MLlib),共有四種聚類方法:
            (1)K-means
            (2)Latent Dirichlet allocation (LDA)
            (3)Bisecting k-means(二分k均值演算法)
            (4)Gaussian Mixture Model (GMM)。
            基於RDD API的MLLib中,共有六種聚類方法:
            (1)K-means
            (2)Gaussian mixture
            (3)Power iteration clustering (PIC)
            (4)Latent Dirichlet allocation (LDA)**
            (5)Bisecting k-means
            (6)Streaming k-means
            多了Power iteration clustering (PIC)和Streaming k-means兩種。
           本文將PIC,即冪迭代聚類。其它方法在我Spark機器學習系列裡面都有介紹。

概述

           譜聚類(Spectral Clustering)相信大家可能非常熟悉(如果不熟悉的話相關資料也比較多),而冪迭代聚類(Power iteration clustering)則也許會比較陌生。其實這兩者之間有很多相似的地方,但是演算法還是有較大差異的,這些後面會慢慢道來。
            冪迭代聚類來自Frank Lin 和William W. Cohen這兩位卡內基梅隆大學大牛,發表於ICML 2010。深入瞭解演算法則需要看看大牛的原文。
            這裡給出連結http://www.cs.cmu.edu/~wcohen/postscript/icml2010-pic-final.pdf


           如果具備一定的譜聚類和Graphx圖計算的知識,就比較容易理解冪迭代聚類,不過不太懂也沒有關係,Graphx圖計算可以簡單看看我的Spark系列博文,譜聚類後面會簡單介紹一下,另外演算法的數學基礎是冪迭代求特徵值,我後面會詳細介紹。
           兩位大牛提出一種簡單且可擴充套件的圖聚類方法,稱之為冪迭代聚類(PIC)。在資料歸一化的逐對相似矩陣上,使用截斷的冪迭代,PIC尋找資料集的一個超低維嵌入(低緯空間投影,embedding ),這種嵌入恰好是很有效的聚類指標,使它在真實資料集上總是好於廣泛使用的譜聚類方法(比如說NCut)。PIC在大資料集上非常快,比基於當前(2010年)最好的特徵向量計算技術實現的NCut還要快1000倍。
       We present a simple and scalable graph clustering method called power iteration clustering (PIC). PIC finds a very low-dimensional embedding of a dataset using truncated power iteration on a normalized pair-wise similarity matrix of the data. This embedding turns out to be an effective cluster indicator, consistently outperforming widely used spectral methods such as NCut on real datasets. PIC is very fast on large datasets, running over 1,000 times faster than an NCut implementation based on the state-of-the-art IRAM eigenvector computation technique.

冪迭代法求矩陣的主特徵值

           首先還是理清基本的數學演算法,這樣後面分析就容易多了。“冪迭代”法求特徵值,也有直接就叫做“冪法”求特徵值的,也是最基礎的一種特徵值迭代法求解方法。
           適合計算大型稀疏矩陣的主特徵值,即按模最大的特徵值,同時也得到了對應的特徵向量(這不就是為大資料集,通常還是稀疏矩陣量身打造的嗎?呵呵)。
        它的優點是方法簡單,理論依據是迭代的收斂性(這兩點要看完下面的過程才能深刻的理解)

        冪法基本思想是:若我們求某個n階方陣A的特徵值和特徵向量,先任取一個非零初始向量v(0),進行如下的迭代計算,直到收斂(下面都是對{v(k)k=0,1,...}序列而言的):

v(k+1)=Av(k)k=0,1,...

       當k增大時,序列的收斂情況與絕對值最大的特徵值有密切關係,分析這一序列的極限,即可求出按模最大的特徵值和特徵向量。
       假定矩陣A有n個線性無關的特徵向量.n個特徵值按模由大到小排列:

λ1>=λ2>=>=λn(2)
       其相應的特徵向量為:
e1,e2,,en(3)
       它們構成n維空間的一組正交基.任取的初始向量v(0))當然可以由它們的線性組合給出:
v(0)=c1e1+c2e2++cnen(4)
由此知,構造的向量序列有
v(k)=Av(k1)=A2v(k2)==Akv(0)=c1λk1e1+c2λk2e2++cnλknen(5)
       得出公式(5),後面就好分析,公式(5)這一步可以用遞推法去理解,如下:
v(0)=c1e1+c2e2++cnenv(1)=Av(0)=A(c1e1+c2e2++cnen)=c1(Ae1)+c2(Ae2)+...+cn(Aen)=c1λ1e1+c2λ2e2+...+cnλnen...v(k)=c1

相關推薦

Spark2.0機器學習系列11 ( power iteration clustering PIC)

           在Spark2.0版本中(不是基於RDD API的MLlib),共有四種聚類方法:             (1)K-means             (2)Latent Dirichlet allocation (LDA)

Spark2.0機器學習系列7 MLPC(多層神經網絡)

element nbsp hid 隨機梯度下降 support file dict 分類器 希望 Spark2.0 MLPC(多層神經網絡分類器)算法概述 MultilayerPerceptronClassifier(MLPC)這是一個基於前饋神經網絡的分類器,它是一種在

Spark2.0機器學習系列10 (高斯混合模型 GMM)

       在Spark2.0版本中(不是基於RDD API的MLlib),共有四種聚類方法:      (1)K-means      (2)Latent Dirichlet allocation (LDA)      (3)Bisecting k-m

Spark2.0機器學習系列3決策樹及Spark 2.0-MLlib、Scikit程式碼分析

概述 分類決策樹模型是一種描述對例項進行分類的樹形結構。 決策樹可以看為一個if-then規則集合,具有“互斥完備”性質 。決策樹基本上都是 採用的是貪心(即非回溯)的演算法,自頂向下遞迴分治構造。 生成決策樹一般包含三個步驟: 特徵選擇 決策樹生成 剪枝

Spark2.0機器學習系列2Logistic迴歸及Binary分類(二分問題)結果評估

引數設定 α: 梯度上升演算法迭代時候權重更新公式中包含 α : # 梯度上升演算法-計算迴歸係數 # 每個迴歸係數初始化為1 # 重複R次: # 計算整個資料集的梯度 # 使用α*梯度更新迴歸係數的向量 # 返回迴歸係數

Spark2.0機器學習系列1基於Pipeline、交叉驗證、ParamMap的模型選擇和超引數調優

Spark中的CrossValidation Spark中採用是k折交叉驗證 (k-fold cross validation)。舉個例子,例如10折交叉驗證(10-fold cross validation),將資料集分成10份,輪流將其中9份

Spark機器學習系列13 支援向量機SVM

C−SVM基本公式推導過程 下面摘抄一小部分內容(不考慮推導細節的話,基本上能理解C-SVM方法推導的整個流程). 我們用一個超平面劃分圖中對圖中的兩類資料進行分類,超平面寫成f(x)=wTx+b=0,線上性可分的情況下,我們能找到一

機器學習入門機器學習的方法-神經網絡(轉載)

轉載 bsp 圖像 src nbsp 加速 數值 str 我們   轉自 飛鳥各投林   神經網絡      神經網絡(也稱之為人工神經網絡,ANN)算法是80年代機器學習界非常流行的算法,不過在90年代中途衰落。現在,攜著“深度學習”之勢,神

機器學習系列偏差、方差與交叉驗證

一、偏差與方差 在機器學習中,我們用訓練資料集去訓練(學習)一個model(模型),通常的做法是定義一個Loss function(誤差函式),通過將這個Loss(或者叫error)的最小化過程,來提高模型的效能(performance)。然而我們學習一個模型的目的是為了解決實際的問題(或者說是

機器學習系列特徵工程

資料的特徵選擇 資料特徵主要分為兩部分,一部分是業務已經整理好的各種特徵資料;另一部分是根據業務特徵去構造的資料特徵。 特徵選擇的方法 一、已有特徵 1.過濾法選擇特徵: 方差越小,不同樣本的特徵值越相似,此特徵作用越小; 各個特徵與輸出值間的相關係數,選擇相關係數較大的部分

機器學習系列交叉驗證、網格搜尋

第一部分:交叉驗證 機器學習建立和驗證模型,常用的方法之一就是交叉驗證。在機器學習過程中,往往資料集是有限的,而且可能具有一定的侷限性。如何最大化的利用資料集去訓練、驗證、測試模型,常用的方法就是交叉驗證。交叉驗證,就是重複的使用資料,對樣本資料進行劃分為多組不同的訓練集和測試集(訓練集訓練模型

機器學習系列GBDT

GBDT既可以用於迴歸,也可以用於分類。兩者本質是一樣的,分析流程也大致相同,區別在於loss function不同。 首先,介紹一下提升方法,boosting就是把一系列的弱學習器反覆學習,然後組合成強學習器。對於提升方法,主要需要回答兩個問題:第一個是每一輪學習過程中如何改變訓練資料的權值或

Python 機器學習系列線性迴歸篇深度詳細

前兩篇部落格主要是講解基礎的線性迴歸,以下轉載自:http://www.jianshu.com/p/738f6092ef53,對迴歸進行深度分析,並加入了多項式的內容。 前言 本次推文介紹用線性模型處理迴歸問題。 從簡單問題開始,先處理一個響應變數和一個解釋變數的一元問題。 然後,介

Java從0開始學習系列路(6)

前言--- 明天週末了,打算用來整理一下資料庫,Cisco命令和Linux,這篇部落格寫完之後就打算滾回宿舍休息了,路上順便買下水果,補充補充維C。 前言補充---- 突然被管教學樓的老師給清出教室了,由於教室明後天要當某證書的考場,這種做事被打擾的感覺實在是難受。不過

機器學習系列coursera week 10 Large Scale Machine Learning

目錄 1. Gradient Descent with Large Datasets 1.1 Learning with large datasets Learn with large datasets: m = 100,000,000

機器學習系列教程》第二章 機器學習基礎

第二章 機器學習基礎 機器學習and 資料分析 2.2 監督學習、非監督學習、半監督學習、弱監督學習? 根據資料型別的不同,對一個問題的建模有不同的方式。依據不同的學習方式和輸入資料,機器學習主要分為以下四種學習方式。 監督學習: 監督學習是使用已知

[050]Python 機器學習系列線性迴歸篇深度詳細

本次推文介紹用線性模型處理迴歸問題。 從簡單問題開始,先處理一個響應變數和一個解釋變數的一元問題。 然後,介紹多元線性迴歸問題(multiple linear regression),線性約束由多個解釋變數構成。 緊接著,介紹多項式迴歸分析(polynomial regression 問題),一種具有非線性

Spring原理學習系列Spring AOP原理(從原始碼層面分析)-------上部

引言 本文是Spring原理分析的第三篇博文,主要闡述Spring AOP相關概念,同時從原始碼層面分析AOP實現原理。對於AOP原理的理解有利於加深對Spring框架的深入理解。同時我也希望可以探究Spring框架在處理AOP的解決思路,學習框架的時候,有時候

機器學習演算法5分鐘上手SVM

1.案例:承襲Decision Tree的案例資料,同樣用身高和體重來界定胖瘦。如下文字檔(7.SVM.txt),三個欄位各代表身高(m)、體重(kg)與胖瘦(thin/fat)。 2.問題:現在

機器學習演算法5分鐘上手K-Means

1.案例:承襲KNN,這個資料依舊是用打鬥次數和接吻次數來界定電影型別,接吻多的是Romance型別的,而打鬥多的是動作電影。 2.問題:現在有一部名字未知的電影,打鬥次數為18次,接吻次數為90