一種基于迭代的神經網絡聚類方法
【技術領域】
[0001] 本發明主要用于解決機器學習中經典的聚類問題,使用方法涉及到由人工神經網 絡改進的超限學習機算法。
【背景技術】
[0002] 對數據的聚類問題一直以來都是工業系統與計算科學中的重要研究內容。在這個 信息量爆炸的大數據時代,數據處理相關的業務需求日益增多,所要處理的數據也越來越 復雜。隨著人們對聚類問題的深入研究,不斷有新的聚類方法被提取。傳統聚類算法如K均 值算法、最大期望算法以及層次聚類算法等,聚類速度快但僅適用于數據空間線性可分情 況的。新興的聚類算法如譜聚類算法、深度學習自編碼器、非監督超限學習機等,可以解決 數據空間高維且線性不可分的情況,但通常需要消耗較大的內存或需要較長的運行時間。
[0003] 目前,對于大規模復雜數據的聚類,既需要聚類算法有處理高維線性不可分數據 的能力,也需要解決內存與運行成本。本發明利用神經網絡來解決聚類問題,使得該方法能 夠有效地處理高維非線性復雜數據。并且引入超限學習機模型來求解神經網絡,打打提升 了算法的運行速度。超限學習機,英文名為Extreme Learning Machine,是黃廣斌教授于 2004年提出的針對單隱層前饋神經網絡的學習方法。與傳統神經網絡優化的梯度下降算法 不同,超限學習機的學習過程不需要迭代操作,這大大減少了它的訓練時間。此外,本方法 以K均值算法為基本框架,便于使用并行化的加速手段來減少聚類的時間消耗。并且使用超 限學習機的神經網絡模型以及僅用少量榜樣集進行訓練的策略,因此該方法只需要較短的 計算時間與較少的內存消耗。
[0004] 綜合來講,本發明既解決了傳統聚類方法不能很好處理高維非線性數據空間聚類 的問題,又解決了新興聚類算法內存消耗大和運行時間長的問題,使得本方法能夠有效地 處理大規模復雜數據的聚類問題。
【發明內容】
[0005] 本發明的目的在于提供一種基于迭代的神經網絡聚類算法,本發明基于傳統聚類 的框架,通過引入神經網絡作為相似度衡量的依據,并通過不斷優化網絡結構得到更準確 的相似度衡量標準。
[0006] 本發明提出一種基于迭代的神經網絡聚類算法包括以下步驟:
[0007] 步驟1,初始化超限學習機模型參數;
[0008] 步驟2,隨機選取與所要聚類個數相同數量的樣本,每個樣本代表一個聚類,訓練 超限學習機以得到初始的隱層到輸出層間權值;
[0009] 步驟3,利用當前的超限學習機模型對樣本進行聚類分組;
[0010] 步驟4,對于每一個聚類分組,根據規則選取多個樣本作為該聚類分組的榜樣;
[0011] 步驟5,使用上個步驟中得到各聚類分組的榜樣樣本來重新訓練超限學習機模型;
[0012] 步驟6,若滿足結束條件則輸出聚類分組結果,否則返回步驟3。
[0013] 進一步,步驟1共包括以下2個子步驟:
[0014] 步驟1.1,設置超限學習機模型的隱層神經元個數L、隱層的激活函數g(0)以及正 則項系數γ ;
[0015] 其中隱層神經元個數L的取值大于樣本的特征維度d;隱層的激活函數g(e)通常 Sigmoid函數,正則項系數γ的取值范圍通常為[1(T 5,101Q];
[0016] 步驟1.2,隨機初始化超限學習機模型中輸入層到隱層的權值W以及偏置b,輸入層 到隱層的權值W是一個d行L列的隨機矩陣,隨機范圍為[1,1 ];偏置b是一個1行L列的隨機矩 陣,隨機范圍為[_1,1],偏置b中的一列對應隱層中一個神經元的偏置。
[0017] 進一步,步驟2共包括以下2個子步驟:
[0018]步驟2.1,隨機選取聚類個數個樣本,即隨機選取K個樣本,其中每個樣本都代表一 個聚類,構成初始榜樣集和對應的目標輸出來訓練超限學習機模型;
[0019]步驟2.2,計算隱層神經元的輸出妒)和超限學習機隱層到輸出層的權重0((^,從而 得到初始模型,計算公式如式(2)、(3)、(4)所示:
[0020] H(0) = g(ff · E(0)+B(0)) (2)
[0023] 其中B(())為偏置b的行拓展矩陣,拓展為行數與B(())的行數相等的矩陣,即B (())為K行 L列的矩陣,Κ為所要聚成的類別個數,L為隱層神經元個數,代表矩陣Η(())的轉置, 代表求廣義逆矩陣,是一個L維的單位矩陣,Ικ是一個K維的單位矩陣。
[0024] 進一步,在步驟3中分為兩個子步驟:
[0025] 步驟3.1,使用的超限學習機模型,輸入層到隱層的權值W以及偏置b、激活函數g (Θ)、隱層神經元個數L以及正則項系數γ在迭代中是固定不變的;只有隱層到輸出層的權 值β是隨著迭代不斷變化的;
[0026] 利用當前狀態的模型參數計算樣本Xl在輸出層神經元上的輸出值〇1,公式如下:
[0027] hi = g(ffxi | b) (5)
[0028] 0i = hiP(m-D (6)
[0029] 其中hi表示樣本^在隱層上的輸出值,是一個1行L列的矩陣,〇1是樣本^在輸出層 上的輸出值,是一個1行K列的矩陣,代表上次迭代得到的隱層到輸出層的權值;
[0030] 步驟3.2,根據樣本在輸出層神經元上的輸出值,為樣本進行分組聚類;輸出層神 經元的個數與所要聚類個數相等,分配的規則是:將樣本分配給輸出層神經元的輸出值最 高的那個神經元所對應的聚類分組中。
[0031 ] 進一步,步驟4分為以下兩個子步驟:
[0032]步驟4.1,根據步驟3中得到的聚類分組情況,計算每個聚類分組的均值;
[0033]步驟4.2,在各個聚類分組中,計算類樣本到所屬聚類中心的距離,并在選擇P個距 離聚類中心最近的樣本,構成當前迭代的榜樣樣本集E(m);
[0034]若出現聚類分組中存在一個聚類中所包含的樣本總數小于每類中需要選擇出的 榜樣個數p的情況時,則將該聚類分組中的所有樣本作為代表該類的榜樣樣本;若出現某個 聚類分組中不包含任何樣本的情況時,需要從除去其他聚類分組榜樣樣本集之外的樣本中 隨機選取一個作為該聚類分組的榜樣。
[0035] 進一步,步驟5包括兩個子步驟:
[0036] 步驟5.1,為步驟4中得到的榜樣樣本集構造目標函數;
[0037] 步驟5.2,計算隱層神經元的輸出H(m)和新的超限學習機模型中隱層到輸出層的權 重β(η),計算公式如式(7)、(8)、(9)所示:
[0038] H(m) = g(ff · E(m)+B(m)) (7)
[0041]其中B(m)為偏置b的行拓展矩陣,拓展為行數與E(m)的行數相等的矩陣,即B (m)為KX Ρ行L列的矩陣,Κ為所要聚成的類別個數,Ρ為每類中榜樣的個數,L為隱層神經元個數, ||§^代表矩陣H(m)的轉置,代表求廣義逆矩陣,U是一個L維的單位矩陣,ΙΚΧΡ是一個Κ Χρ維的單位矩陣。
【附圖說明】
[0042]圖1是超限學習機模型的框架圖。
[0043]圖2是本發明迭代的神經網絡聚類算法流程圖。
【具體實施方式】
[0044]下面結合【具體實施方式】對本發明做進一步的說明。
[0045]指定一個待聚類樣本集
以及所要聚成的類別個 數Κ,其中d代表樣本的特征維度,Ν代表樣本個數,Xl是一個d維的特征向量,即1行d列的矩 陣。我們這里以UCI中的Iris經典數據集作為待聚類樣本集為例,所要聚成的類別個數K為 3,特征維度d為4,樣本個數N為150,xi是一個1行4列的矩陣。
[0046]首先,在步驟1中要完成初始化超限學習機必要參數的任務,步驟1共包括以下2個 子步驟:
[0047]步驟1.1,設置超限學習機模型的隱層神經元個數L、隱層的激活函數g(0)以及正 則項系數γ。其中隱層神經元個數L的取值通常大于樣本的特征維度d,本方法中隱層神經 元個數對最終聚類結果的影響不大,一般取1000或2000即可;隱層的激活函數g(0)通常采 用Sigmoid函數,Sigmoid函數的表達式如式(1):
[0049]若Θ為矩陣,則視為對矩陣中的每個元素計算Sigmoid函數。正則項系數γ的取值 范圍通常為[10_5,101()],需要根據數據集的不同進行微調。本例中隱層神經元個數L為 1000,隱層的激活函數g(9)為Sigmoid函數,正則項系數γ為10 8。
[0050]步驟1.2,隨機初始化超限學習機模型中輸入層到隱層的權值W以及偏置b,其中由 于超限學習機輸入神經元個數與樣本的特征維度相同為d、隱層的神經元個數為L,因此輸 入層到隱層的權值W是一個d行L列的隨機矩陣,隨機范圍通常為[_1,1];偏置b是一個1行L 列的隨機矩陣,隨機范圍通常為[-1,1 ],偏置b中的一列對應隱層中一個神經元的偏置。本 例中輸入層到隱層的權值W為取值范圍[1,1 ]的3行1000列隨機矩陣,偏置b是一個取值范圍 [_1,1]的1行1000列隨機矩陣。
[0051 ]這里需要說明的是,使用神經網絡類的學習模型時,需要對數據進行歸一化操作, 通常可采用線性函數歸一化或0均值標準化將數據映射到[0,1],本例中采用的是線性函數 歸一化方法。
[0052] 接下來,在步驟2中要得到超限學習機的初始模型,步驟2共包括以下2個子步驟:
[0053] 步驟2.1,隨機選取聚類個數個樣本,即隨機選取K個樣本,其中每個樣本都代表一 個聚類,構成初始榜樣集E(Q)和對應的目標輸出T (Q)來訓練超限學習機模型。需要注意的是, 神經網絡的訓練需要給每個樣本自動生成目標輸出,通常的方法是將表示該類所的屬類別 位設為"Γ,其他位設為"〇"。以UCI中的Iris經典數據集中隨機選取3個樣本為例,具體如表 1:
[0054] 表1生成的樣本與對應目標輸出的示意表
[0057] 步驟2.2,計算隱層神經元的輸出H(())和超限學習機隱層到輸出層的權重β(()),從而 得到初始模型,計算公式如式(2)、(3)、(4)所示:
[0058] H(0) = g(ff · E(0)+B(0)) (2)
[0061] 其中B(())為偏置b的行拓展矩陣,拓展為行數與E(())的行數相等的矩陣,即B (())為K行 L列的矩陣,Κ為所要聚成的類別個數,L為隱層神經元個數,代表矩陣Η(())的轉置, 代表求廣義逆矩陣,Ικ是一個L維的單位矩陣,Ικ是一個K維的單位矩陣。
[0062] 以隱層神經元個數為1000和隨機選取3個樣本為例,生成的偏置b以及其拓展矩陣 B