陳春玲,陳 紅,余 瀚
(南京郵電大學(xué) 計(jì)算機(jī)學(xué)院,江蘇 南京 210003)
隨著互聯(lián)網(wǎng)的飛速發(fā)展,移動(dòng)終端和智能手機(jī)的普及使得用戶能夠更加快速方便地獲取信息,同時(shí)人們對(duì)移動(dòng)網(wǎng)絡(luò)服務(wù)的質(zhì)量要求也越來(lái)越高。傳統(tǒng)模式只是通過(guò)簡(jiǎn)單的局部數(shù)據(jù)來(lái)對(duì)移動(dòng)用戶的行為進(jìn)行建模分析,其準(zhǔn)確度和可信度較差,導(dǎo)致開(kāi)發(fā)出的移動(dòng)應(yīng)用只能滿足少數(shù)用戶的行為習(xí)慣,而無(wú)法根據(jù)不同的移動(dòng)用戶的行為習(xí)慣來(lái)實(shí)現(xiàn)個(gè)性化的服務(wù)[1]。因此,尋求一種優(yōu)質(zhì)的網(wǎng)絡(luò)預(yù)測(cè)模型具有重要的研究意義。
BP(back propagation)神經(jīng)網(wǎng)絡(luò)作為一種單向傳播的多層前向網(wǎng)絡(luò),其主要目的是反復(fù)修正權(quán)值和閾值,使得誤差函數(shù)達(dá)到最小值。由于BP神經(jīng)網(wǎng)絡(luò)具有獨(dú)特的非線性映射能力和很強(qiáng)的自適應(yīng)能力,通常被作為建模的有效工具,因此,文中采用BP神經(jīng)網(wǎng)絡(luò)模型對(duì)移動(dòng)用戶行為進(jìn)行預(yù)測(cè)分析。但該模型也有收斂速度慢、預(yù)測(cè)精度不高、易陷入局部極值等缺點(diǎn)[2]。針對(duì)這些問(wèn)題,提出了很多改進(jìn)方法。例如,文獻(xiàn)[3]通過(guò)采用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,并通過(guò)“試錯(cuò)法”確定神經(jīng)元數(shù),該算法能達(dá)到預(yù)設(shè)目標(biāo)的次數(shù)更多,實(shí)現(xiàn)全局最優(yōu),但是穩(wěn)定性不高。文獻(xiàn)[4]采用改進(jìn)的PSO(particle swarm optimization)算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型,在該算法中粒子群采用改進(jìn)自適應(yīng)慣性權(quán)重和改進(jìn)自適應(yīng)加速因子來(lái)優(yōu)化BP神經(jīng)網(wǎng)絡(luò)模型初始時(shí)的權(quán)值和閾值,改進(jìn)算法明顯提高了模型的收斂速度,但是后期陷入局部極值的問(wèn)題仍未得到解決。文獻(xiàn)[5]基于改進(jìn)粒子群算法和BP神經(jīng)網(wǎng)絡(luò)算法構(gòu)建了網(wǎng)絡(luò)輿情預(yù)測(cè)模型,該模型在預(yù)測(cè)性能上有一定的優(yōu)越性,但在效率上處于劣勢(shì)。
在此基礎(chǔ)上,文中采用基于改進(jìn)的PSO算法和GA(genetic algorithm)算法的BP神經(jīng)網(wǎng)絡(luò)模型對(duì)移動(dòng)用戶行為進(jìn)行預(yù)測(cè),并通過(guò)實(shí)驗(yàn)對(duì)算法性能進(jìn)行驗(yàn)證。
BP神經(jīng)網(wǎng)絡(luò)(back propagation neural network)[6]是一種具有三層或三層以上的通過(guò)權(quán)值連接的網(wǎng)絡(luò),包含輸入層、隱含層和輸出層。隱含層又有單層和多層之分,上下層之間的節(jié)點(diǎn)通過(guò)權(quán)值相互連接,而同一層之間的節(jié)點(diǎn)無(wú)連接。隱含層與輸出層中的各節(jié)點(diǎn)均有一個(gè)權(quán)值和閾值[7]。訓(xùn)練的過(guò)程是通過(guò)誤差信號(hào)調(diào)節(jié)網(wǎng)絡(luò)的連接權(quán)值和閾值,這個(gè)調(diào)節(jié)過(guò)程是反復(fù)進(jìn)行的,直到訓(xùn)練次數(shù)達(dá)到最大值或者誤差達(dá)到要求的精度,則訓(xùn)練結(jié)束,即找到全局最優(yōu)解[8]。
文中采用多隱層BP神經(jīng)網(wǎng)絡(luò)進(jìn)行設(shè)計(jì)[9]。BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)對(duì)移動(dòng)用戶行為進(jìn)行預(yù)測(cè)的實(shí)質(zhì)是利用移動(dòng)用戶的行為參數(shù)(通話行為和網(wǎng)絡(luò)行為)構(gòu)成的樣本數(shù)據(jù)作為輸入值,通過(guò)隱含層不斷地學(xué)習(xí)、判斷、更新,從輸出層得到移動(dòng)用戶當(dāng)前的操作行為的預(yù)測(cè)結(jié)果,并及時(shí)做出決策。步驟如下:
(1)采集用戶真實(shí)行為數(shù)據(jù)作為樣本數(shù)據(jù),將樣本數(shù)據(jù)分為兩部分,一部分作為訓(xùn)練數(shù)據(jù),一部分作為測(cè)試數(shù)據(jù);
(2)數(shù)據(jù)預(yù)處理;
(3)構(gòu)建BP神經(jīng)網(wǎng)絡(luò)的隱層數(shù),迭代次數(shù),目標(biāo)函數(shù);
(4)使用訓(xùn)練數(shù)據(jù)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)模型;
(5)用測(cè)試數(shù)據(jù)測(cè)試訓(xùn)練后網(wǎng)絡(luò)模型;
(6)分析預(yù)測(cè)數(shù)據(jù)與期望數(shù)據(jù)之間的誤差。
BP網(wǎng)絡(luò)預(yù)測(cè)模型見(jiàn)圖1。
圖1 BP網(wǎng)絡(luò)預(yù)測(cè)模型
粒子群算法(particle swarm: optimization,PSO)[10]是一種智能優(yōu)化算法,通過(guò)模擬鳥(niǎo)類的覓食過(guò)程實(shí)現(xiàn)尋優(yōu)。作為一種高效并行優(yōu)化算法,可用于解決大量非線性、不可微的復(fù)雜優(yōu)化命題,且具有實(shí)現(xiàn)簡(jiǎn)單、容易理解、收斂速度較快等優(yōu)點(diǎn)[11]。同其他群體智能優(yōu)化算法一樣,PSO算法容易產(chǎn)生早收斂、全局收斂性能差的問(wèn)題[12]。原因是在粒子尋優(yōu)過(guò)程中,速度更新公式會(huì)對(duì)尋優(yōu)結(jié)果產(chǎn)生直接的影響,速度較大可以增加算法的全局搜索能力,速度較小可以增加算法的局部搜索能力,如何平衡PSO算法全局和局部搜索能力是PSO算法改進(jìn)的核心。為進(jìn)一步提高PSO算法的全局搜索能力,避免陷入局部最優(yōu)解,同時(shí)又不錯(cuò)過(guò)全局最優(yōu)解,文中提出對(duì)慣性權(quán)重進(jìn)行非線遞減的優(yōu)化公式。改進(jìn)后的算法減弱了粒子優(yōu)化早期和后期變化不穩(wěn)定的問(wèn)題,防止搜索過(guò)程中引起強(qiáng)烈振蕩,從而提高了PSO算法的性能。
(1)
其中,ωmax和ωmin分別為最大和最小權(quán)重;λ為控制因子,控制慣性權(quán)重和加速因子同時(shí)變化引起的振蕩;t為當(dāng)前迭代次數(shù);s為最大迭代次數(shù)。
遺傳算法(genetic algorithm,GA)[13]是通過(guò)模擬自然界中生物進(jìn)化規(guī)則而實(shí)現(xiàn)的一種搜索算法,具有操作簡(jiǎn)便、非線性、全局尋優(yōu)以及并行性好等優(yōu)點(diǎn)[14]。文中引入遺傳算法的交叉、變異操作來(lái)增加優(yōu)化后期粒子的多樣性,從而擴(kuò)大粒子搜索空間,防止陷入局部最優(yōu)解。
交叉操作是產(chǎn)生新個(gè)體的重要操作,在二進(jìn)制編碼過(guò)程中,使用單點(diǎn)交叉法[15],從兩個(gè)雙親子串中隨機(jī)選擇一點(diǎn)k作為交叉點(diǎn),通過(guò)復(fù)制交叉點(diǎn)產(chǎn)生兩個(gè)新的后代,每個(gè)后代的第k位從它的某個(gè)雙親的第k位復(fù)制得來(lái),交叉點(diǎn)在第k位進(jìn)行交叉操作的方法為:
(2)
變異操作是維持種群的多樣性和提高算法局部尋優(yōu)能力的重要手段。依據(jù)變異概率將個(gè)體編碼串中的某些基因值用其他基因值來(lái)替換,從而形成一個(gè)新的個(gè)體。對(duì)于變異方式,文中采用單點(diǎn)變異[16]。
交叉概率pc和變異概率pm對(duì)遺傳算法的優(yōu)化性能起著重要的作用。為了避免種群發(fā)散和陷入局部極值,概率采用自適應(yīng)變化[17]的遺傳概率,在保證種群多樣性的情況下不破壞適應(yīng)度值高的種群。當(dāng)種群在進(jìn)化過(guò)程中由于陷入局部搜索空間而不能跳出時(shí),可通過(guò)增加pm來(lái)擺脫這種情況,當(dāng)種群在解空間比較分散時(shí),pc和pm可適當(dāng)減小。
(3)
(4)
文中利用PSO算法收斂較快和GA算法全局搜索能力較強(qiáng)兩方面的優(yōu)勢(shì)來(lái)彌補(bǔ)BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型的不足。本質(zhì)上是將BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練誤差作為PSO算法和GA算法的待優(yōu)化目標(biāo)函數(shù),通過(guò)不斷地評(píng)價(jià)粒子的適應(yīng)度值來(lái)更新并尋找最優(yōu)粒子所在的位置,直到達(dá)到預(yù)設(shè)的最大迭代次數(shù)或最小誤差,最后將得到的最優(yōu)值作為BP神經(jīng)網(wǎng)絡(luò)的較優(yōu)初始連接權(quán)值和閾值,從而提高該預(yù)測(cè)模型的收斂速度和準(zhǔn)確性。
(1)確定BP網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),初始化PSO維度、速度、位置、慣性權(quán)重、學(xué)習(xí)因子、最大迭代次數(shù)等參數(shù)。
(2)根據(jù)適應(yīng)度函數(shù)計(jì)算每個(gè)粒子的適應(yīng)度值,將粒子當(dāng)前所處的位置當(dāng)作自身最優(yōu)位置pib,將初始種群中粒子最優(yōu)位置當(dāng)作全局最優(yōu)位置pgb。適應(yīng)度函數(shù)為:
f(Xi)=E(Xi)-1
(5)
其中,E(Xi)見(jiàn)式8
(3)按以下公式更新每個(gè)粒子的速度和位置。
(6)
(7)
其中,r1,r2為0~1之間的隨機(jī)數(shù);c1,c2為學(xué)習(xí)因子;n為粒子數(shù);d為解空間維度。
(4)更新粒子群算法的慣性權(quán)重ω(同式1),隨著算法迭代次數(shù)的非線性變化結(jié)果為:
其中,最大權(quán)重ωmax=0.9;最小權(quán)重ωmin=0.1;λ為控制因子,控制慣性權(quán)重和加速因子同時(shí)變化引起的振蕩,為了保證在整個(gè)搜索過(guò)程中輸出誤差平穩(wěn)遞減,λ通常取3。
(5)再次計(jì)算粒子適應(yīng)度值,根據(jù)交叉、變異規(guī)則選擇適當(dāng)?shù)牧W舆M(jìn)行交叉、變異操作,更新種群。
(6)重復(fù)步驟2~5,采用改進(jìn)的PSO算法和GA算法的交叉、變異操作優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,直至達(dá)到預(yù)設(shè)的目標(biāo),則停止搜索,將優(yōu)化后的權(quán)值和閾值作為BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練的初始權(quán)值和閾值。
(7)進(jìn)行BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練,通過(guò)公式計(jì)算誤差,直至達(dá)到預(yù)設(shè)的最大訓(xùn)練次數(shù)或者滿足最小誤差,訓(xùn)練結(jié)束。
(8)
(9)
(8)將優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)用于對(duì)移動(dòng)用戶的行為預(yù)測(cè)。
數(shù)據(jù)來(lái)源:徐州移動(dòng)分公司2017年第一季度鼓樓區(qū)4G移動(dòng)用戶數(shù)據(jù)。
數(shù)據(jù)處理:對(duì)數(shù)據(jù)進(jìn)行提煉、轉(zhuǎn)換,獲取該區(qū)域1 000名4G用戶的行為特征,主要分為兩類,即通話行為和網(wǎng)絡(luò)行為。通話行為分為:通話時(shí)長(zhǎng)、通話次數(shù)、短呼次數(shù)、長(zhǎng)呼次數(shù)、漫游(主叫或被叫)呼叫次數(shù)、周末或工作日呼叫次數(shù)、短信收發(fā)條數(shù)等。網(wǎng)絡(luò)行為分為:視頻聊天時(shí)長(zhǎng)、網(wǎng)上購(gòu)物次數(shù)、網(wǎng)頁(yè)瀏覽頻率等,所有的行為屬性為數(shù)值性屬性。
參數(shù)設(shè)置:BP神經(jīng)網(wǎng)絡(luò)采用多隱層網(wǎng)絡(luò)結(jié)構(gòu),隱含層傳遞函數(shù)設(shè)置為“l(fā)ogsig”,輸出層函數(shù)選用purelin,迭代數(shù)取100,訓(xùn)練目標(biāo)1.0e-005。遺傳參數(shù)設(shè)置為:種群規(guī)模40,進(jìn)化代數(shù)100,交叉概率0.7,變異概率0.01。粒子群算法參數(shù)設(shè)為:種群規(guī)模40,進(jìn)化代數(shù)100,加速因子c1=c2=2,粒子最大速度vmax=0.5,慣性權(quán)重取值區(qū)間[0.2,0.9]。
(10)
(11)
(12)
(13)
在Matlab2011a環(huán)境下,使用Matlab語(yǔ)言編程,構(gòu)建三種預(yù)測(cè)模型,即:BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型(BP)、基于標(biāo)準(zhǔn)PSO算法的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型(PSO-BP)和基于改進(jìn)的PSO算法和GA算法的BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)模型(IPSO-GA-BP)。通過(guò)這三種模型分別對(duì)移動(dòng)用戶行為進(jìn)行預(yù)測(cè)。
采用Matlab進(jìn)行實(shí)驗(yàn)仿真,對(duì)徐州移動(dòng)分公司提供的測(cè)試數(shù)據(jù)進(jìn)行預(yù)處理,得到符合模型要求的數(shù)據(jù)類型,然后輸入到基于Matlab實(shí)現(xiàn)的BP神經(jīng)網(wǎng)絡(luò)移動(dòng)用戶行為分析模型中,最后得出輸出的移動(dòng)用戶操作行為和實(shí)際移動(dòng)用戶操作行為的結(jié)果。圖2~4是將測(cè)試數(shù)據(jù)分別輸入到BP、PSO-BP和IPSO-GA-BP得到的預(yù)測(cè)結(jié)果。圖5是三種網(wǎng)絡(luò)預(yù)測(cè)模型的輸出與實(shí)際用戶行為值的誤差對(duì)比圖。表1是三種模型的誤差指標(biāo)比對(duì)。
圖2 BP網(wǎng)絡(luò)模型預(yù)測(cè)輸出
圖3 PSO-BP網(wǎng)絡(luò)模型預(yù)測(cè)輸出
圖4 IPSO-GA-BP網(wǎng)絡(luò)模型預(yù)測(cè)輸出
圖5 三種網(wǎng)絡(luò)模型預(yù)測(cè)誤差
算法MSEEMSEerr BP0.000 117 5330.010 841 2790.000 127PSO-BP1.49E-050.003 860 0520.000 016IPSO-GA-BP0.000 0030.001 732 0510.000 003
通過(guò)仿真結(jié)果,對(duì)比圖2~4可知,基于BP神經(jīng)網(wǎng)絡(luò)算法的網(wǎng)絡(luò)預(yù)測(cè)模型輸出擬合度最差,其次是PSO-BP網(wǎng)絡(luò)預(yù)測(cè)模型。從圖4可明顯看出,基于IPSO-GA-BP算法的網(wǎng)絡(luò)預(yù)測(cè)模型的預(yù)測(cè)結(jié)果更接近目標(biāo)值,原因是IPSO-GA-BP算法融合了IPSO算法和GA算法的優(yōu)勢(shì),彌補(bǔ)了BP神經(jīng)網(wǎng)絡(luò)算法易陷入局部極值、收斂速度慢、尋優(yōu)精度低的缺陷。從圖5和表1可知,IPSO-GA-BP算法比BP算法和PSO-BP算法更穩(wěn)定、可靠。因此,文中提出的IPSO-GA-BP算法的網(wǎng)絡(luò)預(yù)測(cè)模型在預(yù)測(cè)移動(dòng)用戶行為的準(zhǔn)確性和可靠性方面具有較高的應(yīng)用價(jià)值。
采用BP神經(jīng)網(wǎng)絡(luò)模型對(duì)移動(dòng)用戶行為進(jìn)行預(yù)測(cè),針對(duì)BP神經(jīng)網(wǎng)絡(luò)算法存在易陷入局部最優(yōu)解、尋優(yōu)精度低、收斂速度慢的問(wèn)題,提出一種基于改進(jìn)的PSO算法和GA算法的BP神經(jīng)網(wǎng)絡(luò)混合算法,即IPSO-GA-BP算法。該算法在BP神經(jīng)網(wǎng)絡(luò)算法的基礎(chǔ)上融合了PSO算法和GA算法的優(yōu)勢(shì),仿真結(jié)果表明,算法在對(duì)移動(dòng)用戶行為預(yù)測(cè)的精確度和穩(wěn)定性上均有所提高。