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