王小超 張 勇
(巢湖學院信息工程學院 安徽合肥 238000)
隨著移動通信技術的快速發展,電信運營商的用戶數量急劇增長,通信市場競爭日益激烈。通過利用電信應用系統產生的數據,建立預測模型,對可能出現流失的用戶做出較為準確的預測,對于減少用戶的流失,提高通信運營商的運營水平,有著較高的應用價值[1]。
本文以實際的電信應用數據為研究對象,采用了BP神經網絡算法,研究了電信用戶流失問題。通過訓練數據建立了數據模型,通過對模型的優化,最終得到了實際可用的數據模型,有效對電信用戶流失做出預測。
該問題實際屬于一個二值分類問題,即建立模型的目標是預測一個用戶的流失或未流失。解決二值分類問題的算法較多,常用的算法有支持向量機SVM、隨機森林RF算法、K近鄰算法等。
通過初步的模型評估,隨機森林與支持向量機SVM效果相當,KNN算法分類效果較差,而神經網絡的效果較好。因此,本文在算法選擇上,采用了BP神經網絡算法,該算法具有應用廣泛、泛化能力強、準確率高等特點。
BP(back propagation)神經網絡是應用最為廣泛的神經網絡,是一種按照誤差反向傳播的方式訓練數據的多層前饋神經網絡。典型的BP神經網絡模型如圖1所示。

圖1 BP神經網絡模型
BP神經網絡模型經歷了正向傳播和反向傳播兩個過程。
(一)正向傳播。以圖1兩層神經網絡為例,在正向傳播時,神經網絡按照一下方式計算各層輸出:
H=?(XW1+b1)
O=HW2+b2
其中?表示激活函數,常用的激活函數有sigmoid函數、ReLU函數,tanh函數。求得輸出結果后計算誤差函數E。
(二)反向傳播。首先考慮輸出層與中間層之間的權重w2jk的調整。若各層都使用激活函數sigmoid時,誤差E對連接權重w2jk求導結果是:

接下來對輸入層與中間層之間的連接權重w1ij求導,計算結果如公式所示:

這樣就可以根據各層的梯度更新w2jk和w1ij,偏置項的更新過程類似。
防止用戶流失、保留現有用戶對于電信運營商降低運營成本、提高收益具有現實意義。建立較為精準的預測模型,運營商可以對可能出現流失的用戶進行預測,通過增大政策引導來留住用戶。整個模型建立過程,需要經歷5個階段:數據預處理,定義BP神經網絡結構,在訓練集上訓練模型,為提升模型效率進行調參,最后進行評估模型。
(一)數據字段。該模型的數據采用中國移動真實的公開數據集,每條數據包含18個特征,但不是所有的特征都與用戶流失相關,去除個人客戶ID字段后,用于建立模型的有17個特征,其中churn是標簽字段。具體特征值如表1所示。

表1 用戶流失相關屬性

curPlan avgplan posPlanChange negPlanChange nrProm prom call_10086 churn開始時套餐類型:1=200;2=300;3=350;4=500分鐘統計期間內平均套餐類型統計期間是否提高套餐:1=是統計期間是否降低套餐:1=是電信公司營銷數量最近一個月是否被營銷過:是=1統計期間是否撥打10086是否流失:1=流失
(二)數據預處理。
1.數據清洗。數據的清理過程主要是清除噪聲和刪除不一致的數據,而缺失值、噪聲和不一致性都會導致不正確的數據,從而影響到數據的質量。數據清理的目標要完成數據的缺失值處理、光滑噪聲數據并能夠識別離群點,糾正數據中出現的不一致[2]。本文中對缺失值采用均值中位數填充的方法進行填充。對于離群點,通過數據可視化方式進行聚類,為避免離群點對模型造成不利影響,需要將離群點做刪除處理。
2.數據規范化。數據規范化在神經網絡分類中的作用尤為重要,規范化就是賦予所有的屬性相同的權重,當不同特征的值域差異較大時,必須要完成數據規范化,這里采用的是最小-最大規范化方法,將每個特征的值域映射到[0,1]區間上。具體方法如下:

3.數據平衡。數據不平衡時,可能會造成預測結果的偏向。在分類問題中,主要考慮樣本在不同分類上大致是均衡的。如本實驗的樣本數據流失用戶數比非流失用戶數要少得多,這樣會使得訓練得到的模型在預測時會偏向于非流失[3]。為解決數據不平衡的問題,并盡可能多的保留樣本數據,采用了上采樣的方式解決,即流失用戶的樣本集生成與非流失的樣本集相同數量的樣本。
4.數據集劃分。在訓練模型時,需要將整個的樣本數據集劃分成訓練集和測試集,測試集用于最終的模型測試評估,而訓練集用于模型的建立。在建立模型時,為測試模型訓練時的效果,還應從訓練集中取出一定比例的樣本構成驗證集,以便在訓練過程中測試模型的效果。根據數據集大小,確定訓練集和測試集比例,本文訓練集與測試集按照7:3劃分,訓練集中的驗證集按照交叉驗證的方式劃分。
(三)建立BP神經網絡模型。模型建立是該問題的核心部分,應綜合考慮數據樣本集的情況和實際問題的目標,選擇合適的模型,使用訓練集對模型進行訓練,使得模型能夠反映數據之間的內在關系[4]。建模的過程是一個反復迭代的過程,通過反復調整參數得到合適的數據模型。
1.確定模型,構建兩層模型。為了提高精度,可以通過增加網絡的隱藏層的層數或者增加隱藏層神經元個數兩種方式實現。考慮到模型復雜度以及時間效率,本文采用了兩層的BP神經網絡模型,包含了1個輸入層,1個隱藏層,1個輸出層,采用該兩層模型實現電信用戶流失預測模型。
BP神經網絡模型建立需要經過反復迭代,先正向傳播計算各層輸出,再通過計算誤差E,反向傳播不斷更新各層的權重參數與偏置項。BP神經網絡模型的訓練流程如圖2所示。

圖2 BPNN訓練流程
先通過初始化的權重參數,偏置項以及學習率等超參數建立模型結構,執行神經網絡正向傳播過程,得到前向計算的輸出,通過計算期望輸入r和網絡實際輸出y計算最小二乘誤差函數E。以該誤差函數E為目標函數,模型的訓練目標就是讓實際的計算輸出與期望輸出接近,即E值趨近于0。因此,模型的訓練過程就是不斷調整各層的權重參數W,使得最小二乘誤差函數E趨近于0。

rn表示第n個樣本的期望輸出值,yn表示個樣本的網絡實際輸出值。
2.參數設置。隱藏層結點個數nh:采用下面常用的經驗值計算方法得到隱藏層結點個數,ni表示輸入層節點數為16,n0表示輸出層節點數為2,在實驗階段將m從1調整到10,根據實際的測試結果調整隱藏層結點個數。初始值取m=1,計算得到隱藏層結點個數為5。

學習率?:學習率?的設置比較關鍵,學習率過小,收斂過程較慢,消耗大量的模型訓練時間,學習率過大,每次權值參數修正也增大,可能會造成收斂過程的跳躍,可能會收斂到一個非最小值點,甚至不收斂。為了選取合適的學習率,每次迭代時學習率不是固定的,學習率依賴于上一次的迭代的學習率,整體逐漸遞減。學習率?經驗值一般取0.01到0.8之間,本文初始的學習率?設置為0.1。
3.網絡訓練過程。正向傳播過程:根據規劃的BP神經模型結構,輸入層采用W1x1+b1線性函數計算,在隱藏層使用目前最為流行的ReLU函數ReLU = max(0,W1x1+b1)作為激活函數,該函數提供了一個簡單的非線性變換,且具有很好的可導特性,便于在反向傳播時計算梯度。輸出層使用線性函數W2x2+b2得到輸出,正向傳播過程如圖3所示。

圖3 正向傳播過程
在計算損失函數值時,還應考慮正則化懲罰項,本文使用L2類型的正則化懲罰項,因此最終的的損失值loss計算如下:

data_loss是使用了softmax函數的交叉熵損失,其中表示第i個樣本的預測值y(i)取到真實值ri的概率,reg_loss是L2正則化損失函數,reg是懲罰因子,表示懲罰的力度。
反向傳播過程:為了更新W1,b1,W2,b2參數,反向傳播就是計算梯度的過程,從最后的損失函數反向逐層求導。首先對softmax函數反向傳播求導,符號d表示求導:
dscores=正確分類概率值-1
再對W2x2+b2線性計算中的各個參數求導。符號×表示矩陣乘法,下面公式同樣。
dx2=dscores×W2
dw2=dscores×x2
db2=dscores
接著對ReLU函數求導,因為RelU=max(0,x),求x求導,若x>0,導數為1,若x<=0,導數為0。因此Relu求導如下:
drelu=dx
drelu[x<=0]=0
最后對W1x1+b1反向求導。
dx1=drelu×W1
dw1=drelu×x1
db1=drelu
完成反向傳播,后更新權值參數,更新參數時使用Adam優化算法,更有效地更新網絡權重。
m=b1?m+(1-b1)?dx
v=b2?v+(1-b2)?dx^2
W+=-learning_rate?m/sqrt(v)
(一)模型準確率。基于以上算法訓練的BP神經網絡模型,在驗證集和測試集上測試模型的分類效果。實際測試的結果如圖4所示。從如圖4(a)圖中可以看出,執行了10次epoch后模型準確率趨于穩定,以100作為一次batch_size迭代計算,打印了損失函數與迭代次數的關系圖,當迭代次數超過50次時,損失函數趨于收斂。從圖4(b)圖可以看出,最終驗證集的模型準確率達到88.3%,測試集的模型準確率達到了84.8%,具有較高的準確度,且沒有出現過擬合問題。

圖4 BPNN模型預測結果
(二)召回率。為驗證預測電信用戶流失的準確率,采用模型準確率在當前場景下不是非常合適。該問題只需考慮用戶實際流失的情況,當預測用戶會流失實際情況也流失了,表明預測正確。而當預測用戶不會流失,沒有采取任何的措施,實際情況用戶流失了,這時電信公司就會產生損失。這就表明,即使模型分類的準確率很高,也可能會出現大量用戶流失被預測成非流失,造成損失。因此采用召回率recall值衡量模型準確率更為合適,即recall=TP/(TP+FN)。其中,TP表示預測會流失實際也流失的數量,FN表示預測非流失實際流失的數量。recall取[0,1]之間的值。圖5為模型在測試集上的混淆矩陣,計算召回率:

圖5 BPNN測試集的混淆矩陣
recall=TP/(TP+FN)=393/(78+393)=83.4%以召回率評估模型,仍然具有較高精度。
(三)算法對比。將BP神經網絡模型,與SVM,RF,KNN算法在測試集上的預測結果進行對比,結果如表2所示,由結果可知,從準確率指標上看,BP神經網絡模型的準確率最高達到了84.8%,SVM與RF模型準確率相當,而KNN算法的精確度較低。從召回率指標上看,BPNN仍然具有較高的精度,預測集上達到了83.4%。而SVM,RF算法雖然模型準確率較高,召回率的精度卻并不高,KNN算法的召回率效果較差。

表2 各算法評估結果對比
本文采用的BP神經網絡算法經過反向誤差傳播更新模型參數,能夠使得模型的構建更加準確,通過調節正則化懲罰項,激活函數,學習率,隱藏層深度,隱藏層節點數等超參數,可以具有更優的用戶流失預測準確度。
本文開展了基于BP神經網絡算法的電信用戶流失預測應用研究,結果表明:BPNN模型訓練結果在準確率方面表現出色。
BP神經網絡算法相比于SVM,RF,KNN等算法,通過調參可以訓練得到更加準確的預測模型,在實際的用戶流失預測中具有更高的模型準確率與召回率。
本文中僅基于BP神經網絡算法建立了用戶流失的預測模型。實際上,影響電信用戶流失的原因較為復雜,分析的內容除了預測模型外,還應涉及用戶分組,流失用戶特征分析等方面[5]。為達到更好的分析效果,可進行用戶分組,對樣本數據進行聚類分析,計算每個組中用戶流失的比重,找到流失率最高的分組,還可以開展流失用戶特征分析,對流失用戶做因子分析,找到重要的影響特征,對具有容易流失特征的用戶做體驗改善方案[6]。這樣通過多方面的數據分析,有助于模型進一步的優化,支撐電信運營商的運行決策。