聚類參考資料

一、聚類的定義

聚類的可操作定義可以表示如下:給定n個對象的表示,基於相似度的度量找到K個組,使得相同組中的對象之間的相似性高,而不同組中的對象之間的相似性較低

聚類算法可以大致分爲兩類:分層分式。層次聚類算法以聚集模式遞歸地發現嵌套集羣(從其自己的集羣中的每個數據點開始,並且將最相似的一組聚類連續地合併形成一個集羣層次結構)或者以分裂(自上而下)模式(從所有數據點在一個集羣中並遞歸地將每個集羣分成更小的集羣)

 

二、距離計算


•向量的範數定義:

向量的範數可以簡單形象的理解爲向量的長度,或者向量到零點的距離,或者相應的兩個點之間的距離。

•向量的範數是一個函數||x||,滿足非負性||x|| >= 0,齊次性||cx|| = |c| ||x|| ,三角不等式||x+y|| <= ||x||+ ||y||。

•常用的向量的範數:
L1範數:  ||x|| 爲x向量各個元素絕對值之和。
L2範數:  ||x||爲x向量各個元素平方和的1/2次方,L2範數又稱Euclidean範數或者Frobenius範數
Lp範數:  ||x||爲x向量各個元素絕對值p次方和的1/p次方
L∞範數:  ||x||爲x向量各個元素絕對值最大那個元素的絕對值,即:

2、距離

•閔可夫斯基距離(Minkowski Distance),閔氏距離不是一種距離,而是一組距離的定義。對應Lp範數,p爲參數。

閔氏距離的定義:兩個n維變量(或者兩個n維空間點)x1(x11,x12,…,x1n)與 x2(x21,x22,…,x2n)間的閔可夫斯基距離定義爲: 

其中p是一個變參數。

當p=1時,就是曼哈頓距離,

當p=2時,就是歐氏距離,

當p→∞時,就是切比雪夫距離,       

根據變參數的不同,閔氏距離可以表示一類的距離。 

 

歐式距離(對應L2範數):最常見的兩點之間或多點之間的距離表示法,又稱之爲歐幾里得度量,它定義於歐幾里得空間中。 n維空間中兩個點x1(x11,x12,…,x1n)與 x2(x21,x22,…,x2n)間的歐氏距離:

也可以用表示成向量運算的形式:

曼哈頓距離:曼哈頓距離對應L1-範數,也就是在歐幾里得空間的固定直角座標系上兩點所形成的線段對軸產生的投影的距離總和。例如在平面上,座標(x1, y1)的點P1與座標(x2,y2)的點P2的曼哈頓距離爲:,要注意的是,曼哈頓距離依賴座標系統的轉度,而非系統在座標軸上的平移或映射。

從名字就可以猜出這種距離的計算方法了。想象你在曼哈頓要從一個十字路口開車到另外一個十字路口,駕駛距離是兩點間的直線距離嗎?顯然不是,除非你能穿越大樓。實際駕駛距離就是這個“曼哈頓距離”。而這也是曼哈頓距離名稱的來源, 曼哈頓距離也稱爲城市街區距離(CityBlock distance)



切比雪夫距離:若二個向量或二個點x1和x2,其座標分別爲(x11,x12, x13, ... , x1n)和(x21, x22, x23, ... , x2n),則二者的切比雪夫距離爲:d = max(|x1i - x2i|),i從1到n。對應L∞範數。

國際象棋玩過麼?國王走一步能夠移動到相鄰的8個方格中的任意一個。那麼國王從格子(x1,y1)走到格子(x2,y2)最少需要多少步?自己走走試試。你會發現最少步數總是max(| x2-x1| , | y2-y1 | ) 步。有一種類似的一種距離度量方法叫切比雪夫距離。

 

 

三、K-means

1、NP-hard

參考資料一:

其中,NP是指非確定性多項式(non-deterministic polynomial,縮寫NP)。所謂的非確定性是指,可用一定數量的運算去解決多項式時間內可解決的問題。NP 問題通俗來說是其解的正確性能夠被“很容易檢查”的問題,這裏“很容易檢查”指的是存在一個多項式檢查算法。相應的,若NP中所有問題到某一個問題是圖靈可歸約的,則該問題爲NP困難問題

例如,著名的推銷員旅行問題(TravelSaleman Problem or TSP):假設一個推銷員需要從香港出發,經過廣州,北京,上海,…,等 n 個城市, 最後返回香港。 任意兩個城市之間都有飛機直達,但票價不等。假設公司只給報銷 C 元錢,問是否存在一個行程安排,使得他能遍歷所有城市,而且總的路費小於 C?

推銷員旅行問題顯然是 NP 的。因爲如果你任意給出一個行程安排,可以很容易算出旅行總開銷。但是,要想知道一條總路費小於 C 的行程是否存在,在最壞情況下,必須檢查所有可能的旅行安排! 這將是個天文數字。

旅行推銷員問題是數圖論中最著名的問題之一,即“已給一個n個點的完全圖,每條邊都有一個長度,求總長度最短的經過每個頂點正好一次的封閉迴路”。Edmonds,Cook和Karp等人發現,這批難題有一個值得注意的性質,對其中一個問題存在有效算法時,每個問題都會有有效算法。

迄今爲止,這類問題中沒有一個找到有效算法。傾向於接受NP完全問題(NP-Complet或NPC)和NP難題(NP-Hard或NPH)不存在有效算法這一猜想,認爲這類問題的大型實例不能用精確算法求解,必須尋求這類問題的有效的近似算法

此類問題中,經典的還有子集和問題;Hamilton迴路問題;最大團問題

參考資料二(見附錄一):

 

2、貪心算法

貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局部最優解

思想

貪心算法的基本思路是從問題的某一個初始解出發一步一步地進行,根據某個優化測度,每一步都要確保能獲得局部最優解。每一步只考慮一個數據,他的選取應該滿足局部優化的條件。若下一個數據和部分最優解連在一起不再是可行解時,就不把該數據添加到部分解中,直到把所有數據枚舉完,或者不能再添加算法停止

 

3、P204西瓜數據集結果示例


代碼還可以參考:

https://segmentfault.com/q/1010000007634688

四、學習向量量化

暫無

五、高斯混合聚類

1、協方差矩陣

假設 X 是以 n 個標量隨機變量組成的列向量,並且μk 是其第k個元素的期望值,即,μk= E[X(k)];協方差矩陣然後被定義爲:

Σ= 

  =

矩陣中的第(i,j)個元素是xi與xj的協方差。這個概念是對於標量隨機變量方差的一般化推廣。

 

2、拉格朗日函數

 

 

六、層次聚類

試析AGNES算法使用最小距離和最大距離的區別。

最大距離可以認爲是所有類別先生成一個能包圍所有類內樣本的最小圓,然後所有圓同時慢慢擴大相同的半徑,哪個類圓能完全包圍另一個類則停止,併合並這兩個類。由於此時的圓已經包含另一個類的全部樣本,所以稱爲全連接。 
最小距離則是擴大時遇到第一個非自己類的點就停止,併合並這兩個類。由於此時的圓只包含另一個類的一個點,所以稱爲單連接

 

 

 

 

 

附錄一:

NP-Hard

看相關算法的paper的時候,經常會出現NP-Hard這個詞。本博主也不是純數學系出身,對於這麼高深的問題自然沒有特別深入獨到的理解。但是本博主的習慣就是看到一個東西老在眼前晃來晃去但自己還不是很明白,就有強迫症一定要搞明白這到底是個什麼玩意。so,咱們就來看看這個NP-Hard問題,怎麼用最簡單的方式去了解。

1.世界七大數學難題之首

2000年,美國克萊數學研究所公佈了世界七大數學難題,又稱千禧年大獎難題。其中P與NP問題被列爲這七大世界難題之首,從而大大激發了對這一問題的研究熱情。

普林斯頓大學計算機系樓將二進制代碼表述的“P=NP?”問題刻進頂樓西面的磚頭上。如果證明了P=NP,磚頭可以很方便的換成表示“P=NP!”。 
康奈爾大學的Hubert Chen博士提供了這個玩笑式的P不等於NP的證明: 
反證法。設P = NP。令y爲一個P = NP的證明。證明y可以用一個合格的計算機科學家在多項式時間內驗證,我們認定這樣的科學家的存在性爲真。但是,因爲P = NP,該證明y可以在多項式時間內由這樣的科學家發現。但是這樣的發現還沒有發生(雖然這樣的科學家試圖發現這樣的一個證明),我們得到了矛盾。(上面內容來自wiki百科)

難怪本博主之前對這個問題理解不深刻。看到上面的資料寶寶放心了,說明寶寶智商還是正常的。

2.算法複雜度

要計算或解決一個問題,該問題通常有一個大小規模,用n表示。例如,若分析計算一個二進制數,該數有多少位,這個位就是其大小規模。再比如,從n個數裏面找出最大的那個數,這個n就是該問題的規模大小。怎麼找?我們要比較n-1次才能得到結果,這個n-1就是所花的時間,也就是時間複雜度。再比如,將n個數按從大至小排序,n是其規模大小,若是我們按這樣的方法:第一次從n個數裏找最大,第二次從n-1個數裏找最大,以此類推,需要的比較次數就是n(n-1)/2,稱我們所用的方法爲算法,稱n(n-1)/2爲該算法的時間複雜度。對於時間複雜度,當n足夠大時,我們只注重最高次方的那一項,其他各項可以忽略,另外,其常數係數也不重要,所以,n(n-1)/2我們只重視n的平方這一項了,記爲O(n的平方),這就是該算法對該問題的時間複雜度的專業表示。 
上面這段描述,估計大家都能看懂,就不在囉嗦了。重點在下面,前方高能預警,大家注意了。

所有形如a∗nk+b∗n(k−1)+c∗n(k−2)+⋯都可記爲O(nk),nk爲n的k次方,*自然就是乘法了,這樣的複雜度爲多項式(polynomial)時間複雜度。若是時間複雜度爲kn,k爲大於1的常數,或者n!的時間複雜度,或者比n!更大的時間複雜度 ,就稱爲指數型時間複雜度。顯然,當n足夠大時,指數型時間比多項式要大得多的多。

3.P問題與NP(Non-deterministicPolynomial )問題

所有能用多項式時間算法計算得到結果的問題,稱爲多項式問題,也就是P,所有絕對不可能用多項式時間求解的可解問題,稱爲指數型問題。當然,還有一類問題屬於不可解問題,也就是說你無論花多少時間也不能得到解答。

有這樣一類問題,假使你得到了問題的解,我要驗證你的解是否正確,我驗證所花的時間是多項式,至於求解本身所花的時間是否是多項式我不管,可能有多項式算法,可能沒有,也可能是不知道,這類問題稱爲NP問題。 
NP概念的奧妙在於,它躲開了求解到底需要 多少時間這樣的問題,而僅僅只是強調驗證需要多少時間,從而爲P與NP這一千年難題的產生埋下了伏筆。顯然,P肯定是NP,因爲你既然能用多項式求解,就肯定能用多項式驗證(難不成我再算一遍!),但NP是否是P誰也確定不了。另外,目前已經很明確的指數型問題也肯定不是NP。

用通俗的話來解釋,NP問題就是其解的正確性很容易被檢驗出來,這裏的很容易檢驗指的是存在一個多項式算法。

4.最具代表性的NP-Hard問題:TSP

售貨員旅行問題 (travelingsalesman problem),是最具有代表性的NP問題之一。假設一個推銷員需要從香港出發,經過廣州,北京,上海,…,等 n 個城市, 最後返回香港。 任意兩個城市之間都有飛機直達,但票價不等。現在假設公司只給報銷 C 塊錢,問是否存在一個行程安排,使得他能遍歷所有城市,而且總的路費小於 C? 
推銷員旅行問題顯然是 NP 的。因爲如果你任意給出一個行程安排,可以很容易算出旅行總開銷。但是,要想知道一條總路費小於 C 的行程是否存在,在最壞情況下,必須檢查所有可能的旅行安排! 這將是個天文數字。 
這個天文數字到底有多大?目前的方法接近一個一個的排着試,還沒有找到更好可以尋得最短路徑的方法。對七個城而言,共有 6!=720 個排法,還比較簡單;,但若有 20 個城,則排法就有 19! 種。因故在排列組合裏 n! 寫起來輕鬆。但 1.21∗1017 是一個大得不得了的數字。若每秒鐘排一次,要排 3.84∗109 年(一年約爲 3.15∗107 秒),即使使用計算器,每秒排一百萬次(不容易做到)也得重做三千年才能找到答案。「生也有涯,知也無涯」,想不到區區二十個城,要三十個世紀才能找到答案。

 

 

 

附錄二:

K-Means的細節問題

1、K值怎麼定?我怎麼知道應該幾類?
答:這個真的沒有確定的做法,分幾類主要取決於個人的經驗與感覺,通常的做法是多嘗試幾個K值,看分成幾類的結果更好解釋,更符合分析目的等。或者可以把各種K值算出的SSE做比較,取最小的SSE的K值。

2、初始的K個質心怎麼選?
答:最常用的方法是隨機選,初始質心的選取對最終聚類結果有影響,因此算法一定要多執行幾次,哪個結果更reasonable,就用哪個結果。 當然也有一些優化的方法,第一種是選擇彼此距離最遠的點,具體來說就是先選第一個點,然後選離第一個點最遠的當第二個點,然後選第三個點,第三個點到第一、第二兩點的距離之和最小,以此類推。第二種是先根據其他聚類算法(如層次聚類)得到聚類結果,從結果中每個分類選一個點。

3、K-Means會不會陷入一直選質心的過程,永遠停不下來?
答:不會,有數學證明K-Means一定會收斂,大致思路是利用SSE的概念(也就是誤差平方和),即每個點到自身所歸屬質心的距離的平方和,這個平方和是一個函數,然後能夠證明這個函數是可以最終收斂的函數。

4、判斷每個點歸屬哪個質心的距離怎麼算?
答:這個問題必須不得不提一下數學了……
第一種,歐幾里德距離(歐幾里德這位爺還是很厲害的,《幾何原本》被稱爲古希臘數學的高峯,就是用5個公理推導出了整個平面幾何的結論),這個距離就是平時我們理解的距離,如果是兩個平面上的點,也就是(X1,Y1),和(X2,Y2),那這倆點距離是多少初中生都會,就是√( (x1-x2)^2+(y1-y2)^2 ,如果是三維空間中呢?√((x1-x2)^2+(y1-y2)^2+(z1-z2)^2 ;推廣到高維空間公式就以此類推。可以看出 ,歐幾里德距離真的是數學加減乘除算出來的距離,因此這就是只能用於連續型變量的原因。
第二種,餘弦相似度,餘弦相似度用向量空間中兩個向量夾角的餘弦值作爲衡量兩個個體間差異的大小。相比距離度量,餘弦相似度更加註重兩個向量在方向上的差異,而非距離或長度上。下圖表示餘弦相似度的餘弦是哪個角的餘弦,A,B是三維空間中的兩個向量,這兩個點與三維空間原點連線形成的角,如果角度越小,說明這兩個向量在方向上越接近,在聚類時就歸成一類:

 

看一個例子(也許不太恰當):歌手大賽,三個評委給三個歌手打分,第一個評委的打分(10,8,9) 第二個評委的打分(4,3,2),第三個評委的打分(8,9,10)
如果採用餘弦相似度來看每個評委的差異,雖然每個評委對同一個選手的評分不一樣,但第一、第二兩個評委對這四位歌手實力的排序是一樣的,只是第二個評委對滿分有更高的評判標準,說明第一、第二個評委對音樂的品味上是一致的。
因此,用餘弦相似度來看,第一、第二個評委爲一類人,第三個評委爲另外一類。
如果採用歐氏距離, 第一和第三個評委的歐氏距離更近,就分成一類人了,但其實不太合理,因爲他們對於四位選手的排名都是完全顛倒的。
總之,如果注重數值本身的差異,就應該用歐氏距離,如果注重的是上例中的這種的差異(我概括不出來到底是一種什麼差異……),就要用餘弦相似度來計算。
還有其他的一些計算距離的方法,但是都是歐氏距離和餘弦相似度的衍生,簡單羅列如下:明可夫斯基距離、切比雪夫距離、曼哈頓距離、馬哈拉諾比斯距離、調整後的餘弦相似度、Jaccard相似係數……

5、還有一個重要的問題是,大家的單位要一致!
比如X的單位是米,Y也是米,那麼距離算出來的單位還是米,是有意義的
但是如果X是米,Y是噸,用距離公式計算就會出現“米的平方”加上“噸的平方”再開平方,最後算出的東西沒有數學意義,這就有問題了。
還有,即使X和Y單位一致,但是如果數據中X整體都比較小,比如都是1到10之間的數,Y很大,比如都是1000以上的數,那麼,在計算距離的時候Y起到的作用就比X大很多,X對於距離的影響幾乎可以忽略,這也有問題。
因此,如果K-Means聚類中選擇歐幾里德距離計算距離,數據集又出現了上面所述的情況,就一定要進行數據的標準化(normalization),即將數據按比例縮放,使之落入一個小的特定區間。去除數據的單位限制,將其轉化爲無量綱的純數值,便於不同單位或量級的指標能夠進行計算和比較。
標準化方法最常用的有兩種:

·        min-max標準化(離差標準化):對原始數據進行線性變換,是結果落到【0,1】區間,轉換方法爲 X'=(X-min)/(max-min),其中max爲樣本數據最大值,min爲樣本數據最小值。

·        z-score標準化(標準差標準化):處理後的數據符合標準正態分佈(均值爲0,方差爲1),轉換公式:X減去均值,再除以標準差

6、關於離羣值?
答:離羣值就是遠離整體的,非常異常、非常特殊的數據點,在聚類之前應該將這些“極大”“極小”之類的離羣數據都去掉,否則會對於聚類的結果有影響。但是,離羣值往往自身就很有分析的價值,可以把離羣值單獨作爲一類來分析。

7、用SPSS作出的K-Means聚類結果,包含ANOVA(單因素方差分析),是什麼意思?
答:答簡單說就是判斷用於聚類的變量是否對於聚類結果有貢獻,方差分析檢驗結果越顯著的變量,說明對聚類結果越有影響。對於不顯著的變量,可以考慮從模型中剔除。 

補充

其實我們也可以用EM算法來解釋K-means算法的學習過程(如果還不知道EM算法是什麼,可以翻一下我關於EM算法的博客)。我們的目的就是將樣本分爲k個類,其實說白了就是求一個樣本的隱含類別,然後用隱含類別將x歸類。由於我們事先不知道類別y,那麼首先我們可以對每個樣例假定一個y。

E-step:將樣本分配到距離最近的聚類中心所屬的簇,這相當於對隱含變量y進行求解。

M-step:更新每個簇的吧 聚類中心,使得p(x,c)最大。

 

附錄三:

先驗分佈

它是總體分佈參數θ的一個概率分佈貝葉斯學派的根本觀點,是認爲在關於θ的任何統計推斷問題中,除了使用樣本X所提供的信息外,還必須對θ規定一個先驗 分佈,它是在進行推斷時不可或缺的一個要素。貝葉斯學派把先驗分佈解釋爲在抽樣前就有的關於θ的先驗信息的概率表述,先驗分佈不必有客觀的依據,它可以部分地或完全地基於主觀信念。例如,某甲懷疑自己患有一種疾病A,在就診時醫生對他測了諸如體溫、血壓等指標,其結果構成樣本X。引進參數θ:有病時,θ=1;無病時,θ=0。X的分佈取決於θ是0還是1,因而知道了X有助於推斷θ是否爲1。按傳統(頻率)學派的觀點,醫生診斷時,只使用X提供的信息;而按貝葉斯學派觀點,則認爲只有在規定了一個介於0與1之間的數p作爲事件{θ=1}的先驗概率時,才能對甲是否有病(即θ是否爲1)進行推斷。p這個數刻畫了本問題的先驗分佈,且可解釋爲疾病A的發病率。先驗分佈的規定對推斷結果有影響,如在此例中,若疾病A的發病率很小,醫生將傾向於只有在樣本X顯示出很強的證據時,才診斷甲有病。在這裏先驗分佈的使用看來是合理的,但貝葉斯學派並不是基於“p是發病率”這樣一個解釋而使用它的,事實上即使對本病的發病率毫無所知,也必須規定這樣一個p,否則問題就無法求解。

 

附錄四:

極大似然估計






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