特征工程与规则模型
特征工程&規(guī)則模型
導(dǎo)語
????在諸多比賽中,常常都可以聽說到一些高手避開了XGBoost、TensorFlow等高端機器學(xué)習(xí)模型,利用一些簡單的數(shù)據(jù)處理就獲得榜單的首位。這些簡單的數(shù)據(jù)處理方法常被這些高手稱為“規(guī)則”模型。
新手在接觸比賽之后,費勁千辛萬苦之后可能發(fā)現(xiàn)自己的模型的分?jǐn)?shù)還遠(yuǎn)遠(yuǎn)趕不上高手的簡單幾行代碼發(fā)現(xiàn)的規(guī)則模型分?jǐn)?shù)。這表面上看是跟高手之間經(jīng)驗的差別,其實這從深層次體現(xiàn)了特征工程的重要性,因為規(guī)則就是強特(與目標(biāo)相關(guān)性很高的特征)的提取和組合。
那么數(shù)據(jù)挖掘為什么需要特征工程,這是很多初學(xué)者在拿到數(shù)據(jù)之后,感到特別疑惑的地方。為什么不能把數(shù)據(jù)直接丟進(jìn)模型當(dāng)中跑呢?當(dāng)然,數(shù)據(jù)直接丟進(jìn)模型中跑是可以的,只是模型并不一定能學(xué)習(xí)到正確的事情。
特征工程在數(shù)據(jù)挖掘中究竟有什么樣的意義呢?我想這個問題很多論壇還有公眾號都比我說的要更加詳細(xì),這里我個人比較傾向于知乎上的一個答案“特征工程到底是什么?”,里面有很多厲害的高手都給出了自己的解答,而本文則是想從側(cè)面來解析拿到一個題目或者數(shù)據(jù)之后,不妨先做一個規(guī)則模型。。里面有很多厲害的高手都給出了自己的解答,而本文則是想從側(cè)面來解析拿到一個題目或者數(shù)據(jù)之后,不妨先做一個規(guī)則模型。
這里我先給出規(guī)則模型的定義:針對給出的數(shù)據(jù),進(jìn)行分析提取一些有用的數(shù)據(jù)或者進(jìn)行數(shù)據(jù)的組合完成最后的數(shù)據(jù)分析目標(biāo)所構(gòu)造的模型就是規(guī)則模型。由上面我給出的定義來看,細(xì)心的你可能就發(fā)現(xiàn)建立規(guī)則模型是一種幫助自己深入數(shù)據(jù)和理解任務(wù)的一個有效過程。
為什么先做規(guī)則模型呢?這里我將結(jié)合今年騰訊比賽給出自己的理解。今年騰訊廣告算法比賽的目的是希望選手利用歷史的廣告曝光信息,來預(yù)測未來某一天某種廣告配置屬性下面的廣告的日曝光量大小。后臺發(fā)送“2019騰訊比賽”,返回賽題手冊鏈接。
01
規(guī)則模型是目標(biāo)數(shù)據(jù)特點的體現(xiàn)
首先,規(guī)則模型有可能是目標(biāo)預(yù)測數(shù)據(jù)特點一個體現(xiàn)。在今年騰訊廣告算法的初賽中,大家發(fā)現(xiàn)了一個非常強的規(guī)則模型,那就是舊廣告的曝光數(shù)據(jù)直接取歷史曝光數(shù)據(jù)的中位數(shù),然后新廣告的曝光值直接用0來填充,這是為什么呢?我們團(tuán)隊在初賽中,機器學(xué)習(xí)的模型分?jǐn)?shù)一直都低于規(guī)則的模型分?jǐn)?shù)。那是因為我們的模型的分?jǐn)?shù)并沒有學(xué)習(xí)到曝光值的特點,而規(guī)則模型卻學(xué)到了,因為最后測試集的曝光數(shù)據(jù)的值大部分都是很小的數(shù)值,而且有大部分可能就是0,因而新廣告直接填充0最后線上分?jǐn)?shù)很高,就從側(cè)面幫助我們了解到了目標(biāo)數(shù)據(jù)的特點和分布。
02
規(guī)則模型=高級的特征工程
其次,建立規(guī)則模型本身就是一個高級的特征工程。在今年騰訊廣告算法大賽的復(fù)賽中,又有高手發(fā)現(xiàn)了一個很強的規(guī)則模型,那就是利用廣告的歷史曝光次數(shù)除以曝光請求總數(shù)得到歷史的曝光勝率,然后利用這個勝率乘以最后測試集廣告的總請求數(shù)量,就可以得到曝光數(shù)。我們團(tuán)隊在“發(fā)現(xiàn)”了這個規(guī)則模型之后,隊長非常敏銳的意識到了這是一個非常有用的特征。規(guī)則模型做出來的這個特征本身不僅僅反應(yīng)了廣告在曝光當(dāng)日的廣告的覆蓋量,另一方面又反應(yīng)了廣告相對于其他廣告的競爭力。事實上,在我們采用熱力圖分析這個特征與目標(biāo)的相關(guān)性的時候,也發(fā)現(xiàn)相關(guān)性達(dá)到了80%。利用上了這個特征之后,我們團(tuán)隊的機器學(xué)習(xí)模型的分?jǐn)?shù)才真正的超過了規(guī)則模型的分?jǐn)?shù)。這個規(guī)則模型的建立本身就是在挖掘預(yù)測目標(biāo)跟已有數(shù)據(jù)之間的聯(lián)系,所以規(guī)則模型就是在幫助選手深入理解數(shù)據(jù)和目標(biāo)。
03
規(guī)則模型有助于對模型的優(yōu)化
最后,規(guī)則模型還有助于對模型的優(yōu)化。第一點就提到了新廣告的曝光數(shù)據(jù)直接填充0,模型的分?jǐn)?shù)就可以很高,這說明了數(shù)據(jù)分布很接近0,那么這就啟發(fā)了很多參賽隊員要對線上的準(zhǔn)確性指標(biāo)進(jìn)行優(yōu)化。如下圖所示,可以看出準(zhǔn)確性指標(biāo)肯定是越小說明模型的分?jǐn)?shù)更高。但是如果真實值和目標(biāo)值都是0的話,準(zhǔn)確性指標(biāo)函數(shù)就變?yōu)?了,所以我們就需要對模型的訓(xùn)練loss進(jìn)行平滑,參見上一篇推送文章“騰訊比賽總反思-附top選手的方案”,可以發(fā)現(xiàn)很多top選手在訓(xùn)練LGB或者NN模型的時候都進(jìn)行了平滑,這樣可以保證自己模型的訓(xùn)練loss變化跟線上的評分比較貼合,從而可以通過線下Loss變化來猜測線上的變化。
規(guī)則模型不僅是優(yōu)化loss函數(shù),很多隊伍還發(fā)現(xiàn)了如果大部分曝光值都比較小的話,可以先做分類模型然后再做回歸模型。即,先將目標(biāo)預(yù)測值分類成3中,分別是預(yù)測值為0,預(yù)測值為1,預(yù)測值大于1。然后再對預(yù)測值大于1的哪一類再用模型去回歸具體車曝光值,事后詢問相關(guān)top選手,這個方案可以提分1分左右。
由此可見,相信你會發(fā)現(xiàn)規(guī)則模型對于一個數(shù)據(jù)分析任務(wù)的意義=深度理解數(shù)據(jù)+高級特征工程。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
- 上一篇: AI基础:数据增强方法综述
- 下一篇: 卷积神经网络之 - VGGNet