1. 程式人生 > >[硬貨]|《機器學習》筆記-聚類(9)

[硬貨]|《機器學習》筆記-聚類(9)

這裡寫圖片描述

作者: 劉才權
編輯: 黃俊嘉

寫在最前面

如今機器學習和深度學習如此火熱,相信很多像我一樣的普通程式猿或者還在大學校園中的同學,一定也想參與其中。不管是出於好奇,還是自身充電,跟上潮流,我覺得都值得試一試。對於自己,經歷了一段時間的系統學習(參考《機器學習/深度學習入門資料彙總》),現在計劃重新閱讀《機器學習》[周志華]和《深度學習》[Goodfellow et al]這兩本書,並在閱讀的過程中進行記錄和總結。這兩本是機器學習和深度學習的入門經典。筆記中除了會對書中核心及重點內容進行記錄,同時,也會增加自己的理解,包括過程中的疑問,並儘量的和實際的工程應用和現實場景進行結合,使得知識不只是停留在理論層面,而是能夠更好的指導實踐。記錄筆記,一方面,是對自己先前學習過程的總結和補充。 另一方面,相信這個系列學習過程的記錄,也能為像我一樣入門機器學習和深度學習同學作為學習參考。

章節目錄

  • 聚類任務
  • 效能度量
  • 距離計算
  • 原型聚類
  • 密度聚類
  • 層次聚類

(一)聚類任務

在無監督學習中(unsupervised learning)中,訓練樣本的標記資訊是未知的,目標是通過對無標記的訓練樣本的學習來揭示資料的內在性質及規律,為進一步的資料分析提供基礎。此類學習任務中研究最多、應用最廣的是“聚類”(clustering)。
聚類試圖將資料集中的樣本劃分為若干通常是不相交的子集,每個子集稱為一個“簇”(cluster)。
聚類既能作為一個單獨的過程,用於找尋資料內的分佈結構,也可作為分類等其他學習任務的前驅過程。

(二)效能度量

聚類效能度量亦稱聚類“有效性指標”(validity index)。與監督學習中的效能度量作用相似。對聚類結果,我們需通過某種效能度量來評估其好壞;另一方面,若明確了最終將要使用的效能度量,則可直接將其作為聚類過程的優化目標,從而更好地得到符合要求的聚類結果。
聚類是將樣本集D劃分為若干不相交的子集,即樣本簇。直觀上看,我們希望“物以類聚”,即同一簇的樣本儘可能彼此相似,不同簇的樣本儘可能不同。換言之,聚類結果的“簇內相似度”(intra-cluster similarity)高且“簇間相似度”(inter-cluster similarity)低。
聚類效能度量大致有兩類:
* “外部指標”(external index)
將聚類結果與某個“參考模型”(reference model)進行比較;
* “內部指標”(internal index)
直接考察聚類結果而不利用任何參考模型;

常用的聚類效能度量外部指標有:
* Jaccard係數(Jaccard Coefficient,簡稱 JC)
* FM指數(Fowlkes and Mallows Index,簡稱FMI)
* Rand指數(Rand Index,簡稱RI)

常用的聚類效能度量內部指標有:
* DB指數(Davies-Bouldin Index,簡稱DBI)
* Dunn指數(Dunn Index,簡稱DI)

(三)距離計算

給定樣本xi=(xi1,xi2;…;xin),與xj=(xj1;xj2;…;xjn),最常用的是”閔可夫斯基距離“(Minkowski distance),
9.18
p=2時,閔可夫斯基距離即歐氏距離(Euclidean distance),
9.19


p=1時,閔可夫斯基距離即曼哈頓距離(Manhattan distance),
9.20
上面的距離計算式都是事先定義好的,但在不少現實任務中,有必要基於資料樣本來確定合適的距離計算式,這可通過”距離度量學習“(distance metric learning)來實現。

(四)原型聚類

原型聚類亦稱”基於原型的聚類“(prototype-based clustering),此類演算法假設聚類結構能通過一組原型刻畫,在現實聚類任務中極為常用。通常情形下,演算法先對原型進行初始化,然後對原型進行迭代更新求解。採用不同的原型表示、不同的求解方式,將產生不同的演算法。

1. k均值演算法

給定樣本集D={x1,x2,…,xm},”k均值“(k-means)演算法針對聚類所得簇劃分C={C1,C2,…,Ck}最小化平方誤差,
9.24
其中,
公式
x是簇Ci的均值向量。直觀來看,上面式子在一定程度上刻畫了簇內樣本圍繞簇均值向量的緊密程度,E值越小則簇內樣本相似度越高。

2. 學習向量量化

與k均值演算法類似,“學習向量量化”(Learning Vector Quantization,簡稱LVQ)也是試圖找到一組原型向量來刻畫聚類結構,但與一般的聚類演算法不同的是,LVQ假設資料樣本帶有類別標記,學習過程用樣本的這些監督資訊來輔助聚類。

3. 高斯混合聚類

與k均值、LVQ用原型向量來刻畫聚類結構不同,高斯混合(Mixture-of-Gaussian)聚類採用概率模型來表達聚類原型。

(五)密度聚類

密度聚類亦稱“基於密度的聚類”(density-based clustering),此類演算法假設聚類結構能通過樣本分佈的緊密程度確定。通常情況下,密度聚類演算法從樣本密度的角度來考察樣本之間的可連線性,並基於可連線樣本不斷擴充套件聚類簇以獲得最終的聚類結果。
DBSCAN是一種著名的密度聚類演算法。

(六)層次聚類

層次聚類(hierarchical clustering)試圖在不同層次對資料集進行劃分,從而形成樹形的聚類結構。資料集的劃分可採用“自底向上”的聚合策略,也可採用“自頂向下”的分拆策略。
AGNES是一種採用自底向上聚合策略的層次聚類演算法。

相關推薦

[硬貨]|《機器學習筆記-9

作者: 劉才權 編輯: 黃俊嘉 寫在最前面 如今機器學習和深度學習如此火熱,相信很多像我一樣的普通程式猿或者還在大學校園中的同學,一定也想參與其中。不管是出於好奇,還是自身充電,跟上潮流,我覺得都值得試一試。對於自己,經歷了一段時間的系統學習(參考

斯坦福大學機器學習筆記——k-均值演算法、損失函式、初始化、數目的選擇

上面的部落格的演算法都是有監督學習的演算法,即對於每個資料我們都有該資料對應的標籤,資料集的形式如下: 而今天我們學習的演算法是一種無監督學習的演算法——聚類,該演算法中的每個資料沒有標籤,資料集的形式如下: K-均值聚類 k-均值聚類是一種最常見

機器學習

在機器學習和資料探勘中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。最常見的是資料分析中的相關分析,資料探勘中的分類和聚類演算法,如 K 最近鄰(KNN)和 K 均值(K-Means)等等。根據資料特性的不同,可以採用不同的度量方法

機器學習-層次劃分

層次聚類(劃分聚類) 聚類就是對大量未知標註的資料集,按照資料內部存在的資料特徵將資料集劃分為多個不同的類別,使類別內的資料比較相似,類別之間的資料相似度比較小;屬於無監督學習。 演算法步驟 1.初始化的k箇中心點 2.為每個樣本根據距離分配類別 3.更新每個類別的中心點(更新為該類別的所有樣本的均

吳恩達老師機器學習筆記異常檢測

明天就要開組會了,天天在辦公室划水都不知道講啥。。。 今天開始異常檢測的學習,同樣程式碼比較簡單一點 異常檢測的原理就是假設樣本的個特徵值都呈高斯分佈,選擇分佈較離散的樣本的作為異常值。這裡主要注意的是通過交叉驗證對閾值的選擇和F1score的應用。 原始資料: 程式碼如下:

機器學習筆記—svm演算法

機器學習筆記—svm演算法(上) 一:初識svm 問題:用一條直線把下圖的圓球和五角星分離開來。 解答:有N種分法,如下圖: 附加題:找出最佳分類? 解答:如圖: Exe me?鬼知道哪一條是最佳?? 等等這個最佳分類是不是等價於,地主讓管家給兩個兒子

學習筆記——Spring Boot9

Spring Security許可權管理   學習spring boot學深以後自然要接觸spring security許可權管理,所謂的spring security,就是我們平時接觸到的登入時面臨的多使用者多賬戶登入,還有使用者登入時的安全問題和許可權劃分的功能。可以說

吳恩達老師機器學習筆記異常檢測

明天就要開組會了,天天在辦公室划水都不知道講啥。。。 今天開始異常檢測的學習,同樣程式碼比較簡單一點 異常檢測的原理就是假設樣本的個特徵值都呈高斯分佈,選擇分佈較離散的樣本的作為異常值。這裡主要注意的是通過交叉驗證對閾值的選擇和F1score的應用。 原始資料:

機器學習筆記之SVMSVR演算法

學過SVM後,看了那麼多別人的文章,是時候自己總結一波了。權當寫的筆記供自己日後再回顧吧。 PS:結合自己在工作過程中(我這裡用SVR做股票預測)用到的知識來寫的,不會很全面,若有些知識這裡沒提及讀者

Python機器學習筆記:SVM1——SVM概述

前言   整理SVM(support vector machine)的筆記是一個非常麻煩的事情,一方面這個東西本來就不好理解,要深入學習需要花費大量的時間和精力,另一方面我本身也是個初學者,整理起來難免思路混亂。所以我對SVM的整理會分為四篇(暫定為四篇)學習,不足之處,請多多指導。   四篇分別為: Pyt

Python機器學習筆記:SVM2——SVM核函式

  上一節我學習了完整的SVM過程,下面繼續對核函式進行詳細學習,具體的參考連結都在上一篇文章中,SVM四篇筆記連結為: Python機器學習筆記:SVM(1)——SVM概述 Python機器學習筆記:SVM(2)——SVM核函式 Python機器學習筆記:SVM(3)——證明SVM Python機器學習筆記

Python機器學習筆記:SVM3——證明SVM

  說實話,凡是涉及到要證明的東西(理論),一般都不好惹。絕大多數時候,看懂一個東西不難,但證明一個東西則需要點數學功底,進一步,證明一個東西也不是特別難,難的是從零開始發明這個東西的時候,則顯得艱難(因為任何時代,大部分人的研究所得都不過是基於前人的研究成果,前人所做的是開創性的工作,而這往往是最艱難最有價

Python機器學習筆記:SVM4——sklearn實現

  上一節我學習了SVM的推導過程,下面學習如何實現SVM,具體的參考連結都在第一篇文章中,SVM四篇筆記連結為: Python機器學習筆記:SVM(1)——SVM概述 Python機器學習筆記:SVM(2)——SVM核函式 Python機器學習筆記:SVM(3)——證明SVM Python機器學習筆記:SV

機器學習】人像識別——K-Means

簡介   K-Means聚類是一種非監督的聚類方式,原理參看資料探勘十大演算法 | k-means。    程式碼 import sys import random import numpy as np from sklearn.decomposit

機器學習演算法層次

層次聚類也叫連通聚類方法,有兩個基本方法:自頂而下和自底而上。自頂而將所有樣本看做是同一簇,然後進行分裂。自底而上將初所有樣本看做不同的簇,然後進行凝聚。這種聚類的中心思想是:離觀測點較近的點相比離觀測點較遠的點更可能是一類。 這種方法首先會生成下面的樹

機器學習分析---K-means

初探k-means(Matlab)俗話說:,聚類分析的目的是:在資料中發現數據物件之間的關係,並將資料進行分組,使得組內的相似性儘可能大,組間的差別盡可能大,那麼聚類的效果越好。例如在市場營銷中,聚類分

機器學習——clustering:K-means演算法非監督學習

1、歸類 聚類(clustering):屬於非監督學習(unsupervised learning),是無類別標記(class label) 2、舉例 3、K-means演算法 (1)K-means演算法是聚類(clustering)中的經典演算法,資料探勘的十大經典演算

機器學習——非監督學習——層次Hierarchical clustering

1、層次聚類(Hierarchical clustering)的步驟 假設有N個待聚類的樣本,對於層次聚類來說,其步驟為: (1)初始化:把每個樣本各自歸為一類(每個樣本自成一類),計算每兩個類之間的距離,在這裡也就是樣本與樣本之間的相似度(本質還是計算類與類之間的距離)。

機器學習經典演算法 —— k-均值演算法附python實現程式碼及資料集

目錄 工作原理 python實現 演算法實戰 對mnist資料集進行聚類 小結 附錄 工作原理 聚類是一種無監督的學習,它將相似

機器學習-KMeans K值以及初始簇中心點的選取

src 常用 趨勢 試圖 重復執行 很大的 一個點 3.4 選擇 【轉】http://www.cnblogs.com/kemaswill/archive/2013/01/26/2877434.html 本文主要基於Anand Rajaraman和Jeffrey David