摘要:在這個信息量爆炸的社會,高效的處理數據成為重中之重,所以聚類算法就為此提供了技術幫助。聚類解析是把數據進行分類匯總的重要手段,被廣泛應用於當今統計學,大數據運行,信號辨別等眾多行業。聚類算法有多種實現方法,其中kmeans算法是基於距離劃分 的方法來實現聚類。本文首先對kmeans算法進行深入的研究和學習,簡單介紹了其思想及其具體操作步驟,因其算法簡單、快速高效 的處理大數據集而被人們廣泛應用。但其初始聚類中心是隨機選擇的,所以結果具有不確定性。利用層次聚類的算法對其進行改進, 使其初始聚類中心穩定,彌補了kmeans算法的缺點。最後用層次聚類算法改進的kmeans算法在matlab中預設徑向基函數神經網絡,該網絡徑向基函數的數目、徑基函數的中心和寬度以及隱含層和輸出層之間的連接權值有算法的聚類結果確定,此方法徑向基函數神經 網絡的穩定性和高效性。關鍵詞:kmeans算法;RBFNN;matlab;Abstract: in this information explosion society, efficient data processing has become the top priority, so clustering algorithm provides technical help for this. Clustering analysis is an important means to classify and summarize data and is widely used in many industries such as statistics, big data operation and signal discrimination. There are many implementation methods of clustering algorithm, among which kmeans algorithm is based on distance partition method to achieve clustering. Firstly, this paper makes an in-depth study and study of kmeans algorithm, and briefly introduces its ideas and specific operation steps. Because of its simple, fast and efficient algorithm for processing large data sets, kmeans algorithm has been widely used by people. However, the initial clustering center is randomly selected, so the result is uncertain. The hierarchical clustering algorithm is used to improve the algorithm to make its initial clustering center stable, which makes up for the shortcomings of kmeans algorithm. Finally, kmeans algorithm improved by hierarchical clustering algorithm is used to preset radial basis function neural network in matlab. The number of radial basis function, the center and width of radial basis function and the connection weight between hidden layer and output layer of this network are determined by clustering results of the algorithm. The stability and high efficiency of the radial basis function neural network of this method are obtained.
Keywords :kmeans algorithm; RBFNN. Matlab;
緒論1.1課題的研究意義
隨著社會的不斷發展,信息技術的提高越來越快,每天產生的數據以億為單位來計算,在這個數據驟增的社會中,尤其是網際網路,存儲的數據大大超過了人們所能理解的範圍,所以高效的處理並利用數據就顯得尤為重要。聚類分析就是為解決這一問題應運而生的。 聚類分析是經過分析相異數據對象之間的相似性來進行分類,這項技術被應用在許多領域,例如:分析圖像、機器學習、空間數據剖 析、生物研究以及市場調研等領域。作為聚類分析中傳統劃分方法的Kmeans算法,具有算法不複雜、易於實現、易於擴展並且能夠處 理大數據集的優點。但它自身有一定的缺點:聚類的效果隨初始聚類中心的差異而產生變動,聚類結果的穩定性較差。所以在使用過程中,需要針對不同的實例進行不同的改進。徑向基函數神經網絡(RBFNN)是由三層網絡形成,分別是輸入層、隱含層和輸出層。 它的好處是:網絡結構簡單、非線性無限曲近能力強、約束速度快以及全局約束。在數據分類方面有較高的能力,可應用於實際生活中的函數逼近、模式識別、數據分類及故障診斷等問題。神經網絡對數據集體現的正確反應,取決於數據集和網絡結構兩個方面, 其中網絡結構的設計是重中之重。正確的抉擇不同層的參數,如:徑向基函數的數量、基函數中心和寬度以及隱含層與輸出層之間的連結權重。不同層在網絡結構中的作用不同,所以採取不同的策略來優化網絡結構中不同層的參數。
本文用基於層次聚類的算法來改進的kmeans算法在matlab中設計一個徑向基函數神經網絡分類器。首先用層次聚類算法對數據目標進行劃分,將聚所得結果作為kmeans算法的初始參數,對數據對象利用kmeans算法進行第二次聚類,所得結果用來確定神經網絡中徑向基函數的數目、基函數中心及寬度等值,從而使分類器的分類精度更高,分類速度更快。
1.2課題的主要研究內容
本論文主要研究了kmeans算法,並對kmeans算法進行改良,用改進後的算法在matlab中來設計RBFNN分類器。具體內容如下:
(1)概要
簡略介紹了本課題鑽研的背景及意義,此算法應用領域廣,為人們的生活帶來了便利,大大促進了社會的發展。通過概述了其基本思 想對其有一定的把握,並引出文章的研究主題。
(2)研究kmeans算法並對其進行改進
經過對kmeans算法的優缺點進行了深入的學習,Kmeans算法的初始聚類中心是任意的,所以結果不穩定、不確定。繼深入學習並研究 了層次聚類算法,層次聚類算法對已經處理的數據無法恢復到原來的狀態,具有不可逆性。並給出了一種改進算法,將這兩種算法進 行聯合,對各自的缺點不足進行了調節,使用層次聚類算法得到的結果來確認kmeans算法的初始聚類中心,由此避免了初始聚類中心 抉擇的任意性,隨後再進行kmeans二次聚類得到最終聚類結果。大大提高了聚類的精準性。(3)RBFNN分類器的設計
RBFNN具有網絡結構不複雜、非線性無限接近能力強,收約束速度快以及全局約束的優點。通過層次聚類算法和kmeans算法的相 結合產生的聚類結果來確定神經網絡中徑向基函數的數量、徑向基函數的寬度和中心、隱含層與輸出層之間的連接權值,利用該方法 設計的神經網絡精度高、練習速度快。(4)實驗結果
最後用仿真來說明改進後的算法比之前的算法聚類速度更快,結果更加穩定。用改進後的算法設計的分類器,在應對不同數據集時, 能夠正確的反應並進行分類。2 kmeans算法
Kmeans算法是一種非實時監督的聚類算法,傳統的基於距離劃分的聚類算法。當兩個數據對象之間的距離越小那它們之間的近似性就越大,越容易劃分到一個簇中,將所得到的簇作為最終的結果。Kmeans算法是一種較為經典的算法,在處理大量數據中也應用較為廣 泛。2.1簇間距離的計算方法
(1)最短距離:兩個聚類所包含的數據獨享之間的距離最小的值的代表兩個聚類的距離
(2) 最長距離:任意兩個聚類所內涵的數據對象之間距離最大值代表兩個聚類的距離。
(3) 平均值距離:任意兩個聚類的兩個聚類中心點之間距離值代表兩個聚類的距離。(4) 平均距離:兩個聚類所內涵的數據單位之間的距離的平均值表示兩個聚類的距離。2.2kmeans算法的思想
Kmeans算法最終只產生一個簇,但過程是一個更相轉換的過程。每一次更像轉換都需要對樣本數據的分類正確與否進行判斷,若有錯 誤則進行調整,並修改聚類中心;若正確則不會調整而且聚類中心也不會發生改變。Kmeans算法通常使用的聚類準則函數,就是計算 每個數據目標到聚類中心的誤差平方和,並使其越來越小。
傳統的kmeans算法的工作過程:1 從多個單位目標中隨意選擇N個數據作為聚類中心:
2 計算每個數據單位到聚類中心的距離,將數據目標規劃至距離最近的簇中;
3 計算每個簇的衡值,反覆工作,直到聚類核心穩定不再產生變動。 計算kmeans算法實現聚類的誤差平方和,,其中,E指所有數據目標的誤差平方和,p是指空間中的數據目標,表示一個類的平均值, 利用此準則生成的聚類結果更加緊湊,處理數據樣本之間區別明顯時此算法有良好的效果,並且對處理大數據集時,有良好的伸縮性 。
算法基本流程概念2.3層次聚類算法
層次聚類算法是自下向上的一種凝聚算法,初始聚類是單個的數據目標,以鄰近的簇相融合的方式來凝聚,直到得到期望的結果停止 。如果要對N個數據目標進行聚類,產生NN的距離矩陣,此算法對數據目標進行凝聚的具體過程如下:
(1)將單個數據目標看作一類,每一類中有且僅有一個數據,計算類之間的距離,得到最初的距離矩陣;
(2)將得到數值最小的兩個類合併成為一個新的類別;
(3)然後重新計算這個新生成的類別和其餘所有類之間的距離,就是將新生成的類與其餘所有類的距離值中最小的作為它們之間的近似度;
(4)將(2)(3)步循環反覆,一直達到最終條件算法終止,得到我們所期望的類的數量。 層次聚類算法在每次合併生成一個新的類時,都需要重新計算合併後的類與其餘類之間的距離,距離矩陣也需要多次更新,若遇到大 型數據集,則計算量是相當大的,算法的複雜度也是逐漸升高的,時間的複雜度大大增加,大大降低了算法的應用範圍。 層次聚類算法的流程圖如圖2-2所示: 此算法的實現:若數據個數為n的數據集,則產生大小的數組,用dist來存儲每兩個數據目標之間的距離。Dist的結構體中包括 :distance、rowi、rowj其中,distance是指i,j兩對象之間的距離,rowi是指第i個對象所在的行的序號,rowj是指第j個對象所在 行的序號。用函數sortdist實現數據目標兩兩之間的距離順序排列,根據距離上升的順序來合成類,用link函數來實現聚類最短距離 。判斷一個數據目標是否被合併,通過新建一個一維數組來標記,若未被合併用-1表示。在合併類的過程中,若判定兩個數據對象未 合併則將這兩個對象合併成一類,並修改在數據對象的標記,同時類的個數減少一;若兩個數據目標中,一個已合併而另一個沒有合 並,就將未被合併的數據目標合併到已合併的所屬類中,並將合併後的標識賦給數據目標,同時減少一個類;若兩個數據目標均已別 合併到不同的類中,則將這兩個不同的類合併成一個新類,此時修改一類中所有數據目標為另外一類的標記,並減少類的個數。循環 反覆,當得到指定類的個數或最終合併成一個類的時候停止。 層次聚類算法的缺點:用凝聚的方式對數據進行聚類,已經處理的數據無法通過分裂得到之前的狀態是一個不可逆的過程,一旦處理 無法再對其進行修正。所以我們將其與kmeans算法進行結合,克服自身的不足,同時又將層次聚類的成果作為kmeans算法的初始聚類 中心,避免了kmeans算法初始聚類中心的任意性,有效的使算法更相轉換的次數減少,從而加快了聚類速率,提高了聚類精度,使聚 類結果更穩定,更確定。
2.4改進的kmeans算法
Kmeans算法是從多個單位中隨機選擇N個目標作為聚類中心,產生的聚類結果不太穩定,所以怎樣選擇初始聚類中心對產生的聚類的成果有原因。本文對初始聚類中心的確認方式進行了改進,通過層次聚類的算法儘量使初始聚類中心空間分布與實際分布接近。層次聚 類算法對數據樣本進行一個初始的劃分,然後計算每個劃分裡目標的衡值,得到初始聚類中心。隨後進行kmeans二次聚類,使聚類結 果更加穩定。改進kmeans算法工作過程:1 確定k個聚類;2 對數據進行層次聚類解析;3 將層次聚類解析得到的多個聚類計算均值作為初始聚類中心;
4 計算每個數據單位到聚類核心的距離,將數據目標規劃到距離較近的簇當中;
5 循環反覆,直到聚類中心不在變化為止。修改後的kmeans算法流程概念:2.5改進的kmeans算法的實現將層次聚類的結果作為kmeans算法的初始聚類中心,是利用findclass(intt,int row,cTypec,doublemedia,int col,doublep)這一函 數實現的,其中各參數含義如下:
t:層次聚類的聚類結果;row:聚類對象的個數;col:聚類對象屬性的個數;p:聚類對象的值。用結構體數組c來存儲層次聚類中 類的數量和類的類型,將數據對象遍歷層次聚類的聚類結果,得到用count來表示每個類的目標總量,用cno來表示數據對象的類型號 。在遍歷的過程中,將同屬性的值相加求平均值,就是聚類中心。隨後計算一個數據對象到n個聚類中心的最短距離,將數據目標劃 分到距離最近的類中,若數據所屬類的類型號與初始類型號是否相同,若相同則不需要更正,否則修改為所屬類的類型號。 這種改進後的算法減少了算法更相轉換的次數,避免初始聚類中心的任意性所導致結果的不確定性。這種算法只有當數據目標所屬類 別不再變化時才終止算法,因此準確性極高。2.6小結 利用層次聚類得到的成果作為kmeans算法的初始聚類中心,避免了初始聚類中心任意性導致聚類結果不明確的缺陷,初始聚類中心很 好的描述了該類,減少了更相轉換的次數,使運算速度得以提升。Kmeans算法避免了層次聚類算法無法修改已經完成合併或分類的缺 點,從而使聚類結果的準確性大大提升。3 RBFNN分類器
徑向基函數神經網絡(RBFNN)是三層前向型神經網絡,可以將非線性基函數的線性組合實現低維空間向高維空間的非線性轉換。其 網絡結構不複雜,非線性無限接近能力強,約束速度快等優點。該網絡被應用到智能控制,信息處理以及系統優化等領域。本章利用 改進後的kmeans算法確定神經網絡不同層的參數。3.1徑向基函數神經網絡
徑向基函數神經網絡中第一層由信號源節點組成輸入層,第二層由徑向基函數構成隱含層,第三層是對輸入模式響應的輸出層。在此 網絡中,第一層到第二層的變換是非線性的,第二層到第三層的改變時線性的。徑向基函數神經網絡結構如圖3-1所示: 本文採用的徑向基函數是高斯型函數:第i個輸出為:,公式中X是指輸入矢量,是指第j個隱節點的中心,是指第j個隱節點的徑基寬 度。是指隱含層和輸出層之間的權值,k為隱含層神經元的個數。輸出層對隱含層的結果進行線性加權求和。得到輸入到輸出的映照 。表示x與之間的徑向距離,隨著它的增大,的值迅速減小到零。越小,徑向基函數的寬度就越小。
3.2徑向基函數神經網絡參數的選擇
隱含層節點的數目,函數的中心,函數的寬度以及隱含層與輸出層之間權值的選擇直接影響RBF神經網絡的性能。首先用聚類算法確 認隱含層節點中心和徑基寬度,然後利用最小二乘法確定隱含層與輸出層之間的權值。具體過程如下:
利用修改後的算法對數據樣本進行聚類,得到簇的數目作為隱含層節點的數量k;每個簇的中心作為隱含層節點中徑向基函數初始值 ,根據聚類中心與訓練樣本指間的平均距離作為徑向基函數的初始值,避免極端情況。然後利用偽逆法確定隱含層與輸出層之間的權 值,即:,其中,為偽逆矩陣, 徑向基函數神經網絡的局部特性導致在數據樣本以外的函數值時效果不太理想,可以用歸一化徑向基函數神經網絡可以覆蓋整個徑向 基函數的輸入空間,能夠得到擬合效果更好的輸出,提高了泛化能力,減少了隱含層節點的個數。 3.3徑向基函數神經網絡參數的優化 如此所得的神經網絡一般不能得到我們滿意的結果我們採用梯度下降的方法對參數進行優化。我們用誤差平方和:,其中,為期望輸 出,為實際輸出,n為樣本個數,L為輸出矢量的維數,將誤差平方和作為參數優化的標準。把徑向基函數中心、徑基寬度、隱含層與 輸出層之間的權值W,當作集合U{、、w},則,其中,是下降最快的梯度方向,是調整參數的步長,n是迭代的次數。 輸入層到隱含層的優化:公式(3-1) 其中,k代表隱含層神經元的個數,n代表更相轉換次數。徑基寬度的優化:公式(3-2)權值w的優化:公式(3-3)適當的優化參數 可以提高網絡的精度。適當的可以保證函數的收斂趨勢,過大則導致神經網絡震蕩;過小導致神經網絡收斂速度變慢。通過控制平方 和誤差小於給定值來不斷迭代從而提高網絡的精確性。
3.4徑向基函數神經網絡分類器的設計 徑向基函數神經網絡分為三部分:徑向基函數的中心;徑向基函數的寬度;隱含層與輸出層的連接權值。第一階段,根據輸入數據樣 本確定徑向基函數的中心和寬度。徑向基函數的中心尤為重要,用改良後的聚類算法來求數據樣本的各聚類中心並將其作為徑向基函 數的初始中心。用聚類的結果來確認徑向基函數的寬度,經常用聚類中心與每個數目標之間距離的平均值的方法來確定寬度。 基於改進的kmeans算法設計分類器的具體步驟如下:
1) 對數據進行歸一化處理後,隨機排序。
2) 對樣本數據進行聚類,將聚類結果作為神經網絡各層的參數;
3) 計算各聚類中心之間的距離,利用高斯公式計算隱含層的輸出,利用偽逆法計算隱含層與輸出層之間的權值;
4) 利用公式3-1、3-1、3-3對神經網絡各參數進行優化,在matlab7.0編程實現徑向基函數神經網絡的設計。
4 仿真結果
4.1kmeans算法在matlab中的實現
用鳶尾花數據集測試該算法,用matlab中的kmeans算法進行聚類。圖4-1為某一次的聚類結果,
圖4-1鳶尾花數據集聚類解結果 由實驗結果可知,每一次聚類的結果都不相同,因為初始聚類中心的任意性導致結果的不明確性,若初始聚類中心是給定的則聚類成 果是相對肯定的。由結果表明,將兩種算法結合,不僅提高了聚類的穩定性還提高了聚類的速度。
Kmeans算法 改進後的kmeans算法
準確率 79.92% 88.36%
運行時間 28ms 15ms
4.2分類器在matlab中的實現
本文用BSD Datebase和solar兩個數據來檢測此算法。BSD datebase是一個總量為625的數據,其中隨機選擇500個數據作為學習數據 ,其餘125個數據作為測試數據。Solar datebase是一個總量為208的數據,其中,每個數據均有60個屬性,隨機選擇150組數據作為 學習數據,其餘58組數據作為測試數據。其驗結果比較如表4-1:
表4-1
數據 RBF算法 改進後的RBF算法
DSB datebase =0.5762=0.5720 0.89630.3586
Solar datebase =0.5769=0.4857 =0.73080.2921
其中,為算法執行100次的平均準確率,為算法執行100次的平均誤差平方和。
圖4-2 DSB datebase兩種算法誤差變化比較
圖4-3 solar datebase兩種算法誤差變化比較 通過對兩種數據進行聚類分析,可以明顯的看出利用改進後的聚類算法設計的徑向基函數神經網絡分類器,網絡訓練的速度有了一定 的提高,而且該方法設計的分類器在聚類的準確精度上明顯提高,聚類的誤差也更加趨於平緩。
結語
本文對基於matlab的RBFNN的kmeans算法的研究進行了詳細的介紹,首先簡單的介紹了kmeans算法以及層次聚類算法的基本思想和操 作的具體步驟,並對其優缺點進行了分析。層次聚類算法的不可逆性,已經處理的數據無法返回原來的狀態,通過kmeans算法對此算 法進行改良,然後在此基礎上對kmeans算法初始聚類中的隨機性進行了改進,利用層次聚類算法先對數據進行一個劃分,將劃分的結 果作為kmeans算法的初始聚類中心,兩個算法的相互結合,使聚類結果更加穩定、確定。最終,利用改進的聚類算法設計RBF神經網 絡,由聚類結果自動確定徑向基函數的個數、徑基函數的中心和寬度以及隱含層和輸出層之間的權值,大大提高網絡的穩定性。 本研究雖取得以上成果,但仍有許多地方需要改進:(1)優化kmeans算法的參數,研究自動確定聚類數的方法。(2)實際生活中數據類型有很多種,提高處理不同類型數據的能力。 (3)改進後的算法並沒有應用在大數據集的測試上,無法表明其有效性,在此方面需要進一步研究。 (4)此算法應用於研究靜態數據,並沒有涉及到動態數據,所以可以擴展一些新的研究方向,使算法的應用領域更加廣泛。
參考文獻[1]何迎生,段明秀.基於改進kmeans聚類方法的RBF神經網絡設計[J].邵陽學院學報(自然科學版),2014(02):48-50.
[2]賴玉霞,劉建平,楊國興.基於遺傳算法的K均值聚類分析[J].計算機工程,2015(20):200-202.
[3]劉雪峰,張宏立.基於MATLAB的RBF神經網絡在分類中的應用[J].內江科技,2015,31(07):137.
[4]高寧,張建中.MATLAB在RBF神經網絡模型中的應用[J].農業網絡信息,2016(02):110-111+116.
[5]楊友良,許釗,王文輝.基於MATLAB的RBF神經網絡的一種應用[J].冶金叢刊,2016(06):39-40+44.
[6]王陽萍,朱正平.MATLAB在RBF徑向基神經網絡仿真中的應用[J].甘肅科技,2014(10):54-55.[7]陳龍,武交峰,彭森第.MATLAB GUI工具與RBF神經網絡在數據預測中的應用[J].科技信息,2011(24):518-519.
[8]唐勇智,葛洪偉.基於聚類的RBF-LBF串聯神經網絡學習算法[J].計算機應用,2017(12):2916-2918.
[9]陳燕俐,洪龍,金達文,朱梧檟.一種簡單有效的基於密度的聚類分析算法[J].南京郵電學院學報,2015(04):24-29.
[10]趙法信,王國業.數據挖掘中聚類分析算法研究[J].通化師範學院學報,2013(02):11-13.
[11]譚建輝.徑向基函數神經網絡的再學習算法及其應用[J].微電子學與計算機,2016(05):115-117+120.
[12]胡泱,陳剛.一種有效的基於網格和密度的聚類分析算法[J].計算機應用,2003(12):64-67.
[13]王敞,陳增強,袁著祉.基於遺傳算法的K均值聚類分析[J].計算機科學,2013(02):163-164.
[14]唐哲. 一種基於遺傳算法的k均值聚類分析[D].長沙理工大學,2014.[15]Qinghui Wu,Xinjun Wang,Qinghuan Shen. Research on dynamic modeling and simulation of axial-flow pumping system based on RBF neural network[J]. Neurocomputing,2016,186.[16]He Wei Zhang,Lei Sun,Hong Zhang. Research on Data Packets Clustering Algorithm in the Wireless Multiple Hop Network[J]. Applied Mechanics and Materials,2014,3512(651).致謝
本論文從開始到結束經歷多重修改和大量的實驗數據,感謝指導老師的細心幫助和指導,是我明白了MATLAB的操作,而且對KMEANS算法,層次聚類算法以及徑向基函數神經網絡有了深層次的理解和認識,以及更廣闊的應用領域。