短視頻內容理解和推薦算法比賽大揭祕

投稿:極鏈科技算法

做者:點心(AI實驗室)框架

不知不覺,你是否發現身邊的小夥伴們都在瘋狂的玩抖音,刷微博,你的購物APP也變得愈來愈聰明,很瞭解你想要的東西,就連點個外賣,美團和餓了麼都知道你想要吃什麼呢?是什麼黑科技讓這些APP變得如此神通,能深深的吸引着你的目光和味蕾呢?其實,之因此你以爲它愈來愈聰明愈來愈懂你,固然少不了你跟它之間的親密「溝通」,看似不經意的一次點擊,一次停留,它都默默的記了下來,等待你的再次臨幸。這位神祕的幕後主使就是咱們今天要講的——個性化推薦算法。目前它已經深刻到互聯網的各種產品中,也經歷了數次更新迭代,變得愈來愈貼心了。接下來,我將經過一個近期咱們參加比賽具體講解一些其中的算法原理。機器學習

此次比賽是由今日頭條主辦的短視頻內容理解與推薦競賽,咱們的成績在大規模億級的賽道中拿了第四名,千萬級數據規模的賽道中第五名。這也是咱們極鏈AI實驗室首次嘗試推薦算法。學習

首先,來說講什麼是推薦算法。推薦算法大體能夠分爲三類:基於內容的推薦算法,協同過濾推薦算法和混合推薦算法。基於內容的推薦算法,原理是將用戶喜歡和本身關注過的Item在內容上相似的Item推薦給用戶,好比你看了復仇者聯盟1,基於內容的推薦算法發現復仇者聯盟二、三、4,這些與你之前觀看的item在內容上有很大關聯性。協同過濾算法,包括基於用戶的協同過濾和基於item的協同過濾,其中基於用戶的協同過濾是經過用戶之間的類似性,挖掘與用戶具備類似興趣的用戶喜歡過的item,好比你的朋友喜歡復仇者聯盟,那麼就會推薦給你。基於item的協同過濾是找到跟用戶喜愛最類似的商品,而後推給他。混合推薦算法,則會融合以上方法,以加權或者串聯、並聯等方式進行建模。經常使用的包括傳統機器學習算法如因子分解機(FM,FFM),LR,GBDT,RF和近幾年流行起來的DNN和FM結合的算法。測試

這三種類型的推薦算法各有千秋,內容推薦算法的優勢在於能夠避免Item的冷啓動問題(冷啓動:若是一個Item從沒有被關注過,其餘推薦算法則不多會去推薦,可是基於內容的推薦算法能夠分析Item之間的關係,實現推薦),但弊端在於推薦的Item可能會重複,典型的就是新聞推薦,若是你看了一則關於某某明星出軌的新聞,極可能推薦的新聞和你瀏覽過的,內容一致;協同過濾算法能夠隨着用戶對商品的交互記錄增長更準確的捕捉用戶行爲習慣,進而使得模型可以不花費額外的人工的方式來提升精度(但在初期會面臨冷啓動問題的困擾)。ui

不管哪一種推薦算法,都離不開特徵工程、模型學習這兩個重要的步驟。接下來,經過比賽這個實例,來說解每一個步驟具體是如何實現的。此次比賽的任務是經過一個視頻及用戶交互行爲數據集對用戶興趣進行建模,而後預測該用戶在另外一視頻數據集上的點擊行爲。該任務屬於機器學習中兩個基本任務之一分類,並且是二分類即給給定的數據打標籤(0,1),0表明unlike,unfinish,1表明like或者finish.編碼

一.特徵工程3d

衆所周知,短視頻App中的視頻通常都有一個醒目的標題,有一段內容豐富的連續畫面,和一段有趣的聲音組成,經過nlp,cv,audio等深度學習模型提取這些信息特徵就組成了視頻item的特徵;對於用戶來講,用戶的身份(年齡,性別,地域)等組成用戶特徵,用戶點擊視頻的過程,停留的時間,點贊等行爲則構成了基本的交互信息。比賽提供的交互信息字段,咱們將它劃分爲三個部分包括用戶信息(user_id,user_city),視頻信息(item_id,item_city,author, songs, duration time)和交互信息(did, channel)。除此以外,視頻特徵,音頻特徵,人臉特徵等都屬於視頻信息。cdn

接下來,信息有了,怎麼去挖掘這些信息中隱藏的祕密呢?這就是特徵工程的意義所在,儘量多的挖掘用戶和item之間的相關信息,而後將這些信息送入後面的模型進行學習。視頻

比賽初期,主辦方提供了一個簡單的特徵構建和模型訓練的框架,上文提過的FM算法,公式以下:

該算法利用交互信息,構建矩陣,經過因子分解,來挖掘信息的交互特徵。其中x表明特徵屬性,y是預測結果,n就是特徵的交互階數,階數越高,求解越難。由於特徵x分爲category特徵(離散)和numeric特徵(稠密)兩種,category特徵須要進行one-hot編碼,一旦進行交互,特徵的維度將會很是高,使得計算機的算力不夠。實際應用中,通常只取二階特。那麼,還有其餘方法去挖掘更多更深的交互信息嗎?別急,下面我會介紹比賽中咱們嘗試的重要的特徵工程方法。

推薦算法的數據記錄的是用戶的歷史行爲信息,而數據的前後順序反映了時間信息,那麼利用全部的歷史數據去計算將來的行爲的特徵生成咱們暫時稱之爲全局特徵,只利用一部分歷史數據來計算特徵的生成方式咱們稱之爲局部特徵。

  1. 基於全局的特徵

基於全局的特徵咱們主要從svd分解、統計特性、和時間相關特徵,三個方面去考慮進行特徵提取。

  • svd分解特徵,提到svd,想到最多的天然是特徵降維,主成分分析,那麼利用svd將高維的交互特徵進行降維,就能夠輸入模型進行訓練了,好比用戶和item,構造一個user-item矩陣,矩陣的每一個元素表明了該用戶和該item間是否有交互,有的話就是1,沒有的話就是0,這個矩陣是一個極其稀疏的高維矩陣(比賽中賽道二7w*400w),經過svd分解,提取前n個主成分組成稠密特徵,輸入模型中訓練,能夠大大減小計算量。對於比賽提供的特徵,咱們進行了user-item,user-author,user-title的svd分解。

  • 統計特徵,之因此稱統計特徵,是由於全部的計算涉及的都是經常使用的統計方法,包括求均值,方差,以及用戶特徵和item特徵之間的條件機率P(did|uid), P(channel|uid), P(did|item_id), P(channel|item_id), P(item_author| uid), P(item_city|uid), P(uid_city|item_id) 等。

  • 時間相關特徵,這些特徵主要挖掘用戶某個時間段內觀看視頻的頻率,從而獲得用戶在時間維度上的愛好。具體的,就是定義一個時間長度,好比1000,5000,10000等等,而後統計該段時間內用戶或者item出現的頻率。

  1. 基於局部的特徵

局部特徵的構造,是根據時間順序,劃分出一部分做爲歷史數據,另外一部分做爲訓練數據(即如今和將來),經過歷史數據構造特徵組合(只針對category),並統計訓練數據須要的信息,如圖1所示,按照時間的遠近,靠近測試數據的30%數據做爲訓練數據,前面70%數據做爲歷史數據,能夠去除最後5%的數據以後屢次劃分,訓練多模型來提高效果。根據馬爾可夫理論,當前的狀態通常只和前面一個狀態相關,這也是爲什麼如此劃分數據集的依據。提取的特徵描述如表格1所示。

圖1.局部特徵構造示意圖

Tabel 1:local feature deion

上述全部特徵中,mean和regression只針對目標finish和like進行計算,這些特徵只記錄了用戶的歷史行爲,count_from_past, count, count_from_future, 這些特徵從時間角度上統計了用戶從歷史-如今-將來的行爲。matrix_factorization 特徵是經過FM算法計算的只利用user和item信息的一個特徵,這樣即利用了fm的信息,計算量又小。

二.模型訓練

特徵構造完成後,後續的任務就能夠交給強大的機器學習算法來進行訓練。經常使用的算法有基於boost算法的決策樹和dnn算法(比賽中咱們僅使用了前面的算法,是由於dnn的算法在增長全局特徵後有提高的,可是和其餘模型的結果進行融合後並無提高,並且也沒有boost的效果好)。如圖2所示,針對不一樣特徵使用不一樣的訓練器訓練流程,feature0表明局部特徵,feature1表明全局特徵,最後將兩個框架的結果進行融合。每一個階段的比賽成績如表2所示,只列出來賽道二中的部分紅績,「——」表明沒有進行該項實驗,因爲全局特徵在like任務的表現一直不理想,因此基於該特徵的xdeepfm並未進行實驗。中間關於參數選擇和特徵選擇的成績未列出。Final是最終提交的public成績。

圖2 模型訓練示意圖

Tabel2:比賽數據(Track2)

相關文章
相關標籤/搜索