
點(diǎn)擊率預(yù)估模型
0.前言
本篇是一個(gè)基礎(chǔ)機(jī)器學(xué)習(xí)入門篇文章,幫助我們熟悉機(jī)器學(xué)習(xí)中的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)與使用。
日常中習(xí)慣于使用Python各種成熟的機(jī)器學(xué)習(xí)工具包,例如sklearn、TensorFlow等等,來快速搭建各種各樣的機(jī)器學(xué)習(xí)模型來解決各種業(yè)務(wù)問題。
本文將從零開始,僅僅利用基礎(chǔ)的numpy庫(kù),使用Python實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)(或者說是簡(jiǎn)易的LR,因?yàn)長(zhǎng)R就是一個(gè)單層的神經(jīng)網(wǎng)絡(luò)),解決一個(gè)點(diǎn)擊率預(yù)估的問題。
1.假設(shè)一個(gè)業(yè)務(wù)場(chǎng)景
聲明:為了簡(jiǎn)單起見,下面的一切設(shè)定從簡(jiǎn)….
定義需要解決的問題:
老板:小李,這臺(tái)機(jī)器上有一批微博的點(diǎn)擊日志數(shù)據(jù),你拿去分析一下,然后搞點(diǎn)擊率預(yù)測(cè)啥的…
是的,就是預(yù)測(cè)一篇微博是否會(huì)被用戶點(diǎn)擊(被點(diǎn)擊的概率)…..預(yù)測(cè)未來,貌似很神奇的樣子!
熱門微博
簡(jiǎn)單的介紹一下加深的業(yè)務(wù)數(shù)據(jù)
每一條微博數(shù)據(jù)有由三部分構(gòu)成: {微博id, 微博特征X, 微博點(diǎn)擊標(biāo)志Y}
微博特征X有三個(gè)維度:
X={x0="該微博有娛樂明星”,x1="該微博有圖”,x2="該微博有表情”}
微博是否被點(diǎn)擊過的標(biāo)志Y:
Y={y0=“點(diǎn)擊”, y1=“未點(diǎn)擊”}
數(shù)據(jù)有了,接下來需要設(shè)計(jì)一個(gè)模型,把數(shù)據(jù)輸入進(jìn)去進(jìn)行訓(xùn)練之后,在預(yù)測(cè)階段,只需要輸入{微博id,微博特征X},模型就會(huì)輸出每一個(gè)微博id會(huì)被點(diǎn)擊的概率。
2.任務(wù)分析:
這是一個(gè)有監(jiān)督的機(jī)器學(xué)習(xí)任務(wù)
對(duì)于有監(jiān)督的機(jī)器學(xué)習(xí)任務(wù),可以簡(jiǎn)單的分為分類與回歸問題,這里我們簡(jiǎn)單的想實(shí)現(xiàn)預(yù)測(cè)一條微博是否會(huì)被用戶點(diǎn)擊,預(yù)測(cè)目標(biāo)是一個(gè)二值類別:點(diǎn)擊,或者不點(diǎn)擊,顯然可以當(dāng)做一個(gè)分類問題。
所以,我們需要搭建一個(gè)分類模型(點(diǎn)擊率預(yù)測(cè)模型),這也就決定我們需要構(gòu)建一個(gè)有監(jiān)督學(xué)習(xí)的訓(xùn)練數(shù)據(jù)集。
模型的選擇
選擇最簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)模型,人工神經(jīng)網(wǎng)絡(luò)有幾種不同類型的神經(jīng)網(wǎng)絡(luò),比如前饋神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)及遞歸神經(jīng)網(wǎng)絡(luò)等。本文將以簡(jiǎn)單的前饋或感知神經(jīng)網(wǎng)絡(luò)為例,這種類型的人工神經(jīng)網(wǎng)絡(luò)是直接從前到后傳遞數(shù)據(jù)的,簡(jiǎn)稱前向傳播過程。
3.數(shù)據(jù)準(zhǔn)備:
整體的流程:
數(shù)據(jù)預(yù)處理(數(shù)值化編碼)——>特征篩選——>選擇模型(前饋神經(jīng)網(wǎng)絡(luò))——>訓(xùn)練模型——>模型預(yù)測(cè)
新聞熱點(diǎn)
疑難解答
圖片精選