日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

推荐系统:数据与特征工程

發(fā)布時間:2023/12/20 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推荐系统:数据与特征工程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

推薦系統(tǒng)是機器學習的一個子領(lǐng)域,并且是一個偏工程化、在工業(yè)界有極大商業(yè)價值的子方向。

目前絕大多數(shù)提供 toC 類產(chǎn)品或者服務的互聯(lián)網(wǎng)企業(yè),會通過推薦系統(tǒng)為用戶提供精準的個性化服務。

推薦系統(tǒng)通過推薦算法來為用戶生成個性化推薦結(jié)果,而推薦算法依賴數(shù)據(jù)輸入來構(gòu)建算法模型。

本章我們來講解推薦系統(tǒng)所依賴的數(shù)據(jù),怎么處理這些數(shù)據(jù),讓數(shù)據(jù)轉(zhuǎn)換成推薦算法可以直接使用的形式

處理好了數(shù)據(jù),最終我們就可以構(gòu)建高效、精準的推薦模型了。

  • 這些處理好的適合機器學習算法使用的數(shù)據(jù)即是特征
  • 從原始數(shù)據(jù)獲得特征的過程就是特征工程

具體來說,我們會從:

  • 推薦算法建模的一般流程、
  • 推薦系統(tǒng)依賴的數(shù)據(jù)源介紹、
  • 數(shù)據(jù)處理與特征工程簡介、
  • 常用推薦算法之數(shù)據(jù)與特征工程、
  • 推薦系統(tǒng)數(shù)據(jù)與特征工程未來趨勢

等 5 個部分來介紹相關(guān)知識點,期望本章的講解能夠讓讀者更加深入地理解推薦系統(tǒng)依賴的數(shù)據(jù)源的特點、數(shù)據(jù)預處理方法以及基于這些數(shù)據(jù)之上的特征工程方法與技巧。

一、推薦算法建模的一般流程

在介紹推薦系統(tǒng)數(shù)據(jù)源與特征工程之前,我們先介紹一下推薦算法建模的一般流程,這樣我們就可以更好地理解數(shù)據(jù)與特征工程在整個推薦系統(tǒng)業(yè)務流程中的地位和作用了。

推薦系統(tǒng)是機器學習的一個子領(lǐng)域,因此推薦系統(tǒng)處理問題的方式遵循機器學習的一般思路。我們可以將機器學習過程看成一個打造“生產(chǎn)某種產(chǎn)品”的機器的過程,我們根據(jù)過往的生產(chǎn)經(jīng)驗來制造一款生產(chǎn)該產(chǎn)品的機器,過往的生產(chǎn)經(jīng)驗就是我們的訓練集,構(gòu)建好的機器就是我們的機器學習模型。

我們將原材料加工好,按照某種方式“灌入”這個機器,這個機器的最終輸出就是我們需要的預測結(jié)果,構(gòu)建的機器是否完善、能否生產(chǎn)出誤差在可接受范圍內(nèi)的商品,代表了我們模型的精準度。

根據(jù)上面的簡單類比,推薦算法為用戶生成個性化推薦的一般流程如下面圖 1。

圖 1:推薦算法建模的一般流程

我們通過收集不同來源的數(shù)據(jù)匯聚成推薦算法需要的原始數(shù)據(jù),通過特征工程對原始數(shù)據(jù)處理生成最終特征,再通過選擇合適的推薦算法對特征進行訓練獲得最終的推薦模型,在預測/推斷階段,我們根據(jù)某個用戶的特征,將特征灌入模型獲得該用戶的推薦結(jié)果。

從上圖可以看出,數(shù)據(jù)和特征工程處在整個推薦系統(tǒng)業(yè)務流的起點,因此是非常重要的。

數(shù)據(jù)是原材料,原材料(推薦數(shù)據(jù)源)是否齊備、質(zhì)量是否優(yōu)良直接決定是否可以生產(chǎn)出好的產(chǎn)品,而對原材料的處理加工(特征工程)決定了我們是否可以高效、快速、高質(zhì)量地生產(chǎn)出好的產(chǎn)品。

下面我們會對推薦系統(tǒng)的數(shù)據(jù)及特征工程這兩個部分詳細講解,模型構(gòu)建及預測不在我們本章的討論范圍。

二、推薦系統(tǒng)依賴的數(shù)據(jù)源介紹

推薦系統(tǒng)根據(jù)用戶在產(chǎn)品(APP、網(wǎng)站等)上的操作行為,預測用戶的興趣偏好,最終給用戶做個性化推薦。

在整個推薦過程中,涉及到可能產(chǎn)生數(shù)據(jù)的地方有?4 個部分:

  • 用戶自身、
  • 標的物、
  • 用戶的操作行為、
  • 用戶所在的場景(上下文)

因此推薦算法根據(jù)這 4 個觸點,可以依賴和利用 4 類數(shù)據(jù)。

根據(jù)承載數(shù)據(jù)的載體,數(shù)據(jù)可以分為?4 類:

  • 數(shù)值類數(shù)據(jù)、
  • 文本類數(shù)據(jù)、
  • 圖片類數(shù)據(jù)、
  • 音視頻數(shù)據(jù)。

根據(jù)推薦系統(tǒng)依賴的數(shù)據(jù)的組織形式(數(shù)據(jù)格式),又可以分為3 大類:

  • 結(jié)構(gòu)化數(shù)據(jù)、
  • 半結(jié)構(gòu)化數(shù)據(jù)、
  • 非結(jié)構(gòu)化數(shù)據(jù)。

下面我們分別按照這 3 種分類方式來詳細描述推薦系統(tǒng)所依賴的數(shù)據(jù)及這些數(shù)據(jù)的特點。

1、根據(jù)數(shù)據(jù)來源來劃分

根據(jù)數(shù)據(jù)來源的觸點來分,推薦系統(tǒng)依賴的數(shù)據(jù)分為用戶行為數(shù)據(jù)、用戶屬性數(shù)據(jù)、標的物(物品)屬性數(shù)據(jù)、上下文數(shù)據(jù) 4 大類,見下面圖 2,下面我們分別介紹各類數(shù)據(jù)及其特點。

圖 2:推薦系統(tǒng)依賴的 4 類數(shù)據(jù)源

1.1 (用戶)行為數(shù)據(jù)

就是用戶在產(chǎn)品上的各種操作,比如瀏覽、點擊、播放、購買、搜索、收藏、點贊、轉(zhuǎn)發(fā)、加購物車、甚至滑動、暫定、在某個位置的停留時長、快進等等一切操作行為。

用戶在產(chǎn)品上的操作行為為我們了解用戶提供了“蛛絲馬跡”,用戶的操作行為也是用戶最真實意圖的反饋,這些行為反應了用戶的興趣狀態(tài),通過分析用戶行為,我們可以獲得對用戶興趣偏好的深刻洞察。

根據(jù)用戶的行為是否直接表明用戶對標的物的興趣偏好,用戶行為一般分為顯式行為和隱式行為。

  • 顯式行為是直接表明用戶興趣的行為,比如點贊、評分等。
  • 隱式行為雖不是直接表示用戶的興趣,但是該行為可以間接反饋用戶的興趣變化,只要不是用戶直接評分、點贊的操作行為都算隱式反饋,包括瀏覽、點擊、播放、收藏、評論、轉(zhuǎn)發(fā)等等。

用戶行為數(shù)據(jù)是最重要、最容易收集、數(shù)據(jù)量最多的一類數(shù)據(jù),在構(gòu)建推薦系統(tǒng)算法中起著舉足輕重的作用。這類數(shù)據(jù)往往種類繁多,需要我們進行收集、預處理才能最終被推薦算法使用。

1.2 用戶屬性數(shù)據(jù)

用戶屬性數(shù)據(jù)也叫做用戶人口統(tǒng)計學數(shù)據(jù),就是用戶自身所帶的屬性,比如年齡、性別、地域、學歷、家庭組成、職業(yè)等等。這些數(shù)據(jù)一般是穩(wěn)定不變(如性別)或者緩慢變化(如年齡)的。

人類是一個社會化物種,用戶的不同屬性決定了用戶處在不同的階層或者生活圈層。不同的階層或生活圈又有不同的行為特征、生活方式、偏好特點,在同一圈層具備一定的相似性,這種相似性為我們做個性化推薦提供了特有的方法和思路。

1.3 標的物屬性數(shù)據(jù)

推薦系統(tǒng)中最重要的一個“參與方”是待推薦的標的物(物品),標的物自身是包含很多特征和屬性的。

  • 對于視頻來說,出品方、導演、演職員、主演、國別、年代、語言、是否獲獎、劇情、海報圖等等都是視頻的元數(shù)據(jù)。
  • 對于電商商品來說,品類、用途、價格、產(chǎn)地、品牌等等也是非常重要的屬性。

通過用戶對標的物的操作行為,我們可以將標的物所具備的特征按照某種權(quán)重賦予用戶,這些特征就構(gòu)建了用戶的興趣偏好,相當于給用戶打上了相關(guān)的標簽(比如喜歡看“恐怖片”的人)。

從這些興趣偏好出發(fā),我們又可以給用戶進行個性化推薦。

1.4 上下文數(shù)據(jù)

上下文數(shù)據(jù)是用戶在對標的物進行操作時所處的環(huán)境特征及狀態(tài)的總稱,比如用戶所在地理位置、當時的時間、當時的天氣、用戶當時的心情、用戶所在產(chǎn)品的路徑等等。

這些上下文數(shù)據(jù)對用戶的決策是非常重要的、甚至是起決定作用的。

比如,美團餓了么這類基于地理位置服務的產(chǎn)品,給用戶推薦餐廳是一定要是在用戶所在位置或者用戶指定位置附近的。

恰當?shù)厥褂蒙舷挛臄?shù)據(jù),將該類數(shù)據(jù)整合到推薦算法中,可以更加精準、場景化地為用戶進行個性化推薦。

2、根據(jù)數(shù)據(jù)載體來劃分

隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)上傳輸、交換、展示的數(shù)據(jù)種類越來越多樣化,從最初的數(shù)字、文本到圖片再到現(xiàn)在主流的音視頻,基于這些數(shù)據(jù)載體的不同,推薦系統(tǒng)建模依賴的數(shù)據(jù)也可以分為 4 類,見下面圖 3。

圖 3:推薦系統(tǒng)依賴的 4 種數(shù)據(jù)載體

2.1 數(shù)值類數(shù)據(jù)

所有推薦系統(tǒng)用到的、可以用數(shù)值來表示的數(shù)據(jù)都屬于這一類,比如用戶年齡、用戶評分、物品價格、播放次數(shù)等等。

數(shù)值數(shù)據(jù)也是計算機最容易處理的一類數(shù)據(jù),其他類型的數(shù)據(jù)要想很好地被計算機處理,一般也會利用各種方法轉(zhuǎn)化為數(shù)值數(shù)據(jù)。

2.2 文本數(shù)據(jù)

文本數(shù)據(jù)是互聯(lián)網(wǎng)中數(shù)量最多的、最普遍的一類數(shù)據(jù),標的物的類別、標的物的描述信息、甚至整個標的物可能都是文本(如新聞等)、用戶地域、用戶性別等等都是用文本來描述的。

如果某個特征可以取的所有值是有限的(比如性別只有男女兩種),也可以非常容易地轉(zhuǎn)化為數(shù)值類數(shù)據(jù)。

處理文本類數(shù)據(jù)需要借助自然語言處理相關(guān)技術(shù)。

2.3 圖片數(shù)據(jù)

隨著智能手機攝像頭技術(shù)的成熟、媒體及投資人的推波助瀾,圖像類相關(guān)應用爆發(fā)增長(如各種美顏 APP)。圖片數(shù)據(jù)是互聯(lián)網(wǎng)上的主流數(shù)據(jù)類型,商品的海報圖、電影的縮略圖等等都以圖片的形式存在。

對于圖片類數(shù)據(jù)的處理,目前的深度學習技術(shù)相對成熟,包括圖片的分類、圖片的特征提取等等,精度已經(jīng)到達了產(chǎn)品可用的成熟度,在某些方面(如圖片分類)甚至超越了人類專家的水平。

2.4 音視頻數(shù)據(jù)

在互聯(lián)網(wǎng)視頻出現(xiàn)以來就有了音視頻數(shù)據(jù),直到現(xiàn)在音視頻數(shù)據(jù)才應用到更多的領(lǐng)域和產(chǎn)品中,音視頻數(shù)據(jù)火爆背景跟圖片類似,目前的抖音、快手等短視頻應用非常受歡迎,游戲直播、電商導購直播等應用也是視頻類數(shù)據(jù)的產(chǎn)出方。

音樂的數(shù)字化,各類音頻學習軟件(如樊登讀書、蜻蜓 FM 等)也促進了音頻數(shù)據(jù)的增長。

音視頻數(shù)據(jù)的價值密度小,占用空間多,處理相對復雜,在深度學習時代,這些復雜數(shù)據(jù)的處理也變得可行了。音頻數(shù)據(jù)可以通過語音識別轉(zhuǎn)換為文字,最終歸結(jié)為文本數(shù)據(jù)的處理,視頻數(shù)據(jù)可以通過抽幀轉(zhuǎn)換為圖片數(shù)據(jù)來處理。

圖片、音視頻數(shù)據(jù)屬于富媒體數(shù)據(jù),隨著傳感器種類的豐富、精度的增強(比如拍照能力越來越強)、相關(guān)網(wǎng)絡(luò)應用的繁榮(如抖音、快手等都是基于富媒體數(shù)據(jù)的應用),網(wǎng)絡(luò)上出現(xiàn)了越來越多的富媒體數(shù)據(jù),并且占據(jù)了互聯(lián)網(wǎng)數(shù)據(jù)整體的絕大多數(shù),因此是非常重要的一類數(shù)據(jù)。

3、根據(jù)數(shù)據(jù)組織形式來劃分

按照數(shù)據(jù)組織形式不同,不同類型的數(shù)據(jù)處理起來難易程度是不一樣的。

人類是比較善于理解和處理二維表格類數(shù)據(jù)(結(jié)構(gòu)化數(shù)據(jù))的,這就是為什么關(guān)系型數(shù)據(jù)庫(主要是處理表格類數(shù)據(jù))在計算機發(fā)展史上具有舉足輕重地位的原因。

隨著互聯(lián)網(wǎng)的發(fā)展,數(shù)據(jù)形式越發(fā)豐富,不是所有數(shù)據(jù)都是結(jié)構(gòu)化的,有些數(shù)據(jù)是半結(jié)構(gòu)化甚至是無結(jié)構(gòu)化的(具體見下面圖 4),下面分別對這 3 類數(shù)據(jù)加以說明。

圖 4:推薦系統(tǒng)依賴的三種數(shù)據(jù)組織形式

3.1 結(jié)構(gòu)化數(shù)據(jù)

所謂結(jié)構(gòu)化數(shù)據(jù)就是可以用關(guān)系型數(shù)據(jù)庫中的一張表來存儲的數(shù)據(jù),每一列代表一個屬性/特征,每一行就是一個數(shù)據(jù)樣本。

一般用戶屬性數(shù)據(jù)和物品屬性數(shù)據(jù)都可以用一張表來存儲,用戶和物品的每一個屬性都是表的一個字段,因此是結(jié)構(gòu)化數(shù)據(jù)。下表就是視頻的結(jié)構(gòu)化表示。

表 1:視頻屬性數(shù)據(jù)的結(jié)構(gòu)化表示

結(jié)構(gòu)化數(shù)據(jù)是一類具備 Schema 的數(shù)據(jù),也就是每一列數(shù)據(jù)的類型、值的長度或者范圍是確定的,一般可以用關(guān)系型數(shù)據(jù),如 MySQL、ProgreSQL 等來存儲,這類數(shù)據(jù)可以用非常成熟的 SQL 語言來進行查詢處理。

3.2 半結(jié)構(gòu)數(shù)據(jù)

半結(jié)構(gòu)化數(shù)據(jù)雖不符合關(guān)系型數(shù)據(jù)庫這么嚴格的結(jié)構(gòu),但數(shù)據(jù)組織是有一定規(guī)律或者規(guī)范的,利用特殊的標記或者規(guī)則來分隔語義元素以及對記錄和字段進行分層。因此,也被稱為自描述的數(shù)據(jù)結(jié)構(gòu)。常見的 XML 或者 Json 類數(shù)據(jù)就屬于這一類。

對于用戶在產(chǎn)品上的操作行為,我們一般按照一定的規(guī)則來對相關(guān)字段進行記錄(比如可以用 Json 格式來記錄日志,或者按照規(guī)定的分割字符來分割不同字段,再拼接起來記錄日志),這類數(shù)據(jù)也屬于半結(jié)構(gòu)化數(shù)據(jù),一些半結(jié)構(gòu)化數(shù)據(jù)是可以通過一定的預處理轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)的

3.3 非結(jié)構(gòu)化數(shù)據(jù)

非結(jié)構(gòu)化數(shù)據(jù),是數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒有預定義的數(shù)據(jù)模型,不方便用數(shù)據(jù)庫二維邏輯表來表示的數(shù)據(jù),也沒有半結(jié)構(gòu)化數(shù)據(jù)這種有一定的規(guī)律或者規(guī)范。包括文本、圖片、HTML、各類數(shù)據(jù)報表、圖像和音視頻信息等等。非結(jié)構(gòu)化數(shù)據(jù)由于沒有固定的數(shù)據(jù)范式,也是最難處理的一類數(shù)據(jù)。

文本類標的物(如新聞資訊)、短視頻、音頻、商品等都包含大量的非結(jié)構(gòu)化數(shù)據(jù)。

即使是具備非結(jié)構(gòu)化數(shù)據(jù)的標的物,我們可以從幾個已知的屬性來構(gòu)建對標的物的描述,從而形成對標的物結(jié)構(gòu)化的描述,如上面表 1 中就是針對視頻從多個維度來構(gòu)建結(jié)構(gòu)化數(shù)據(jù)。

隨著移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的發(fā)展,各類傳感器日益豐富,功能多樣,人際交往也更加密切,人們更愿意表達自我,人類的社交和生產(chǎn)活動產(chǎn)生了非常多的非結(jié)構(gòu)化數(shù)據(jù),非結(jié)構(gòu)化數(shù)據(jù)量成幾何級數(shù)增長。怎么很好地處理非結(jié)構(gòu)化數(shù)據(jù),將非結(jié)構(gòu)化數(shù)據(jù)中包含的豐富信息挖掘出來,并應于算法模型中,是可以大大提升推薦算法的精準度、轉(zhuǎn)化率等用戶體驗、商業(yè)化指標的。隨著 NLP、圖像處理、深度學習等 AI 技術(shù)的發(fā)展與成熟,我們現(xiàn)在有更多的工具和方法來處理非結(jié)構(gòu)化數(shù)據(jù)了。推薦系統(tǒng)也享受到了這一波技術(shù)紅利,在這些新技術(shù)的加持下,推薦效果越來越好。

上面從 3 個不同的分類角度來介紹了推薦系統(tǒng)的數(shù)據(jù)源,那么我們怎么利用這些數(shù)據(jù)源,將這些數(shù)據(jù)處理為推薦算法可以使用的原材料呢?

這就需要數(shù)據(jù)處理特征工程相關(guān)知識,我們在下一節(jié)進行詳細介紹。

三、數(shù)據(jù)處理與特征工程簡介

在本節(jié)我們來詳細介紹推薦系統(tǒng)依賴的數(shù)據(jù)是怎么產(chǎn)生的、我們怎么轉(zhuǎn)運、怎么存儲這些數(shù)據(jù),最終通過 ETL 和特征工程將數(shù)據(jù)加工成推薦算法可以直接使用的原材料。

我們分數(shù)據(jù)生成、數(shù)據(jù)預處理、特征工程 3 個部分來介紹。

1、數(shù)據(jù)生成

下面我們根據(jù)行為數(shù)據(jù)、用戶屬性數(shù)據(jù)、標的物屬性數(shù)據(jù)、上下文數(shù)據(jù) 4 類數(shù)據(jù)來分別說明數(shù)據(jù)生成過程。

1.1 行為數(shù)據(jù)生成

對于用戶行為數(shù)據(jù),一般稱為用戶行為日志,我們事先定義收集的日志格式,當用戶在產(chǎn)品上進行各種操作時,客戶端(APP 或者網(wǎng)頁)按照日志規(guī)范記錄用戶行為(俗稱日志埋點),并將用戶行為上報到云端數(shù)據(jù)中心,這即獲得了用戶行為數(shù)據(jù)。

用戶在什么時間點、進行什么操作需要進行日志埋點取決于具體的業(yè)務場景、交互形式以及具體的數(shù)據(jù)分析需求。

一般來說,用戶觸點多的路徑、對用戶體驗有比較大影響的功能點、涉及到商業(yè)價值的功能點是需要進行日志埋點的,因為這些數(shù)據(jù)對產(chǎn)品的迭代與發(fā)展非常關(guān)鍵,是非常有價值的數(shù)據(jù)。

上傳更多的數(shù)據(jù)需要定義更多的日志規(guī)范并進行埋點,還需要進行收集、處理、存儲,因此會占用更多的人力、算力、存儲資源,但是可以讓我們從更多的維度進行分析,所以是有一定價值的,《大數(shù)據(jù)時代》的作者維克托?邁爾-舍恩伯格博士認為數(shù)據(jù)收集越多越好,我們在實際工作中也是按照這個思路進行收集的,盡量收集用戶的所有行為,但是發(fā)現(xiàn)很多日志事后是沒有時間、精力去分析的,甚至沒有業(yè)務方有這方面的分析需求,因此,個人建議盡量收集前面提到的核心數(shù)據(jù),其他數(shù)據(jù)在真的確定需要的時候再去埋點分析。

行為數(shù)據(jù)的上傳、收集需要考慮很多現(xiàn)實中的特殊問題,需要保證數(shù)據(jù)上傳的有效性、正確性、不重復性,對于在網(wǎng)絡(luò)不穩(wěn)定或者出現(xiàn)軟件故障時,需要進行數(shù)據(jù)重試與補傳。

同時數(shù)據(jù)上傳需要有很多策略,比如按照固定條數(shù)上傳、固定一段時間上傳、每產(chǎn)生一條數(shù)據(jù)就立即上傳等,也需要對數(shù)據(jù)進行加密,避免網(wǎng)絡(luò)惡意攻擊或者臟數(shù)據(jù)的引入。

1.2 用戶屬性數(shù)據(jù)生成

一般用戶地域是可以借助用戶的 IP 地址輕易獲取得到的,而其他用戶屬性是很難收集到的,特別是現(xiàn)在數(shù)據(jù)安全性越來越受到法律的保護,個人風險意識也逐漸增強,收集用戶信息是更加困難的事情。安全有效地收集用戶屬性數(shù)據(jù)一般可以有如下方法:

  • 產(chǎn)品在用戶剛注冊時,提供用戶輸入相關(guān)信息的界面,讓用戶主動輸入相關(guān)信息,但是一般用戶是比較懶的,所以輸入的信息一定是比例非常少的,過多增加這種讓用戶操作的步驟,在增加用戶使用成本的同時,也增加了用戶放棄你的產(chǎn)品的概率;
  • 通過各種運營活動,讓用戶填寫相關(guān)信息參與活動,從而獲得相關(guān)信息;
  • 通過用戶在產(chǎn)品上的行為或者聊天記錄,根據(jù)機器學習算法來推斷用戶的屬性,比如根據(jù)用戶購買行為推斷用戶的性別、年齡等;
  • 有些具備金融牌照、游戲牌照的產(chǎn)品,可以要求用戶填寫身份證等敏感信息,從而獲得用戶更多的信息;
  • 某些公司有多個產(chǎn)品(比如阿里的支付寶、淘寶、餓了么等),可以通過產(chǎn)品之間的打通,獲得用戶更多的屬性信息;
  • 通過合規(guī)的第三方數(shù)據(jù)交易程序來獲得自己產(chǎn)品缺失而第三方具備的屬性信息;

用戶屬性信息對構(gòu)建優(yōu)秀的推薦系統(tǒng)是非常重要的一類信息,這類信息企業(yè)需要保管好,避免泄露出去造成重大安全和隱私事故。

1.3 標的物屬性數(shù)據(jù)生成

標的物屬性數(shù)據(jù)的獲取相比用戶屬性數(shù)據(jù)容易一些,標的物的生產(chǎn)方/提供方一般是具備一定的標的物屬性數(shù)據(jù)的。

  • 比如視頻在制作時包含基本屬性數(shù)據(jù),視頻版權(quán)被視頻網(wǎng)站采購時,自然就附帶了這些屬性。
  • 又比如淘寶上的賣主在上架商品時也會按照淘寶制定的類目等屬性要求填充相關(guān)數(shù)據(jù)。
  • 還有一些標的物,如新聞資訊,是從第三方利用爬蟲技術(shù)爬過來的,在爬的過程中也可以將屬性數(shù)據(jù)爬過來,一并注入到自己的媒資庫中。

對于標的物數(shù)量不大、單位時間產(chǎn)出不多的標的物(如電影),還可以利用編輯團隊或者外包人工標注相關(guān)數(shù)據(jù)。

對于數(shù)量較大、單位時間產(chǎn)量多的標的物(如新聞),可以借助 NLP 等機器學習技術(shù)生成相關(guān)屬性數(shù)據(jù)。

1.4 上下文數(shù)據(jù)生成

上下文數(shù)據(jù)一般是動態(tài)變化的,是用戶在某個場景下的特定時間點、特定位置所產(chǎn)生的數(shù)據(jù),所以一般是實時獲得的,也一般應用于實時推薦系統(tǒng)中。這類數(shù)據(jù)也一般是通過前端埋點獲得,并以消息隊列的形式給到具體的業(yè)務應用方。

上面對數(shù)據(jù)產(chǎn)生及收集相關(guān)的知識點做了簡單介紹,關(guān)于數(shù)據(jù)收集更深入的介紹,可以閱讀參考文獻 15《數(shù)據(jù)驅(qū)動:從方法到實踐》這本書。

2 數(shù)據(jù)預處理

數(shù)據(jù)預處理一般稱為 ETL(Extract-Transform-Load),用來描述數(shù)據(jù)從生產(chǎn)源到最終存儲之間的一系列處理過程,一般經(jīng)過抽提、轉(zhuǎn)換、加載 3 個階段。

目的是將企業(yè)中的分散、零亂、標準不統(tǒng)一的數(shù)據(jù)整合到一起,將非結(jié)構(gòu)化或者半結(jié)構(gòu)化的數(shù)據(jù)處理為后續(xù)業(yè)務可以方便處理使用的結(jié)構(gòu)化數(shù)據(jù),為企業(yè)的數(shù)據(jù)驅(qū)動、數(shù)據(jù)決策提供數(shù)據(jù)基礎(chǔ)。

數(shù)據(jù)基礎(chǔ)設(shè)施完善的企業(yè)一般會構(gòu)建層次化的數(shù)據(jù)倉庫系統(tǒng),數(shù)據(jù)預處理的最終目的也是將雜亂的數(shù)據(jù)結(jié)構(gòu)化、層次化、有序化,最終存入數(shù)據(jù)倉庫。

對于推薦系統(tǒng)來說,通過 ETL 將數(shù)據(jù)處理成具備特殊結(jié)構(gòu)(可能是結(jié)構(gòu)化的)的數(shù)據(jù),方便進行特征工程,最終供推薦算法學習和模型訓練之用。

下面分別對 ETL3 個階段的作用進行簡單介紹。

2.1 抽提(Extract)

這一階段的主要目的是將企業(yè)中分散的數(shù)據(jù)聚合起來,方便后續(xù)進行統(tǒng)一處理,對于推薦系統(tǒng)來說,依賴的數(shù)據(jù)源多種多樣,因此是非常有必要將所有這些算法依賴的數(shù)據(jù)聚合起來的。推薦系統(tǒng)的數(shù)據(jù)源比較多樣,不同的數(shù)據(jù)抽取的方式不一樣,下面分別簡單介紹。

用戶行為數(shù)據(jù)一般通過在客戶端埋點,通過 HTTP 協(xié)議上傳到日志收集 web 服務(如 Nginx 服務器),中間可能會通過域名分流或者 LB 負載均衡服務來增加日志收集的容錯性、可拓展性。

日志一般通過離線和實時兩條數(shù)據(jù)流進行處理。

  • 離線通過 ETL 進入數(shù)倉,
  • 實時流通過 ETL 經(jīng) Kafka 等消息隊列被實時處理程序(如 Spark Streaming)處理或者進入 HBase、ElasticSearch 等實時存儲供后續(xù)的業(yè)務使用。

整個用戶行為日志的收集過程見下面圖 5。

圖 5:用戶行為日志收集流程(右上角進入 DW 的屬于離線數(shù)據(jù),右下角經(jīng)過 Kafka 的屬于實時流)

對于用戶屬性數(shù)據(jù)、標的物屬性數(shù)據(jù)一般是存放在關(guān)系型數(shù)據(jù)庫中的,實時性要求不高的推薦業(yè)務可以采用數(shù)據(jù)表快照進行抽取,對實時性有要求的信息流推薦可以采用 binlog 實時同步或者消息隊列的方式抽取。

上下文相關(guān)數(shù)據(jù)一般是描述用戶當前狀態(tài)的數(shù)據(jù),一般是通過各種傳感器或者前端埋點收集的,這類數(shù)據(jù)也生成于客戶端。

通過上面圖 5 右下角的實時日志收集系統(tǒng)進入消息隊列,供后端的實時統(tǒng)計(如時間序列數(shù)據(jù)庫、ES 進行存儲進而查詢展示)或者算法(通過 Spark Streaming 或者 Flink 等)進行處理。

2.2 轉(zhuǎn)換(Transform)

這個階段是 ETL 的核心環(huán)節(jié),也是最復雜的一環(huán)。它的主要目標是將抽取到的各種數(shù)據(jù),進行數(shù)據(jù)的清洗、格式的轉(zhuǎn)換、缺失值填補、剔除重復等操作,最終得到一份格式統(tǒng)一、高度結(jié)構(gòu)化、數(shù)據(jù)質(zhì)量高、兼容性好的數(shù)據(jù),提供給推薦算法的特征工程階段進行處理。

清洗過程包括剔除掉臟數(shù)據(jù)、對數(shù)據(jù)合法性進行校驗、剔除無效字段、字段格式檢查等過程。

格式轉(zhuǎn)換是根據(jù)推薦算法對數(shù)據(jù)的定義和要求將不同來源的同一類數(shù)據(jù)轉(zhuǎn)為相同的格式,使之統(tǒng)一規(guī)范化的過程。

由于日志埋點存在的問題或者數(shù)據(jù)收集過程中存在的各種問題,真實業(yè)務場景中,字段值缺失是一定存在的,缺失值填補可以根據(jù)平均數(shù)或者眾數(shù)進行填補或者利用算法來學習填充(如樣條差值等)。

由于網(wǎng)絡(luò)原因日志一般會有重傳策略,導致重復數(shù)據(jù),剔除重復就是將重復的數(shù)據(jù)從中過濾掉,從而提升數(shù)據(jù)質(zhì)量,以免影響最終推薦算法的效果(如果一個人有更多的數(shù)據(jù),那么在推薦算法訓練過程中,相當于他就有更多的投票權(quán),模型學習會向他的興趣傾斜,導致泛化能力下降)。

數(shù)據(jù)轉(zhuǎn)換的過程算是廣義的特征工程中的一部分,這里介紹的處理過程可能部分會跟下面特征工程部分的介紹有一定重復,我們在特征工程章節(jié)會更加詳細介紹。

2.3 加載(Load)

這部分的主要目標是把數(shù)據(jù)加載至最終的存儲,比如數(shù)據(jù)倉庫、關(guān)系型數(shù)據(jù)庫、key-value 型 NoSQL 中等。對于離線的推薦系統(tǒng),訓練數(shù)據(jù)放到數(shù)倉中,屬性數(shù)據(jù)存放到關(guān)系型數(shù)據(jù)庫中。

用戶行為數(shù)據(jù)通過數(shù)據(jù)預處理一般可以轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù)或者半結(jié)構(gòu)化數(shù)據(jù),行為數(shù)據(jù)是最容易獲得的一類數(shù)據(jù),也是數(shù)據(jù)量最大的一類數(shù)據(jù),這類數(shù)據(jù)一般存放在分布式文件系統(tǒng)中,原始數(shù)據(jù)一般放到 HDFS 中,通過處理后的數(shù)據(jù)一般會根據(jù)業(yè)務需要構(gòu)建層次化的數(shù)據(jù)模型。

所有行為數(shù)據(jù)都會統(tǒng)一存放到企業(yè)的數(shù)據(jù)倉庫中,最終形成統(tǒng)一的數(shù)據(jù)服務,供上層的業(yè)務方使用:

  • 離線數(shù)據(jù)基于 Hive 等構(gòu)建數(shù)倉;
  • 實時數(shù)據(jù)基于 HBase 等構(gòu)建數(shù)倉

某些數(shù)據(jù),比如通過特征工程轉(zhuǎn)化為具體特征的數(shù)據(jù),這類數(shù)據(jù)可能需要實時獲取、實時更新、實時服務于業(yè)務,一般可以存放在 HBase 或者 Redis 等 NoSQL 中

用戶屬性數(shù)據(jù)一般屬于關(guān)系型數(shù)據(jù),這類數(shù)據(jù)比較適合存放在關(guān)系型數(shù)據(jù)庫(如 MySQL)中。

標的物屬性數(shù)據(jù)一般也屬于關(guān)系型數(shù)據(jù),也存放在關(guān)系型數(shù)據(jù)庫中。

對于圖片、音視頻這類比較復雜的數(shù)據(jù),一般適合存放在對象存儲中。

3、特征工程

特征(Feature)是建立在原始數(shù)據(jù)之上的特定表示,它是一個單獨的可度量屬性,通常用結(jié)構(gòu)化數(shù)據(jù)集中的一列表示。

對于一個通用的二維數(shù)據(jù)集,每個觀測值由一行表示,每個特征由一列表示,對于每一個觀測具有一個特定的值。

下面圖 6 就是用戶基本屬性表,其中每一列就是一個特征,其中:

  • 年齡、身高、體重是數(shù)值的,是數(shù)值特征,數(shù)值特征也叫做連續(xù)特征;
  • 性別是用文本描述的,并且只有男女兩種取值,是離散特征;
圖 6:用戶屬性特征

通過上面的簡單介紹,我們知道了什么是特征,知道有連續(xù)特征和離散特征,那么特征具體怎么分類呢?

一般從特征的取值類型可以分為 5 類:

  • 離散特征:離散特征一般分為類別特征和有序特征,類別之間是無序關(guān)系的,比如性別,有序特征之間是有序關(guān)系的,比如收入的低、中、高三個等級,之間是有序的。
  • 連續(xù)(數(shù)值)特征:能夠用實數(shù)或者整數(shù)等數(shù)值度量的特征就是連續(xù)特征,比如身高、通過算法獲得的嵌入特征等都屬于連續(xù)特征。
  • 時空特征:在某些模型中時間是非常重要的特征,時間一般是相對的,具有周期性。對基于地理位置的服務,位置是非常重要的特征,用戶的行為可能跟位置有關(guān)(如廣東人喜歡看粵語劇),地理位置可以用行政區(qū)劃的層級關(guān)系表示,也可以用相對距離來表示。
  • 文本特征:文本是非常重要的一類數(shù)據(jù),我們可以從文本中抽提特征,比如利用 TF-IDF 等獲得的特征,文本特征一般可以通過轉(zhuǎn)化為向量來表示。
  • 富媒體特征:包括從圖片、視頻、音頻、HTML、甚至程序語言等富媒體中抽提的特征,這些特征也一般用數(shù)值向量來表示。
  • 從特征的可解釋性來分類,可以分為顯式特征和隱式特征:

  • 顯示特征:顯示特征是具有實際意義的特征,人們可以理解,可以用語言來說明和解釋。類別、數(shù)值、時空、TF-IDF、LDA 等特征都屬于這一類。
  • 隱式特征:隱式特征是不具備實際意義,難于在現(xiàn)實中找到對應的特征,一般通過算法生成的嵌入特征都屬于這一類,如 word2vec、矩陣分解等模型生成的嵌入特征。
  • 講完了什么是特征,特征的兩種分類方法及對應不同特征的介紹,那么大家肯定會關(guān)心特征是怎么構(gòu)建的,有什么方法和技巧,這就是特征工程要解決的問題。

    特征工程(Feature Engineering)是將原始數(shù)據(jù)轉(zhuǎn)化為特征的過程,這些特征可以很好地測量或者描述輸入輸出之間的內(nèi)在關(guān)系,通過這些特征來構(gòu)建數(shù)學模型,從而提高模型對未知數(shù)據(jù)預測的準確性。特征工程在整個算法模型生命周期中所處的階段見下面圖 7。

    圖 7:特征工程在算法建模中所處的階段

    特征工程在整個機器學習流程中是非常重要的一環(huán),有很多枯燥、繁雜的工作需要處理,看起來不那么高大上,并且很多特征工程的技巧是需要經(jīng)驗積累的,也是領(lǐng)域相關(guān)的(不同領(lǐng)域有自己的一套做特征工程的獨特的方法和思路)。

    特征工程的質(zhì)量往往直接決定了機器學習的最終效果,在機器學習圈有一句很出名的話很好地說出了特征工程的價值,這句話大致意思是“特征工程的好壞決定了機器學習能力的上限,而算法和模型只是無限逼近這個上限”。

    特征工程是一個比較花費人力的工作,雖然跟問題和領(lǐng)域相關(guān),但是有一般的方法思路可供參考,下面簡單介紹一下特征工程的一般流程和步驟,以及相關(guān)的方法與技巧。

    3.1 特征預處理

    在真實業(yè)務場景中,數(shù)據(jù)一般會存在各種各樣的問題,不是直接可以用于構(gòu)建特征,在構(gòu)建特征之前需要對數(shù)據(jù)進行適當?shù)奶幚?#xff0c;下面講解一些常見的數(shù)據(jù)問題及預處理方法:

    1. 缺失值處理

    實際上我們收集到的很多數(shù)據(jù)是存在缺失值的,比如某個視頻缺少總時長。對于用戶屬性數(shù)據(jù)來說,很多用戶可能也不會填寫完備的信息。一般缺失值可以用均值、中位數(shù)、眾數(shù)等填充,或者直接將缺失值當做一個特定的值來對待。還可以利用一些復雜的插值方法,如樣條插值等來填充缺失值。

    2. 歸一化

    不同特征之間由于量綱不一樣,數(shù)值可能相差很大,直接將這些差別極大的特征灌入模型,會導致數(shù)值小的特征根本不起作用,一般我們要對數(shù)值特征進行歸一化處理,常用的歸一化方法有 min-max 歸一化、分位數(shù)歸一化、正態(tài)分布歸一化、行歸一化等。下面分別簡單介紹。

    min-max 歸一化是通過求得該特征樣本的最大值和最小值,采用如下公式來進行歸一化,歸一化后所有值分布在 0-1 之間。

    分位數(shù)歸一化,是將該特征所有的值從小到大排序,假設(shè)一共有 N 個樣本,某個值 x 排在第 k 位,那么我們用下式來表示 x 的新值。

    正態(tài)分布歸一化,是通過求出該特征所有樣本值的均值

    和標準差

    ,再采用下式來進行歸一化。

    行歸一化,就是采用某種范數(shù)(比如 L2 范數(shù)),讓整行的范數(shù)為 1,假設(shè)該列特征所在的列向量為

    ,那么基于 L2 范數(shù)的行歸一化的公式如下:

    3. 異常值與數(shù)值截斷

    對于數(shù)值型特征,可能會存在異常值,包括異常大和異常小的值。

    在統(tǒng)計數(shù)據(jù)處理中有所謂 3σ準則,即對于服從正態(tài)分布的隨機變量,該變量的數(shù)值分布在(μ-3σ,μ+3σ)中的概率為 0.9974,這時可以將超出該范圍的值看成異常值,采用向上截斷(用μ-3σ)和向下截斷(用μ+3σ)的方法來為異常值賦予新的值。

    對于真實業(yè)務場景,可能還要根據(jù)特征變量的實際意義來進行處理,在作者團隊做視頻推薦過程中,經(jīng)常會發(fā)現(xiàn)日志中視頻的總時長是一個非常非常大的值(可能是在日志埋點時將時間戳混雜到時長中了),我們一般會用戶 180 分鐘來截斷電影的總時長,用 45 分鐘來截斷電視劇單集的總時長。

    如果異常值所占樣本比例非常小,也可以直接將包含異常值的樣本剔除掉,但是有很多真實業(yè)務場景的算法模型利用非常多的特征,雖然每個特征異常值很少,但是如果特征總數(shù)很多的話,包含異常值的樣本(只要包含某一個異常值的都算異常樣本)總數(shù)可能是非常大的,所以直接丟棄的方法有時是不合適的。

    4. 非線性變換

    有時某個屬性不同值之間差別較大(比如年收入),有時為了讓模型具備更多的非線性能力(特別是對于線性模型),這兩種情況下都需要對特征進行非線性變換,比如值取對數(shù)(值都是正的情況下)作為最終的特征,也可以采用多項式、高斯變換、logistic 變換等轉(zhuǎn)化為非線性特征。

    上面提到的分位數(shù)歸一化、正態(tài)分布歸一化其實都是非線性變換。

    3.2 特征構(gòu)建

    所謂特征構(gòu)建是從原始數(shù)據(jù)中提取特征,將原始數(shù)據(jù)空間映射到新的特征向量空間,使得在新的特征空間中,模型能夠更好地學習數(shù)據(jù)中的規(guī)律

    下面我們分別對前面提到的離散(類別)特征、連續(xù)(數(shù)值)特征、時空特征、文本特征、富媒體特征等 5 類非常重要的特征來介紹怎么從原始數(shù)據(jù)構(gòu)建相關(guān)的特征。

    隨著 Word2Vec 及深度學習技術(shù)在推薦系統(tǒng)中的大規(guī)模應用,嵌入方法越來越受到歡迎,我們也會單獨講一下嵌入特征,文本、富媒體一般可以轉(zhuǎn)化為嵌入特征。

    3.2.1 離散特征

    離散特征是非常常見的一類特征,用戶屬性數(shù)據(jù)、標的物屬性數(shù)據(jù)中就包含大量的類別特征,如性別、學歷、視頻的類型、標簽、導演、國別等等。對于離散特征,一般可以采用如下幾種方式對特征進行編碼。

  • one-hot 編碼:one-hot 編碼通常用于類別特征,如果某個類別特征有 k 類,我們將這 k 類固定一個序關(guān)系(隨便什么序關(guān)系都無所謂,只是方便確認某個類在哪個位置),我們可以將每個值映射為一個 k 維向量,其中這個值所在的分量為 1,其他分量為 0。該方法當類別的數(shù)量很多時,特征空間會變得非常大。在這種情況下,一般可以用 PCA 等方法進行降維。對于標簽這種類別特征,可能每個視頻有多個標簽,這時 one-hot 編碼可以拓展為 n-hot 編碼,就是該視頻在它包含的所有標簽對應的分量為 1,其他為 0。
  • 散列編碼:對于有些取值特別多的類別特征(比如視頻標簽,可以有幾萬個),使用 one-hot 編碼得到的特征矩陣非常稀疏,如果再進行特征交叉,會使得特征維度爆炸式增長。特征散列的目標就是是把原始的高維特征向量壓縮成較低維特征向量,且盡量不損失原始特征的表達能力,其優(yōu)勢在于實現(xiàn)簡單,所需額外計算量小。降低特征維度,也能加速算法訓練與預測,降低內(nèi)存消耗,但代價是通過哈希轉(zhuǎn)換后學習到的模型變得很難檢驗(因為一般哈希函數(shù)是不可逆的),我們很難對訓練出的模型參數(shù)做出合理解釋。特征散列的另一個問題是可能把多個原始特征哈希到相同的位置上,出現(xiàn)哈希沖突現(xiàn)象,但經(jīng)驗表明這種沖突對算法的精度影響很小,通過選擇合適的 hash 函數(shù)也可以減少沖突概率。
  • 計數(shù)編碼:就是將所有樣本中該類別出現(xiàn)的次數(shù)或者頻次作為該值的編碼,這類方法對異常值比較敏感(拿電影的標簽來說,很多電影包含“劇情”這個標簽,計數(shù)編碼會讓劇情的編碼值非常大),也容易產(chǎn)生沖突(兩個不同類別的編碼一樣,特別是對于出現(xiàn)很稀少的標簽,編碼值一樣的概率非常大)。
  • 離散特征之間交叉:就是類別特征之間通過笛卡爾積(或者笛卡爾積的一個子集)生成新的特征,通過特征交叉有時可以捕捉細致的信息,對模型預測起到很重要的作用。這里舉個例子,比如用用戶地域與視頻語言做交叉,大家肯定知道廣東人一般更喜歡看粵語劇,那么這個交叉特征對預測粵語視頻的點擊是非常有幫助的。類別交叉一般需要對業(yè)務有較好的理解,需要足夠多的領(lǐng)域知識,才可以構(gòu)建好的交叉特征。上面講的是 2 個類別特征的交叉,當然還可以做 3 個、4 個、甚至更多類別特征的交叉,兩個類別交叉最多可以產(chǎn)生這兩個類別基數(shù)的乘積這么多的新特征,所以交叉讓模型的維數(shù)爆炸性增長,增加了模型訓練的難度。同時,更多的特征需要更多的樣本來支撐,否則極容易過擬合。對于樣本量不夠多的場景,不建議采用超出 2 個類別的交叉,也不建議用 2 個基數(shù)特別大的類別進行特征交叉。
  • 離散特征與連續(xù)特征交叉:跟上面 4)中講的類似,我們也可以進行類別特征與數(shù)值特征之間的交叉,只不過這種交叉一般是統(tǒng)計某個類別具體值對應的數(shù)值特征的統(tǒng)計量(次數(shù)、和、均值、最值、方差等等)。拿電影的語言和用戶的年齡兩個特征交叉來說,我們可以分別統(tǒng)計看過語言是中文、英語等的電影中用戶的平均年齡。根據(jù)大家的經(jīng)驗,我們知道年輕人受教育程度高,英語會更好,所以看過英語電影的人的平均年齡比看中文的平均年齡低。這類特征的交叉也需要基于具體業(yè)務場景及領(lǐng)域知識來做,否則獲得的交叉特征可能無效,甚至導致模型引入噪音。對于有序離散特征,我們可以用 0、1、2、... 等自然數(shù)來為他們編碼,自然數(shù)的大小關(guān)系保證了它們之間的序關(guān)系。
  • 3.2.2 連續(xù)(數(shù)值)特征

    連續(xù)型數(shù)據(jù)是機器學習算法直接可以使用的數(shù)據(jù),對于連續(xù)型數(shù)據(jù),我們一般可以通過如下幾種方式來構(gòu)建特征:

  • 直接使用:機器學習算法是可以直接處理數(shù)值特征的,數(shù)值特征可能經(jīng)過上面一節(jié)講的特征預處理中的部分步驟再灌給模型使用。
  • 離散化:有時連續(xù)特征需要進行離散化處理,比如視頻在一段時間內(nèi)的播放量對于視頻點擊 CTR 預估可能是一個重要的特征,因為播放次數(shù)跟視頻的熱度有很強的相關(guān)性,但是如果不同視頻的播放次數(shù)的數(shù)量級相差巨大(實際情況確實是這樣,熱門視頻比冷門視頻播放量大若干個數(shù)量級),該特征就很難起作用(比如 LR 模型,模型往往只對比較大的特征值敏感)。對于這種情況,通常的解決方法是進行分桶。分桶操作可以看作是對數(shù)值變量的離散化,之后再進行 one-hot 編碼。分桶的數(shù)量和寬度可以根據(jù)業(yè)務知識和經(jīng)驗來確定,一般有三種分桶方式:(1) 等距分桶,每個桶的長度是固定的,這種方式適用于樣本分布比較均勻的情況;(2) 等頻分桶,即每個桶里樣本量一樣多,但也會出現(xiàn)特征值差異非常大的樣本被放在一個桶中的情況;(3) 模型分桶,使用模型找到最佳分桶,例如利用聚類的方式將特征分成多個類別,或者利用樹模型,這種非線性模型天生具有對連續(xù)型特征切分的能力,利用特征分割點進行離散化。分桶是離散化的常用方法,連續(xù)特征離散化是有一定價值的:離散化之后得到的稀疏向量,運算速度更快,計算結(jié)果易于存儲。離散化之后的特征對于異常值也具有更強的魯棒性。需要注意的是:(1) ?每個桶內(nèi)都有足夠多的樣本,否則不具有統(tǒng)計意義;(2) ?每個桶內(nèi)的樣本盡量分布均勻。
  • 特征交叉:對于連續(xù)特征 x、y,通過非線性函數(shù) f 的作用,我們將 z=f(x,y) 作為交叉特征,一般 f 可以是多項式函數(shù),最常用的交叉函數(shù)是 f=xy ,即兩個特征對應的值直接相乘。通過特征交叉可以為模塊提供更多的非線性,可以更細致地擬合輸入輸出之間的復雜關(guān)系,但非線性交叉讓模型計算處理變得更加困難。
  • 3.2.3?時空特征

    時間和地理位置也是兩類非常重要的特征,下面分別來說明怎么將它們轉(zhuǎn)化為模型特征。

    對于時間來說,一般有如下幾種轉(zhuǎn)換為特征的方式:

  • 轉(zhuǎn)化為數(shù)值:比如將時間轉(zhuǎn)化為從某個基準時間開始到該時間經(jīng)歷的秒數(shù)、天數(shù)、月數(shù)、年數(shù)等。用更大的單位相當于對小單位四舍五入(比如用到當前時間經(jīng)歷的年數(shù),那么不足一年的時間都忽略了)。
  • 將時間離散化:比如我們可以根據(jù)當前時間是不是節(jié)假日,將時間離散化為 0-1 二值(1 是假日,0 是工作日)。再比如如果我們構(gòu)建的模型是與周期性相關(guān)的,我們可能只需要取時間中的周幾這個量,那么時間就可以離散化為 0-6 七個數(shù)字(0 代表星期天,1 代表星期一,如此類推)。
  • 對于地理位置來說,我們有行政區(qū)劃表示,還有經(jīng)緯度表示,以及到某個固定點的距離等表示方式,下面分別說明。

  • 行政區(qū)劃表示:典型的是用戶所在地區(qū),因為地區(qū)是固定的,數(shù)量也是有限的,這時地理位置就轉(zhuǎn)化為離散特征了。
  • 經(jīng)緯度表示:地理位置也可以用經(jīng)緯度表示,這時每個位置就轉(zhuǎn)化為一個 2 維向量了(一個分量是經(jīng)度,另一個分量是緯度)。
  • 距離表示:對于像美團、滴滴這類基于 LBS 服務的產(chǎn)品,一般用商家或者司機到用戶的距離來表示位置,這時地理位置就轉(zhuǎn)化為一個一維的數(shù)值了。
  • 3.2.4?文本特征

    對于文本一般可以用 NLP 等相關(guān)技術(shù)進行處理轉(zhuǎn)化為數(shù)值特征。

    對于新聞資訊等文檔,可以采用 TF-IDF、LDA 等將每篇文檔轉(zhuǎn)化為一個高維的向量表示?;蛘呋?Word2Vec 等相關(guān)技術(shù)將整篇文檔嵌入(doc2vec)到一個低維的稠密向量空間。

    3.2.5?富媒體特征

    對于圖片、音頻、視頻等富媒體,一般也可以基于相關(guān)領(lǐng)域的技術(shù)獲得對應的向量表示,這種向量表示就可以作為富媒體的特征了。這里不細介紹,感興趣的讀者可以自行搜索學習。

    3.2.6?嵌入特征

    上面文本、富媒體中提到的嵌入技術(shù)是非常重要的一類提取特征的技術(shù),所謂嵌入,就是將高維空間的向量投影到低維空間,降低數(shù)據(jù)的稀疏性,減少維數(shù)災難,同時提升數(shù)據(jù)表達的魯棒性。隨著 Word2Vec 及深度學習技術(shù)的流行,嵌入特征越來越重要。

    標的物嵌入分為基于內(nèi)容的嵌入和基于行為的嵌入。前者使用標的物屬性信息(如視頻的標題、標簽、演職員、海報圖,視頻、音頻等信息),通過 NLP、CV、深度學習等技術(shù)生成嵌入向量。后者是基于用戶與標的物的交互行為數(shù)據(jù)生成嵌入,拿視頻來舉例,用戶在一段時間中前后點擊的視頻存在一定的相似性,通常會表現(xiàn)出對某類型視頻的興趣偏好,可能是同一個風格類別,或者是相似的話題等,因此我們將一段時間內(nèi)用戶點擊的視頻 id 序列作為訓練數(shù)據(jù)(id 可以類比 word,這個序列類比為一篇文檔),使用 skip-gram 模型學習視頻的嵌入特征。由于用戶點擊行為具有相關(guān)關(guān)系,因此得到的嵌入特征有很好的聚類效果,使得在特征空間中,同類目的視頻聚集在一起,相似類目的視頻在空間中距離相近。在電視貓的相似視頻推薦中,我們就是采用這種嵌入,并且聚類,將同一類別中的其他視頻作為相關(guān)推薦,效果還是非常好的。

    對于用戶嵌入,我們也可以有很多方法,下面是兩種比較基礎(chǔ)的方法。

    可以將一段時間內(nèi)用戶點擊過的視頻的平均嵌入特征向量作為該用戶的嵌入特征,這里的“平均”可以是簡單的算術(shù)平均,可以是 element-wise max,也可以是根據(jù)視頻的熱度和時間屬性等進行加權(quán)平均或者嘗試用 RNN 替換掉平均操作。我們可以通過選擇時間周期的長短來刻畫用戶的長期興趣嵌入和短期興趣嵌入。

    另外參考 YouTube 推薦系統(tǒng)(見參考文獻 6)的思路,我們可以把推薦問題等價為一個多類別分類問題,使用 softmax 損失函數(shù)學習一個 DNN 模型,最終預測在某一時刻某一上下文信息下用戶觀看的下一個視頻的類別,最后把訓練好的 DNN 模型最后一層隱含層輸出作為用戶的嵌入向量(參考第 12 章《深度學習在推薦系統(tǒng)中的應用》中 12.3.1 節(jié)的介紹)。

    3.3 特征選擇

    特征選擇是指從所有構(gòu)建的特征中選擇出一個子集,用于模型訓練與學習的過程。特征選擇不光要評估特征本身,更需要評估特征與模型的匹配度,評估特征對最終的預測目標的精準度的貢獻。特征沒有最好的,只有跟應用場景和模型合適的,特征選擇對于構(gòu)建機器學習應用是非常重要的一環(huán)。特征選擇主要有以下兩個目的:

    • 簡化模型,節(jié)省存儲和計算開銷,讓模型更易于理解和使用;
    • 減少特征數(shù)量、降維,改善通用性、降低過擬合的風險。

    知道了什么是特征選擇以及特征選擇的價值,下面我們提供進行特征選擇的具體方法,主要有基于統(tǒng)計量的方法和基于模型的方法。

    3.3.1 基于統(tǒng)計量選擇

    基于統(tǒng)計量選擇主要有如下幾種方式,我們分別介紹:

  • 選擇方差大的特征:方差反應了特征樣本的分布情況,我們可以分析特征的數(shù)據(jù)分布。分布均勻的特征,樣本之間差別不大,該特征不能很好區(qū)分不同樣本,而分布不均勻的特征,樣本之間有極大的區(qū)分度,因此通??梢赃x擇方差較大的特征,剔除掉方差變化小的特征。具體方差多大算大,可以事先計算出所有特征的方差,選擇一定比例(比如 20%)的方差大的特征,或者可以設(shè)定一個閾值,選擇方差大于閾值的特征。
  • 皮爾遜相關(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)性高的特征。如果兩個特征之間線性相關(guān)度的絕對值大,說明這兩個特征是有很強的相關(guān)關(guān)系的,我們沒必要都選擇,只需要選擇其中一個即可。
  • 覆蓋率:特征的覆蓋率是指訓練樣本中有多大比例的樣本具備該特征。我們首先計算每個特征的覆蓋率,覆蓋率很小的特征對模型的預測效果作用不大,可以剔除。
  • 假設(shè)檢驗:假設(shè)特征變量和目標變量之間相互獨立,選擇適當檢驗方法計算統(tǒng)計量,然后根據(jù)統(tǒng)計量做出統(tǒng)計推斷。例如對于特征變量為類別變量而目標變量為連續(xù)數(shù)值變量的情況,可以使用方差分析,對于特征變量和目標變量都為連續(xù)數(shù)值變量的情況,可以使用皮爾森卡方檢驗??ǚ浇y(tǒng)計量取值越大,特征相關(guān)性越高。
  • 互信息:在概率論和信息論中,互信息用來度量兩個變量之間的相關(guān)性?;バ畔⒃酱髣t表明兩個變量相關(guān)性越高,互信息為 0 時,兩個變量相互獨立。因此可以根據(jù)特征變量和目標變量之間的互信息來選擇互信息大的特征。
  • 3.3.2 基于模型選擇

    基于模型的特征選擇,可以直接根據(jù)模型參數(shù)來選擇,也可用子集選擇的思路選出特征的最優(yōu)組合。

  • 基于模型參數(shù):對于線性模型,可以直接基于模型系數(shù)大小來決定特征的重要程度。對于樹模型,如決策樹、梯度提升樹、隨機森林等,每一顆樹的生成過程,都對應了一個特征選擇的過程,在每次選擇分類節(jié)點時,都會選擇最佳分類特征來進行切分,重要的特征更有可能出現(xiàn)在樹生成早期的節(jié)點,作為分裂節(jié)點的次數(shù)也越多。因此,可以基于樹模型中特征出現(xiàn)次數(shù)等指標對特征重要性進行排序。如果我們想要得到稀疏特征或者說是對特征進行降維,可以在模型上主動使用正則化技術(shù)。使用 L1 正則,調(diào)整正則項的權(quán)重,基本可以得到任意維度的稀疏特征。
  • 子集選擇:基于模型,我們也可以用子集選擇的思路來選取特征。常見的有前向搜索和反向搜索兩種思路。如果我們先從 N 個特征中選出一個最好的特征,然后讓其余的 N-1 個特征分別與第一次選出的特征進行組合,從 N-1 個二元特征組合中選出最優(yōu)組合,然后在上次的基礎(chǔ)上,添加另一個新的特征,考慮 3 個特征的組合,依次類推,這種方法叫做前向搜索。反之,如果我們的目標是每次從已有特征中去掉一個特征,并從這些組合中選出最優(yōu)組合,這種方法就是反向搜索。如果特征數(shù)量較多、模型復雜,那么這種選擇的過程是非常耗時間和資源的。我們在后面講到的自動特征工程中會提到通過算法自動選特征的技術(shù)方案。
  • 3.4 特征評估

    所謂特征評估是在將特征灌入模型進行訓練之前,事先評估特征的價值,提前發(fā)現(xiàn)可能存在的問題,及時解決,避免將有問題的特征導入模型,導致訓練過程冗長而得不到好的結(jié)果。特征評估是對選擇好的特征進行整體評價,而不是特征選擇中所謂的對單個特征重要性的評判。特征評估包括特征的覆蓋率、特征的維度、定性分析和定量分析等幾種方式。

    特征的覆蓋率是指有多少比例的樣本可以構(gòu)建出相關(guān)特征,對于推薦系統(tǒng)來說,存在冷啟動用戶,因此對于新用戶,如果選擇的特征中包含從用戶行為中獲得的特征(新用戶沒有用戶行為,或者用戶行為很少),那么我們是無法為他構(gòu)建特征的,從而無法利用模型來為他進行推薦。

    特征的維度衡量的是模型的表達能力,維度越高,模型表達能力越強,這時就需要更多的樣本量和更多的計算資源、優(yōu)秀的分布式計算框架來支撐模型的訓練。為了達到較好的訓練效果,一般對于簡單模型可以用更多維度的特征,而對于復雜模型可以用更少的維度。

    定性分析是指構(gòu)建的特征是否跟用戶行為是沖突的,可以拿熟悉的樣本來做驗證,比如在視頻推薦中,可以根據(jù)自己的行為來定性驗證標簽的正確性。我個人最喜歡看恐怖電影,那么基于標簽構(gòu)建特征的話,那么對于我的樣本,在恐怖這個標簽上的權(quán)重應該是比其他標簽權(quán)重大的。

    定量分析,通過常用的離線評估指標,如 Precision、Recall、AUC 等等來驗證模型的效果,當然,最終需要上線做 AB 測試來看是否對核心用戶體驗、商業(yè)化指標有提升。

    關(guān)于特征工程的其他介紹讀者還可以參見參考文獻 1、2、3。參考文獻 8、9 也是兩篇比較好的關(guān)于特征工程的介紹文檔。另外,Spark 的 MLlib 中也集成了很多與特征工程相關(guān)的算子,參見參考文獻 10。scikit-learn 中也包含大量與數(shù)據(jù)處理、特征構(gòu)建、特征選擇相關(guān)的算子,參見參考文獻 11。

    四、常用推薦算法之數(shù)據(jù)與特征工程

    在本節(jié)我們基于 3 類主流的推薦產(chǎn)品形態(tài)來介紹與之相關(guān)的數(shù)據(jù)與特征工程。

    不同產(chǎn)品形態(tài)可以有不同的推薦算法實現(xiàn),我們會根據(jù)常用的推薦算法來說明需要什么樣的數(shù)據(jù),以及怎么基于這些數(shù)據(jù)通過特征工程來構(gòu)建特征用于推薦模型訓練。

    1、排行榜推薦

    排行榜推薦是非個性化推薦,也是最簡單的一類推薦算法,一般可以作為獨立產(chǎn)品或者作為其它個性化推薦算法的默認推薦。排行榜推薦一般只依賴于用戶行為數(shù)據(jù),根據(jù)用戶在過去一段時間(比如過去一周、一月、一年等)的操作行為和標的物自身相關(guān)的屬性特征,基于某個維度統(tǒng)計最受歡迎的標的物列表作為推薦列表。常用的有最新榜(這個是根據(jù)標的物上線時間來統(tǒng)計的)、最熱榜、收藏榜、熱銷榜等等。

    這類推薦算法也不需要什么復雜特征工程,只需要對數(shù)據(jù)進行簡單的統(tǒng)計處理就可以了,一般用 select sum(N) as num from Table group by sid where time between T1 and T2 order by num desc limit 100 這類 SQL 就可以搞定,這里 N 是標的物的播放量、銷量等,Table 是通過數(shù)據(jù)預處理生成的結(jié)構(gòu)化的表,sid 是標的物的唯一編碼 id,T1 和 T2 是時間戳)。需要注意的是,對于不同類別的標的物(如電影和電視劇),如果要混合排序的話,需要將統(tǒng)計量(如播放量)歸一化到同一個可比較的范圍中。

    2、標的物關(guān)聯(lián)標的物推薦

    標的物關(guān)聯(lián)標的物推薦,就是我們通常所說的關(guān)聯(lián)推薦,給每個標的物關(guān)聯(lián)一系列相關(guān)的標的物作為推薦列表。

    根據(jù)所使用算法不同,對數(shù)據(jù)源、數(shù)據(jù)處理及特征工程有不同的要求。下面分別介紹。

    2.1 基于內(nèi)容的關(guān)聯(lián)推薦

    如果是新聞資訊類標的物,一般我們可以用 TF-IDF 算法來向量化每篇新聞資訊,這樣就可以根據(jù)向量相似度來計算兩篇新聞資訊的相似度了。這時我們利用的數(shù)據(jù)就是標的物本身的文本信息,該算法也沒有復雜的特征工程,只需將所有新聞資訊進行分詞,構(gòu)建詞庫,剔除停用詞,得到最終所有詞的 corpora,對每篇新聞資訊利用 TF-IDF 算法獲得它們的向量表示,這個向量就可以認為是是最終的特征。

    當然也可以利用向量空間模型,將標的物的每一個屬性轉(zhuǎn)換為一個特征,進而獲得特征表示。如果標的物包含標簽信息,我們可以用每一個標簽表示一個特征,采用 one-hot 編碼的方式構(gòu)建特征表示。對于標的物是圖片、視頻、音頻等數(shù)據(jù),也可以采用嵌入技術(shù)構(gòu)建特征向量。

    對于基于內(nèi)容數(shù)據(jù)通過技術(shù)手段構(gòu)建標的物的向量表示,大家可以參考第 5 章《基于內(nèi)容的推薦算法》5.2.3 節(jié)“構(gòu)建標的物特征表示”來進行深入了解。

    2.2 基于協(xié)同過濾的關(guān)聯(lián)推薦

    傳統(tǒng)的 item-based 協(xié)同過濾,通過獲取用戶操作行為數(shù)據(jù),構(gòu)建用戶操作行為矩陣,該矩陣的每一列就是某個 item 的特征向量表示,基于該向量就可以根據(jù) cosine 余弦計算相似度。基于矩陣分解的協(xié)同過濾,也是通過用戶行為矩陣進行矩陣分解,獲得標的物特征矩陣,該矩陣的每一列就是標的物的特征表示。這兩類方法,只需要利用用戶行為數(shù)據(jù),獲得的標的物向量表示就是最終的特征,所以也不存在復雜的特征工程。具體讀者可以參見第 6 章《協(xié)同過濾推薦算法》和第 8 章《矩陣分解推薦算法》中相關(guān)章節(jié)的介紹。

    還有一種基于 item2vec 的方法基于用戶行為數(shù)據(jù)來獲得標的物的嵌入表示,也不需要進行復雜的特征工程,讀者參見第 11 章《嵌入方法在推薦系統(tǒng)中的應用》11.4.2 節(jié)中相關(guān)內(nèi)容。

    3、個性化推薦

    個性化推薦是業(yè)界最常用的一種推薦產(chǎn)品形態(tài),下面對常用個性化推薦算法來說明該算法所使用的數(shù)據(jù)集和相關(guān)特征工程方面的知識點。

    3.1 基于內(nèi)容的個性化推薦

    如果我們基于內(nèi)容算法獲得了每個標的物最相似的標的物列表,可以基于用戶的操作歷史記錄,采用類似基于 user-based 或者 item-based 這類線性加權(quán)的方式獲得用戶的推薦,或者根據(jù)用戶的操作歷史獲得用戶的嵌入向量表示(用戶操作過的標的物的向量表示的加權(quán)平均可以作為用戶的嵌入表示),通過計算用戶向量和標的物向量內(nèi)積來獲得用戶對標的物的評分,根據(jù)評分降序排序獲得最終給用戶的推薦列表。具體細節(jié)讀者可以參考第 5 章《基于內(nèi)容的推薦算法》5.2.4 節(jié)中相關(guān)介紹,這類算法只需要用戶操作行為數(shù)據(jù)及標的物相關(guān)數(shù)據(jù),只需要做簡單的數(shù)據(jù)預處理就可以,并不需要復雜的特征工程。

    3.2 基于協(xié)同過濾的個性化推薦

    常規(guī)的 user-based、item-based、矩陣分解協(xié)同過濾,只需要用戶行為數(shù)據(jù),經(jīng)過簡單的算法就可以獲得給用戶的推薦,不需要復雜的特征工程,讀者參見第 6 章《協(xié)同過濾推薦算法》和第 8 章《矩陣分解推薦算法》這兩篇文章相關(guān)介紹,這里不再贅述。

    3.3 基于多數(shù)據(jù)源構(gòu)建復雜特征的召回、排序模型

    上面我們提到的算法都是基于簡單規(guī)則或者人工假設(shè)的模型(如 user-based 協(xié)同過濾就假設(shè)相似的用戶具有相同的興趣愛好),基本不涉及到復雜的特征工程,我們都是一筆帶過。下面我們提到的推薦召回、排序模型,都是需要通過構(gòu)建復雜的特征來訓練的,這類算法有多種,比如經(jīng)典的 logistic 回歸、FM 算法,還有最近比較火的深度學習等。這里我們重點講解視頻場景中,用經(jīng)典的 logistic 回歸模型來做推薦排序中涉及到的特征工程相關(guān)的知識點,深度學習模型的特征工程我們在后面也會初略介紹。

    對于利用 logistic 模型來預測用戶對某個視頻的點擊率,樣本是用戶觀看過的視頻,每個用戶視頻對構(gòu)成一個樣本。這里正樣本是用戶點擊播放過的視頻(或者是播放時長超過一定時間的視頻),而負樣本可以是曝光給用戶但是用戶沒有點擊過的視頻(或者播放時間少于某個閾值的視頻)。

    這類構(gòu)建復雜特征來訓練召回模型的方法,需要盡可能多的數(shù)據(jù),才能構(gòu)建足夠多樣的特征,所以一般用戶行為數(shù)據(jù)、用戶特征數(shù)據(jù)、標的物特征數(shù)據(jù)、上下文數(shù)據(jù)等都會被使用到。下面分別對這 4 類數(shù)據(jù)構(gòu)建的特征進行簡單介紹。

    行為特征:視頻的播放時長、播放完整度、點贊、轉(zhuǎn)發(fā)、分享、搜索、評論、收藏等多種互動行為都與用戶的最終點擊有關(guān),都是可以構(gòu)建成特征的。另外,用戶登陸時間分布、觀看節(jié)目分布、觀看時段等也屬于行為特征。.

    用戶屬性特征:用戶年齡、性別、學習、收入、是否是會員、地域等屬于用戶自身的特性。

    節(jié)目屬性特征:是否是會員節(jié)目,是否獲獎,豆瓣得分,年代,是否高清(isHd),地區(qū),節(jié)目語言(language),上映時間(show_time)等。

    上下文特征(也叫做場景化特征):是否節(jié)假日、用戶所在路徑、用戶所在位置、請求時間、用戶手機品牌、手機型號、操作系統(tǒng)、當前網(wǎng)絡(luò)狀態(tài)(3g/4g/wifi)、硬件設(shè)備信息,當前版本、用戶渠道等都屬于上下文特征。

    基于上面這些信息,我們可以構(gòu)建 4 大類特征(基于 17.3.3 中特征工程相關(guān)知識點),形成如下面圖 8 的模型訓練樣本集合,通過特征構(gòu)建、特征選擇、訓練、離線評估等步驟我們最終可以獲得一個訓練好的 logistic 回歸模型。

    圖 8:構(gòu)建 logistic 模型及相關(guān)特征

    雖然深度學習模型只需要將原始數(shù)據(jù)通過簡單的向量化灌入模型,通過模型自動學習特征,最終獲得具備良好表達能力的神經(jīng)網(wǎng)絡(luò),確實可以大大節(jié)省人工特征工程的投入成本,但是,并不代表深度學習模型就不需要做特征工程了。特征工程是算法工程師在對要處理的問題和業(yè)務進行深度理解和深刻洞察后,構(gòu)建可以很好預測模型目標的強相關(guān)性因子(特征),從而更好地幫助模型學習數(shù)據(jù)背后的規(guī)律的一種方法,因此人工特征工程目前還是很難被算法直接取代的(雖然現(xiàn)在有很多自動化特征工程的技術(shù))。通過構(gòu)建好的的人工特征整合到深度學習模型中可以更好地發(fā)揮深度學習的價值。業(yè)界最出名的兩個深度學習推薦模型,YouTube 深度學習推薦系統(tǒng)和 Google 的 Wide & Deep 模型中就包含大量的人工特征工程的技巧,讀者可以參考第 12 章 12.3.1 和 12.3.2 這兩節(jié)的介紹。

    通過上面的介紹我們知道經(jīng)典的個性化推薦算法,如 item-based、user-based、矩陣分解、KNN 等屬于基于簡單規(guī)則(假設(shè))的模型,模型是我們?nèi)藶槭孪仍O(shè)定好的,比如利用內(nèi)積來表示相似度,某個樣本點最近的 K 個點的類別進行投票確定該點的類別,這類模型沒有需要學習的參數(shù)(KNN 和矩陣分解中的隱因子數(shù)量都是人為事先確定的,屬于超參數(shù)),這類算法只需要進行簡單的數(shù)據(jù)處理或者訓練就可以為用戶生成推薦,而包含大量參數(shù)的模型(如線性模型、FM、深度學習模型等)是需要進行復雜的特征工程的。

    五、推薦系統(tǒng)數(shù)據(jù)與特征工程未來趨勢

    伴隨科技的發(fā)展,互聯(lián)網(wǎng)技術(shù)滲透到了生活的方方面面,各類互聯(lián)網(wǎng)產(chǎn)品層出不窮,而產(chǎn)品所提供的信息和服務更是爆炸性增長,這其中非常重要的一個幫助用戶篩選、過濾信息的有效工具就是推薦系統(tǒng),推薦系統(tǒng)一定是未來產(chǎn)品的標配技術(shù),它一定會在更多的場景中得到應用。隨著深度學習、強化學習等更多更新的技術(shù)應用于推薦系統(tǒng),推薦的效果越來越好。隨著各類傳感器種類的豐富、交互方式的多樣化,我們可以收集到越來越多樣的數(shù)據(jù)。用戶對反饋及時性的強烈需要,推動互聯(lián)網(wǎng)產(chǎn)品更加實時地處理用戶的請求,為用戶提供更加實時化的交互體驗。從這些大的趨勢來看,推薦系統(tǒng)依賴的數(shù)據(jù)和特征工程處理技術(shù)也會面臨更多的變化與挑戰(zhàn),下面作者就基于自己的理解和判斷來說說在未來幾年推薦系統(tǒng)數(shù)據(jù)與特征工程的幾個重大變化和發(fā)展趨勢。

    1、融合更多的數(shù)據(jù)源來構(gòu)建更復雜的推薦模型

    數(shù)據(jù)是一切機器學習的基礎(chǔ),只有數(shù)據(jù)量夠多、質(zhì)量夠好,才可以構(gòu)建高質(zhì)量的推薦模型。我們在本章中總結(jié)了推薦系統(tǒng)四種數(shù)據(jù)源:行為數(shù)據(jù)、用戶屬性數(shù)據(jù)、物品屬性數(shù)據(jù)、上下文數(shù)據(jù)。每類數(shù)據(jù)的種類趨向于多樣化,拿行為數(shù)據(jù)來說,我們可以收集用戶在手機屏上的滑動幅度、滑動快慢、按壓力度等數(shù)據(jù),在車載系統(tǒng)或者智能音箱場景中可以收集用戶與機器的語音交互數(shù)據(jù),在 VR/AR 場景中我們可以收集用戶手勢、眼動、頭部轉(zhuǎn)動等各種信息,如果智能推薦未來拓展到這些場景中,那么無疑這些數(shù)據(jù)對構(gòu)建推薦系統(tǒng)是非常關(guān)鍵的。在社交場景中,用戶的社交關(guān)系數(shù)據(jù)對構(gòu)建推薦系統(tǒng)也是非常重要的。如果某個公司有多個 APP,那么用戶在多個 APP 上的行為可以聯(lián)合起來進行學習,構(gòu)建更好的推薦系統(tǒng)。

    隨著攝像頭等各種傳感器的在各類物聯(lián)網(wǎng)場景中的布局(當然包括在手機中),我們可以收集到更多的關(guān)于用戶和標的物相關(guān)視頻、圖像、語音相關(guān)信息,從這些信息中可以挖掘出非常多的有價值的特征(比如從人的聲紋中可以識別性別、年齡、情緒等)用于構(gòu)建推薦算法模型。交互方式的多樣化也讓我們可以收集到更多的上下文數(shù)據(jù)。

    總之,未來的推薦系統(tǒng)會依賴更多的數(shù)據(jù)源,整合更多的信息,獲得更多維度的特征,用于構(gòu)建更好的推薦算法模型。

    2、深度度學習等復雜技術(shù)減少人工特征工程的投入

    深度學習技術(shù)在很多應用場景下構(gòu)建的模型效果比傳統(tǒng)算法好很多,深度學習另外一個被大家稱道的優(yōu)點是可以減少人工特征工程的繁瑣投入,直接將較原始的數(shù)據(jù)灌入模型,讓深度模型自動學習輸入與輸出之間的復雜非線性關(guān)系。

    隨著深度學習技術(shù)在推薦系統(tǒng)中的應用逐步成熟,目前應用到了非常多的行業(yè)及場景中,獲得了非常好的效果。未來的趨勢是基于特定應用場景,基于多樣化數(shù)據(jù)構(gòu)建場景化的特殊深度網(wǎng)絡(luò)結(jié)構(gòu)來獲得更好的推薦效果。有了深度學習的加持,可以讓推薦算法工程師將更多的時間用于思考業(yè)務、構(gòu)建更加有效的模型上,而不是將大量精力放到構(gòu)建復雜的特征上,從而解放推薦算法工程師的雙手。這里是說深度學習可以減輕推薦算法工程師構(gòu)建特征工程的負擔,利用深度學習不需要做復雜特征工程就可以獲得比簡單模型復雜特征工程更好的效果,但特征工程是必要的,就如前面所述,構(gòu)建好的特征可以大大提升深度學習模型的效果。

    3 、實時數(shù)據(jù)處理與實時特征工程

    隨著社會的發(fā)展,人們的生活節(jié)奏加快(大城市尤其如此,中小城市也會朝這個趨勢發(fā)展),人們的時間會更加碎片化,怎樣更好地占領(lǐng)用戶的碎片化時間,是任何一個公司在開發(fā)產(chǎn)品過程中需要關(guān)注的重要問題。這種社會趨勢的出現(xiàn),導致了新聞資訊、短視頻應用的流行,在這些應用中用戶消費一個標的物的時間是非常短的(一般幾秒鐘到幾分鐘),在這類產(chǎn)品上構(gòu)建推薦服務這就要求推薦系統(tǒng)可以近實時響應用戶的需求,因此我們需要近實時收集處理數(shù)據(jù)、近實時構(gòu)建特征工程、近實時訓練算法模型、近實時響應用戶需求變化。這一趨勢一定是未來非常重要且非常難的一個方向。

    現(xiàn)在實時大數(shù)據(jù)處理技術(shù)(如 Kafka、Spark Streaming、Flink 等)和一些實時算法(如 FTRL)的發(fā)展,讓實時處理用戶行為數(shù)據(jù)、實時構(gòu)建特征和實時訓練模型變得可行。但是,這一領(lǐng)域還不夠成熟和完善,未來還有很長的路要走。

    4、自動化特征工程

    自動化機器學習(AutoML,全稱是 Automated Machine Learning,參考文獻 4 是一篇關(guān)于自動機器學習最近進展的綜述文章,參考文獻 5 是一篇關(guān)于利用深度學習技術(shù)做自動化特征的文章,參考文獻 14 是一篇關(guān)于自動化進行特征交叉的文章,讀者可以自行學習),是 2014 年以來,機器學習和深度學習領(lǐng)域最炙手可熱的研究方向之一。機器學習過程需要大量的人工干預,這些人工干預表現(xiàn)在:特征提取、模型選擇、參數(shù)調(diào)節(jié)等機器學習的各個環(huán)節(jié)。AutoML 試圖將這些與特征、模型、優(yōu)化、評價有關(guān)的重要步驟自動化,使得機器學習模型無需人工干預即可自動化地學習與訓練。微軟開源的框架 optuna(見參考文獻 16)是超參調(diào)優(yōu)自動化方面的一次很好的嘗試,該框架得到了業(yè)內(nèi)很多工程師的關(guān)注和贊譽。

    自動化特征工程也是 AutoML 研究中非常重要的一個子方向,在 AutoML 中,自動特征工程的目的是自動地發(fā)掘并構(gòu)造相關(guān)的特征,使得模型有更好的表現(xiàn)。除此之外,還包含一些特定的特征增強方法,例如特征選擇、特征降維、特征生成、以及特征編碼等。這些步驟的自動化目前都處于嘗試和探索階段,沒有完美的解決方案。

    雖然自動化特征工程目前是學術(shù)研究中非常火的一個方向,但目前還不夠成熟,也沒有非常有效的方法很好地應用于各類業(yè)務場景中。自動特征工程在真實業(yè)務場景中確實是一個比較強的需求,因為手動構(gòu)建特征工程需要很強的領(lǐng)域知識,需要懂機器學習的領(lǐng)域?qū)<覅⑴c,而既懂機器學習又對業(yè)務理解透徹的人畢竟是少數(shù)。對于提供機器學習服務的云計算公司或者 toB 創(chuàng)業(yè)公司,需要接觸到很多不同的行業(yè),也不可能為每個領(lǐng)域配備一批專家,因此也希望可以通過技術(shù)手段來做自動特征工程,以減少人力和資源的投入,加快項目的推進進度,在這方面國內(nèi)的明星創(chuàng)業(yè)公司第四范式做了很多嘗試。

    對于自動特征工程在推薦系統(tǒng)中的應用,讀者可以看看參考文獻 12、13,這兩篇文章中提供了很多很好的方法和思路。

    六、總結(jié)

    本文對推薦系統(tǒng)算法模型構(gòu)建過程中依賴的數(shù)據(jù)源進行了較全面的介紹,包括數(shù)據(jù)的種類、數(shù)據(jù)生成、數(shù)據(jù)預處理、數(shù)據(jù)存儲等,這些數(shù)據(jù)是構(gòu)建推薦模型的原料。

    在講解數(shù)據(jù)的基礎(chǔ)上,我們介紹了特征工程相關(guān)的概念和技術(shù),通過特征工程可以將數(shù)據(jù)轉(zhuǎn)化為推薦算法可以直接使用的特征,這時推薦算法才能夠發(fā)揮用武之地。

    同時,我們講解了常用的推薦算法是怎么使用數(shù)據(jù)和基于這些數(shù)據(jù)來構(gòu)建特征的,有了這些知識,我們可以更好、更全面地理解推薦業(yè)務全流程,而不僅僅只是知道算法。

    在最后,作者根據(jù)自己的經(jīng)驗和理解,對推薦系統(tǒng)在數(shù)據(jù)與特征工程的后續(xù)發(fā)展方向和面臨的挑戰(zhàn)上進行了探討,希望給讀者提供一定的方向性指導。

    推薦系統(tǒng)的數(shù)據(jù)與特征工程這塊知識是一般書本上很少講到但是在實際業(yè)務中非常重要的,期望本章可以讓讀者較全面地學習了解這方面的知識,并能學以致用。

    參考文獻

    1.?圖書:《精通特征工程》

    2.?圖書:《特征工程入門與實踐》

    2.?[特征工程到底是什么?] https://www.zhihu.com/question/29316149

    3.?[2019] Taking the Human out of Learning Applications- A Survey on Automated Machine Learning

    4.?[2019] AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks

    5.?[2016 YouTube] Deep Neural Networks for YouTube Recommendations

    6.?[2016 Google] Wide & Deep Learning for Recommender Systems

    7.?[淺談微視推薦系統(tǒng)中的特征工程] https://mp.weixin.qq.com/s/EgiSIJCRfiRLKwHUC1m46A

    8.?[如何解決特征工程,克服工業(yè)界應用 AI 的巨大難關(guān)] 如何解決特征工程,克服工業(yè)界應用 AI 的巨大難關(guān)_語言 & 開發(fā)_陳雨強_InfoQ精選文章

    9.?http://spark.apache.org/docs/latest/ml-features.html

    10.?https://scikit-learn.org/stable/data_transforms.html

    11.?[AutoML 在推薦系統(tǒng)中的應用] https://gitbook.cn/books/5bcd96da48da2b3b6ac43327/index.html

    12.?[羅遠飛:自動特征工程在推薦系統(tǒng)中的研究] https://zhuanlan.zhihu.com/p/98006452

    13.?[2019] AutoCross: Automatic Feature Crossing for Tabular Data in Real-World Applications

    14.?[圖書] 數(shù)據(jù)驅(qū)動:從方法到實踐

    15.?https://github.com/optuna/optuna

    推薦系統(tǒng)之數(shù)據(jù)與特征工程(二十三)_數(shù)據(jù)_數(shù)據(jù)與智能_InfoQ寫作社區(qū)

    總結(jié)

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

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