方法:
1.強化學習
用戶是否點擊一系列廣告可以看成是一個序列過程,那么推薦廣告就是一個序列決策過程。那么是否可以用強化學習來實現廣告推薦。基本模型為:Deep Q-learning和LSTM的組合
強化學習的好處是:
a、在線學習。對於新用戶,我們不知道他的喜好,通過不斷的推薦后,我們能大概摸索出用戶的喜好,也就是說,我們對於用戶的embedding是根據用戶的使用情況不斷變換和適應的,避免了固定用戶feature只能有固定embedding的問題。
b、利於探索。如果我們每次只推薦自認為用戶感興趣的廣告,那么這些廣告將被加強,沒被推薦的廣告由於被冷漠而被削弱。這也是所謂的馬太效應,兩極分化。由於rl的訓練過程有探索的策略,剛好可以向用戶推薦新鮮的廣告,減少馬太效應。
強化學習存在的挑戰:
a、廣告過多的問題,Q-learning能否handle這么廣告,或者有什么降低輸出維度的辦法(maybe hierachical Q-learing)
b、那只用LSTM,不用rl, 做個用戶的時序embedding是否可行。
2.DSSM
http://www.cnblogs.com/huangshiyu13/p/7009359.html
微軟提出的一個算法,也是目前最先進的算法
各大公司目前的推薦算法基本都是DSSM的變體,比如一些網絡結構不同,以及一些自身推薦需求不同的定制化結構
3.協同過濾
通過矩陣分解:http://www.cnblogs.com/huangshiyu13/p/6208999.html
似乎有點難加入用戶feature,以及處理新用戶
4.有監督學習
把有標記的(用戶feature, 確實點擊的某一廣告)作為正例,(用戶feature,未點擊的某一廣告)作為負例,進行有監督分類
這里有監督的方法就很多了,可以用logistic regression ,高斯混合模型(GMM, Gaussian Mixed Model), SVM,決策樹等等
5.用戶無監督聚類
這個當然是最蠢的方法
可用的技術有LDA,k近鄰法(KNN)和KMeans算法
問題;
1.正負例問題
一般訓練數據里面的正負例是不均的,需要處理。
2.未展示和未點擊的問題
如何構造負例,a、一種情況是廣告展示給了用戶,但是用戶沒有點擊(當然一種可能是用戶不感興趣,二種情況可能是用戶忙於其他事情漏了),所以這種負例是有噪聲的(當然大部分情形是用戶不感興趣)。 b、廣告還未展示給用戶(這些未廣告可能包含用戶感興趣的)。所以可以看出,只要是負例,總是有很多噪聲。那么其實信息比較准確的是正例。所以,一般構造負例也就隨機配對就行了。
3.利用graph structure
基本上各個公司的用戶都有社交網絡,或者關系網絡。比如好友網絡,粉絲網絡,用戶-商店關系網絡,用戶-公眾號網絡,如何在用戶embedding的時候加入graph信息?
比如一批粉絲關注了同一個明星,那么他們在看到該明星代言的產品后,點擊的概率可能會趨同。
比如一群人在一個相同的購車群中,那么他們可能都對購車廣告更有偏愛。
所以,加入一些graph信息,也可能幫助推薦准確率。