99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀數(shù)據(jù)挖掘:推薦系統(tǒng)綜述以及美團(tuán)推薦系統(tǒng)介紹
數(shù)據(jù)挖掘:推薦系統(tǒng)綜述以及美團(tuán)推薦系統(tǒng)介紹
2015-12-29
收藏

數(shù)據(jù)挖掘推薦系統(tǒng)綜述以及美團(tuán)推薦系統(tǒng)介紹

文 | 宿痕
來(lái)源 | 知乎
其實(shí)推薦系統(tǒng)前面已經(jīng)講過(guò)不少,那時(shí)候主要是放在機(jī)器學(xué)習(xí)上講的,既然這次要系統(tǒng)擼一遍數(shù)據(jù)挖掘,就把推薦系統(tǒng)單獨(dú)拿出來(lái)說(shuō)一說(shuō)。相信如果做過(guò)推薦系統(tǒng)的人,都知道是什么回事。一堆features,一堆算法模型,一堆online、offline規(guī)則和計(jì)算,還有若干的場(chǎng)景。包括著名的netflix、Amazon做的推薦場(chǎng)景都有哪些,有哪些坑需要注意的,之前都有說(shuō)過(guò)。
像阿里還時(shí)不時(shí)會(huì)搞搞天池算法大賽,像最近在弄一個(gè)簡(jiǎn)歷篩選推薦算法競(jìng)賽,有興趣的小伙伴都可以去參與了解下。拿些數(shù)據(jù)來(lái)練練,對(duì)自己經(jīng)驗(yàn)的積累還是挺有好處的。
LZ最近也是在接觸量化投資,通過(guò)機(jī)器學(xué)習(xí)的方式來(lái)預(yù)測(cè)股價(jià)走勢(shì)以及買(mǎi)入賣(mài)出等,還是比較有意思啊,如果有做這塊的可以私下交流,當(dāng)然知道做這塊的相對(duì)來(lái)說(shuō)都比較保守,畢竟策略、思想等東西都是比較寶貴。
閑話不多說(shuō),今天既然說(shuō)到推薦系統(tǒng)概述,重點(diǎn)會(huì)推薦的場(chǎng)景、推薦的算法、推薦的架構(gòu)以及美團(tuán)的推薦算法都是怎么做的講下。
前面介紹的推薦的場(chǎng)景、算法介紹更適合剛?cè)腴T(mén)的同學(xué)了解,已經(jīng)在這塊領(lǐng)域馳騁疆場(chǎng)的老鳥(niǎo)可以直接跳步到后面的架構(gòu)和美團(tuán)案例上了。
推薦系統(tǒng)為何物?
先說(shuō)個(gè)事實(shí),為什么需要有推薦系統(tǒng)這個(gè)東西?
當(dāng)我們?cè)邶嫶蟮囊婚g圖書(shū)館里想找我們要看的一本書(shū)時(shí);
當(dāng)我們?cè)谖譅柆敵邢胭I(mǎi)個(gè)清潔劑時(shí);
當(dāng)我們想在淘寶上搜個(gè)價(jià)格合適、質(zhì)量又不錯(cuò)的衣服時(shí);
當(dāng)海量的垃圾郵件和廣告不斷充斥著你的郵箱時(shí);
當(dāng)我們的信息嚴(yán)重過(guò)載時(shí),我們已經(jīng)沒(méi)辦法通過(guò)人的肉眼來(lái)篩選了。

沒(méi)錯(cuò),就是像樓上這哥兒們這樣,我們已經(jīng)茫然了!(聽(tīng)取某些同學(xué)的意見(jiàn),要求多放些圖片O(∩_∩)O)
所以應(yīng)運(yùn)而生,出現(xiàn)了如Amazon的商品推薦

而據(jù)說(shuō)Amazon的推薦系統(tǒng)給他們帶來(lái)35%的銷(xiāo)售!
還有像YouTube

netflix

天貓

google

這些案例不計(jì)其數(shù),本質(zhì)上他們都解決了幾個(gè)問(wèn)題:
用戶(hù)的信息過(guò)載;
更精準(zhǔn)的個(gè)性化推薦和營(yíng)銷(xiāo);
減少資源的浪費(fèi)和最大化收益。因而推薦系統(tǒng)其實(shí)更多的是解決的資源分配的問(wèn)題,當(dāng)然從用戶(hù)的角度來(lái)說(shuō)是解決的信息篩選的成本問(wèn)題。
不可避免推薦系統(tǒng)就把人、產(chǎn)品、數(shù)據(jù)這些都捆綁在一起。
而人、產(chǎn)品都是復(fù)雜的,怎么能夠通過(guò)推薦系統(tǒng)來(lái)實(shí)現(xiàn)量化呢?自然而然的就考慮到“人以類(lèi)聚、物以群分”的feature。
這些feature的選擇是個(gè)開(kāi)放的話題,主要是圍繞人的基本屬性、社會(huì)關(guān)系、金融資產(chǎn)、地理位置、信用歷史、行為偏好等維度去考慮。

一句話就是能把這個(gè)人的吃喝拉撒、從什么時(shí)候出生到活到多少歲、他們平時(shí)都接觸什么人、都在哪里活動(dòng)、都做些什么事情都知道了。是不是想象就比較可怕,這樣作為個(gè)人還有隱私可言嗎?沒(méi)錯(cuò),數(shù)據(jù)安全、個(gè)人隱私問(wèn)題是數(shù)據(jù)方面的一個(gè)重大話題。

而推薦作為機(jī)器學(xué)習(xí)中很重要的一個(gè)部分,它所解決的就是把這個(gè)人的過(guò)去歷史行為、用戶(hù)間的relation、item相似度、用戶(hù)的個(gè)人信息、item特征等信息綜合起來(lái)去打分,來(lái)評(píng)估預(yù)測(cè)這個(gè)用戶(hù)對(duì)于這個(gè)item的喜好程度。LR相比較DT的好處就是能?chē)@最終result會(huì)有個(gè)probability。
推薦算法
常見(jiàn)的推薦算法有這些:

具體的算法公式我就不列了,講了可能會(huì)有人會(huì)看睡著。
CF遇到的問(wèn)題就是1.冷啟動(dòng),沒(méi)數(shù)據(jù)的時(shí)候比較尷尬,本身需要大量的可信用戶(hù)數(shù)據(jù)來(lái)訓(xùn)練;2.數(shù)據(jù)稀疏的情況,;3.數(shù)據(jù)分布的問(wèn)題,長(zhǎng)尾部分相似度計(jì)算不準(zhǔn)確。這里常用的model有聚類(lèi)、分類(lèi)、回歸、SVD等等。
CB主要是基于內(nèi)容的推薦,比如文本內(nèi)容、圖片、音頻等方面的推薦,優(yōu)點(diǎn)就是沒(méi)有上面說(shuō)到的冷啟動(dòng)問(wèn)題,可以給小眾的用戶(hù)推薦內(nèi)容,但是難點(diǎn)就是在實(shí)際業(yè)務(wù)中沒(méi)有太大的效果。這種比較適合在數(shù)據(jù)特征比較豐富的情況下做。比如像觀看的視頻,圍繞導(dǎo)演、時(shí)長(zhǎng)、粉絲等各種方面來(lái)training。
推薦架構(gòu)
涉及到推薦架構(gòu)方面,能說(shuō)的就特別多了。本身因?yàn)榈搅思軜?gòu)這層就和實(shí)際情況結(jié)合了,包括計(jì)算性能、成本、實(shí)時(shí)性、評(píng)估效果、用戶(hù)體驗(yàn)等很多方面的問(wèn)題。
之前整理了個(gè)推薦系統(tǒng)的基本平臺(tái)架構(gòu),大體的內(nèi)容有這些:

像在系統(tǒng)推薦平臺(tái)邏輯大體上有這些:

包括你看到的netflix、Amazon大體的架構(gòu)也是這樣分布,特別要強(qiáng)調(diào)的是當(dāng)你的ML模型最終目標(biāo)是在生產(chǎn)環(huán)節(jié)有重要影響,你有必要得思考正確的系統(tǒng)架構(gòu)。
在延時(shí)和復(fù)雜性之間權(quán)衡很重要,一些計(jì)算需要實(shí)時(shí),盡快響應(yīng)給用戶(hù)反饋,另外復(fù)雜的ML模型需要大量數(shù)據(jù),需要長(zhǎng)時(shí)間才能計(jì)算好,還有一些近乎在線NearLine,操作不保證實(shí)時(shí)發(fā)生,但是最好盡可能快地執(zhí)行。
這方面阿里云是比較強(qiáng)悍,技術(shù)杠桿的,在雙十一這種場(chǎng)景里是大展拳腳。
美團(tuán)的推薦系統(tǒng)
美團(tuán)在線上線下O2O做的產(chǎn)品體驗(yàn)的確是不錯(cuò),他們的技術(shù)分享也比較勤快。所以有很多地方還是值得我們?nèi)W(xué)習(xí)的吧。特別是美團(tuán)在線上線下這塊應(yīng)該有不少用戶(hù)數(shù)據(jù)和行為數(shù)據(jù)可以來(lái)做分析。也真的希望他們能夠有時(shí)間來(lái)線下多搞些活動(dòng)分享分享。
美團(tuán)推薦框架

從框架的角度看,推薦系統(tǒng)基本可以分為數(shù)據(jù)層、觸發(fā)層、融合過(guò)濾層和排序?qū)?。?shù)據(jù)層包括數(shù)據(jù)生成和數(shù)據(jù)存儲(chǔ),主要是利用各種數(shù)據(jù)處理工具對(duì)原始日志進(jìn)行清洗,處理成格式化的數(shù)據(jù),落地到不同類(lèi)型的存儲(chǔ)系統(tǒng)中,供下游的算法和模型使用。候選集觸發(fā)層主要是從用戶(hù)的歷史行為、實(shí)時(shí)行為、地理位置等角度利用各種觸發(fā)策略產(chǎn)生推薦的候選集。候選集融合和過(guò)濾層有兩個(gè)功能,一是對(duì)出發(fā)層產(chǎn)生的不同候選集進(jìn)行融合,提高推薦策略的覆蓋度和精度;另外還要承擔(dān)一定的過(guò)濾職責(zé),從產(chǎn)品、運(yùn)營(yíng)的角度確定一些人工規(guī)則,過(guò)濾掉不符合條件的item。排序?qū)又饕抢?a href='/map/jiqixuexi/' style='color:#000;font-size:inherit;'>機(jī)器學(xué)習(xí)的模型對(duì)觸發(fā)層篩選出來(lái)的候選集進(jìn)行重排序。
同時(shí),對(duì)與候選集觸發(fā)和重排序兩層而言,為了效果迭代是需要頻繁修改的兩層,因此需要支持ABtest。為了支持高效率的迭代,對(duì)候選集觸發(fā)和重排序兩層進(jìn)行了解耦,這兩層的結(jié)果是正交的,因此可以分別進(jìn)行對(duì)比試驗(yàn),不會(huì)相互影響。同時(shí)在每一層的內(nèi)部,會(huì)根據(jù)用戶(hù)將流量劃分為多份,支持多個(gè)策略同時(shí)在線對(duì)比。
數(shù)據(jù)feature
像數(shù)據(jù)feature大概有這些:

數(shù)據(jù)描述:
用戶(hù)主動(dòng)行為數(shù)據(jù)記錄了用戶(hù)在美團(tuán)平臺(tái)上不同的環(huán)各種行為,這些行為一方面用于候選集觸發(fā)算法(在下一部分介紹)中的離線計(jì)算(主要是瀏覽、下單),另外一方面,這些行為代表的意圖的強(qiáng)弱不同,因此在訓(xùn)練重排序模型時(shí)可以針對(duì)不同的行為設(shè)定不同的回歸目標(biāo)值,以更細(xì)地刻畫(huà)用戶(hù)的行為強(qiáng)弱程度。此外,用戶(hù)對(duì)deal的這些行為還可以作為重排序模型的交叉特征,用于模型的離線訓(xùn)練和在線預(yù)測(cè)。
負(fù)反饋數(shù)據(jù)反映了當(dāng)前的結(jié)果可能在某些方面不能滿(mǎn)足用戶(hù)的需求,因此在后續(xù)的候選集觸發(fā)過(guò)程中需要考慮對(duì)特定的因素進(jìn)行過(guò)濾或者降權(quán),降低負(fù)面因素再次出現(xiàn)的幾率,提高用戶(hù)體驗(yàn);同時(shí)在重排序的模型訓(xùn)練中,負(fù)反饋數(shù)據(jù)可以作為不可多得的負(fù)例參與模型訓(xùn)練,這些負(fù)例要比那些展示后未點(diǎn)擊、未下單的樣本顯著的多。
用戶(hù)畫(huà)像是刻畫(huà)用戶(hù)屬性的基礎(chǔ)數(shù)據(jù),其中有些是直接獲取的原始數(shù)據(jù),有些是經(jīng)過(guò)挖掘的二次加工數(shù)據(jù),這些屬性一方面可以用于候選集觸發(fā)過(guò)程中對(duì)deal進(jìn)行加權(quán)或降權(quán),另外一方面可以作為重排序模型中的用戶(hù)維度特征
通過(guò)對(duì)UGC數(shù)據(jù)的挖掘可以提取出一些關(guān)鍵詞,然后使用這些關(guān)鍵詞給deal打標(biāo)簽,用于deal的個(gè)性化展示。
策略
策略方面主要是架構(gòu)中得CF、LB、QB、GB、替補(bǔ)策略這些。
1.CF
CF是推薦這塊應(yīng)用的比較廣的算法了,很簡(jiǎn)單但是要用好要看具體的場(chǎng)景問(wèn)題。
清除作弊、刷單、代購(gòu)等噪聲數(shù)據(jù)。這些數(shù)據(jù)的存在會(huì)嚴(yán)重影響算法的效果,因此要在第一步的數(shù)據(jù)清洗中就將這些數(shù)據(jù)剔除。
合理選取訓(xùn)練數(shù)據(jù)。選取的訓(xùn)練數(shù)據(jù)的時(shí)間窗口不宜過(guò)長(zhǎng),當(dāng)然也不能過(guò)短。具體的窗口期數(shù)值需要經(jīng)過(guò)多次的實(shí)驗(yàn)來(lái)確定。同時(shí)可以考慮引入時(shí)間衰減,因?yàn)榻诘挠脩?hù)行為更能反映用戶(hù)接下來(lái)的行為動(dòng)作。
user-based與item-based相結(jié)合。

嘗試不同的相似度計(jì)算方法。在實(shí)踐中,我們采用了一種稱(chēng)作loglikelihood ratio[1]的相似度計(jì)算方法。在mahout中,loglikelihood ratio也作為一種相似度計(jì)算方法被采用。
下表表示了Event A和Event B之間的相互關(guān)系,其中:
k11 :Event A和Event B共現(xiàn)的次數(shù)
k12 :Event B發(fā)生,Event A未發(fā)生的次數(shù)
k21 :Event A發(fā)生,Event B未發(fā)生的次數(shù)
k22 :Event A和Event B都不發(fā)生的次數(shù)
Event AEverything but AEvent BA and B together (k_11)B, but not A (k_12)Everything but BA without B (k_21)Neither A nor B (k_22)
則logLikelihoodRatio=2 * (matrixEntropy - rowEntropy - columnEntropy)
其中
rowEntropy = entropy(k11, k12) + entropy(k21, k22)
columnEntropy = entropy(k11, k21) + entropy(k12, k22)
matrixEntropy = entropy(k11, k12, k21, k22)(entropy為幾個(gè)元素組成的系統(tǒng)的香農(nóng)熵)
2.LB
對(duì)于移動(dòng)設(shè)備而言,與PC端最大的區(qū)別之一是移動(dòng)設(shè)備的位置是經(jīng)常發(fā)生變化的。不同的地理位置反映了不同的用戶(hù)場(chǎng)景,在具體的業(yè)務(wù)中可以充分利用用戶(hù)所處的地理位置。在推薦的候選集觸發(fā)中,我們也會(huì)根據(jù)用戶(hù)的實(shí)時(shí)地理位置、工作地、居住地等地理位置觸發(fā)相應(yīng)的策略。
根據(jù)用戶(hù)的歷史消費(fèi)、歷史瀏覽等,挖掘出某一粒度的區(qū)域(比如商圈)內(nèi)的區(qū)域消費(fèi)熱單和區(qū)域購(gòu)買(mǎi)熱單
區(qū)域消費(fèi)熱單
區(qū)域購(gòu)買(mǎi)熱單

當(dāng)新的線上用戶(hù)請(qǐng)求到達(dá)時(shí),根據(jù)用戶(hù)的幾個(gè)地理位置對(duì)相應(yīng)地理位置的區(qū)域消費(fèi)熱單和區(qū)域購(gòu)買(mǎi)熱單進(jìn)行加權(quán),最終得到一個(gè)推薦列表。
此外,還可以根據(jù)用戶(hù)出現(xiàn)的地理位置,采用協(xié)同過(guò)濾的方式計(jì)算用戶(hù)的相似度。
3. QB
搜索是一種強(qiáng)用戶(hù)意圖,比較明確的反應(yīng)了用戶(hù)的意愿,但是在很多情況下,因?yàn)楦鞣N各樣的原因,沒(méi)有形成最終的轉(zhuǎn)換。盡管如此,這種情景還是代表了一定的用戶(hù)意愿,可以加以利用。具體做法如下:
對(duì)用戶(hù)過(guò)去一段時(shí)間的搜索無(wú)轉(zhuǎn)換行為進(jìn)行挖掘,計(jì)算每一個(gè)用戶(hù)對(duì)不同query的權(quán)重。

計(jì)算每個(gè)query下不同deal的權(quán)重。

當(dāng)用戶(hù)再次請(qǐng)求時(shí),根據(jù)用戶(hù)對(duì)不同query的權(quán)重及query下不同deal的權(quán)重進(jìn)行加權(quán),取出權(quán)重最大的TopN進(jìn)行推薦。
4. GB
對(duì)于協(xié)同過(guò)濾而言,user之間或者deal之間的圖距離是兩跳,對(duì)于更遠(yuǎn)距離的關(guān)系則不能考慮在內(nèi)。而圖算法可以打破這一限制,將user與deal的關(guān)系視作一個(gè)二部圖,相互間的關(guān)系可以在圖上傳播。simrank: a measure of structural-context similarity是一種衡量對(duì)等實(shí)體相似度的圖算法。它的基本思想是,如果兩個(gè)實(shí)體與另外的相似實(shí)體有相關(guān)關(guān)系,那它們也是相似的,即相似性是可以傳播的。

5. 實(shí)時(shí)用戶(hù)行為
目前美團(tuán)的業(yè)務(wù)會(huì)產(chǎn)生包括搜索、篩選、收藏、瀏覽、下單等豐富的用戶(hù)行為,這些是進(jìn)行效果優(yōu)化的重要基礎(chǔ)。推薦當(dāng)然希望每一個(gè)用戶(hù)行為流都能到達(dá)轉(zhuǎn)化的環(huán)節(jié),但是事實(shí)上遠(yuǎn)非這樣。
當(dāng)用戶(hù)產(chǎn)生了下單行為上游的某些行為時(shí),會(huì)有相當(dāng)一部分因?yàn)楦鞣N原因使行為流沒(méi)有形成轉(zhuǎn)化。但是,用戶(hù)的這些上游行為是非常重要的先驗(yàn)知識(shí)。很多情況下,用戶(hù)當(dāng)時(shí)沒(méi)有轉(zhuǎn)化并不代表用戶(hù)對(duì)當(dāng)前的item不感興趣。當(dāng)用戶(hù)再次到達(dá)推薦展位時(shí),根據(jù)用戶(hù)之前產(chǎn)生的先驗(yàn)行為理解并識(shí)別用戶(hù)的真正意圖,將符合用戶(hù)意圖的相關(guān)deal再次展現(xiàn)給用戶(hù),引導(dǎo)用戶(hù)沿著行為流向下游行進(jìn),最終達(dá)到下單這個(gè)終極目標(biāo)。
目前引入的實(shí)時(shí)用戶(hù)行為包括:實(shí)時(shí)瀏覽、實(shí)時(shí)收藏。
6. 替補(bǔ)策略
雖然現(xiàn)在有一系列基于用戶(hù)歷史行為的候選集觸發(fā)算法,但對(duì)于部分新用戶(hù)或者歷史行為不太豐富的用戶(hù),上述算法觸發(fā)的候選集太小,因此需要使用一些替補(bǔ)策略進(jìn)行填充。
熱銷(xiāo)單:在一定時(shí)間內(nèi)銷(xiāo)量最多的item,可以考慮時(shí)間衰減的影響等。
好評(píng)單:用戶(hù)產(chǎn)生的評(píng)價(jià)中,評(píng)分較高的item。
城市單:滿(mǎn)足基本的限定條件,在用戶(hù)的請(qǐng)求城市內(nèi)的。
7.子策略融合
為了結(jié)合不同觸發(fā)算法的優(yōu)點(diǎn),同時(shí)提高候選集的多樣性和覆蓋率,需要將不同的觸發(fā)算法融合在一起。常見(jiàn)的融合的方法有以下幾種:
加權(quán)型:最簡(jiǎn)單的融合方法就是根據(jù)經(jīng)驗(yàn)值對(duì)不同算法賦給不同的權(quán)重,對(duì)各個(gè)算法產(chǎn)生的候選集按照給定的權(quán)重進(jìn)行加權(quán),然后再按照權(quán)重排序。
分級(jí)型:優(yōu)先采用效果好的算法,當(dāng)產(chǎn)生的候選集大小不足以滿(mǎn)足目標(biāo)值時(shí),再使用效果次好的算法,依此類(lèi)推。
調(diào)制型:不同的算法按照不同的比例產(chǎn)生一定量的候選集,然后疊加產(chǎn)生最終總的候選集。
過(guò)濾型:當(dāng)前的算法對(duì)前一級(jí)算法產(chǎn)生的候選集進(jìn)行過(guò)濾,依此類(lèi)推,候選集被逐級(jí)過(guò)濾,最終產(chǎn)生一個(gè)小而精的候選集合。
目前美團(tuán)使用的方法集成了調(diào)制和分級(jí)兩種融合方法,不同的算法根據(jù)歷史效果表現(xiàn)給定不同的候選集構(gòu)成比例,同時(shí)優(yōu)先采用效果好的算法觸發(fā),如果候選集不夠大,再采用效果次之的算法觸發(fā),依此類(lèi)推。
候選集重排序
如上所述,對(duì)于不同算法觸發(fā)出來(lái)的候選集,只是根據(jù)算法的歷史效果決定算法產(chǎn)生的item的位置顯得有些簡(jiǎn)單粗暴,同時(shí),在每個(gè)算法的內(nèi)部,不同item的順序也只是簡(jiǎn)單的由一個(gè)或者幾個(gè)因素決定,這些排序的方法只能用于第一步的初選過(guò)程,最終的排序結(jié)果需要借助機(jī)器學(xué)習(xí)的方法,使用相關(guān)的排序模型,綜合多方面的因素來(lái)確定。
模型
非線性模型能較好的捕捉特征中的非線性關(guān)系,但訓(xùn)練和預(yù)測(cè)的代價(jià)相對(duì)線性模型要高一些,這也導(dǎo)致了非線性模型的更新周期相對(duì)要長(zhǎng)。反之,線性模型對(duì)特征的處理要求比較高,需要憑借領(lǐng)域知識(shí)和經(jīng)驗(yàn)人工對(duì)特征做一些先期處理,但因?yàn)榫€性模型簡(jiǎn)單,在訓(xùn)練和預(yù)測(cè)時(shí)效率較高。因此在更新周期上也可以做的更短,還可以結(jié)合業(yè)務(wù)做一些在線學(xué)習(xí)的嘗試。在實(shí)踐中,非線性模型和線性模型都有應(yīng)用。
非線性模型
目前主要采用了非線性的樹(shù)模型Additive Groves(簡(jiǎn)稱(chēng)AG),相對(duì)于線性模型,非線性模型可以更好的處理特征中的非線性關(guān)系,不必像線性模型那樣在特征處理和特征組合上花費(fèi)比較大的精力。AG是一個(gè)加性模型,由很多個(gè)Grove組成,不同的Grove之間進(jìn)行bagging得出最后的預(yù)測(cè)結(jié)果,由此可以減小過(guò)擬合的影響。
每一個(gè)Grove有多棵樹(shù)組成,在訓(xùn)練時(shí)每棵樹(shù)的擬合目標(biāo)為真實(shí)值與其他樹(shù)預(yù)測(cè)結(jié)果之和之間的殘差。當(dāng)達(dá)到給定數(shù)目的樹(shù)時(shí),重新訓(xùn)練的樹(shù)會(huì)逐棵替代以前的樹(shù)。經(jīng)過(guò)多次迭代后,達(dá)到收斂。


線性模型
目前應(yīng)用比較多的線性模型非Logistic Regression莫屬了。為了能實(shí)時(shí)捕捉數(shù)據(jù)分布的變化,引入了online learning,接入實(shí)時(shí)數(shù)據(jù)流,使用google提出的FTRL方法對(duì)模型進(jìn)行在線更新。

主要的步驟如下:
在線寫(xiě)特征向量到HBase
Storm解析實(shí)時(shí)點(diǎn)擊和下單日志流,改寫(xiě)HBase中對(duì)應(yīng)特征向量的label
通過(guò)FTRL更新模型權(quán)重
將新的模型參數(shù)應(yīng)用于線上
Training
采樣:對(duì)于點(diǎn)擊率預(yù)估而言,正負(fù)樣本嚴(yán)重不均衡,所以需要對(duì)負(fù)例做一些采樣。
負(fù)例:正例一般是用戶(hù)產(chǎn)生點(diǎn)擊、下單等轉(zhuǎn)換行為的樣本,但是用戶(hù)沒(méi)有轉(zhuǎn)換行為的樣本是否就一定是負(fù)例呢?其實(shí)不然,很多展現(xiàn)其實(shí)用戶(hù)根本沒(méi)有看到,所以把這樣樣本視為負(fù)例是不合理的,也會(huì)影響模型的效果。比較常用的方法是skip-above,即用戶(hù)點(diǎn)擊的item位置以上的展現(xiàn)才可能視作負(fù)例。當(dāng)然,上面的負(fù)例都是隱式的負(fù)反饋數(shù)據(jù),除此之外,還有用戶(hù)主動(dòng)刪除的顯示負(fù)反饋數(shù)據(jù),這些數(shù)據(jù)是高質(zhì)量的負(fù)例。
去噪:對(duì)于數(shù)據(jù)中混雜的刷單等類(lèi)作弊行為的數(shù)據(jù),要將其排除出訓(xùn)練數(shù)據(jù),否則會(huì)直接影響模型的效果。
Feature
在目前的重排序模型中,大概分為以下幾類(lèi)特征
deal(即團(tuán)購(gòu)單,下同)維度的特征:主要是deal本身的一些屬性,包括價(jià)格、折扣、銷(xiāo)量、評(píng)分、類(lèi)別、點(diǎn)擊率等
user維度的特征:包括用戶(hù)等級(jí)、用戶(hù)的人口屬性、用戶(hù)的客戶(hù)端類(lèi)型等user、deal的交叉特征:包括用戶(hù)對(duì)deal的點(diǎn)擊、收藏、購(gòu)買(mǎi)等
距離特征:包括用戶(hù)的實(shí)時(shí)地理位置、常去地理位置、工作地、居住地等與poi的距離對(duì)于非線性模型,上述特征可以直接使用;而對(duì)于線性模型,則需要對(duì)特征值做一些分桶、歸一化等處理,使特征值成為0~1之間的連續(xù)值或01二值。
conclusion
以數(shù)據(jù)為基礎(chǔ),用算法去雕琢,只有將二者有機(jī)結(jié)合,才會(huì)帶來(lái)效果的提升。以下兩個(gè)節(jié)點(diǎn)是優(yōu)化過(guò)程中的里程碑:
將候選集進(jìn)行融合:提高了推薦的覆蓋度、多樣性和精度
引入重排序模型:解決了候選集增加以后deal之間排列順序的問(wèn)題這些對(duì)于O2O場(chǎng)景的推薦有非常代表性的借鑒意義。

如果有什么不完善的地方,還請(qǐng)多補(bǔ)充。

 

 

數(shù)據(jù)分析咨詢(xún)請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢(xún)
客服在線
立即咨詢(xún)
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶(hù)后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }