你真的懂点击率(CTR)建模吗?
本文作者:懷人 阿里媽媽技術(shù)團(tuán)隊
點擊率(CTR,Click-Through Rate)以及派生的各種用戶行為概率(如商品購買率、推薦好友接受率、短視頻3s曝光率等)是廣告、推薦、搜索等互聯(lián)網(wǎng)應(yīng)用中大家耳熟能詳?shù)脑~匯。以點擊率為例,如何建立高效的CTR預(yù)估模型是領(lǐng)域從業(yè)者們的核心能力,也是頭部企業(yè)長期重兵投入、持續(xù)優(yōu)化的核心技術(shù)。
近些年來,得益于深度學(xué)習(xí)帶來的巨大紅利,CTR預(yù)估建模技術(shù)發(fā)展迅速,頂會論文、技術(shù)博客等都有大量精妙而深刻的介紹,加之開源浪潮帶來的工具普及,這項技術(shù)的入門似乎變得極其容易:跑跑已經(jīng)發(fā)表甚至開源的論文模型,調(diào)一調(diào)結(jié)構(gòu),或根據(jù)自己的業(yè)務(wù)特點做一些微創(chuàng)新,總是能取得不錯的結(jié)果。然而,隱藏在這些類似制造業(yè)的熟練工序背后,有很多基礎(chǔ)性的、細(xì)思極恐的知識點,若缺失它們雖不至導(dǎo)致熟練工的技能立刻坍塌,但卻總是讓技術(shù)的大廈存在不小的裂縫。另一方面,產(chǎn)品、運營等角色往往對CTR模型的理解停留在似是而非的直觀層面,也有必要做個嚴(yán)肅的普及。
今天我們不講復(fù)雜的建模技術(shù),僅來聊聊CTR模型背后的一些小知識。拋幾個問題開開胃:
-
CTR的物理意義是什么?用戶的點擊概率可以被準(zhǔn)確預(yù)測嗎?
-
CTR模型為什么普遍采用二分類建模而不是回歸建模?
-
訓(xùn)練集中竟然存在矛盾樣本,傳統(tǒng)machine learning任務(wù)似乎聞所未聞,如何理解?
-
為什么采用AUC指標(biāo)來度量模型性能,而不是傳統(tǒng)的模型準(zhǔn)確率?
-
CTR模型的理論AUC上界是什么,跟什么相關(guān),為什么會存在?
-
模型預(yù)測值的準(zhǔn)確性是什么意思?為什么需要校準(zhǔn)?校準(zhǔn)背后的原理是什么?
1. CTR的微觀不可預(yù)測性
不失一般性,下文統(tǒng)一以展示廣告場景為例來做介紹。點擊率,即發(fā)生點擊的概率,度量的是“某時某刻某地用戶對看到的某個廣告點擊的可能性”。那問題來了,這個可能性能否被準(zhǔn)確預(yù)測?
簡便起見,記“某時某刻某地用戶看到某個廣告”這個事件為E。根據(jù)大數(shù)定律,如果我們能夠在平行空間將事件E獨立運行 N次,并觀察到其中T()次發(fā)生了點擊。當(dāng)N足夠大時我們可以斷言:
顯然,隨著N趨近于無窮大,這個值越逼近真實值。然而事與愿違:客觀世界中,我們能且只能觀察到事件E發(fā)生1次。換句話說,事件E 發(fā)生后點擊概率的真實值(true-ground)我們永遠(yuǎn)無法獲得,因此微觀層面來看CTR是無法被準(zhǔn)確預(yù)測的,我們的預(yù)測只是對真實值的某種猜測。
為了更準(zhǔn)確地理解這個結(jié)論,我們給出數(shù)學(xué)化的描述。事件E發(fā)生后的結(jié)果只能是點擊或不點擊兩種情況,我們用Bernoulli分布來刻畫,對應(yīng)參數(shù)為,其中x表示事件E的所有背景知識,包括用戶信息、廣告信息、場景及上下文信息,也就是feature。 點擊的概率 服從參數(shù)為的Bernoulli分布, 其中y代表事件的結(jié)果,也就是label。微觀視角上看來每個事件E是無關(guān)聯(lián)的,伯努利分布的參數(shù)僅靠對事件E的一次抽樣無法準(zhǔn)確學(xué)習(xí),即:微觀層面的CTR不可被準(zhǔn)確預(yù)測。
2. CTR建模任務(wù)背后的假設(shè)
CTR建模的任務(wù)是,對于未來的每一個類似事件,我們要給出用戶可能發(fā)生點擊概率的預(yù)測值。上一節(jié)的分析表明,微觀層面是CTR不可被準(zhǔn)確預(yù)測的。為了解決這個困難,我們只能對問題做適當(dāng)?shù)暮喕?#xff0c;引入一些假設(shè),使得問題近似可解。
2.1 CTR建模任務(wù)的第一層簡化
業(yè)界當(dāng)前主流的做法是假設(shè)跟單個事件E本身無關(guān),僅跟事件的特征有關(guān),即:。直觀地講,就是假設(shè)數(shù)據(jù)集中所有人的點擊行為不再孤立地僅僅跟自己有關(guān),彼此之間有一個內(nèi)在的共性規(guī)律,事件發(fā)生后是否被點擊(y取值為1或者0)都服從參數(shù)為的伯努利分布。這樣,我們觀測到的所有事件,就構(gòu)成了對聯(lián)合分布(X,Y)的獨立同分布采樣,進(jìn)而CTR建模就轉(zhuǎn)化為對 這個條件分布的learning問題,這是可學(xué)習(xí)的。當(dāng)然簡化的方法不止一種,不同的假設(shè)對應(yīng)不同的模型空間。例如:
認(rèn)為“是否發(fā)生點擊”僅跟廣告信息有關(guān),此時模型退化為非個性化模型;
認(rèn)為不同用戶對“是否發(fā)生點擊”的概率服從不同的分布,但同一個用戶多次發(fā)生的事件服從同一個分布,那么此時的CTR 建模就退化為“一人一世界”模型。
2.2 CTR建模任務(wù)的第二層簡化
上述假設(shè),建立了對全局樣本服從參數(shù)為 的Bernoulli分布的學(xué)習(xí)框架。然而常見的CTR模型給出的預(yù)測結(jié)果并不是分布,而是某個確定的點擊率值。這難不倒我們,求解分布的某種統(tǒng)計量,例如期望均值,是很自然的選擇。對于Bernoulli分布而言,其期望值即為參數(shù)。因此在上述假設(shè)下我們可以進(jìn)一步得到:。注意:這里的 是一個跟x有關(guān)的常量。
拋掉過程中所有的細(xì)節(jié)假設(shè),我們可以從一個全新的角度來理解它:對于事件E,特征為x,它發(fā)生點擊的概率為一個跟特征x取值有關(guān)的量。假設(shè)這個關(guān)系由函數(shù)給出,即:。我們對上述表述稍加整理:事件E發(fā)生點擊(y=1)的概率是其特征 x 的函數(shù),即:
?
神奇!一下子回到了我們熟悉的CTR模型形式化。雖然看著簡單,讓我們再回顧下,這個形式化背后事實上是經(jīng)過了兩輪簡化的:
“某時某刻某地用戶看到某個廣告”,是否會發(fā)生點擊,不是完全取決于這個用戶,它受一個公共的規(guī)律限制:所有類似事件發(fā)生點擊的概率服從一個參數(shù)為的Bernoulli分布,參數(shù)是事件自身屬性(特征x)的函數(shù): 。注意:這里的函數(shù)同樣要求所有用戶都服從; 點擊率本身是個分布,實際模型輸出分布的均值。對于Bernoulli分布而言均值恰好為 ,因此預(yù)測的點擊率為 。
再次提醒:盡管我們通過簡化使得CTR任務(wù)可以求解,但模型輸出的CTR只是在給定假設(shè)空間的預(yù)測值。預(yù)測值不一定等于真實值,因為我們根本不知道真實值是什么,預(yù)測僅僅是對真實值的某種猜測。這個猜測距離真實值的距離,取決于簡化假設(shè)與實際問題相符的程度。
3. CTR模型的形式化選擇
現(xiàn)在很清楚了,CTR模型刻畫的是條件分布,x為特征,y取值為0或1。點擊發(fā)生的概率為,取值范圍是[0,1]。
有一個容易混淆的小知識點:既然是預(yù)測CTR,為什么不采用回歸模型?答案:從傳統(tǒng)的machine learning視角,我們現(xiàn)在的數(shù)據(jù)集是,y取值為0和1,這是一個典型的二分類問題。 只是我們要求模型輸出的不僅僅是分類的label,同時需要輸出屬于這個label的概率值。 只是y取值為1 的概率,而不是y的取值。很多人在此處產(chǎn)生了混淆。
進(jìn)一步地,CTR模型將參數(shù)化,通過data-driven的方法對參數(shù)進(jìn)行擬合。任意選定一個模型形式,如LR或者DNN,都是對(X,Y) 的聯(lián)合分布或者函數(shù)做了進(jìn)一步的假設(shè)。例如,LR模型假設(shè)了數(shù)據(jù)集是廣義線性可分且,DNN模型假設(shè)了。 選擇了不同的模型形式,本質(zhì)是對上一節(jié)反復(fù)強調(diào)的“所有人的點擊行為要服從一個公共的規(guī)律”這個假設(shè)的具象化,換言之,不同的模型形式對應(yīng)于不同的假設(shè)空間。
從原理上來說,在同一個特征體系下不同模型形式對應(yīng)的模型性能差異,代表著不同假設(shè)跟真實情況逼近程度的差異。
4. CTR模型的性能評價之一:序的準(zhǔn)確性
現(xiàn)在,通過收集大量的展現(xiàn)-點擊樣本構(gòu)造數(shù)據(jù)集即可訓(xùn)練一個CTR模型。一般而言,特征的構(gòu)造對模型性能有關(guān)鍵性的影響。SOTA 的方法都是采用大規(guī)模ID化特征體系,對“某時某刻某地用戶看到某個廣告”這個事件,從全方面的視角進(jìn)行刻畫,如用戶的歷史行為有哪些、廣告的創(chuàng)意是什么內(nèi)容、上下文場景信息有什么,甚至今天的天氣情況、是不是節(jié)假日等信息都充分收集,希望獲得影響用戶點擊行為的所有可能因素,從而讓模型能夠成功捕捉和預(yù)測點擊發(fā)生的概率。
4.1 矛盾樣本現(xiàn)象
一個常常會出現(xiàn)、但傳統(tǒng)的machine learning理論卻鮮有提及的現(xiàn)象是,訓(xùn)練集中會出現(xiàn)矛盾樣本:x相同但y取值不同。例如,同一個用戶很短時間里面看了同一個廣告2次,一次發(fā)生了點擊、另一次沒有,而在這個時間段里面特征x的取值沒有發(fā)生任何變化(這是很有可能的,事實上很多實際應(yīng)用中x都是以靜態(tài)特征為主,缺乏反映用戶狀態(tài)的實時信息)。這種矛盾樣本現(xiàn)象常會引起初學(xué)者的困擾。
矛盾樣本的根源,來自第二節(jié)對問題的簡化操作:“假設(shè)跟單個事件E本身無關(guān),僅跟事件的特征有關(guān)”。換句話說,我們強行抹掉了每一個獨立事件本身的屬性,認(rèn)為所有事件獨立同分布。如果把每個事件唯一區(qū)分,如精確到納秒的事件發(fā)生時間作為特征加入到x中,那矛盾樣本自然就解開了。換個角度來看,矛盾樣本的存在說明我們的特征丟掉了原始問題的部分信息,導(dǎo)致訓(xùn)練集是帶有噪聲的,進(jìn)而導(dǎo)致模型的準(zhǔn)確率永遠(yuǎn)不可能達(dá)到。 事實上在傳統(tǒng)的機(jī)器學(xué)習(xí)理論中,因數(shù)據(jù)存在噪聲分類器有個最小錯誤率的界,即貝葉斯錯誤率(Bayes error rate)。
有意思的是,跟上一節(jié)闡述的“不同模型形式選擇差異性代表不同假設(shè)跟真實情況逼近程度的差異”類似,特征的設(shè)計其實是從另外一個角度引入了對問題的逼近誤差。原始的問題中,每一個事件都是獨一無二的,換句話說不應(yīng)該存在矛盾樣本。這個建模框架中,x的設(shè)計決定了簡化問題的能力天花板,f的設(shè)計決定了逼近天花板的程度。
4.2 模型性能評估器的選擇
另一個常見問題是,為什么CTR模型的性能度量不采用常見的分類器準(zhǔn)確率而是AUC。不用準(zhǔn)確率的原因大部分同學(xué)都能想到:CTR任務(wù)正負(fù)樣本比例傾斜嚴(yán)重,模型對正樣本預(yù)測全錯的情況下準(zhǔn)確率都非常高,換句話說,準(zhǔn)確率的評估分辨率太低。使用AUC的原因則相對來說冷僻,這里解釋下。
先回到本質(zhì),兩個CTR模型的好壞從什么角度進(jìn)行比較?我們沒法在微觀層面對每一個樣本的預(yù)測值進(jìn)行度量,一個可行的選擇是從宏觀層面對樣本的比較關(guān)系進(jìn)行度量。 一個樣本如果實際發(fā)生了點擊,那么Y=1 的預(yù)測概率應(yīng)該大于Y=0 的預(yù)測概率;反之亦然。進(jìn)一步放寬些,我們希望數(shù)據(jù)集中,所有正類樣本的預(yù)測score 大于負(fù)類樣本,也就是模型的預(yù)測序盡可能逼近真實序。恰好統(tǒng)計領(lǐng)域有一種假設(shè)檢驗叫Wilcoxon-Mann-Witney Test ,它測試的是任意給一個正類樣本和一個負(fù)類樣本,正類樣本的score 有多大概率大于負(fù)類樣本的score。 有牛人證明了AUC跟Wilcoxon-Mann-Witney Test等價[1],從而AUC的物理意義就很清晰了:“任意給一個正類樣本和一個負(fù)類樣本,正類樣本的score大于負(fù)類樣本的score” 的概率值。
再回過頭來看,CTR建模從根源上就是對原始問題的簡化產(chǎn)物。既然我們都不知道CTR真實值,那么絕對意義上的預(yù)測準(zhǔn)確評估也就沒有意義,退而求其次,對觀測到的數(shù)據(jù)度量模型預(yù)測的結(jié)果序,就是個還不錯的選擇了。當(dāng)然,除了AUC之外,我們還可以選擇其余的評估方式比如lift等,它們對應(yīng)于其它的物理含義,這里不做展開了。
4.3 理論AUC上界
講完了AUC就必須要談?wù)劻硪粋€非常重要的概念:理論AUC上界。
先講下如何計算:對于給定的訓(xùn)練數(shù)據(jù)集,由于矛盾樣本的存在,一定有同一個x但不同y的情況。對數(shù)據(jù)集做個歸并操作:所有x相同的樣本,統(tǒng)計其CTR 值(統(tǒng)計N個重復(fù)樣本里面y=1的個數(shù)T,CTR=T/N;如果x不存在重復(fù),即N=1時,CTR=y即可),將這個值作為一個理論最優(yōu)分類器的預(yù)測值,計算此時模型的AUC,得到的就是理論AUC上界。AUC上界對應(yīng)于傳統(tǒng)機(jī)器學(xué)習(xí)里的貝葉斯錯誤率,是有噪聲數(shù)據(jù)下模型學(xué)習(xí)能夠達(dá)到的最高水平。
從計算過程可以看出,理論AUC上界度量的其實是樣本中的混淆度(即矛盾樣本出現(xiàn)的程度),它是給定數(shù)據(jù)集后模型能力的天花板,可以用來判斷模型迭代的邊際收益。本質(zhì)上,理論AUC上界取決于特征的設(shè)計。舉個例子,如果特征僅僅跟AD有關(guān),與用戶或者場景信息無關(guān),這個時候模型其實就退化為一個簡單的、廣告維度的統(tǒng)計模型,非個性化,顯然在這種特征空間下,模型能夠達(dá)到的AUC天花板將遠(yuǎn)低于個性化的情況。
另一方面,過高的理論AUC上界也不是好事。例如,將每一個樣本id加入到特征里面,原則上理論AUC=1。但這種過細(xì)的、不具備泛化能力的特征,會對模型的學(xué)習(xí)過程造成強烈的干擾,尤其是對DNN這樣解空間巨大、局部點遍布的函數(shù)簇,反而可能導(dǎo)致模型的性能下降。
5. CTR模型的性能評價之二:值的準(zhǔn)確性
這個話題是最充滿迷思、也是我多年來一直反反復(fù)復(fù)跟很多人強調(diào)的。很多外行的同學(xué)、甚至不少從事CTR模型技術(shù)研發(fā)的同學(xué),經(jīng)常掛在嘴邊的一個概念:CTR建模的任務(wù)就是做準(zhǔn)了。這里的“準(zhǔn)”,潛臺詞是:某個廣告,或者某個廣告計劃,真實CTR是,你模型預(yù)測出來怎么是,一定是有問題。
相信認(rèn)真看完前面內(nèi)容的同學(xué),對這個點應(yīng)該能突口而出:CTR模型沒法評估預(yù)測值的準(zhǔn)確性,因為我們并不知道真實值。
同學(xué)A提出反對的意見:不對呀,真實數(shù)據(jù)中,我的確可以看到某個廣告,曝光了10000次,被點擊了100次,不是難道真實的嗎?要準(zhǔn)確地回答同學(xué)A的疑問,那我們需要引入一個新的視角來審視CTR模型:坐標(biāo)系。
我們做個詳細(xì)的剖解:對于模型而言,它是在給定數(shù)據(jù)集上擬合函數(shù),此時模型是在最細(xì)粒度的特征空間X來進(jìn)行參數(shù)的擬合學(xué)習(xí),換言之,模型學(xué)習(xí)的時候是基于全空間坐標(biāo)系(簡稱FS坐標(biāo)系)。同學(xué)A是在廣告維度進(jìn)行的統(tǒng)計觀察,他看到廣告的曝光和點擊次數(shù),本質(zhì)上對應(yīng)的是僅廣告特征的坐標(biāo)系(簡稱AD坐標(biāo)系)。坐標(biāo)系不同,相應(yīng)統(tǒng)計量背后的數(shù)據(jù)分布也就不同,因此不可直接比較。
事實上,對于這個廣告的10000次曝光,在FS坐標(biāo)系下模型會預(yù)測每個曝光的細(xì)粒度pCTR值。注意:這里對每一個曝光的預(yù)測pCTR,模型的輸入是完整特征集合X,而不是僅僅廣告特征。同學(xué)A直接將這些pCTR值取平均得到該廣告的平均預(yù)測pCTR值,相當(dāng)于是對“除去廣告特征之外的特征子空間對應(yīng)的殘差坐標(biāo)系(簡稱Res坐標(biāo)系)”進(jìn)行了積分操作。只不過這個積分操作是針對某一個特定的廣告進(jìn)行的,而這個廣告只是在Res空間的10000次曝光采樣。實際廣告系統(tǒng)中,廣告受特定的人群定向以及出價的影響,其競得的曝光明顯跟全局流量不同分布。那就清楚了:模型預(yù)測這10000次曝光的pCTR基于的是對整個Res特征空間的分布擬合,而同學(xué)A統(tǒng)計的真實CTR僅僅是站在Res空間中單個廣告視角的擬合,這是有偏的,從而導(dǎo)致這10000次曝光上CTR的預(yù)測平均值跟真實統(tǒng)計平均值不同。換言之,不是模型不準(zhǔn)確,而是你要的東西跟模型學(xué)習(xí)的東西不一致,各說各話自然說不到一塊去。
到這里,我們可以先對CTR模型的值準(zhǔn)確性話題做個小結(jié):
真正意義上的值準(zhǔn)確性是不存在的,因為我們觀測不到微觀意義上每一個事件的真實CTR值
在第2節(jié)的假設(shè)下我們可以對每一個事件(樣本)給出預(yù)測的pCTR值,這只是代表在特定坐標(biāo)系(特征空間)、特定模型形式(模型空間)兩種選擇下的數(shù)學(xué)值,是對微觀意義上真實CTR的逼近;
計算的CTR預(yù)測是否準(zhǔn)確,需要站在同一個坐標(biāo)系中。不同的坐標(biāo)系會進(jìn)一步帶來觀測視角的偏差,這個偏差跟模型本身無關(guān)。
同學(xué)B進(jìn)一步提出了疑問:你講的我明白了,但實際廣告業(yè)務(wù)中非常重要的自動出價(auto-bidding)技術(shù),需要模型站在每一個AD的視角給出準(zhǔn)確的pCTR值,這樣才能幫助AD完成每一個曝光粒度的最優(yōu)出價。現(xiàn)在你說模型給不了,這該怎么辦?
當(dāng)然是有辦法的,先說一個容易的、也是絕大多數(shù)團(tuán)隊采用的解法:校準(zhǔn)。站在坐標(biāo)系的角度來看,校準(zhǔn)相當(dāng)于是一個面向特定觀測者所在的坐標(biāo)系構(gòu)建的級聯(lián)CTR模型。給定在FS坐標(biāo)系下訓(xùn)練的模型,校準(zhǔn)進(jìn)一步站在新的觀測坐標(biāo)系做了變換: 。這很容易理解,我們就不展開討論了。
值得注意的是,校準(zhǔn)本質(zhì)上是在基礎(chǔ)模型之上,引入了第二個學(xué)習(xí)目標(biāo)。基礎(chǔ)模型的目標(biāo)是在給定解空間擬合數(shù)據(jù)、最大化AUC(序的準(zhǔn)確性);校準(zhǔn)模型的目標(biāo)是在后驗的統(tǒng)計意義上調(diào)整pCTR值的大小,使得預(yù)測值盡可能逼近觀測到的統(tǒng)計值(值的準(zhǔn)確性)。然而,這種兩段式建模方式,雖然第二階段的校準(zhǔn)可以盡量保序,從而不影響模型的AUC表現(xiàn),但兩段式建模非最優(yōu)。因為基礎(chǔ)模型預(yù)測的pCTR分布代表了模型對數(shù)據(jù)的歸納;現(xiàn)在既然已經(jīng)知道有特定維度上這個歸納不準(zhǔn)確,end-2-end聯(lián)合建模顯然能夠觸及更高的天花板。這個方向的工作我們團(tuán)隊正在推進(jìn)。
6. 課后思考題
除了以上介紹的這些常見的小知識點,事實上跟CTR相關(guān)的還有很多基礎(chǔ)但重要的問題,比如:
雖然由于坐標(biāo)系不同,預(yù)測的pCTR值跟真實CTR值可以有偏差,但為什么有些維度的特征沒有偏差,有些維度偏差卻很大?特別地,一些粗粒度特征的偏差一般都不大,為什么?
模型為什么容易高估?往往離線評估預(yù)測值/統(tǒng)計觀測值基本接近1,而在線服務(wù)時高于1
CTR模型的樣本來自模型自身的選擇,持續(xù)的循環(huán)是否會導(dǎo)致系統(tǒng)陷入局部陷阱?如何判斷?
CTR模型真的要解決bias問題嗎?盡管我對大量長尾的、競價失敗的廣告甚至都沒有見過其樣本,我需要花大力氣去優(yōu)化他們嗎?
這些問題留作思考題,歡迎大家積極討論。
參考文獻(xiàn) :
[1] Areas beneath the relative operating characteristics (ROC) and relative operating levels (ROL) curves: Statistical significance and interpretation
總結(jié)
以上是生活随笔為你收集整理的你真的懂点击率(CTR)建模吗?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里妈妈是如何做品牌风险管理的
- 下一篇: 久等了,「阿里妈妈技术」来啦!