本發(fā)明屬于譜聚類算法領域,具體涉及一種基于臨近點法的聚類個數自動確定譜聚類方法。
背景技術:
聚類就是將物理或者抽象的對象中相似性較高的對象聚集在同一個類中,相似性較低的對象分配在不同類中,從而使得同一個聚類形成的簇中的所有對象之間具有較高相似性,而不同簇的對象之間的相似性較低。聚類分析技術在基因表達分析和圖像處理等領域都有著十分廣泛的應用。聚類算法是處理圖像分割的主要方法之一,已經被廣泛應用在圖像分割中。而在過去的數十年中,譜聚類算法在圖像分割和數據聚類中也表現出明顯的優(yōu)勢。
在譜圖理論基礎上建立的一種稱之為譜聚類的算法,與傳統(tǒng)的聚類算法相比較起來,它具有能在任意形狀的樣本空間上聚類的優(yōu)點,是將數據映射到特征空間中進行聚類的算法。有些算法,例如k-mean聚類,是聚類分析中最經典的算法,算法較為簡單,能夠用于多種類型數據的聚類。但當數據集為非凸的時候,k-means算法往往會陷入局部最優(yōu)解,聚類效果欠佳。而譜聚類則能夠克服k-means聚類等一些經典方法存在的某些缺陷。
最早的譜聚類算法是由ng、bach和jordan等人提出的多路譜聚類方法。而在接下來的發(fā)展過程中出現的具有代表性的譜聚類算法還有meila提出的多路歸一化割譜聚類方法和elhamifar等提出的稀疏子空間譜聚類。在譜聚類的發(fā)展過程中也出現了許多問題,很多人也針對這些問題提出了相應的改進算法,但都不夠完善。例如,趙峰等人利用模糊c-means聚類得到的劃分矩陣提出了模糊相似度度量,這個算法能很好的處理現實中不確定性的問題,但是算法計算復雜度相當高,此時計算機對于大型相似度矩陣很難進行存儲和分解;fowlkeset等人提出了
總的來說,目前的典型的譜聚類算法存在以下幾個問題。首先,譜聚類算法存儲相似度矩陣的空間復雜度為o(n2),尤其在處理圖像的時候,圖像本身的數據量很大,算法對于大型相似度矩陣很難存儲和分解,即空間復雜度過高;其次,譜聚類算法對高斯核函數中的尺度參數非常敏感,但是難以選取合適的尺度參數來很好的反應復雜數據集的空間分布特點;最后,典型譜聚類算法需要人工輸入聚類個數。
技術實現要素:
為了克服現有譜聚類算法存在的空間復雜度過高,難以選取合適的尺度參數來很好的反應復雜數據集的空間分布特點,需要人工輸入聚類個數的不足,針對這些問題,本發(fā)明提出了一種在臨近點法基礎上,自動選取聚類個數并能夠根據數據分布估計每個數據點的局部尺度參數的譜聚類方法,有效降低了空間復雜度,選取合適的尺度參數來很好的反應復雜數據集的空間分布特點,不需要人工輸入聚類個數。
本發(fā)明解決其技術問題所采用的技術方案是:
一種基于臨近點法的聚類個數自動確定譜聚類方法,包括以下步驟:
1)數據初始化,過程如下:
1.1)對數據集的所有維進行了歸一化處理,輸入數據集,對數據集的每一維x1,…,xn∈rm做歸一化處理,即處理后第i個數據的第j維數值為:
yi(j)=(xi(j)-min(x(j)))/(max(x(j))-min(x(j)))(1)
式(4)中,其中n表示數據個數,m表示數據維數,x(j)表示所有數據點的第j維,xi(j)表示第i個數據的第j維的數值;
2)基于臨近點法的稀疏相似度矩陣的計算,過程如下:
2.1)首先將獲得的數據進行區(qū)域分塊操作,將所有數據劃分到block個區(qū)間內,即每個區(qū)間內有
2.2)計算第j區(qū)間的區(qū)間距離矩陣distj=[d(j-1)*m+1;d(j-1)*m+2;…;dj*m],其中第i個數據與所有點的距離形成點距離矩陣的表示形式為di=[||yi-y1||,||yi-y2||,…,||yi-yn||],||yi-yj||表示數據點i和數據點j之間的距離值;
2.3)依據得到的區(qū)間距離矩陣找出第j個區(qū)間內每個數據點對應的臨近點,保留與臨近點之間的距離值,刪除其余距離值,從而得到區(qū)間稀疏距離矩陣;
2.4)通過臨近點法將數據點所對應的局部尺度參數σi定義為該點的t個臨近點與數據點之間的距離平均值,如下所示:
式(2)中,d(xi,xj)表示數據點i與臨近點中第j個點之間的距離;
2.5)由于在稀疏相似度矩陣中只保留數據點與臨近點之間的相似值,所以在計算相似值時兩個數據點對應的局部尺度參數相近,即相似值計算公式可以改寫為:
依據公式(3),計算出區(qū)間稀疏距離矩陣所對應的區(qū)間稀疏相似度矩陣;
2.6)如果迭代完成,即j=block,則執(zhí)行步驟2.7);否則j=j+1,并執(zhí)行步驟2.2);
2.7)所得到的所有區(qū)間稀疏相似度矩陣整合得到稀疏相似度矩陣。
3)自動確定聚類中心個數,過程如下:
3.1)給定參數percent,通過區(qū)間距離矩陣計算各個數據點的密度值,得到密度矩陣
ρi=∑f(dij)(4)
其中,m矩陣是由距離矩陣中最小的percent×n個距離值組成,percent表示鄰居點個數占總數據點距離個數的比例,dij表示點i和點j之間的距離;
3.2)計算每個數據點的距離值,得到距離矩陣
δi=min(dij)(ρj≥ρi)(6)
對于ρ值最大的點,存在
δi=max(δj)(i≠j)(7)
否則將該點判斷為非候選點,該點局部密度為密度比它大的臨近點中距離最近點的距離;
3.3)根據步驟3.1)和3.2)得到的密度矩陣
3.4)本方法引入變量γ,對于任意一個數據點i,其γ定義為:
γi=ρi×δi(8)
根據γ的概率分布情況,對于該γ的分布進行曲線的擬合,發(fā)現其圖形的擬合曲線形狀類似于一條正態(tài)分布曲線;
3.5)由ρ-δ關系圖上的離散數據點進行一元線性擬合,得到擬合曲線yδ=kxρ+b0,計算各個數據點的殘差值εδi=y(tǒng)δi-δi,繪制殘差直方圖εδi-h,分別用鐘型曲線進行正態(tài)擬合,得到方差值σδ,利用λσ原則確定處在置信區(qū)間外的點個數。
4)特征分解,求取特征向量組,過程如下:
4.1)首先需要計算出度矩陣d和拉普拉斯矩陣l。度矩陣是一個對角陣,它的對角線上的元素dii由相似度矩陣的第i行元素相加求和得到的。度矩陣d的計算公式如下:
然后根據度矩陣d和相似度矩陣s計算得到拉普拉斯矩陣l,拉普拉斯矩陣計算公式如下:
4.2)將拉普拉斯矩陣進行特征分解,在選取最優(yōu)特征向量組合的時候,選擇直接選取法,直接從依據特征值從大到小排序后的序列中選取前k個特征值所對應的特征向量,選出的這k個特征向量是所有特征向量中最重要的特征向量;
4.2)將k個最大特征值所對應的特征向量組成矩陣v,v=[v1,v2,…,vk],輸出特征向量組v。
5)標準化特征向量組,并聚類,過程如下:
對所選取的特征向量組v進行標準化處理,得到矩陣u:
此時u矩陣中每行數據表示原始數據在拉普拉斯空間中的映射位置,接著對u矩陣所表示的所有數據在特征空間中的映射的元素進行k-means聚類。
6)最優(yōu)臨近點選取,過程如下:
6.1)設計了一個fitness函數作為評價指標。fitness函數由兩部分構成:全局的簇內距離和全局的簇間距離。根據聚類效果的好壞的最本質定義:簇內距離越小越好,簇間距離越大越好,令
對于一個給定的臨近點個數,fitness函數值越大,則說明聚類效果越好。
6.2)設置臨近點個數選取的初始值t0和臨近點選取最大值;
6.3)如果臨近點個數迭代至最大值時,輸出所有迭代臨近點個數中最大fitness函數值所對應的臨近點個數,以及對應的聚類結果;否則更新臨近點個數,將程序轉至步驟2.3)再次進行聚類。
進一步,所述步驟2.4)中,通過臨近點法將數據點所對應的局部尺度參數的取值定義為該點的臨近點與數據點之間距離的平均值。利用所獲得的局部尺度參數代替高斯核函數的單個尺度參數,能準確分離出稀疏背景簇內包含的緊密簇,提高聚類的準確度。
如步驟3.2)、3.3)和3.5)所述,該方法能夠依據數據點密度和距離的關系,利用兩者關系進行殘差分析,得到在置信區(qū)間外的擬合產生的奇異點個數,即為聚類中心個數,而且在計算確定聚類中心點個數時所需的數據點密度和距離的時候,使用局部距離矩陣代替整體距離矩陣,降低了算法的空間復雜度,并能準確的確定聚類個數。
在所述步驟6.1)中,通過設計一個fitness函數,通過迭代比較所有范圍內臨近點對應的全局的簇間距離和全局的簇內距離之比,來反應該臨近點個數所對應的聚類效果,實現臨近點個數的參數自適應。
本發(fā)明的技術構思為:基于臨近點法的聚類個數自動確定譜聚類算法,能夠根據數據分布估計每個數據點的局部尺度參數,自動確定聚類中心的個數,降低了聚類過程的參數敏感性問題。該算法對于一個數據集的處理,首先進行預處理,為了防止一些數據集的某些維遠遠大于該數據集的其他維,而導致其他維的重要性可能被減弱甚至被忽略的問題,我們對數據集的所有維進行了歸一化處理;接著通過臨近點法計算出區(qū)間稀疏距離矩陣以及定義為臨近點距離均值的局部尺度參數,通過區(qū)間稀疏距離矩陣和相似度值計算公式計算出區(qū)間稀疏相似度矩陣,并整理成整體稀疏相似度矩陣;然后調用ccfd算法,先確定數據點的局部密度和具有更高局部密度的其他點的最小距離,利用兩者關系進行殘差分析,得到在置信區(qū)間外的擬合產生的奇異點個數,即為聚類中心個數;接著依據公式計算出度矩陣d和拉普拉斯矩陣l,并對拉普拉斯矩陣l進行特征分解,在選取最優(yōu)特征向量組合的時候,選擇直接選取方法,取出合適的特征向量組;最后對數據集在特征空間中的映射特征向量組中的所有元素進行標準化處理,后進行k-means聚類,得到聚類結果;計算fitness函數值,不斷迭代,選取最高fitness函數值所對應的最優(yōu)臨近點個數的聚類結果進行輸出。
本發(fā)明的有益效果主要表現在:根據數據分布估計每個數據點的局部尺度參數,能夠自動確定聚類中心的個數,并且實現了臨近點個數的參數自適應。在真實數據集的實驗結果表明,該算法具有良好的適用性,提高了聚類的質量,使得聚類的結果更加準確。
附圖說明
圖1是稀疏相似度矩陣計算流程圖。
圖2是ccfd方法流程圖。
圖3是樣本數據分布與ρ-δ分布圖的映射關系,其中(a)是樣本數據分布圖,(b)是ρ-δ分布圖。
圖4是選取特征向量組流程圖
圖5是fitness函數迭代確定最佳臨近點個數流程圖。
具體實施方式
下面結合附圖對本發(fā)明作進一步描述。
參照圖1~圖5,一種基于臨近點法的聚類個數自動確定譜聚類方法,包括以下步驟:
1)數據預處理,對實際數據集進行分析我們可以看出來,一些數據集的某些維遠遠大于該數據集的其他維,而且這些維數值的差值較大,這導致其他維的重要性可能被減弱甚至被忽略。在沒有獲得數據集的每一維重要性的信息情況下,我們對數據集的所有維進行了歸一化處理,具體過程如下:
輸入數據集,對數據集的每一維x1,…,xn∈rm做歸一化處理,即第i個數據處理后的第j維數值為:
yi(j)=(xi(j)-min(x(j)))/(max(x(j))-min(x(j)))(1)
式(4)中,其中n表示數據個數,m表示數據維數,x(j)表示所有數據點的第j維,xi(j)表示第i個數據的第j維的數值。
2)基于臨近點法的稀疏相似度矩陣的計算,算法流程圖如圖(1)所示,具體過程如下:
2.1)首先將獲得的數據進行區(qū)域分塊操作,將所有數據劃分到block個區(qū)間內,即每個區(qū)間內有
2.2)計算第j區(qū)間的區(qū)間距離矩陣distj=[d(j-1)*m+1;d(j-1)*m+2;…;dj*m]其中第i個數據與所有點的距離形成點距離矩陣的表示形式為di=[||yi-y1||,||yi-y2||,…,||yi-yn||],||yi-yj||表示數據點i和數據點j之間的距離值;
2.3)臨近點法的主要思想:如果一個樣本在空間中的最相似的幾個樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別。使用臨近點法計算相似度矩陣主要是保留臨近點之間的相似度值,而舍去距離較遠點之間的相似度值。這樣能增大類內的相似度,而減小類間的相似度,增強聚類效果。
使用臨近點法依據得到的區(qū)間距離矩陣找出第j個區(qū)間內每個數據點對應的臨近點,保留與臨近點之間的距離值,刪除其余距離值,從而得到區(qū)間稀疏距離矩陣;
2.4)通過臨近點法將數據點所對應的局部尺度參數σi的取值定義為該點t個臨近點與數據點之間距離的平均值,如公式(2)所示:
式(2)中,d(xi,xj)表示數據點i與該點所有t個臨近點中第j個點之間的距離,利用每個數據點的局部尺度參數代替高斯核函數的單個尺度參數,能準確分離出稀疏背景簇內包含的緊密簇;
2.5)由于在稀疏相似度矩陣中只存在數據點與臨近點之間的相似值,所以在計算相似值時兩個數據點對應的局部尺度參數相近,即相似值計算公式可以改寫為:
依據公式(3),計算出區(qū)間稀疏距離矩陣所對應的區(qū)間稀疏相似度矩陣;
2.6)如果迭代完成,即j=block,則執(zhí)行步驟2.7);否則j=j+1,并執(zhí)行步驟2.2);
2.7)所得到的所有區(qū)間稀疏相似度矩陣整合得到稀疏相似度矩陣。
3)自動確定聚類中心個數ccfd算法流程圖如圖2所示,其基本思想如下:
a.簇類中心被較低局部密度的臨近點所包圍,且和具有更高局部密度的其他數據對象有相對較大的距離。
b.噪聲點具有相對較小的局部密度和較大的距離。
具體過程如下:
3.1)給定參數percent,通過區(qū)間距離矩陣計算各個數據點的密度值,得到密度矩陣
ρi=∑f(dij)(4)
其中,m矩陣是由距離矩陣中最小的percent×n個距離值組成,percent表示鄰居點個數占總數據點距離個數的比例,dij表示點i和點j之間的距離。
為了減小算法的空間復雜度,本方法采用一種改進的局部密度計算方法,具體的數據點局部密度計算方法步驟如下:
3.1.1)初始化一個兩維的矩陣m,設定矩陣m的第二維存儲percent×n個距離值,矩陣m的第一維存儲該距離值所屬數據點標號,矩陣m用于存儲整個距離矩陣中最小的percent×n個距離值,其中j=1,區(qū)間個數為block;
3.1.2)依據上一步,計算出第j區(qū)間的區(qū)間距離矩陣,將第j區(qū)間的區(qū)間距離矩陣的所有距離值存入m矩陣的第二中,并在第一維中標記出每個點所屬數據點;
3.1.3)判斷矩陣m中距離值個數,如果個數大于percent×n個,則保留距離值最小的percent×n個;
3.1.4)如果迭代完成,即j=block,則執(zhí)行步驟3.2.5);否則j=j+1,并執(zhí)行步驟3.2.2);
3.1.5)依據保留在矩陣m中數據點標號的個數來定義數據點的局部密度,得到密度矩陣
3.2)計算每個數據點的距離值,得到距離矩陣
δi=min(dij)(ρj≥ρi)(6)
對于ρ值最大的點,存在
δi=max(δj)(i≠j)(7)
否則將該點判斷為非候選點,該點局部密度為密度比它大的臨近點中距離最近的點距離;
為了減小算法的空間復雜度,本方法采用一種改進的距離值計算方法,具體的數據點距離值計算方法步驟如下:
3.2.1)首先將步驟2.2)所得到的區(qū)間距離矩陣整理成完整的距離矩陣;
3.2.2)依據密度矩陣和臨近點法,得到數據點的臨近點密度;
3.2.3)如果臨近點中沒有點的密度大于該點密度,則將該點判斷為候選點;否則該點為非候選點,其距離值為密度大于該點的臨近點中距離最小的點;
3.2.4)依據公式(6)和公式(7)計算候選點的距離值;
3.2.5)整合所有數據點的距離值,輸出該距離值矩陣。
3.3)根據步驟3.1)和3.2)得到的密度矩陣
例如樣本數據集dataset1,其二維空間內數據分布,如圖3(a)所示。計算樣本數據集中每個數據點i的局部密度ρi和到密度更高點的最小距離ρi,繪制出ρ-δ分布圖,如圖3(b)所示。數據分布與數據對象ρ-δ分布存在映射關系,如圖3所示。其中,a1、a2、a3是圖3(a)中的三個聚類中心,他們在圖3(a)的ρ-δ分布圖中表現出了較大的ρ值和δ值;對于其他點,稱其為邊界點,它們均屬于某一個類簇,表現出較小的ρ值和δ值。
3.4)本方法引入變量γ,對于任意一個數據點i,其γ定義為:
γi=ρi×δi(8)
根據γ的概率分布情況,對于該γ的分布進行曲線的擬合,發(fā)現其圖形的擬合曲線形狀類似于一條正態(tài)分布曲線;
3.5)由ρ-δ關系圖上的離散數據點進行一元線性擬合,得到擬合曲線yδ=kxρ+b0,計算各個數據點的殘差值εδi=y(tǒng)δi-δi,繪制殘差直方圖εδi-h,分別用鐘型曲線進行正態(tài)擬合,得到均值μ和方差值σ,利用λσ原則確定處在置信區(qū)間外的奇異點個數。具體方法如下:
設置邊界值wide=μ+λσ,將數據集中所有點的γ值與wide進行比較。對于數據點i,若γ>wide,則標記i為奇異點。依據這種思路比較所有數據點的γ值,從而得出聚類個數k。
4)特征分解,求取合適的特征向量組,流程圖如圖4所示,具體過程如下:
4.1)首先需要計算出度矩陣d和拉普拉斯矩陣l。度矩陣是一個對角陣,它的對角線上的元素dii由相似度矩陣的第i行元素相加求和得到的。度矩陣d計算公式如下:
然后根據度矩陣d和相似度矩陣s計算得到拉普拉斯矩陣l,拉普拉斯矩陣計算公式如下:
4.2)將拉普拉斯矩陣進行特征分解。在選取最優(yōu)特征向量組合的時候,選擇直接選取方法,是直接從依據特征值大小從大到小排序后的序列中選取前k個特征向量,選出的這k個特征向量是所有特征向量中最重要的特征向量;
4.2)將k個最大特征值所對應的特征向量組成矩陣v,v=[v1,v2,…,vk],輸出特征向量組v。
5)標準化特征向量組,并聚類,具體過程如下:
5.1)對所選取的特征向量組v進行標準化處理,得到矩陣u:
此時u矩陣中每行數據表示原始數據在拉普拉斯空間中的映射位置
5.2)隨機設置k個不同點為初始中心點,初始qold為無窮大,并設置聚類迭代閾值threshold;
5.3)將所有數據點分配到離該點最近的聚類中心所對應的類中,并計算點到所屬聚類中心點距離;
5.4)更新聚類中心點為現有聚類中心邊上的一點;
5.5)計算所有點到所屬聚類的中心點距離總和,記為qnew;
5.6)判斷threshold是否大于|qnew-qold|/qold,如果大于,則輸出現有中心點所有數據點的類標信息;否則范圍步驟5.3)。
6)最優(yōu)臨近點個數選取,流程圖如圖5所示,具體過程如下:
6.1)設計了一個fitness函數作為評價指標。fitness函數由兩部分構成:全局的簇內距離和全局的簇間距離。根據聚類效果的好壞的最本質定義:簇內距離越小越好,簇間距離越大越好,令
對于一個給定的臨近點個數,fitness函數值越大,則說明聚類效果越好。
6.2)設置臨近點個數選取的初始值t0和臨近點選取最大值;
6.3)如果臨近點個數迭代至最大值時,輸出所有迭代臨近點個數中最大fitness函數值所對應的臨近點個數,以及對應的聚類結果;否則更新臨近點個數,轉至步驟2.3)再次進行聚類。