近年來,人工智能與機(jī)器學(xué)習(xí)的應(yīng)用越來越廣泛,尤其是在互聯(lián)網(wǎng)領(lǐng)域。在微博,機(jī)器學(xué)習(xí)被廣泛地應(yīng)用于微博的各個(gè)業(yè)務(wù),如Feed流、熱門微博、消息推送、反垃圾、內(nèi)容推薦等。
值得注意的是,深度學(xué)習(xí)作為人工智能和機(jī)器學(xué)習(xí)的分支,尤其得到更多的重視與應(yīng)用。深度學(xué)習(xí)與眾不同的特性之一,在于其能夠?qū)υ继卣鬟M(jìn)行更高層次的抽象和提取,進(jìn)而生成區(qū)分度更高、相關(guān)性更好的特征集合,因此深度學(xué)習(xí)算法還經(jīng)常被叫作“自動(dòng)特征提取算法”。
由此可見,無論是傳統(tǒng)的基礎(chǔ)算法,還是時(shí)下最流行的深度學(xué)習(xí),特征的選擇與提取,對于模型最終的預(yù)測性能至關(guān)重要。另一方面,優(yōu)選的特征集合相比原始特征集合,只需更少的數(shù)據(jù)量即可得到同樣性能的模型,從系統(tǒng)的角度看,特征選擇對機(jī)器學(xué)習(xí)執(zhí)行性能的優(yōu)化具有重大意義。
特征選擇在微博經(jīng)歷了從最原始的人工選擇,到半自動(dòng)特征選擇,到全自動(dòng)特征選擇的過程,如圖1所示。我們將詳細(xì)介紹微博在各個(gè)階段的實(shí)踐與心得。
圖1 特征選擇在微博的演進(jìn)
人工選擇
在互聯(lián)網(wǎng)領(lǐng)域,點(diǎn)擊率預(yù)估(Click Through Rate)被廣泛地應(yīng)用于各個(gè)業(yè)務(wù)場景,在微博,CTR預(yù)估被應(yīng)用在各個(gè)業(yè)務(wù)的互動(dòng)率預(yù)估中。對于CTR預(yù)估的實(shí)現(xiàn),邏輯回歸(Logistic Regression)是應(yīng)用最多、最廣泛而且被認(rèn)為是最有效的算法之一。
LR算法的優(yōu)勢在于提供非線性的同時(shí),保留了原始特征的可解釋性。LR模型產(chǎn)出后,算法人員通常會對模型中的權(quán)重進(jìn)行人工審查,確保高權(quán)重特征的業(yè)務(wù)含義是符合預(yù)期的。為了提升LR算法的預(yù)測性能,業(yè)務(wù)人員與算法人員通常會根據(jù)對業(yè)務(wù)的理解,人工選擇各類特征(基于內(nèi)容的特征、基于用戶的特征、基于環(huán)境和場景的特征等)或進(jìn)行特征之間的組合。
對特征進(jìn)行人工選擇的弊端顯而易見,首先要求相關(guān)人員對業(yè)務(wù)場景有足夠的熟悉和了解,通過自身的領(lǐng)域知識區(qū)分高區(qū)分度特征和低區(qū)分度特征。僅此一項(xiàng)就引入了太多的變數(shù),不同人員對業(yè)務(wù)的理解不盡相同,很多時(shí)候人工選擇具有主觀性和局限性。
再者,在人工特征選擇完成后,需要整理相關(guān)數(shù)據(jù)進(jìn)行重訓(xùn)練,從而驗(yàn)證新引入的特征對模型預(yù)測性能的提升是否有效,這是一個(gè)反復(fù)迭代的過程,期間會消耗大量的時(shí)間和精力。通常需要重復(fù)多次,才能選出少量高區(qū)分度的業(yè)務(wù)特征,由此可見,人工選擇特征方法的性價(jià)比是相對較低的。
相關(guān)性
針對人工選擇存在的問題,微博這幾年開始引入自動(dòng)化特征選擇方法作為人工選擇的輔助。首先嘗試的是相關(guān)性法,即根據(jù)特征本身的相關(guān)性或特征與標(biāo)簽之間的相關(guān)性來對特征進(jìn)行選取和過濾。
方差法是特征自相關(guān)性的典型代表,通過計(jì)算特征自身的方差值,來反映特征的變化程度,方差趨近于零的特征基本上無差異,對于樣本的區(qū)分起不到關(guān)鍵作用。因此,通過方差法,可以過濾掉區(qū)分性差的特征。既然特征的選取取決于其對標(biāo)簽區(qū)分的貢獻(xiàn),我們不如直接計(jì)算特征與標(biāo)簽之間的相關(guān)性來選取貢獻(xiàn)大的特征,而丟棄掉貢獻(xiàn)小(相關(guān)性小)的特征。
在該類方法中,比較典型且應(yīng)用廣泛的有:皮爾森系數(shù)、卡方檢驗(yàn)、互信息。方法的原理大同小異,考慮到卡方檢驗(yàn)?zāi)軌蛲瑫r(shí)支持連續(xù)和離散特征,在微博我們采取了卡方檢驗(yàn)對特征進(jìn)行初步篩選。
降維法
傳統(tǒng)的特征選擇方法從方式上大致分為三大類,即相關(guān)性、包裹法和嵌入法。剛剛提到的根據(jù)特征與標(biāo)簽之間的相關(guān)性對特征進(jìn)行選取的方法就是相關(guān)性法。在對包裹法和嵌入法進(jìn)行嘗試之前,為了能夠詳盡特征選擇的方法,我們嘗試?yán)媒稻S的方式進(jìn)行特征選擇。
從嚴(yán)格的意義講,降維法不能叫作特征“選擇”/“篩選”方法,因?yàn)榻稻S法(如PCA、SVD)原理是將高維度特征壓縮到低維空間中,壓縮的過程中造成了信息的丟失和損失,卻在低維空間保留(生產(chǎn))了新的區(qū)分度更高的特征集合。所以降維法是對原始特征集合進(jìn)行了變換和扭曲,生成了新的特征空間和集合。降維法的優(yōu)點(diǎn)顯而易見,即無需用戶干預(yù),自動(dòng)對特征空間進(jìn)行變換和映射,生產(chǎn)高區(qū)分度的特征集合;缺點(diǎn)是其在低維空間生產(chǎn)的特征不具有可解釋性,新的特征集合對業(yè)務(wù)人員和算法人員來說是不可讀的,無業(yè)務(wù)意義的。這個(gè)特性與后文提及的通過DNN來提取特征有相似之處。
模型倒推法
前面提到特征選擇的三大法寶,即相關(guān)性、包裹法和嵌入法。鑒于包裹法與嵌入法都是通過模型訓(xùn)練效果來反推特征的選取與過濾,微博將這兩種方法進(jìn)行了統(tǒng)一的嘗試與實(shí)踐。該類方法的思路是先根據(jù)現(xiàn)有的特征集合和數(shù)據(jù),對模型進(jìn)行訓(xùn)練,然后根據(jù)模型的效果(如AUC、準(zhǔn)確度等)和特征自身的權(quán)重大小來對特征進(jìn)行選取。
如對于包裹法,比較經(jīng)典的方法是逐步遞減原始特征的集合,觀察所訓(xùn)練模型效果的變化,當(dāng)模型效果出現(xiàn)顯著下降時(shí),即認(rèn)為下降前一組的特征集合是最佳候選集合。
對于嵌入法來說,比較典型的方法是通過L1或L2正則的特性,通過模型訓(xùn)練得到各個(gè)特征的權(quán)重,如L1具備低絕對值碾壓特性,即對于權(quán)重較低的特征,直接將其權(quán)重截?cái)酁榱悖@樣保留下來的即認(rèn)為是具有高區(qū)分度的特征集合。這類選擇方法基于模型本身對特征進(jìn)行過濾,因此選取出的特征集合有效性很好,但是該類方法同樣存在明顯的弊端:首先,方法本身看上去似乎相互矛盾,特征選擇的目的是為了訓(xùn)練出預(yù)測性能更好的模型,而這里卻通過先進(jìn)行模型訓(xùn)練,再做特征選擇,總有一種“雞生蛋,蛋生雞”的感覺。再者,通過模型選取特征,需要對模型進(jìn)行訓(xùn)練和評估,相當(dāng)于每次都把機(jī)器學(xué)習(xí)流程迭代一遍,尤其是包裹法,需要不斷的剔除可疑特征、重訓(xùn)練的過程,在模型效果大幅降低前,經(jīng)過數(shù)輪的計(jì)算和迭代。其次,有一個(gè)很重要的細(xì)節(jié)經(jīng)常被忽略,即用于特征選擇參與模型迭代訓(xùn)練的數(shù)據(jù),不能參與最終的(特征選擇完成后的)模型訓(xùn)練,否則會帶來臭名昭著的過擬合問題,道理顯而易見。
GBDT特征選擇
前文提到深度學(xué)習(xí)又叫“自動(dòng)特征提取算法”,天生自帶特征提取屬性。但在介紹“自動(dòng)特征提取算法”之前,我們有必要認(rèn)識一下自動(dòng)特征提取的前輩:GBDT(Gradient Boosting Decision Trees)。GBDT通過不斷地?cái)M合上一棵決策樹的殘差來不斷逼近目標(biāo)值,決策樹的信息增益算法結(jié)合GBDT特別的組合結(jié)構(gòu),造就了其葉子節(jié)點(diǎn)天生的高區(qū)分度特性。通過將原始特征導(dǎo)入GBDT進(jìn)行訓(xùn)練,再將得到的模型對原始數(shù)據(jù)進(jìn)行預(yù)測,就得到了GBDT轉(zhuǎn)換/映射后的葉子節(jié)點(diǎn)特征集合,再將這個(gè)葉子節(jié)點(diǎn)組成的特征集合導(dǎo)入其他算法(如LR)進(jìn)行訓(xùn)練。GBDT的優(yōu)點(diǎn)是特征自動(dòng)選擇,區(qū)分度高;缺點(diǎn)與PCA和后面的深度學(xué)習(xí)類似,即新產(chǎn)生的特征不具備可解釋性。
深度學(xué)習(xí)
深度學(xué)習(xí)算法由神經(jīng)網(wǎng)絡(luò)衍生而來,主要是指具有不同網(wǎng)絡(luò)結(jié)構(gòu)(如用于圖像特征提取的CNN卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)、用于時(shí)序相關(guān)的RNN循環(huán)神經(jīng)網(wǎng)絡(luò),以及由全連接組成的DNN深度神經(jīng)網(wǎng)絡(luò)等)的深層神經(jīng)網(wǎng)絡(luò)。神經(jīng)網(wǎng)絡(luò)的每一層神經(jīng)元都會根據(jù)上一層的輸入做非線性激活,并將其輸出作為下一層神經(jīng)網(wǎng)絡(luò)的輸入,每一層神經(jīng)元都可以理解為某一個(gè)層次的特征抽象,每一層網(wǎng)絡(luò)都可以形成一個(gè)新的特征集合,這種天然的特性為我們進(jìn)行特征選擇提供了新的思路。通過構(gòu)建深層神經(jīng)網(wǎng)絡(luò),并將最后一個(gè)隱層的神經(jīng)元集合作為特征抽象,后續(xù)可以接入各種分類算法,如LR、決策樹、樸素貝葉斯等進(jìn)行預(yù)測。
圖2 特征選擇效果對比
隨著新技術(shù)的出現(xiàn)與成熟,微博在特征選擇的演進(jìn)上也與時(shí)俱進(jìn),在微博業(yè)務(wù)發(fā)展的不同階段,曾經(jīng)分別對這些選擇方法進(jìn)行實(shí)踐與嘗試,圖2總結(jié)了不同特征選擇方法對于模型預(yù)測性能的提升效果,僅供讀者參考。
圖2對比數(shù)據(jù)來自同一份數(shù)據(jù)集(特征選取與訓(xùn)練分開,各百萬條樣本)與同一組特征集合(118個(gè)原始特征),采用不同的特征選擇方法對特征進(jìn)行過濾、選擇、提取。橘色曲線表示對原始特征進(jìn)行特征選擇后,不同特征選擇方法保留的有效特征個(gè)數(shù),如用GBDT進(jìn)行特征選擇后,僅僅留下44個(gè)有效特征。保留特征的個(gè)數(shù)主要取決于算法本身與業(yè)務(wù)人員的選擇。如對于方差法、卡方檢驗(yàn)等相關(guān)性排序法,需要業(yè)務(wù)人員和算法人員指定保留的特征個(gè)數(shù);而像L1正則與GBDT,則完全由算法本身根據(jù)數(shù)據(jù)分布特點(diǎn),來決定原始特征的去留。最后的DNN即深度學(xué)習(xí),也是根據(jù)經(jīng)驗(yàn)人為指定最后一層隱層的特征個(gè)數(shù)。藍(lán)色曲線表示采用不同特征選擇方法后,用另一份單獨(dú)的數(shù)據(jù)集進(jìn)行訓(xùn)練后的模型(LR模型)預(yù)測性能,我們這里用業(yè)界應(yīng)用廣泛的AUC(Area Under Curve)來衡量模型的有效性。方差法和卡方檢驗(yàn)完全取決于特征本身及其與標(biāo)簽的相關(guān)性,因此提升幅度有限。正則化與GBDT等采用模型倒推的方法進(jìn)行特征選取,因此預(yù)測性能有顯著提升。深度學(xué)習(xí)能夠在多個(gè)層次對特征進(jìn)行抽象,最后一層隱層代表了特征的最高層次抽象,因此區(qū)分度最好。
本文首先介紹了不同特征選擇算法的各自特點(diǎn)及其在微博業(yè)務(wù)應(yīng)用中的演進(jìn)歷程,最后通過對比試驗(yàn),給出了不同方法對于模型預(yù)測性能效果的提升,希望能夠?qū)ψx者有參考價(jià)值。
-
特征選擇
+關(guān)注
關(guān)注
0文章
12瀏覽量
7170 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5492瀏覽量
120975
原文標(biāo)題:特征選擇算法在微博應(yīng)用中的演進(jìn)歷程
文章出處:【微信號:AI_Thinker,微信公眾號:人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論