特徵選擇演算法在微博業務應用中的演進歷程
近年來,人工智慧與機器學習的應用越來越廣泛,尤其是在網際網路領域。在微博,機器學習被廣泛地應用於微博的各個業務,如Feed流、熱門微博、訊息推送、反垃圾、內容推薦等。
值得注意的是,深度學習作為人工智慧和機器學習的分支,尤其得到更多的重視與應用。深度學習與眾不同的特性之一,在於其能夠對原始特徵進行更高層次的抽象和提取,進而生成區分度更高、相關性更好的特徵集合,因此深度學習演算法還經常被叫作“自動特徵提取演算法”。由此可見,無論是傳統的基礎演算法,還是時下最流行的深度學習,特徵的選擇與提取,對於模型最終的預測效能至關重要。另一方面,優選的特徵集合相比原始特徵集合,只需更少的資料量即可得到同樣效能的模型,從系統的角度看,特徵選擇對機器學習執行效能的優化具有重大意義。
特徵選擇在微博經歷了從最原始的人工選擇,到半自動特徵選擇,到全自動特徵選擇的過程,如圖1所示。我們將詳細介紹微博在各個階段的實踐與心得。
人工選擇
在網際網路領域,點選率預估(Click Through Rate)被廣泛地應用於各個業務場景,在微博,CTR預估被應用在各個業務的互動率預估中。對於CTR預估的實現,邏輯迴歸(Logistic Regression)是應用最多、最廣泛而且被認為是最有效的演算法之一。LR演算法的優勢在於提供非線性的同時,保留了原始特徵的可解釋性。LR模型產出後,演算法人員通常會對模型中的權重進行人工審查,確保高權重特徵的業務含義是符合預期的。為了提升LR演算法的預測效能,業務人員與演算法人員通常會根據對業務的理解,人工選擇各類特徵(基於內容的特徵、基於使用者的特徵、基於環境和場景的特徵等)或進行特徵之間的組合。對特徵進行人工選擇的弊端顯而易見,首先要求相關人員對業務場景有足夠的熟悉和了解,通過自身的領域知識區分高區分度特徵和低區分度特徵。僅此一項就引入了太多的變數,不同人員對業務的理解不盡相同,很多時候人工選擇具有主觀性和侷限性。再者,在人工特徵選擇完成後,需要整理相關資料進行重訓練,從而驗證新引入的特徵對模型預測效能的提升是否有效,這是一個反覆迭代的過程,期間會消耗大量的時間和精力。通常需要重複多次,才能選出少量高區分度的業務特徵,由此可見,人工選擇特徵方法的價效比是相對較低的。
相關性
針對人工選擇存在的問題,微博這幾年開始引入自動化特徵選擇方法作為人工選擇的輔助。首先嚐試的是相關性法,即根據特徵本身的相關性或特徵與標籤之間的相關性來對特徵進行選取和過濾。方差法是特徵自相關性的典型代表,通過計算特徵自身的方差值,來反映特徵的變化程度,方差趨近於零的特徵基本上無差異,對於樣本的區分起不到關鍵作用。因此,通過方差法,可以過濾掉區分性差的特徵。既然特徵的選取取決於其對標籤區分的貢獻,我們不如直接計算特徵與標籤之間的相關性來選取貢獻大的特徵,而丟棄掉貢獻小(相關性小)的特徵。在該類方法中,比較典型且應用廣泛的有:皮爾森係數、卡方檢驗、互資訊。方法的原理大同小異,考慮到卡方檢驗能夠同時支援連續和離散特徵,在微博我們採取了卡方檢驗對特徵進行初步篩選。
降維法
傳統的特徵選擇方法從方式上大致分為三大類,即相關性、包裹法和嵌入法。剛剛提到的根據特徵與標籤之間的相關性對特徵進行選取的方法就是相關性法。在對包裹法和嵌入法進行嘗試之前,為了能夠詳盡特徵選擇的方法,我們嘗試利用降維的方式進行特徵選擇。從嚴格的意義講,降維法不能叫作特徵“選擇”/“篩選”方法,因為降維法(如PCA、SVD)原理是將高維度特徵壓縮到低維空間中,壓縮的過程中造成了資訊的丟失和損失,卻在低維空間保留(生產)了新的區分度更高的特徵集合。所以降維法是對原始特徵集合進行了變換和扭曲,生成了新的特徵空間和集合。降維法的優點顯而易見,即無需使用者干預,自動對特徵空間進行變換和對映,生產高區分度的特徵集合;缺點是其在低維空間生產的特徵不具有可解釋性,新的特徵集合對業務人員和演算法人員來說是不可讀的,無業務意義的。這個特性與後文提及的通過DNN來提取特徵有相似之處。
模型倒推法
前面提到特徵選擇的三大法寶,即相關性、包裹法和嵌入法。鑑於包裹法與嵌入法都是通過模型訓練效果來反推特徵的選取與過濾,微博將這兩種方法進行了統一的嘗試與實踐。該類方法的思路是先根據現有的特徵集合和資料,對模型進行訓練,然後根據模型的效果(如AUC、準確度等)和特徵自身的權重大小來對特徵進行選取。如對於包裹法,比較經典的方法是逐步遞減原始特徵的集合,觀察所訓練模型效果的變化,當模型效果出現顯著下降時,即認為下降前一組的特徵集合是最佳候選集合。對於嵌入法來說,比較典型的方法是通過L1或L2正則的特性,通過模型訓練得到各個特徵的權重,如L1具備低絕對值碾壓特性,即對於權重較低的特徵,直接將其權重截斷為零,這樣保留下來的即認為是具有高區分度的特徵集合。這類選擇方法基於模型本身對特徵進行過濾,因此選取出的特徵集合有效性很好,但是該類方法同樣存在明顯的弊端:首先,方法本身看上去似乎相互矛盾,特徵選擇的目的是為了訓練出預測效能更好的模型,而這裡卻通過先進行模型訓練,再做特徵選擇,總有一種“雞生蛋,蛋生雞”的感覺。再者,通過模型選取特徵,需要對模型進行訓練和評估,相當於每次都把機器學習流程迭代一遍,尤其是包裹法,需要不斷的剔除可疑特徵、重訓練的過程,在模型效果大幅降低前,經過數輪的計算和迭代。其次,有一個很重要的細節經常被忽略,即用於特徵選擇參與模型迭代訓練的資料,不能參與最終的(特徵選擇完成後的)模型訓練,否則會帶來臭名昭著的過擬合問題,道理顯而易見。
GBDT特徵選擇
前文提到深度學習又叫“自動特徵提取演算法”,天生自帶特徵提取屬性。但在介紹“自動特徵提取演算法”之前,我們有必要認識一下自動特徵提取的前輩:GBDT(Gradient Boosting Decision Trees)。GBDT通過不斷地擬合上一棵決策樹的殘差來不斷逼近目標值,決策樹的資訊增益演算法結合GBDT特別的組合結構,造就了其葉子節點天生的高區分度特性。通過將原始特徵匯入GBDT進行訓練,再將得到的模型對原始資料進行預測,就得到了GBDT轉換/對映後的葉子節點特徵集合,再將這個葉子節點組成的特徵集合匯入其他演算法(如LR)進行訓練。GBDT的優點是特徵自動選擇,區分度高;缺點與PCA和後面的深度學習類似,即新產生的特徵不具備可解釋性。
深度學習
深度學習演算法由神經網路衍生而來,主要是指具有不同網路結構(如用於影象特徵提取的CNN卷積神經網路結構、用於時序相關的RNN迴圈神經網路,以及由全連線組成的DNN深度神經網路等)的深層神經網路。神經網路的每一層神經元都會根據上一層的輸入做非線性啟用,並將其輸出作為下一層神經網路的輸入,每一層神經元都可以理解為某一個層次的特徵抽象,每一層網路都可以形成一個新的特徵集合,這種天然的特性為我們進行特徵選擇提供了新的思路。通過構建深層神經網路,並將最後一個隱層的神經元集合作為特徵抽象,後續可以接入各種分類演算法,如LR、決策樹、樸素貝葉斯等進行預測。
隨著新技術的出現與成熟,微博在特徵選擇的演進上也與時俱進,在微博業務發展的不同階段,曾經分別對這些選擇方法進行實踐與嘗試,圖2總結了不同特徵選擇方法對於模型預測效能的提升效果,僅供讀者參考。
圖2對比資料來自同一份資料集(特徵選取與訓練分開,各百萬條樣本)與同一組特徵集合(118個原始特徵),採用不同的特徵選擇方法對特徵進行過濾、選擇、提取。橘色曲線表示對原始特徵進行特徵選擇後,不同特徵選擇方法保留的有效特徵個數,如用GBDT進行特徵選擇後,僅僅留下44個有效特徵。保留特徵的個數主要取決於演算法本身與業務人員的選擇。如對於方差法、卡方檢驗等相關性排序法,需要業務人員和演算法人員指定保留的特徵個數;而像L1正則與GBDT,則完全由演算法本身根據資料分佈特點,來決定原始特徵的去留。最後的DNN即深度學習,也是根據經驗人為指定最後一層隱層的特徵個數。藍色曲線表示採用不同特徵選擇方法後,用另一份單獨的資料集進行訓練後的模型(LR模型)預測效能,我們這裡用業界應用廣泛的AUC(Area Under Curve)來衡量模型的有效性。方差法和卡方檢驗完全取決於特徵本身及其與標籤的相關性,因此提升幅度有限。正則化與GBDT等採用模型倒推的方法進行特徵選取,因此預測效能有顯著提升。深度學習能夠在多個層次對特徵進行抽象,最後一層隱層代表了特徵的最高層次抽象,因此區分度最好。
本文首先介紹了不同特徵選擇演算法的各自特點及其在微博業務應用中的演進歷程,最後通過對比試驗,給出了不同方法對於模型預測效能效果的提升,希望能夠對讀者有參考價值。
作者簡介:
吳磊,新浪微博演算法平臺高階工程師,主要負責以Spark為核心的大資料計算框架、機器學習平臺的設計和實現。
張藝帆,新浪微博演算法平臺演算法工程師,主要負責微博個性化排序、推薦等模型的選擇、優化;特徵的處理與選擇等。
責編:郭芮
本文為《程式設計師》原創文章,未經允許不得轉載,更多精彩文章請訂閱《程式設計師》