干貨 | 全面理解無監(jiān)督學(xué)習(xí)基礎(chǔ)知識
一、無監(jiān)督學(xué)習(xí)
無監(jiān)督學(xué)習(xí)的特點是,模型學(xué)習(xí)的數(shù)據(jù)沒有標(biāo)簽,因此無監(jiān)督學(xué)習(xí)的目標(biāo)是通過對這些無標(biāo)簽樣本的學(xué)習(xí)來揭示數(shù)據(jù)的內(nèi)在特性及規(guī)律,其代表就是聚類。與監(jiān)督學(xué)習(xí)相比,監(jiān)督學(xué)習(xí)是按照給定的標(biāo)準(zhǔn)進(jìn)行學(xué)習(xí)(這里的標(biāo)準(zhǔn)指標(biāo)簽),而無監(jiān)督學(xué)習(xí)則是按照數(shù)據(jù)的相對標(biāo)準(zhǔn)進(jìn)行學(xué)習(xí)(數(shù)據(jù)之間存在差異)。以分類為例,小時候你在區(qū)分貓和狗的時候,別人和你說,這是貓,那是狗,最終你遇到貓或狗你都能區(qū)別出來(而且知道它是貓還是狗),這是監(jiān)督學(xué)習(xí)的結(jié)果。但如果小時候沒人教你區(qū)別貓和狗,不過你發(fā)現(xiàn)貓和狗之間存在差異,應(yīng)該是兩種動物(雖然能區(qū)分但不知道貓和狗的概念),這是無監(jiān)督學(xué)習(xí)的結(jié)果。
聚類正是做這樣的事,按照數(shù)據(jù)的特點,將數(shù)據(jù)劃分成多個沒有交集的子集(每個子集被稱為簇)。通過這樣的劃分,簇可能對應(yīng)一些潛在的概念,但這些概念就需要人為的去總結(jié)和定義了。
聚類可以用來尋找數(shù)據(jù)的潛在的特點,還可以用來其他學(xué)習(xí)任務(wù)的前驅(qū)。例如在一些商業(yè)引用中需要對新用戶的類型進(jìn)行判別,但是“用戶類型”不好去定義,因此可以通過對用戶進(jìn)行聚類,根據(jù)聚類結(jié)果將每個簇定義為一個類,然后基于這些類訓(xùn)練模型,用于判別新用戶的類型。
二、聚類的性能度量
聚類有著自己的性能度量,這和監(jiān)督學(xué)習(xí)的損失函數(shù)類似,如果沒有性能度量,則不能判斷聚類結(jié)果的好壞了。
聚類的性能大致有兩類:一類是聚類結(jié)果與某個參考模型進(jìn)行比較,稱為外部指標(biāo);另一種則是直接考察聚類結(jié)果而不參考其他模型,稱為內(nèi)部指標(biāo)。
在介紹外部指標(biāo)之前先作以下定義。對于樣本集合,我們可以給每一個樣本一個單獨(dú)的編號,并且我們以表示編號為i j 的樣本屬于同一個簇,這里 i<j 可以避免重復(fù)。因此有
a表示在聚類結(jié)果中樣本i j 屬于同一個簇,而在參考模型中i j 也同屬于一個簇。b表示在聚類結(jié)果中樣本i j 屬于同一個簇,而在參考模型中i j 不同屬于一個簇。c和d同理。以上定義兩兩樣本在聚類結(jié)果和參考模型結(jié)果可能出現(xiàn)的情況。
常用的外部指標(biāo)如下
以上的性能度量的結(jié)果都在[0,1]區(qū)間中,并且結(jié)果越大,說明性能越好。
倘若沒有可參考的模型,一個好的聚類結(jié)果應(yīng)是類內(nèi)的點都足夠近,類間的點都足夠遠(yuǎn),這就是內(nèi)部指標(biāo)說要描述的。對于內(nèi)部指標(biāo)我們需要先做以下定義
常用的內(nèi)部指標(biāo)有
DBI值越小說明聚類效果好,DI則相反,DI值越大說明聚類效果越好。
三、距離度量
樣本點分布空間中,如果兩個樣本點相距很近,則認(rèn)為樣本點應(yīng)該屬于同一個簇。如果樣本相距很遠(yuǎn),則不會認(rèn)為它們屬于同一個簇。當(dāng)然這里的遠(yuǎn)近是一種相對的概念而不是單純的數(shù)值。我們可以使用VDM(Value Difference Metric)距離:
以上表示了屬性u上兩個離散值a與b之間的VDM距離。表示屬性u上取值為a的樣本數(shù)
表示在第i個樣本簇中屬性u上取值為a的樣本數(shù),k為樣本簇數(shù)。
距離度量在聚類中非常重要,因為距離度量描述的是不同類別的相似度,距離越大相似度越小,由于不同概念之相似度的度量有所不同,在現(xiàn)實任務(wù)中,需要通過樣本確定合適的距離計算公式,這可以通過距離度量學(xué)習(xí)實現(xiàn)。
四、常見的距離算法
k-means
k均值是常用的快速聚類方法,該方法在學(xué)習(xí)開始之初,隨機(jī)設(shè)置若干個簇心,樣本點隸屬于離它最近的簇心。因此每個簇心會有一個隸屬于它自己的樣本集合。每次迭代,每個簇心找到隸屬于自己的樣本集合,并根據(jù)其隸屬的樣本集合中計算出中心位置(均值),然后簇心移動到此處。直到聚類結(jié)果不發(fā)生改變。k-means對球狀簇比較高效,針對其他的效果較差。
關(guān)于聚類簇心的設(shè)置,現(xiàn)實中我們往往會設(shè)置不同數(shù)量的簇心,通過聚類的性能度量來選擇***的簇心個數(shù)。

以上是西瓜數(shù)據(jù)集的聚類過程。
學(xué)習(xí)向量量化(Learin Vector Quantization)
LVQ和K均值算法很像,同樣是通過移動簇心來實現(xiàn)聚類,不同的是LVQ假設(shè)數(shù)據(jù)樣本有類別標(biāo)記,通過這些監(jiān)督信息輔助聚類。算法過程如下
以上算法的過程可以簡單概括為,如果隨機(jī)選擇的點與簇心的類別不對應(yīng)則令簇心遠(yuǎn)離該樣本點,否則靠近該樣本點。迭代結(jié)束后對于任意樣本x,它將被劃入與其距離最近的原型向量所代表的簇中。
以上是LVQ在西瓜數(shù)據(jù)集聚類的過程。
高斯混合聚類
高斯混合聚類才用概率模型來表達(dá)聚類原型,我們可以定義高斯混合分布為
其中 為混合系數(shù)且
。使用高斯混合聚類其實是假設(shè)樣本是在高斯混合分布中采樣的結(jié)果。對于樣本我們可以通過計算
得出某樣本由第i個高斯分布生成的后驗概率,該樣本的類別為使得該概率***的分布的類別。有關(guān)于高斯混合模型的具體介紹,將會與EM算法一起介紹。
密度聚類
顧名思義,密度聚類從樣本密度的角度來考察樣本之間的關(guān)聯(lián)性,其經(jīng)典算法為DBSCAN,該算法通過設(shè)置的鄰域和樣本鄰域內(nèi)最少樣本點數(shù)為標(biāo)準(zhǔn)設(shè)置核心對象,倘若核心對象密度相連則將它們合并到同一簇,因此DBSCAN的聚類結(jié)果的一個簇為***的密度相連的樣本集合。以下是DBSCAN的一些概念的定義:
上面MinPts = 3,虛線表示核心對象的鄰域。X1與X2密度直達(dá),X1與X3密度可達(dá)X3與X4密度相連。
DBSCAN能夠?qū)⒆銐蚋呙芏鹊膮^(qū)域劃分成簇,并能在具有噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的簇。
層次聚類
層次聚類開始時把所有的樣本歸為一類,然后計算出各個類之間的距離,然后合并距離最小的兩個類。從上面的描述來看,層次聚類就像是在用克魯斯卡爾算法建立最小生成樹一樣,不過當(dāng)層次聚類當(dāng)前類別數(shù)下降到給定的類別數(shù)是就會終止。這里層次聚類所使用的聚類是不同類別之間的平均距離。
因為層次聚類所需要計算的距離很多,因此層次聚類并不適合在大的數(shù)據(jù)集中的使用。