王 曼,曹 倩, 孫踐知, 張青川, 徐 菲
(北京工商大學 計算機與信息工程學院,北京 100048)
隨著移動互聯網的發展,智能手機已經逐漸成為人們擁有最多的移動設備.目前國內應用商店中可用App數量已經超過四百萬個,人們安裝及使用App的情況通常與他們的性別、年齡等基本屬性密切相關,能夠反映用戶的基本屬性、興趣偏好、生活習慣等個人信息[1].用戶屬性的深入挖掘可以豐富用戶畫像,幫助企業深入了解用戶從而有針對的推薦產品,還能幫助企業個性化投放互聯網廣告,提升廣告投放效果.
在個性化推薦和廣告定向中,用戶的搜索內容、瀏覽記錄、地理位置信息和基礎屬性等均發揮著重要作用,其中基礎屬性性別、年齡至關重要,但并非所有用戶都愿意公開自己較為隱私的基礎屬性信息,此類信息不容易獲取,需要結合現有數據及相關算法進行預測.
很多學者通過分析用戶的搜索、瀏覽等互聯網行為數據獲取用戶的人口統計信息.Hu等[2]根據用戶瀏覽的網頁信息,結合貝葉斯網絡算法對用戶的性別及年齡進行預測;Bock等[3]根據用戶的網頁點擊行為中提取特征,結合隨機森林算法構建模型,對用戶的性別、年齡、教育程度等屬性進行預測,并將預測結果用于網頁在線廣告的定向投放;鹿迅[4]以微博用戶為研究對象,基于用戶昵稱、標簽、微博文本等對用戶的性別、年齡分布以及教育程度進行預測推測;宋巍等[5]提出根據微博用戶的興趣偏好建模,從而推斷用戶的隱藏屬性.
近年來,逐漸有學者開始利用手機應用相關數據進行用戶屬性預測的研究.Seneviratne等[6]首次基于用戶手機安裝的應用列表數據推斷用戶特征,利用支持向量機方法預測用戶的宗教信仰、人際關系、感興趣的國家等;Yilei等[7]通過分析用戶手機安裝的App,提出一種將貝葉斯和協同過濾相結合的用戶年齡預測算法;趙莎[8]通過分析移動終端應用的安裝數據,提出挖掘用戶屬性的框架,使用支持向量機算法對用戶屬性進行預測.Zhao等[9]通過分析用戶一個月手機App的使用記錄,對用戶使用App行為的相似性進行研究,提出特征排序、兩步聚類的方法,挖掘出382類不同的用戶群體.
綜上所述,一方面,目前已有研究主要是基于用戶安裝的App進行基礎屬性預測,對用戶App使用數據的特征挖掘較少且較為粗糙,對用戶使用App的時長、頻率以及App使用的序列缺乏深入的分析;另一方面,現有研究主要采用SVM、貝葉斯等傳統機器學習方法,集成學習作為機器學習的重要部分也逐漸被應用于用戶屬性預測領域.但是,現有基于集成學習的算法也有一些不足之處,如集成學習在問題劃分過程中會有一定程度的信息損失,最終的模型融合是一個復雜、耗時的參數調整過程等.針對目前算法的不足,本文主要做了以下工作:
1)提出一種基于集成學習的用戶屬性預測算法,首先將原問題轉化為多個二分類問題,每個二分類問題側重于對某個具體屬性進行預測,數據標簽和特征的較大差異保證了不同二分類器間的差異性;;然后將多個二分類器的預測概率結果與原始數據集結合進行多分類模型的學習,實現二分類器的融合,以獲得整體預測精度的提升;
2)將LightGBM和FM融合構造二分類器,利用LightGBM自動對特征的進行挑選、組合,提取出高階特征;進一步將高階特征作為FM模型的輸入,二分類器的準確率得到提升;
3)根據用戶App安裝和使用數據構造了基礎統計特征、用戶App使用偏好特征、Applist2vec特征,充分反映了用戶的安裝偏好、使用時長及頻率,為我們的研究提供了可靠的基礎.
本文所提出的算法基于集成學習多分類框架,由兩部分構成.首先將原問題劃分為多個二分類問題,分別提取特征并訓練得到多個二分類器;然后把多個二分類器的預測概率與原數據特征進行結合得到新的特征,再進行多分類器的訓練.具體過程如圖1所示.

圖1 集成分類算法框架圖Fig.1 Framework diagram of integrated classification algorithm
首先將原始多分類問題劃分為多個二分類問題,這一過程需要將數據集標簽進行轉換,將多分類數據標簽轉換為對應的二分類數據標簽.以本文數據為例,原始數據標簽中將年齡劃分為11個年齡段,是一個多分類問題,本算法需要將用戶年齡標簽轉為和二分類器對應的二分類標簽,即年齡區間1、非年齡區間1,年齡區間2、非年齡區間2等,不同二分類數據集之間僅數據標簽的不同,其他數據不做改變.
對每個二分類數據集提取特征,并輸入對應二分類器,得到并保留各分類器對訓練集的預測概率,為避免邊緣信息及整體信息的丟失,將得到的預測概率與原始特征進行合并,將合并后的新特征輸入最后的多分類器.從而實現將原本模型的融合轉為自動學習的過程.
本文通過分析一定數量的性別、年齡已知的用戶手機安裝的App安裝、使用等數據,對其他用戶的性別和年齡進行預測.用戶的性別預測是一個二分類問題,用戶的年齡被劃分為11個年齡段,預測年齡是一個多分類問題.
將上述分類框架應用于用戶基礎屬性預測問題,給出一種基于集成學習的用戶基礎屬性預測算法.首先,性別預測是一個二分類問題,需要將用戶年齡預測轉為多個二分類問題,需要將數據集中年齡標簽根據對應的二分類器轉為年齡區間1、非年齡區間1的模式.然后,對于二分類器部分,考慮到現有的機器學習方法如決策樹、SVM等需要大量人工經驗對訓練樣本進行特征挑選和組合,采用LightGBM+FM模型實現框架中二分類學習.最后,結合集成學習中stacking的思想,將二分類器預測的概率與原特征結合,拼接為新特征輸入到多分類器中進行訓練.具體過程見算法1.
算法 1.基于集成學習的用戶基礎屬性預測算法
輸入:原始數據集S
1.將原始數據劃分為12個二分類數據集,其中包括1個性別二分類和11個年齡二分類,不同二分類數據集之間僅數據標簽的不同;
2.對12二分類數據集分別提取特征,輸入到二分類器進行訓練,得到預測概率;
3.將預測概率與原特征進行拼接,得到新的訓練子集特征為{原特征,概率1,概率2,……,概率12};
4.將性別和年齡進行組合,問題轉化為一個多分類問題.新的訓練子集輸入到多分類器進行訓練,輸出結果.
2.3.1 LightGBM
LightGBM[10,11](Light Gradient Boosting Machine,輕量級梯度提升,簡稱LGB)是GBDT(Gradient Boosting Decision Tree,梯度提升決策樹,簡稱GBDT)的一種高效實現方式,針對GBDT存在的容易過擬合、訓練速度慢等問題,2016年微軟公布了LightGBM,主要從直方圖算法和帶深度限制的Leaf-wise決策樹生長策略優化GBDT,減小數據儲存和執行計算時的成本,保證高效率的同時避免發生過擬合.
利用LightGBM模型來提取高維組合特征[12],將特征集輸入LightGBM模型中進行訓練,在LightGBM模型中對訓練樣本進行五折交叉預測,計算每個訓練樣本是否屬于每個決策樹的葉子節點,屬于的葉子節點記為1,其他的葉子節點記為0,提取高維組合0-1特征向量為:
x′i=g(xi,θ)num_tree×num_leaves
(1)
其中,x′i表示第i條訓練樣本的高維組合0-1特征向量,xi表示第i條訓練樣本的特征向量,g(·)表示LightGBM分類器的葉節點,當該第i條樣本屬于該葉節點時取1,否則取0;num_tree表示LightGBM模型中決策樹的數量,num_leaves表示每棵決策樹上葉子節點的數量.
2.3.2 FM
因子分解機模型[13,14](Factorization Machine,簡稱FM)由Rendle在2010年首次提出,將矩陣分解和支持向量機算法的優勢進行結合,對變量之間的交互進行建模,可以有效解決高維稀疏數據下特征組合的參數學習不充分問題,提高預測準確率,模型表示為:
(2)

(3)
通過隨機梯度下降(SGD)方法對FM模型進行訓練,模型中各參數的梯度表示為:
(4)
2.3.3 LightGBM+FM融合模型
Facebook提出GBDT和LR融合模型[15]并應用在廣告點擊率預測中,通過GBDT進行非線性特征轉換,生成新的特征后提供給LR進行最終預測,融合模型比單一模型的預估準確度提升了3%左右.類比于GBDT+L融合模型,本文將LightGBM模型和FM模型進行融合,構建二分類器.首先利用LightGBM自動對特征的挑選及組合,生成高階特征;進一步將高階特征輸入FM模型中,二分類模型算法框架見圖2.

圖2 二分類模型算法框圖Fig.2 Block diagram of the binary classification model algorithm
算法 2.基于LightGBM和FM模型的二分類算法
1.將原始數據進行預處理,轉化為多個二分類數據集;
2.對每個二分類數據集進行特征提取;
3.將特征輸入LightGBM模型進行訓練,把模型中每棵樹計算得到的預測概率值所屬的葉子節點記為1,其他葉子節點記為0,提取出高維組合特征;
4.將LightGBM提取的特征導入FM分類器中進行訓練;
5.輸出二分類結果.
本文數據來源于國內某應用商店真實數據,主要包含用戶App安裝數據、App使用數據、App類別數據、基礎屬性數據.App安裝數據是每個設備上安裝的App列表,共5萬條;App使用數據是在一定時期內每個設備上各個應用的打開、關閉行為數據及對應時間點,共104萬條;App類別數據是每個App的類別信息,共分為46類;基礎屬性數據是每個設備對應用戶的性別和年齡段,性別編號1、2分別表示男和女,年齡段編號有0-10共11種,分別表示用戶不同的年齡段,年齡段編號越大表示用戶年齡越大.一個用戶只屬于唯一的類別(性別-年齡段),組合后的性別-年齡段共有22個類別,記為sex_age.
sex_age=(sex-1)·11+age
(5)
其中,sex表示用戶性別,取值1、2分別表示男和女;age表示用戶年齡段,取值0-10分別表示用戶不同的年齡段.數據集中用戶基礎屬性性別及年齡段編號方式及分布如表1所示.

表1 用戶基礎屬性分布Table 1 Demographic attribute category information
首先我們對數據集中的異常數據進行過濾,過濾方案包括:
1)用戶App使用時間:從解析出的時間戳可知,用戶打開關閉App的時間包含了少量1970、1975以及2025年這種異常年份的數據,絕大部分的數據都來自于2017年2-3月,因此我們也只保留了2-3月的數據,其他月份的數據視為噪音;
2)用戶每天使用時長:小時數過少可能是用戶數據采樣過程中存在問題,刪除使用時長小于0.5小時的用戶行為數據記錄;
3)App被安裝次數:對于某些只有極少用戶安裝的App,對用戶分類意義較小,所以剔除安裝用戶少于5人的小眾App.
3.3.1 統計學基本特征
根據用戶的App安裝、使用數據和App類別信息,統計得到App安裝特征、App使用特征見表2.
3.3.2 基于TF-IDF加權信息增益的特征
為了進一步衡量不同基礎屬性的用戶對App的使用偏好,結合信息增益和TF-IDT構造了用戶App使用偏好特征.首先基于信息增益提取每個屬性下的重要App,然后利用TF-IDF對App的使用集合提取特征.
1)基于信息增益發現重要App
基于用戶安裝的App列表,如果利用全部的App構造one-hot特征,維度過高且稀疏性較大.并且用戶安裝的大量App中,每個App的重要程度是不同的,可能存在大量對用戶屬性貢獻較低的App,影響用戶屬性的挖掘及計算效率的提升.所以,我們需要知道對于用戶基礎屬性性別及年齡的分類來說,哪些App是重要的及對應的重要程度.

表2 基本統計特征Table 2 Basic statistical features
所以,根據用戶App安裝數據,對每一個用戶屬性,計算各App的信息增益值并進行排序,信息增益值越大表明App越重要.一個手機AppA對一個特定用戶屬性Φ的信息增益[16]可以表示為:
IG(Φ,A)=H(Φ)-H(Φ|A)
(6)
其中,H(Φ)表示這個特定用戶屬性的信息熵,H(Φ|A)是指在AppA固定條件下的信息熵.基于用戶安裝的App列表及屬性信息,我們可以計算得到在性別和年齡屬性下每個App的信息增益,取屬性Φ下信息增益排名前100的App,得到信息增益值排名前100的重要App及對應的信息增益,即:
IG(Φ)=(IG1,…,IG100)
(7)
2)TF-IDF
TF-IDF[17]是一種常用于文字信息檢索的通用統計分析方法,可以表示某一個字詞在一個文件集或語料庫中某個文件的重要程度.某字詞的重要程度一般與其在文件及語料庫中出現的頻率高低有關,在文件中出現的頻率越高且在語料庫中出現的頻率越低,則該字詞越重要.
根據用戶App使用數據,將用戶一段時間內使用的App集合看作一篇文檔,將每個App視為文檔中的文字,利用TF-IDF計算重要App的TF-IDF值,公式為:
(8)
其中,ni,j是Appi在用戶App使用集合dj中的數量,∑knk,j是用戶App使用集合dj中總的App數量,|D|是用戶App使用集合的總數即用戶總數,|{j:wi∈dj}|是包含Appi的App使用集合數.
所以,100個重要App的TF-IDF為:
TFIDF=(TFIDF1,…,TFIDF100)
(9)
與信息增益值相乘,得到100維的TF-IDF加權信息增益特征,記為TFIDF_IG,即:
TFIDF_IG=TFIDFi·IGi(i=1,2,…,100)
(10)
3.3.3 基于Word2vec的Applist2vec特征
Word2vec[18,19]是由Google公司2013年發布的一個DeepLearning學習工具,利用神經網絡模型,學習一個函數可以將文檔中的單詞映射到向量.類比于詞和文本建模,我們把每個App視為一個詞,每個用戶一段時間內使用App的序列視為一個文檔集,利用Word2vec中Embedding層提取特征,可以得到降維后的App向量矩陣.一方面可以考慮用戶使用App的順序關系,另一方面降低了矩陣的稀疏性、提高了計算效率.Applist2vec特征的訓練過程如圖3表示.

圖3 Applist2vec特征的訓練過程Fig.3 Applist2vec feature training process
word2vec有CBOW(continuous Bag-of-words)和Skip-gram兩種網絡結構,本文利用基于CBOW的詞向量模型提取用戶使用的App序列特征,詞向量模型如下.
1)已知中心詞wt和上下文Context(wt),其中context(wt)={wt-k,…,wt-1,wt+1,…,wt+k},k為窗口大小.基于層次softmax的CBOW方式,我們需要最終優化的目標函數是:
ζ=∑logp(wt|Context(wt))
(11)
2)定義一個正類和負類的公式為:
(12)

3)條件概率p(wt|Context(wt))一般寫為:
(13)
其中:
(14)
4)得到目標函數為:
(15)

3.4.1 基礎指標
本文采用準確率(Acc)、召回率(Rec)、F1值、AUC來量化評價二分類器的性能.準確率Acc表示分類正確的樣本數占全部樣本數的百分比,Acc越大,表示分類器越好.精度Prec表示正確預測為正樣本的數量與所有預測為正樣本數量的比值.召回率Rec表示正確預測為正樣本的數量與正樣本的實際數量.F1值是精度和召回率的權衡.各評價指標的計算方法為:
其中,TP(True Positive)表示實際為正樣本,且被模型預測為正樣本的具體數量;TN(True Negative)表示實際為負樣本,且被模型預測為負樣本的具體數量;FP(False Positive)表示實際為負樣本,卻被模型預測為正樣本的具體數量;FN(False Negative)表示實際為正樣本,卻被模型預測為負樣本的具體數量.
3.4.2 損失函數
針對本文的用戶屬性預測多分類問題,為了明確評估本文模型的精準性,采用損失函數logloss評估分類精度,損失函數Loss為:
(16)
式中:N是測試集包含的用戶數量,j是用戶性別-年齡組編號,yij是一個布爾值,表示用戶是否屬于這一年齡-性別組;pij是由模型計算出的用戶屬于這一年齡-性別組的概率.損失函數越小表示模型的預測精確度越高.
3.5.1 實驗1.Applist2vec特征
利用Word2vec模型,結合用戶App使用數據構造Applist2vec特征,用實驗驗證該特征的效果.實驗Word2vec模型的參數包括:特征向量維度為200;考慮當前使用的App與前、后使用的各4個App,上下文窗口設置為8;模型選用的是CBOW網絡結構;訓練采用自適應學習速率.
利用LightGBM算法,對只有Applist2vec特征、只有其他特征以及Applist2vec特征和其他特征相結合3種情況進行實驗,對比3種特征情況下性別-年齡這個多分類問題的準確率,實驗結果如表3所示,利用Applist2vec特征的分類準確率高于其他特征,Applist2vec特征與其他特征結合后的損失函數最低為2.5969,準確率最好,證明了該特征的有效性.

表3 Applist2vec特征效果驗證Table 3 Verification of Applist2vec feature effect
計算各特征在分類過程中重要性,排名前50的特征如圖4所示,排名前50的特征中Embedding特征有26個,占比達到52%,可見該特征的重要性.除此之外,排名前10的重要特征還包括App安裝總數量、用戶使用App的最早時間、用戶在6點時段App使用總時長、用戶平均彌天打開App的次數、加權TFIDF信息增益特征.

圖4 特征重要性得分圖Fig.4 Feature importance score
3.5.2 實驗2.LightGBM+FM二分類算法
以多個二分類問題中性別預測為例,分別利用XGB(Extreme Gradient Boosting,簡稱XGB)、LGB、LGB+LR、XGB+LR、LGB+FM進行實驗,以驗證二分類器的效果.在設置LightGBM和FM模型參數時,我們選擇使用Python庫中的GridSearchCV方法,對模型進行參數進行交叉驗證以選擇出合適的參數,實驗設置LightGBM模型的迭代次數為100,葉節點數量限制為32,學習率為0.05,葉子中的最小數據量為200,特征提取比例0.4,樹的最大深度8.
利用LightGBM算法,將原特征轉化為3200維特征,然后輸入到FM模型中進行二分類.設置FM模型的最優迭代次數為246,學習率0.001,采用交叉熵損失函數進行訓練.實驗結果如表4所示.

表4 性別預測二分類算法比較Table 4 Comparison of gender prediction binary classification algorithms
從表4可以觀察到僅用一個模型時,LGB模型在各項指標中優于XGB模型,LGB與LR模型融合后,融合模型在各項指標上均有提升;LGB+FM融合模型效果最優,準確率達到67.65%,AUC值為0.6791,證明將LGB和FM融合模型作為二分類基分類器是效果最好的.
3.5.3 實驗3.集成多分類模型
我們對本文提出的基于集成學習的用戶屬性預測算法的有效性進行驗證.將12個二分類器中的用戶App使用偏好特征進行合并,同時將12個二分類器的預測結果、基本統計特征、Applist2vec特征拼接到特征集中,得到新特征集為{基本統計特征,Applist2vec特征,合并后的用戶App使用偏好特征,概率1,概率2,……,概率12}.將新特征集重新輸入到多分類器LGB中進行訓練,得到性別-年齡組預測結果.
進一步,為驗證本文算法特征融合的有效性,將舊特征集{基本統計特征,Applist2vec特征,用戶App使用偏好特征}利用LGB、XGB、隨機森林算法進行實驗,得到實驗結果如圖5所示.

圖5 用戶性別-年齡多分類預測Fig.5 Multi-Classifier prediction of user gender-age
由圖5可知,利用本文構造的特征,直接利用LGB、XGB、隨機森林算法進行性別-年齡多分類預測時,LGB效果較好.同時,本文算法將多個二分類器預測結果進行融合后,與LGB相比,本文算法的損失函數最小,性別-年齡分類預測準確率最高,說明了前期二分類任務的必要性,進而證明了本文算法的有效性.
針對現有的基于用戶App相關數據預測用戶屬性算法的不足,本文提出基于集成學習的多分類算法以對用戶的性別、年齡進行預測.首先將原問題轉化為多個二分類問題,并借助LightGBM+FM實現二分類學習;然后把多個二分類器的預測結果與原特征結合,進行多分類的學習.實驗結果顯示:二分類方面,LightGBM+FM可以實現特征的自動挑選和組合,具有較高的精度;多分類方面,本文提出的算法準確率明顯高于其他集成模型,驗證了本文模型的有效性.此外,本文目前只對性別及年齡進行預測,后續若補充更多的屬性數據,可利用本文提出的基于集成學習的多分類算法進行處理,交叉屬性后的多分類問題轉為多個二分類問題進行預測,其中二分類器的構造及特征提取方式也可以借鑒使用.在后續研究中,將進一步結合特征工程方法對特征進行處理,減少冗余特征,進一步提高分類準確率.