【机器学习】对于特征离散化,特征交叉,连续特征离散化非常经典的解释
一.互聯(lián)網(wǎng)廣告特征工程
博文《互聯(lián)網(wǎng)廣告綜述之點(diǎn)擊率系統(tǒng)》論述了互聯(lián)網(wǎng)廣告的點(diǎn)擊率系統(tǒng),可以看到,其中的logistic regression模型是比較簡(jiǎn)單而且實(shí)用的,其訓(xùn)練方法雖然有多種,但目標(biāo)是一致的,訓(xùn)練結(jié)果對(duì)效果的影響是比較大,但是訓(xùn)練方法本身,對(duì)效果的影響卻不是決定性的,因?yàn)橛?xùn)練的是每個(gè)特征的權(quán)重,權(quán)重細(xì)微的差別不會(huì)引起ctr的巨大變化。
在訓(xùn)練方法確定后,對(duì)ctr預(yù)估起到?jīng)Q定性作用的是選用的特征。
1.1特征選擇與使用
做點(diǎn)擊率預(yù)估需要兩方面的數(shù)據(jù),一方面是廣告的數(shù)據(jù),另一方面是用戶(hù)的數(shù)據(jù),現(xiàn)在所有的數(shù)據(jù)都有,那么工作就是利用這兩方面的數(shù)據(jù)評(píng)估用戶(hù)點(diǎn)擊這個(gè)廣告的可能性(也就是概率)。
用戶(hù)的特征是比較多的,用戶(hù)的年齡,性別,地域,職業(yè),學(xué)校,手機(jī)平臺(tái)等等。廣告的特征也很豐富,如廣告大小,廣告文本,廣告所屬行業(yè),廣告圖片。還有反饋特征,如每個(gè)廣告的實(shí)時(shí)ctr,廣告跟性別交叉的ctr。如何從這么多的特征中選擇到能刻畫(huà)一個(gè)人對(duì)一個(gè)廣告的興趣的特征,是數(shù)據(jù)挖掘工程師的一個(gè)大難題。
選中了特征,還需要注意特征的選擇方式,例如,如果單獨(dú)把年齡作為一個(gè)特征,最終能訓(xùn)練出來(lái)啥嗎?因?yàn)槟挲g相加相減是沒(méi)有意義的,所以只能把每個(gè)年齡做為一個(gè)特征,但是光這樣可以了嗎?怎么用特征,是廣告算法工程師的一個(gè)大課題。
1.1.1 選擇特征
什么樣的特征適合用來(lái)預(yù)估ctr?這個(gè)問(wèn)題是很多廣告算法工程師的需要考慮的。
機(jī)器學(xué)習(xí)算法最多會(huì)大談模型,對(duì)于特征的討論很少涉及。真正的應(yīng)用中,多數(shù)數(shù)據(jù)挖掘工程師的工作都是在想特征,驗(yàn)證特征。
想特征是一個(gè)腦力加體力的活,需要不少的領(lǐng)域的知識(shí),更讓人郁悶的是,工業(yè)界并沒(méi)有一整套想特征的辦法,工業(yè)界有的只是驗(yàn)證特征的辦法。對(duì)于互聯(lián)網(wǎng)廣告業(yè),就簡(jiǎn)單說(shuō)說(shuō)通用特征怎么來(lái)的吧。
首先說(shuō)年齡這個(gè)特征,怎么知道它跟點(diǎn)擊率有關(guān)系?現(xiàn)在直觀的解釋是,年輕人普遍喜歡運(yùn)動(dòng)類(lèi)的廣告,30歲左右的男人喜歡車(chē),房子之類(lèi)的廣告,50歲以上的人喜歡保健品的廣告??梢钥吹?#xff0c;選擇年齡作為特征的理由是基于對(duì)各個(gè)年齡段的人喜歡的不同類(lèi)型的東西的一個(gè)粗略的劃分,是一個(gè)很主觀的東西。
再說(shuō)性別這個(gè)特征,直觀的感覺(jué)是,男性普遍喜歡體育類(lèi)的,車(chē)類(lèi)的,旅游類(lèi)廣告,女性普遍喜歡化妝品,服裝類(lèi)的廣告。這也可以看到,選擇性別作為特征也是基于相似的理由,就是認(rèn)為男性和女性大體會(huì)喜歡不同的東西。
對(duì)于地域這個(gè)特征,這下就學(xué)問(wèn)多了,華南的人在比較喜歡動(dòng)漫和游戲,華北的人喜歡酒品和煙?
在廣告方面的特征,廣告的圖片大小,廣告前景色背景色真的能影響人的點(diǎn)擊嗎?這其實(shí)都是一種猜測(cè)。圖片里面是一個(gè)明星還是一個(gè)動(dòng)物之類(lèi)的因素也可以考慮。
總結(jié):選特征的流程,就是先猜想,然后統(tǒng)計(jì)驗(yàn)證,然后將特征加到模型中,進(jìn)行驗(yàn)證。
總之,想特征的這個(gè)事情基本沒(méi)多大譜,只能天南地北地想象,還要多了解各行各業(yè)的知識(shí),以便想到更多的特征,哪怕某個(gè)特征跟人關(guān)系并不大,也得好好驗(yàn)證一番。?
想到了特征,就要驗(yàn)證和進(jìn)行判斷。
驗(yàn)證特征的辦法多,有直接觀察ctr,卡方檢驗(yàn),單特征AUC等。直接觀察ctr是個(gè)很有效的方法,如根據(jù)投放記錄,化妝品的廣告在女性上面的點(diǎn)擊率就比在男性上面的點(diǎn)擊率高很多,說(shuō)明性別這個(gè)特征在化妝品行業(yè)是有預(yù)測(cè)能力的;又如體育用品的廣告在男性上面的點(diǎn)擊率也比女性高,說(shuō)明性別這個(gè)特征在體育行業(yè)也是有預(yù)測(cè)能力的,經(jīng)過(guò)多個(gè)行業(yè)的驗(yàn)證,就認(rèn)為性別這個(gè)特征可以用了。
年齡這個(gè)特征的評(píng)估類(lèi)型,主要是觀察一個(gè)廣告在不同年齡段的點(diǎn)擊率是否有區(qū)別,再觀察不同廣告的點(diǎn)擊率在不同年齡段的分布是否不一樣,如果都有區(qū)別,說(shuō)明年齡這個(gè)特征就可以用了。
在實(shí)際的使用中發(fā)現(xiàn),性別這個(gè)特征比較有效,手機(jī)平臺(tái)這個(gè)特征也比較有效,地域和年齡這兩個(gè)特征有一定效果,但沒(méi)有前兩個(gè)那么明顯,跟他們的使用方式可能有關(guān),還需要進(jìn)一步挖掘。
同時(shí),實(shí)際使用中也發(fā)現(xiàn),廣告反饋ctr這個(gè)特征也很有效,這個(gè)特征的意思就是當(dāng)前的廣告正在投放,已經(jīng)投放了一部分了,這部分的點(diǎn)擊率基本可以認(rèn)為是這個(gè)廣告的點(diǎn)擊率了,也可以認(rèn)為是這個(gè)廣告的質(zhì)量的一個(gè)體現(xiàn),用來(lái)預(yù)估一個(gè)流量的ctr是很有效的。
1.1.2 特征的處理和使用
選擇得到特征,怎么用也是一個(gè)問(wèn)題。
先說(shuō)需求,其實(shí)預(yù)估ctr要做的事情是下面的圖的工作——計(jì)算一個(gè)用戶(hù)/廣告組合的ctr。
上面已經(jīng)選好了特征,暫定有廣告的反饋ctr,用戶(hù)年齡,性別三個(gè)特征。
一、離散化,有些特征雖然也是數(shù)值型的,但是該特征的取值相加相減是沒(méi)有實(shí)際意義的,那么該數(shù)值型特征也要看成離散特征,采用離散化的技術(shù)。
反饋ctr是一個(gè)浮點(diǎn)數(shù),直接作為特征是可以的,假設(shè)1號(hào)特征就是反饋ctr。對(duì)應(yīng)年齡來(lái)說(shuō)就不是這樣了,因?yàn)槟挲g不是浮點(diǎn)數(shù),而且年齡的20歲跟30歲這兩個(gè)數(shù)字20,30大小比較是沒(méi)有意義的,相加相減都是沒(méi)有意義的,在優(yōu)化計(jì)算以及實(shí)際計(jì)算ctr是會(huì)涉及這兩個(gè)數(shù)字的大小比較的。如w.x,在w已經(jīng)確定的情況下,x的某個(gè)特征的值是20,或者30,w.x的值相差是很大的,哪怕用邏輯化公式再比較,得到的值也是比較大的,但是往往20歲的人跟30歲的人對(duì)同一個(gè)廣告的興趣差距不會(huì)那么大。解決這樣的情況的方法就是,每個(gè)年齡一個(gè)特征,如總共只有20歲到29歲10種年齡,就把每個(gè)年齡做一個(gè)特征,編號(hào)是從2到11(1號(hào)是廣告的反饋ctr),如果這個(gè)人是20歲,那么在編號(hào)為2的特征上的值就是1,3到11的編號(hào)上就是0。這樣,年齡這一類(lèi)特征就有了10個(gè)特征,而且這10個(gè)特征就是互斥的,這樣的特征稱(chēng)為離散化特征。
二、交叉,交叉從理論上而言是為了引入特征之間的交互,也即為了引入非線性性。是有實(shí)際意義的。本文對(duì)交叉的意義解釋得非常nice
這樣看起來(lái)就能解決上面的問(wèn)題了,但是夠了嗎?
比如一個(gè)人是20歲,那么在編號(hào)為2的特征上面,它一直都是1,對(duì)籃球的廣告是1,對(duì)化妝品的廣告也是1,這樣訓(xùn)練的結(jié)果得到的編號(hào)為2的權(quán)重的意義是——20歲的人點(diǎn)擊所有的廣告的可能性的都是這個(gè)權(quán)重,這樣其實(shí)是不合理的。
有意義的應(yīng)該是,這個(gè)20歲的人,當(dāng)廣告是跟體育相關(guān)的時(shí)候,它是一個(gè)值;當(dāng)廣告跟保健品相關(guān)的時(shí)候,它又是一個(gè)值。這樣看起來(lái)才合理。如果這個(gè)不夠深刻,基于跟上面同樣的道理,性別這個(gè)特征也是一樣的,假如也做了上面的離散化操作,編號(hào)是12和13,12是男性,13是女性。這樣的話,對(duì)于一個(gè)男性/體育廣告組合來(lái)說(shuō),編號(hào)12的特征值為1,男性/化妝品的組合的編號(hào)12的特征值也是1。這樣也是不合理的。
怎么做到合理呢?以上面的性別的例子來(lái)說(shuō)。編號(hào)12的特征值不取1,取值為該廣告在男性用戶(hù)上面的點(diǎn)擊率,如對(duì)于男性/體育廣告的組合,編號(hào)12的特征的值為男性在體育廣告上面點(diǎn)擊率,這樣,編號(hào)為12的特征就變成了一個(gè)浮點(diǎn)數(shù),這個(gè)浮點(diǎn)數(shù)的相加減是有意義的。
這樣的做法稱(chēng)為特征的交叉,現(xiàn)在就是性別跟廣告的交叉得到的特征值。還有很多其他的方式可以進(jìn)行交叉,目前工業(yè)上的應(yīng)用最多的就是廣告跟用戶(hù)的交叉特征(編號(hào)為1的那個(gè)特征)、廣告跟性別的交叉特征,廣告跟年齡的交叉特征,廣告跟手機(jī)平臺(tái)的交叉特征,廣告跟地域的交叉特征。如果做得比較多,可能會(huì)有廣告主(每個(gè)廣告都是一個(gè)廣告主提交的一個(gè)投放計(jì)劃,一個(gè)廣告主可能會(huì)提交多個(gè)投放計(jì)劃)跟各個(gè)特征的交叉。
三、連續(xù)特征變離散特征:連續(xù)特征離散化的基本假設(shè),是默認(rèn)連續(xù)特征不同區(qū)間的取值對(duì)結(jié)果的貢獻(xiàn)是不一樣的
做到的交叉的特征值就足夠了嗎?答案還是不一定。
如編號(hào)為1的那個(gè)特征,就是廣告本身的ctr,假設(shè)互聯(lián)網(wǎng)廣告的點(diǎn)擊率符合一個(gè)長(zhǎng)尾分布,叫做對(duì)數(shù)正態(tài)分布,其概率密度是下圖(注意這個(gè)是假設(shè),不代表真實(shí)的數(shù)據(jù),從真實(shí)的數(shù)據(jù)觀察是符合這么樣的一個(gè)形狀的,好像還有雅虎的平滑的那個(gè)論文說(shuō)它符合beta分布)。
可以看到,大部分廣告的點(diǎn)擊率都是在某一個(gè)不大的區(qū)間內(nèi)的,點(diǎn)擊率越高的廣告越少,同時(shí)這些廣告覆蓋的流量也少。換句話說(shuō),點(diǎn)擊率在0.2%左右的時(shí)候,如果廣告a的點(diǎn)擊率是0.2%,廣告b的點(diǎn)擊率是0.25%,廣告b的點(diǎn)擊率比廣告a高0.05%,其實(shí)足以表示廣告b比廣a好不少,因?yàn)橛凶銐蚨嗟臉颖局С诌@個(gè)結(jié)論;但是點(diǎn)擊率在1.0%左右的的時(shí)候,廣告a點(diǎn)擊率是1.0%,廣告b的點(diǎn)擊率是1.05%,并沒(méi)有辦法表示廣告b比廣告a好很多,因?yàn)樵谶@0.05%的區(qū)間內(nèi)的廣告并不多,兩個(gè)廣告基本可以認(rèn)為差不多的。也就是點(diǎn)擊率在不同的區(qū)間,應(yīng)該考慮是不同的權(quán)重系數(shù),因?yàn)檫@個(gè)由廣告點(diǎn)擊率組成的編號(hào)為1的特征與這個(gè)用戶(hù)對(duì)廣告的點(diǎn)擊的概率不是完全的正相關(guān)性,有可能值越大特征越重要,也有可能值增長(zhǎng)到了一定程度,重要性就下降了。比如說(shuō),在區(qū)間[0.2%,0.3%]區(qū)間的系數(shù)就要比[0.3%,0.4%]的系數(shù)大。故,我們?nèi)绻麑?shù)值型特征進(jìn)行區(qū)間離散化,就是默認(rèn)不同區(qū)間的權(quán)重是不一樣的。
對(duì)于這樣的問(wèn)題,百度有科學(xué)家提出了對(duì)連續(xù)特征進(jìn)行離散化。他們認(rèn)為,特征的連續(xù)值在不同的區(qū)間的重要性是不一樣的,所以希望連續(xù)特征在不同的區(qū)間有不同的權(quán)重,實(shí)現(xiàn)的方法就是對(duì)特征進(jìn)行劃分區(qū)間,每個(gè)區(qū)間為一個(gè)新的特征。常用做法,就是先對(duì)特征進(jìn)行排序,然后再按照等頻離散化為N個(gè)區(qū)間
具體實(shí)現(xiàn)是使用等頻離散化方式:1)對(duì)于上面的編號(hào)為1的那個(gè)特征,先統(tǒng)計(jì)歷史記錄中每條展示記錄中編號(hào)為1的特征的值的排序,假設(shè)有10000條展示記錄,每個(gè)展示記錄的這個(gè)特征值是一個(gè)不相同的浮點(diǎn)數(shù),對(duì)所有的展示記錄按照這個(gè)浮點(diǎn)數(shù)從低到高排序,取最低的1000個(gè)展示記錄的特征值作為一個(gè)區(qū)間,排名1001到2000的展示記錄的特征值作為一個(gè)區(qū)間,以此類(lèi)推,總共劃分了10個(gè)區(qū)間。2)對(duì)特征編號(hào)重新編排,對(duì)于排名從1到1000的1000個(gè)展示記錄,他們的原來(lái)編號(hào)為1的特征轉(zhuǎn)變?yōu)樾碌奶卣骶幪?hào)1,值為1;對(duì)于排名是從1001到2000的記錄,他們的原來(lái)編號(hào)為1的特征轉(zhuǎn)變?yōu)樾碌奶卣骶幪?hào)2,值為1,以此類(lèi)推,新的特征編號(hào)就有了1到10總共10個(gè)。對(duì)于每個(gè)展示記錄來(lái)說(shuō),如果是排名1到1000的,新的特征編號(hào)就只有編號(hào)1的值為1,2到10的為0,其他的展示記錄類(lèi)似,這樣,廣告本身的ctr就占用了10個(gè)特征編號(hào),就成為離散化成了10個(gè)特征。
等頻離散化需要對(duì)原有的每個(gè)特征都做,也就是原來(lái)的編號(hào)為1到13的編號(hào),會(huì)離散化成很多的編號(hào),如果每個(gè)特征離散化成10個(gè),則最終會(huì)有130個(gè)特征,訓(xùn)練的結(jié)果w就會(huì)是一個(gè)130維的向量,分別對(duì)應(yīng)著130個(gè)特征的權(quán)重。
實(shí)際的應(yīng)用表名,離散化的特征能擬合數(shù)據(jù)中的非線性關(guān)系,取得比原有的連續(xù)特征更好的效果,而且在線上應(yīng)用時(shí),無(wú)需做乘法運(yùn)算,也加快了計(jì)算ctr的速度。
1.1.3 特征的過(guò)濾與修正
上面提到,很多特征其實(shí)是反饋的特征,如廣告反饋ctr,廣告與性別交叉特征,這些特征本來(lái)可以通過(guò)歷史展示日志的統(tǒng)計(jì)得到。但有些廣告本來(lái)展示量很少,在男性用戶(hù)上展示就更少,這時(shí)要計(jì)算廣告與性別交叉的ctr是很不準(zhǔn)確的,需要對(duì)這個(gè)特征進(jìn)行修正。具體的修正方法可以參考博文《廣告點(diǎn)擊率的貝葉斯平滑》。
經(jīng)過(guò)修正后的ctr再做特征,實(shí)際線上效果有了比較大的提升。
如果使用的特征又更多了,有了學(xué)校跟廣告交叉特征什么的,離散化后有了上萬(wàn)的特征,這下就會(huì)產(chǎn)生特征過(guò)多導(dǎo)致的各種問(wèn)題,如過(guò)擬合等。解決這個(gè)問(wèn)題的方法一種是離線的數(shù)據(jù)評(píng)估,如用ctr的區(qū)分性。另一種就是利用正則,特別是L1正則,經(jīng)過(guò)L1正則訓(xùn)練的得到的權(quán)重向量,其中某些特征如果對(duì)點(diǎn)擊率預(yù)估預(yù)測(cè)性不強(qiáng),權(quán)重會(huì)變成0,不影響預(yù)估。這就是特征過(guò)濾,具體的有關(guān)L1的一些論述與實(shí)現(xiàn)參看博文《從廣義線性模型到邏輯回歸》《OWL-QN算法》和《在線學(xué)習(xí)算法FTRL》。
總結(jié)
以上是生活随笔為你收集整理的【机器学习】对于特征离散化,特征交叉,连续特征离散化非常经典的解释的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【机器学习】特征工程七种常用方法
- 下一篇: ElasticSearch插件demo