日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

浅谈微视推荐系统中的特征工程

發(fā)布時間:2024/2/28 windows 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浅谈微视推荐系统中的特征工程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文作者:hannahguo,騰訊 PCG 推薦算法工程師

在推薦系統(tǒng)中,特征工程扮演著重要的角色。俗話說數(shù)據(jù)和特征決定了機器學習算法的上限,而模型、算法的選擇和優(yōu)化只是在不斷逼近這個上限。特征工程的前提是收集足夠多的數(shù)據(jù),使用數(shù)據(jù)學習知識,從大量的原始數(shù)據(jù)中提取關(guān)鍵信息并表示為模型所需要的形式。本文主要說明微視,這種富媒體形態(tài)的短視頻平臺,是如何通過視頻內(nèi)容特征以及用戶屬性和行為數(shù)據(jù),來精準預測用戶對短視頻的喜好的。


引言

本文主要是跟各位讀者分享特征工程領(lǐng)域的一些通用方法和技巧,以及微視在特征工程上的相關(guān)實踐經(jīng)驗。微視作為一個短視頻平臺,存在其獨有的業(yè)務(wù)特點,這也給特征構(gòu)造帶來了一定的難度。比如熱目類目在播放時長、互動率等指標上表現(xiàn)出天然的優(yōu)勢,長視頻相比于時長較短的視頻在播放完成度、完播率等指標上存在明顯的劣勢,如何消除這些 bias 的影響都是特征構(gòu)造時需要特別注意的地方,而對于我們線上的多目標排序模型來說,不同單目標對應(yīng)的最優(yōu)特征組合也不盡相同,這些不僅需要較強的專業(yè)領(lǐng)域知識,更重要的是對自身業(yè)務(wù)場景的深刻認知以及大量線上實驗的探索嘗試與驗證。

一、特征提取

特征工程就是將原始數(shù)據(jù)空間映射到新的特征向量空間,使得在新的特征空間中,模型能夠更好地學習數(shù)據(jù)中的規(guī)律。因此,特征提取就是對原始數(shù)據(jù)進行處理與變換的過程。常見的原始數(shù)據(jù)類型有數(shù)值型、離散型,還有文本、圖像、視頻等。如果將這些數(shù)據(jù)作為一個整體來看待的話,把用戶、視頻、作者看作節(jié)點,用戶與視頻、作者的交互看作邊構(gòu)建出的復雜網(wǎng)絡(luò)也是我們的原始數(shù)據(jù)。

事實上,如果特征工程做的足夠好,即使是簡單的模型,也能表現(xiàn)出非常好的效果。而復雜的模型可以在一定程度上減少特征工程的工作量。例如,對于線性模型,我們需要將類別變量進行獨熱編碼等處理,但對于復雜一些的模型如樹模型,則可以直接處理類別變量。像推薦系統(tǒng)中常用的 LR 模型,需要手工構(gòu)造組合特征,而 FM 模型可以解決特征組合的問題,直接輸入原始特征。而更復雜的 DNN 模型,可以自動學習特征的表示。

在微視場景下,視頻的播放時長、播放完整度、點贊、轉(zhuǎn)發(fā)、分享、評論等多種互動行為都是推薦模型的訓練目標,根據(jù)模型所要學習的目標和業(yè)務(wù)邏輯,我們需要考慮數(shù)據(jù)中有哪些可能相關(guān)的信息,從現(xiàn)有數(shù)據(jù)中挖掘出對模型預測有用的特征。比如在微視排序中,用戶的興趣,在 App 上的播放、互動等行為以及視頻的類別、標簽、熱度等都是強相關(guān)的因素。在確定了哪些因素可能與預測目標相關(guān)后,我們需要將此信息抽取成特征,下面會對不同特征的處理方式做具體介紹。


1.數(shù)值特征

數(shù)值類型的數(shù)據(jù)具有實際統(tǒng)計意義,例如用戶對不同類目下視頻的興趣分,或者是計數(shù),例如一個視頻被播放了多少次、被點贊、轉(zhuǎn)發(fā)以及評論了多少次等。雖然一些機器學習模型可以直接輸入數(shù)值類型的數(shù)據(jù),但是通常情況下,對數(shù)值型數(shù)據(jù)進行適當?shù)淖儞Q和處理能帶來更優(yōu)的效果。對于數(shù)值特征,我們主要考慮的因素是它的大小和分布。下面介紹幾種我們用到的數(shù)值特征的處理方法。

1)分桶。比如視頻一周內(nèi)被播放次數(shù)應(yīng)該是一個有用的特征,因為播放次數(shù)跟視頻的熱度有很強的相關(guān)性,但是如果不同視頻的播放次數(shù)跨越不同的數(shù)量級,則很難發(fā)揮想要的作用。例如 LR 模型,模型往往只對比較大的特征值敏感。對于這種情況,通常的解決方法是進行分桶。分桶操作可以看作是對數(shù)值變量的離散化,之后通過二值化進行 one-hot 編碼。

分桶的數(shù)量和寬度可以根據(jù)業(yè)務(wù)領(lǐng)域的經(jīng)驗來指定,也有一些常規(guī)做法。(1)等距分桶,每個桶的值域是固定的,這種方式適用于樣本分布較為均勻的情況;(2)等頻分桶,即使得每個桶里數(shù)據(jù)一樣多,這種方式可以保證每個桶有相同的樣本數(shù),但也會出現(xiàn)特征值差異非常大的樣本被放在一個桶中的情況;(3)模型分桶,使用模型找到最佳分桶,例如利用聚類的方式將特征分成多個類別,或者樹模型,這種非線性模型天生具有對連續(xù)型特征切分的能力,利用特征分割點進行離散化。

分桶是離散化的常用方法,將連續(xù)特征離散化為一系列 0/1 的離散特征,離散化之后得到的稀疏向量,內(nèi)積乘法運算速度更快,計算結(jié)果方便存儲。離散化之后的特征對于異常數(shù)據(jù)也具有很強的魯棒性。需要注意的是:1)要使得桶內(nèi)的屬性取值變化對樣本標簽的影響基本在一個不大的范圍,即不能出現(xiàn)單個分桶的內(nèi)部,樣本標簽輸出變化很大的情況;2)使每個桶內(nèi)都有足夠的樣本,如果桶內(nèi)樣本太少,則隨機性太大,不具有統(tǒng)計意義上的說服力;3)每個桶內(nèi)的樣本盡量分布均勻。

2)截斷。對于連續(xù)型數(shù)值特征,有時精度太高可能只是噪聲,并不具備太多的信息,也使得特征維度急劇上升。因此可以保留一定的精度,之后當作類別特征進行處理。對于長尾的數(shù)據(jù),可以先進行對數(shù)縮放,再進行精度截斷,之后可以當做類別變量做二值化處理,這也是我們實際應(yīng)用中的做法。

3)缺失值處理。實際問題中經(jīng)常會遇到特征缺失的情形,對于特征缺失,可以選擇補一個值,例如使用均值,中位數(shù),眾數(shù)等進行替代,需要視具體情況進行選擇;也可直接忽略,即將缺失作為一種信息進行編碼輸入模型讓其進行學習,比如用戶性別缺失,可以直接將未知作為一種類別進行處理;還可以使用模型預測缺失值,當然也有一些模型可以直接處理缺失值特征,比如 XGBoost。

4) 特征交叉。特征交叉可以表示特征之間的相互作用,有助于表示非線性關(guān)系,增強對問題的刻畫,缺點是維度快速增長,需要更多的訓練樣本。提升模型表達能力常見的關(guān)聯(lián)方式有內(nèi)積、笛卡爾積、哈達瑪積等。內(nèi)積是將兩個或多個特征相乘,若向量 a=(a1,b1),向量 b=(a2,b2),則向量 a·向量 b=a1a2+b1b2;笛卡積是將所有元素兩兩相乘,例如,A={a,b},B={0,1,2},則 A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)} ;Hadamard 積是將對應(yīng)位置的元素相乘,例如,A={a,b},B={0,1},則 A×B={(a, 0) (b, 1) } 。下圖旨在說明笛卡爾積與 Hadamard 積在具體特征構(gòu)造上的差異。


特征交叉可以通過一些特征選擇方法來選擇有效的組合特征,比如卡方檢驗、特征相關(guān)性分析等;也可以根據(jù)經(jīng)驗進行組合, 有些 cross 特征,雖然可能沒有直觀的解釋,但也常常會給模型帶來很大的效果提升。除了手工構(gòu)造交叉特征外,有些模型可以自動進行特征的交叉組合,比如常用的 FM 和 FFM 模型等。

5)標準化與縮放。數(shù)據(jù)的標準化或者歸一化是將數(shù)據(jù)按比例縮放,將其轉(zhuǎn)化為無量綱的純數(shù)值,使得不同單位或量級的特征之間具有可比性,對于利用梯度下降來訓練模型參數(shù)的算法,有助于提升模型的收斂速度。需要強調(diào)的是,不同業(yè)務(wù)的數(shù)據(jù),其數(shù)據(jù)分布是不同的,縮放的方法一定要符合其特定的數(shù)據(jù)分布。一般會根據(jù)實際數(shù)據(jù)的情況,對常規(guī)做法或者公式進行調(diào)整,但大體思路上還是一致的,下面介紹 3 類相對通用的做法。

  • 0-1 標準化,是對原始數(shù)據(jù)的線性變換,使結(jié)果落到[0,1]區(qū)間,其中 max 為樣本數(shù)據(jù)的最大值,min 為樣本數(shù)據(jù)的最小值。這種方法有一個缺陷就是當有新數(shù)據(jù)加入時,可能會導致 max 值和 min 值的變化,需要重新定義。如果 max 值和 min 值波動較大,容易使得標準化結(jié)果不穩(wěn)定,因此在實際使用中常用經(jīng)驗常量值來替代最大最小值。

  • z-score 標準化,經(jīng)過處理的數(shù)據(jù)符合標準正態(tài)分布,即均值為 0,標準差為 1,其中 μ 為所有樣本數(shù)據(jù)的均值,σ 為所有樣本數(shù)據(jù)的標準差。這種標準化方式要求原始數(shù)據(jù)的分布可以近似為高斯分布,否則效果會變得很糟糕。

  • 非線性標準化,這種方法一般使用在數(shù)值差異較大的場景,通過一些數(shù)學函數(shù),比如對數(shù)、指數(shù)、正切等,將原始值做映射變換。實際使用中,需要根據(jù)不同業(yè)務(wù)的數(shù)據(jù)分布來選擇,比如對數(shù)縮放,對數(shù)縮放對于處理長尾分布且取值為正數(shù)的數(shù)值變量非常有效,可以壓縮數(shù)據(jù)范圍,將長尾變?yōu)槎涛?#xff0c;像 log2 和 log10 轉(zhuǎn)換在微視中也都有使用,是一種方差穩(wěn)定的變換。

6)數(shù)據(jù)平滑。

常用的行為次數(shù)與曝光次數(shù)比值類的特征,由于數(shù)據(jù)的稀疏性,這種計算方式得到的統(tǒng)計量通常具有較大的偏差,需要做平滑處理,比如廣告點擊率常用的貝葉斯平滑技術(shù)。而在我們推薦場景中,也會用到很多統(tǒng)計類特征、比率特征。如果直接使用,比如由于不同 item 的下發(fā)量是不同的,這會讓推薦偏向熱門的類目,使得越推越窄,無法發(fā)現(xiàn)用戶的個體差異,也不利于多樣性的探索。我們可以把曝光量進行分段,同一個曝光量級的指標進行比較,也可以用該 item 所屬類目統(tǒng)計量的平均值進行平滑處理。對于離群值較多的數(shù)據(jù),我們會使用更加健壯的處理方法,比如使用中位數(shù)而不是均值,基于分位數(shù)而不是方差。而在短視頻業(yè)務(wù)上較短或較長的視頻在播放完成度上存在天然的差距,我們按視頻本身長度離散,觀看時長做分位數(shù)處理,同時做威爾遜置信區(qū)間平滑,使得各視頻時長段播放完成度相對可比,避免出現(xiàn)打分因視頻長度嚴重傾斜的情況。以及短視頻 app 的投稿數(shù)量大,對于長尾的視頻和類目都是需要做平滑處理的。下面介紹兩種較為常用的平滑技術(shù)。

  • 貝葉斯平滑

電商領(lǐng)域中經(jīng)常需要計算或預測一些轉(zhuǎn)化率指標,比如 CTR。這些轉(zhuǎn)化率可以是模型的預測值,也可以作為模型的特征使用。以商品點擊率預測為例,CTR 的值等于點擊量除以曝光量。理想情況下,例如某個廣告點擊量是 10000 次,轉(zhuǎn)化量是 100 次,那轉(zhuǎn)化率就是 1%。但有時,例如某個廣告點擊量是 2 次,轉(zhuǎn)化量是 1 次,這樣算來轉(zhuǎn)化率為 50%。但此時這個指標在數(shù)學上是無效的。因為大數(shù)定律告訴我們,在試驗不變的條件下,重復試驗多次,隨機事件的頻率近似于它的概率。后者點擊量只有 2 次,不滿足“重復試驗多次”的條件。如果對于一個新上線的商品,其曝光為 0,點擊量也為 0,此時這件商品的 CTR 應(yīng)該設(shè)為 0 還是賦一個初始值?初始值設(shè) 0 是可以的,但不太合理。當 CTR 作為特征使用時,表示這個商品完全沒有點擊,不太符合日常推斷,通常是賦一個大于 0 的初始值。

以上兩個問題可以使用平滑技術(shù)來解決。貝葉斯平滑的思想是給 CTR 預設(shè)一個經(jīng)驗初始值,再通過當前的點擊量和曝光量來修正這個初始值。如果某商品的點擊量和曝光量都是 0,那么該商品的 CTR 就是這個經(jīng)驗初始值;如果商品 A 和商品 B 的曝光量差別很大,那么可以通過這個經(jīng)驗初始值來修正。貝葉斯平滑就是確定這個經(jīng)驗值的過程。貝葉斯平滑是基于貝葉斯統(tǒng)計推斷的,因此經(jīng)驗值計算的過程依賴于數(shù)據(jù)的分布情況。對于一件商品或一條廣告,對于某次曝光,用戶要么點擊,要么沒點擊,這符合二項分布。因此對于點擊率類的貝葉斯平滑,都可以基于以下假設(shè):對于某件商品或廣告,其是否被點擊是一個伯努利分布。伯努利分布的共軛分布就是 Beta 分布,也就是說,點擊率服從 Beta 分布。而所有的數(shù)據(jù)有一個自身的點擊率分布,這個分布可以用不同的 beta 分布來擬合。beta 分布可以看做是對點擊率的一個先驗知識,我們可以根據(jù)觀測來修改我們的先驗,所以貝葉斯平滑就是估計 Beta 分布中的參數(shù) α 和 β,其中 C 和 I 是點擊次數(shù)和曝光量。實際應(yīng)用時根據(jù)歷史數(shù)據(jù)得到的 α 和 β 可以幫助確定平滑參數(shù)的大致范圍,防止設(shè)置參數(shù)時偏離過大。

  • 威爾遜區(qū)間平滑

在現(xiàn)實生活中我們會接觸到很多評分系統(tǒng),如豆瓣書評、YouTube 影評,在這些評分中有 1 個共同問題是每個 item 的評分人數(shù)是不同的,比如 10000 個人打了 90 分似乎比只有 10 個人打了 90 分更能被相信該 item 是 90 分的。威爾遜區(qū)間法常用來解決此類問題,是一種基于二項分布的計算方法,綜合考慮評論數(shù)與好評率,平滑樣本量對評價的影響,我們畫像興趣分上也用到了威爾遜區(qū)間平滑。

假設(shè) u 表示正例數(shù)(好評),n 表示實例總數(shù)(評論總數(shù)),那么好評率 p 就等于 u/n。p 越大,表示這個 item 的好評比例越高,越應(yīng)該排在前面。但是,p 的可信性,取決于有多少人,如果樣本太小,p 就不可信。我們已知 p 是二項分布中某個事件的發(fā)生概率,因此我們可以計算出 p 的置信區(qū)間。置信區(qū)間實際就是進行可信度的修正,彌補樣本量過小的影響。如果樣本多,就說明比較可信,不需要很大的修正,所以置信區(qū)間會比較窄,下限值會比較大;如果樣本少,就說明不一定可信,必須進行較大的修正,所以置信區(qū)間會比較寬,下限值會比較小。威爾遜區(qū)間就是一個很好的修正公式,在小樣本上也具有很強的魯棒性。

在下面的公式中, p 表示樣本的好評率,n 表示樣本的大小,z 表示對應(yīng)某個置信水平的 z 統(tǒng)計量,是一個常數(shù)。一般情況下,在 95%的置信水平下,z 統(tǒng)計量的值為 1.96。可以看到,當 n 的值足夠大時,這個下限值會趨向 p 。如果 n 非常小,這個下限值會遠小于 p,起到了降低好評率的作用,使得該 item 的打分變低、排名下降。

7)bias 消除。微視會用到一些不同時間窗口以及實時的統(tǒng)計特征,比如不同類目或者不同時長區(qū)間下的完播率、平均播放時長等,考慮到冷熱門類目以及長短視頻在統(tǒng)計量上本身存在明顯的差異,平滑之后我們會用統(tǒng)計量均值進行消偏,這也相當于有一個對熱門視頻降權(quán),對長視頻提權(quán)的作用。

8)多維度定義。有些特征可以結(jié)合多個屬性或者統(tǒng)計量來定義,比如用戶所屬用戶群特征,用戶群可以從畫像、操作系統(tǒng)等維度來定義;比如用戶的活躍度特征可以從周/月登錄次數(shù)、日播放時長、日播放個數(shù)、平均完播率等維度聯(lián)合定義。

9)根據(jù)目標定制。有效的特征應(yīng)該是與模型訓練目標、樣本定義緊密相關(guān)的,需要從數(shù)據(jù)中發(fā)掘與模型目標強相關(guān)的因素。比如視頻的播放時長、播放完整度是我們的直接學習目標,同時考慮到用戶在短視頻 app 上的互動類型比較多,包括點贊、評論、分享、關(guān)注等,而不同的行為對于用戶有著不同的價值,點贊表示興趣偏好,評論反映用戶的真實感受,分享利于傳播分發(fā),關(guān)注建立了一種好友興趣關(guān)系,我們會同時利用這些用戶互動行為進行建模。與廣告點擊率預估中的 ctr 特征類似,我們可以根據(jù)不同目標正負樣本的定義,分別為每個單目標模型構(gòu)造正樣本率特征。以及比如從評論文本中分析用戶對視頻的“內(nèi)容、bgm、速度、清晰度”等屬性的情感傾向,對評論文本進行情感分析,讓文本評論好評率來指導模型根據(jù)真實評價推薦視頻就顯得很有意義。

2.類別特征

類別特征可以是標簽、屬性、類型 ,比如在微視應(yīng)用中,視頻的 id、作者、類別、標簽、清晰度、質(zhì)量、topic、bgm 曲風與速度等視頻屬性特征。同時也可以將數(shù)值特征離散化,從定量數(shù)據(jù)中獲得定性數(shù)據(jù)。下面介紹幾種我們對類別變量的處理方法。

1)獨熱編碼。獨熱編碼通常用于處理類別間不具有大小關(guān)系的特征,每個特征取值對應(yīng)一維特征,能夠處理缺失值,在一定程度上也起到了擴充特征的作用。但是當類別的數(shù)量很多時,特征空間會變得非常大。在這種情況下,一般可以用 PCA 等方法進行降維。

2)散列編碼。對于有些取值特別多的類別特征,使用獨熱編碼得到的特征矩陣非常稀疏,再加上如果還有笛卡爾積等構(gòu)造的組合特征,會使得特征維度爆炸式增長。特征數(shù)量多的問題自古有之,目前也已經(jīng)有很多用于降維的方法。比如聚類、PCA 等都是常用的降維方法。但這類方法在特征量和樣本量很多的時候本身就計算量很大,所以對大問題也基本無能為力。特征哈希就是一種簡單的降維方法,在微視使用也較多,特征哈希法的目標就是是把原始的高維特征向量壓縮成較低維特征向量,且盡量不損失原始特征的表達能力,其優(yōu)勢在于實現(xiàn)簡單,所需額外計算量小;降低特征維度,從而加速算法訓練與預測的時間,以及降低內(nèi)存消耗;但代價是通過哈希轉(zhuǎn)換后學習到的模型變得很難檢驗,我們很難對訓練出的模型參數(shù)做出合理解釋。特征哈希法的另一個問題是它會把多個原始特征哈希到相同的位置上,出現(xiàn)哈希 collision 現(xiàn)象,但實際實驗表明這種 collision 對算法的精度影響很小。

3)打分排名編碼。比如在對用戶畫像的使用上,我們既直接使用了連續(xù)值畫像特征,同時考慮到畫像興趣分之間天然的序列關(guān)系,分別對用戶一、二級類目的 top1~top10 興趣進行 one-hot,利用打分的排名對類別特征進行編碼,強化興趣打分排名的信號,且這種方式對于異常點較為不敏感;還有比如用戶活躍度較高的前 topn 類目和不活躍度較高的前 topn 類目也可按次序排名作為離散特征。

4)異常值處理。實際應(yīng)用中,我們常常關(guān)心的一個點是異常值對整個統(tǒng)計以及離散化的影響,對于數(shù)值變量我們可以把絕對值處理為一個相對值,作為一個次序變量進行 one-hot 編碼,或者做分箱離散化,都可以較好的減輕離群點的影響。對于分類變量,可以考慮神經(jīng)網(wǎng)絡(luò)中常見的做法,將分類變量做特征嵌入。比如說這里有 1 萬個不同的標簽,把它投影到 64 維或者 128 維的 vector 上面,相當于原來一個 1 萬維的 one-hot 特征,現(xiàn)在只需要 64 維或 128 維就可以進行表示,將原本十分稀疏的向量空間轉(zhuǎn)換到語義更為豐富且低維的特征 embedding 空間,且內(nèi)存需求更少,精度也會更高。

5)類別特征之間交叉組合。比如用戶性別、操作系統(tǒng) cross 得到用戶分群特征,視頻類別與標簽之間的組合特征。在實際應(yīng)用中,類別特征之間的組合方式千變?nèi)f化,這類特征一般從業(yè)務(wù)邏輯的角度出發(fā)進行構(gòu)造。相比類別特征之間的笛卡爾積操作,基于分組統(tǒng)計的特征組合方式計算更加復雜,需要對業(yè)務(wù)數(shù)據(jù)有較好的理解。

6)類別特征和數(shù)值特征之間交叉組合。這類特征通常是在類別特征某個具體類別中計算一些統(tǒng)計量。例如用戶對不同類目視頻的完播率、平均播放時長,不同用戶群體的互動指標等利用數(shù)值特征對類別特征進行處理。

例如我們構(gòu)造了視頻一二級類目的曝光次數(shù) cross 快劃次數(shù)的組合特征,這個可以有很直觀的解釋,比如分析某個用戶的樣本發(fā)現(xiàn)類似王者榮耀_31_31 的組合,即我們的推薦系統(tǒng)給這個用戶曝光了 31 個王者榮耀的視頻,但是每個都快速劃過了,如果還是繼續(xù)推,這個用戶體驗將會是極度糟糕的,而這個特征會很大程度的解決這個問題,使得盡可能的給這個用戶曝光感興趣的類目。這個特征可以進一步細化為類目曝光次數(shù) cross 一些統(tǒng)計量,比如完播次數(shù)、互動次數(shù)等,因為沒有快劃可能是用戶愿意嘗試去看,完播可能是喜歡這個視頻內(nèi)容,而互動比如說轉(zhuǎn)發(fā)或者點贊,可以看做是用戶表現(xiàn)出了更為強烈的興趣。

比如為了提升視頻的清晰度,我們給視頻清晰等級打標簽,但是發(fā)現(xiàn)直接加入清晰度屬性特征后,清晰視頻分布和線上指標并沒有改善。通過對終端屏幕匹配情況,視頻相比于屏幕過度拉伸比例的分析,我們發(fā)現(xiàn)約有十分之一的播放體驗表現(xiàn)出過度拉伸,對于部分大屏幕用戶,過度拉伸比例會更高,于是我們進一步嘗試了視頻清晰度分別與用戶手機屏幕拉伸度和手機型號的笛卡爾積特征,清晰視頻播放占比有了較為明顯的提升,這對用戶體驗起到了一定的優(yōu)化作用。

3.Embedding 特征

1)視頻 embedding

視頻 embedding 分為基于內(nèi)容的 embedding 和基于行為的 embedding,前者使用視頻的標題、封面、圖像,音頻等視頻自身屬性信息,通過 nlp、圖像視覺等技術(shù)獲得 embedding,后者是基于用戶與視頻的交互行為數(shù)據(jù)獲得,比如我們發(fā)現(xiàn)用戶在一個 session 中,前后點擊的視頻存在一定的相似性,通常會表現(xiàn)出對某類型視頻的興趣偏好,可能是同個風格類別,或者是相似的話題人物等。因此我們將一段時間內(nèi)用戶點擊的視頻 id 序列作為訓練數(shù)據(jù),使用 skip-gram 模型學習視頻的 embedding 特征。由于用戶點擊行為具有上下文承接關(guān)系,因此得到的 embedding 特征有很好的聚類效果,使得在特征空間中,同類目的視頻聚集在一起,相似類目的視頻在空間中距離相近。在微視推薦系統(tǒng)里,視頻 embedding 不僅可以作為排序特征,利用用戶最近點擊過視頻的平均 embedding 進行召回,也是帶來了效果提升。

我們使用 TSNE 對視頻 embedding 進行降維,從可視化結(jié)果來看,同一個類目下的視頻是聚在一起的;相似的類目在特征空間中離得較近,如“貓”和“狗”,“親子互動”和“親情”;差異較大的類目離得較遠,如“旅行 Vlog”和“貓”。這還是很符合預期的,一個用戶的主要興趣可能就集中在某幾類,比如有的用戶喜歡“貓”,那這個用戶很大可能對“貓”的視頻有大量的播放以及互動行為,那我們學習出來關(guān)于貓這個類目的視頻 embedding 就會很相似,表現(xiàn)出在嵌入空間中聚集在一起的情形。

但是如果只是簡單的對視頻 id 序列學習 embedding 特征,我們是無法獲得新視頻 embedding 的。針對這個問題,我們使用了 side information 來解決視頻冷啟動問題,side information 指的是視頻的一、二級類目、視頻標簽、視頻時長、清晰度、距離發(fā)布的時間等視頻屬性信息,像距離發(fā)布的時間屬性對于新聞資訊類視頻,提升視頻時新性有一定的幫助,尤其我們發(fā)現(xiàn)用戶比較偏愛新發(fā)布的視頻。我們將視頻 embedding 特征轉(zhuǎn)化為視頻屬性的 embedding 特征,取一段時間內(nèi)同屬性視頻的平均 embedding 作為這個屬性的 embedding 特征。這樣當有新的視頻進入到推薦庫時,可以計算出新視頻的視頻屬性 embedding。這樣做的好處是在同一個語義空間做運算,排序模型不需要再重新學習 embedding 的空間分布。

基于 side information 獲得的視頻 embedding 區(qū)分能力還是受到一定限制的,只要視頻屬性相同,不同視頻 embedding 是完全一樣的,而且如果增加了新的類目標簽或者其他屬性分類也是沒有辦法處理的。針對以上情況,實際使用中我們采用增量式 skip-gram 模型學習視頻的 embedding,使用推薦庫最新資源線上實時訓練,將新入庫的視頻加入到模型中做增量式學習。Incremental skip-gram 模型與傳統(tǒng) skip-gram 模型的不同之處在于 embedding 空間分布是動態(tài)更新的。

2)user embedding

想讓 embedding 表達什么,主要在于選擇哪一種方式構(gòu)建語料,不同的用戶行為序列,表達的興趣也不同,比如快速劃過行為、完播行為,點贊轉(zhuǎn)發(fā)行為等表達的興趣以及程度也都是不同的。因此視頻 embedding 向量最終的作用,是不同 item 在用戶興趣空間中的位置表達。目前使用較多的主要是基于 word2vec 以及相應(yīng)衍生的 embedding 技術(shù)和基于圖神經(jīng)網(wǎng)絡(luò)的 embedding 技術(shù),像我們在隱式畫像上就使用了基于異構(gòu)圖的 user embedding。

我們也可以把推薦問題建模成一個大規(guī)模的多分類問題,使用 softmax loss 學習一個 DNN 模型,即在某一時刻某一上下文信息下為用戶在視頻推薦庫中精準地預測出下一次播放視頻的類別,最后把訓練好的 DNN 模型最后一層隱層輸出作為 user embedding。深度學習模型雖然能夠減少一部分特征工程的工作,但有些原始數(shù)據(jù)是不能直接輸入到 DNN 中,與 CV、NLP 不同的是,推薦系統(tǒng)對特征工程格外依賴,好的特征能夠起到非常關(guān)鍵的作用。我們的輸入融合多種信息,主要包括人口統(tǒng)計學信息,播放歷史,搜索歷史,上下文信息,興趣畫像等,同時使用全場景數(shù)據(jù)而不是只使用用戶播放數(shù)據(jù)。同時考慮了一些泛化能力比較強的數(shù)值和時間特征,比如完播該類目的視頻數(shù),最近一次播放該類目視頻距離現(xiàn)在的時間等刻畫用戶與視頻類別關(guān)系的特征。除了這些偏正向的特征,用戶對于一些類目曝光但不點擊快速劃過等負反饋的信號同樣非常重要。

簡單一點的做法也可以將一段時間內(nèi)用戶點擊過的視頻的平均 embedding 作為該用戶的 embedding 特征,當然這里的“平均”可以是簡單的算術(shù)平均,也可以是根據(jù)視頻的熱度和時間屬性等進行加權(quán)平均或者嘗試用 RNN 替換掉平均操作。同時將時間跨度取長一點,可以表達用戶的長期興趣;取短一點,可以用于刻畫用戶的短期興趣,當然用戶覆蓋率也會隨之降低。比如用戶最近一周內(nèi)主要點擊觀看的都是關(guān)于“貓”的視頻,那該用戶 embedding 特征,就會跟“貓”的向量很相近。我們也嘗試將用戶點贊或者分享轉(zhuǎn)發(fā)過的視頻序列作為訓練數(shù)據(jù),為用戶互動過的視頻提權(quán)。這里需要注意的是,有時單個用戶行為序列太稀疏了,無法直接訓練,一般可以先對用戶做聚類再訓練。

3)作者 embedding

可以取作者近一個月內(nèi)發(fā)布視頻的平均 embedding,作為該作者的 embedding 特征。這樣做的出發(fā)點是,如果兩個作者發(fā)布的視頻相似,那么這兩個作者的 embedding 向量也應(yīng)該是相近的。假設(shè)此時某個用戶喜歡作者 A,那么我們可以試著把與作者 A 相似的作者 B 發(fā)布的視頻推薦給該用戶。

4.context 特征

context 特征通常是客戶端帶的信息,在用戶授權(quán)的前提下可以直接獲取,比如請求時間、用戶手機品牌、手機型號、操作系統(tǒng)、當前網(wǎng)絡(luò)狀態(tài)(3g/4g/wifi)、用戶渠道等實時屬性特征以及之間的 cross 特征。

5.session 特征

session 特征一般是基于用戶最近的行為流水,常見的 session 劃分方法有以下幾種:

  • 固定行為數(shù)窗口,例如最近 100 條行為中分視頻類別的完播個數(shù)、快速劃過個數(shù);

  • 固定時間窗口,例如最近 3 天里有過正向行為的 item id 或者一些統(tǒng)計量;

  • 連續(xù)行為窗口,例如用戶 1 次打開 app 到關(guān)閉 app 期間的播放互動行為。

如上幾種 session 定義的方法沒有優(yōu)劣之分,一般會結(jié)合具體業(yè)務(wù)場景做混合定義。在獲取到用戶的 session 數(shù)據(jù)后,可以直接將 session 里對應(yīng)的 item id 序列作為特征,或者是 session 內(nèi)的類別統(tǒng)計數(shù)據(jù),也可以將預訓練好的 item embedding 構(gòu)造成 session 特征。

二、特征選擇

特征選擇是指選擇相關(guān)特征子集的過程,好的特征選擇能夠提升模型的性能,更能幫助我們理解數(shù)據(jù)的特點、底層結(jié)構(gòu),這對進一步改善模型、算法都有著重要作用。特征選擇主要有以下兩個目的:

  • 簡化模型,節(jié)省存儲和計算開銷;

  • 減少特征數(shù)量、降維,改善通用性、降低過擬合的風險。

下面介紹幾種特征選擇的常用方法。

1.過濾式(Filtering)

過濾式特征選擇獨立于學習算法,不需要依賴任何模型,直接由數(shù)據(jù)集求得,評估依賴于數(shù)據(jù)集本身。一般主要考慮特征變量和目標變量之間的相關(guān)性以及特征變量之間的相互關(guān)系,一般認為相關(guān)度大的特征或者特征子集會對后續(xù)學習算法帶來較高的準確率。這類方法在預處理時也使用較多,優(yōu)點是計算效率高、復雜度低,獨立于算法,但也可能選出冗余的特征。

  • 覆蓋率。首先計算每個特征的覆蓋率,覆蓋率很小的特征對模型的預測效果作用不大,可以剔除。

  • 方差分析。分析特征的數(shù)據(jù)分布,比如說某個特征方差接近于 0,說明不同樣本在這個特征上基本沒有什么差異,可以說這個特征是對于樣本區(qū)分基本沒有太大作用的無關(guān)變量。因此通常可以選擇方差大于某個閾值的特征,去掉取值變化小的特征。

  • Pearson 相關(guān)系數(shù)。皮爾森相關(guān)系數(shù)是一種簡單的,能幫助理解特征和目標變量之間關(guān)系的方法,用于衡量變量之間的線性相關(guān)性,取值區(qū)間為[-1,1],-1 表示完全的負相關(guān),+1 表示完全的正相關(guān),0 表示沒有線性相關(guān)。通過分析特征與目標之間的相關(guān)性,優(yōu)先選擇與目標相關(guān)性高的特征。

  • 假設(shè)檢驗。假設(shè)特征變量和目標變量之間相互獨立,選擇適當檢驗方法計算統(tǒng)計量,然后根據(jù)統(tǒng)計量做出統(tǒng)計推斷。例如對于特征變量為類別變量而目標變量為連續(xù)數(shù)值變量的情況,可以使用方差分析,對于特征變量和目標變量都為連續(xù)數(shù)值變量的情況,可以使用皮爾森卡方檢驗。卡方統(tǒng)計量取值越大,特征相關(guān)性越高。

  • 互信息。在概率論和信息論中,互信息用來度量兩個變量之間的相關(guān)性。互信息越大則表明兩個變量相關(guān)性越高,互信息為 0 時,兩個變量相互獨立。


2.封裝式(Wrapping)

與過濾方法不同,封裝式特征選擇直接使用機器學習算法評估特征子集的效果,直接面向算法優(yōu)化,效果好,缺點是需要對每一組特征子集訓練一個模型,計算復雜度高。常用的特征子集搜索算法有:完全搜索;基于貪心的啟發(fā)式搜索(前向/后向搜索等);隨機搜索(模擬退火、遺傳算法等)。

3.嵌入式(Embedding)

過濾式方法與模型算法相互獨立,不需要交叉驗證,計算效率比較高,但是沒有考慮具體模型算法的特點。封裝式方法使用模型來評估特征子集的質(zhì)量,需要多次訓練模型,計算效率很低。嵌入式方法將特征選擇本身作為組成部分嵌入到學習算法里,速度快,效果好,不足是與算法綁定,需要知識調(diào)整結(jié)構(gòu)和參數(shù)配置。

  • 基于正則化

    使用帶正則懲罰項的模型,比如 L1 正則化,通過對回歸系數(shù)添加 L1 懲罰項來防止過擬合,因產(chǎn)生稀疏解,天然具有特征選擇的作用。

  • 基于樹模型

    基于決策樹的算法,如隨機森林、GBDT,xgboost,在每次選擇分類節(jié)點時,都會選擇最佳分類特征來進行切分,重要的特征更有可能出現(xiàn)在分裂較早的節(jié)點,作為分裂節(jié)點的次數(shù)也越多。因此,可以基于樹模型中特征出現(xiàn)次數(shù)等指標對特征重要性進行排序。


三、特征重要性分析

特征重要性分析是用來判斷哪些變量對模型預測的影響力最大,可以幫助我們理解數(shù)據(jù),指導模型參數(shù)的設(shè)置以及特征的選擇,使模型具有良好的可解釋性。

  • 單特征 auc。

對每個單特征訓練模型,計算每個特征的 auc 或 gauc,并對其進行排名,精度越高表示該特征重要程度越高。這個方法需要訓練多個模型,效率較低。實際應(yīng)用中,可以有選擇的對某些特征子集進行實驗。
(1) 特征值置為 0。在預測時可以依次將某個特征取值置為 0,即不考慮該特征對模型的影響,計算模型 auc,精度降低越多,表示這個特征對于模型預測越重要;

(2)特征取隨機值。將某個特征取隨機值,可以使用均勻或者高斯分布隨機抽取值,然后計算模型的準確率。對于某個特征,如果用一個隨機值替代后表現(xiàn)比之前差很多,說明該特征很重要;

(3)特征值隨機打亂。隨機打亂驗證集中某一特征變量的值,使用訓好的模型進行預測,精度損失越多,說明該特征對于預測結(jié)果的影響越大,可以按照精度損失的多少對特征重要性進行排序。這個方法比隨機取值更科學,保證了與原始特征分布是一致的。舉個例子說明一下,我們有一個已經(jīng)訓練好的模型以及評估該模型表現(xiàn)的評價指標(如 RMSE)。假設(shè)這是一個短視頻播放時長的預測模型,本來在驗證集上的 RMSE 是 200,然后我們把某一個變量的值(如性別)全部打亂重新做預測,比如說此時 RMSE 變成了 500,那么性別這個變量的重要性就可以記為 300,即讓 loss 增加了 300。


四、結(jié)語

在實際的工程應(yīng)用中,具體采用什么特征處理方式不僅依賴于業(yè)務(wù)和數(shù)據(jù)本身,還依賴于所選取的模型,因此首先要理解數(shù)據(jù)和業(yè)務(wù)邏輯以及模型的特點,才能更好地進行特征工程。通常可以考慮對樣本做歸一化、離散化、平滑處理以及特征變換與特征交叉,我們也會使用一些跨場景的特征遷移方法,復用現(xiàn)有知識域數(shù)據(jù),比如手 Q 場景下的特征數(shù)據(jù),具體方法的選擇依賴于數(shù)據(jù)、資源等實際因素,復雜的模型雖然可以減輕我們在特征工程上的工作,但這并不代表我們不需要特征工程了。我們只是把更多的精力放在了模型難以直接從原始數(shù)據(jù)中學習到,需要借助對業(yè)務(wù)的理解與外部知識的特征構(gòu)造上。

特征工程不僅與模型算法相關(guān),與實際問題更是強相關(guān)的。針對不同場景,特征工程所用的方法可能相差較大,所以很難總結(jié)出適用于不同業(yè)務(wù)的一套比較通用的方法。盡管如此,但仍然有很多特征工程的方法和技巧在不同問題中都適用。本文把微視排序中一些特征工程的實踐經(jīng)驗跟各位讀者分享,希望對大家能有所幫助。

總結(jié)

以上是生活随笔為你收集整理的浅谈微视推荐系统中的特征工程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。