策略產品必知系列之一文詳解“特征工程”

1 評論 5055 瀏覽 21 收藏 17 分鐘

本篇文章作者分享策略產品在特征工程上需要了解的原則和工作方法。特征工程在推薦系統中至關重要,需要遵循幾個基本原則:包括正確理解問題背景和業務需求、理解數據和特征的含義、保證數據的穩定性和完整性等。希望通過本篇文章能對你有所幫助。

從策略產品的角度來審視特征工程,在算法工程師 & 策略產品屆有一句話叫做“Garbage in garbage out (垃圾進,垃圾出)”。這句話深刻的解釋了特征與數據對于深度學習模型的重要性。機器學習模型的能力邊界就在于對數據的擬合泛化,那么數據及其表達數據的特征就決定了起學習模型效果的上限。

數據與特征工程決定了模型的上限,改進算法只不過是逼近這個上限而已。

今天Arthur就給大家介紹一下關于推薦系統的特征工程,幫助大家從全貌了解策略產品在特征工程需要捻熟于心的關鍵原則工作方法。

本文分為上下兩篇,上篇主要提綱挈領的介紹特征工程的定義原則、重要特征類型以及常用的特征處理方法;下篇會著重的講解策略產品實用的特征數據處理的工作內容。

具體分為以下幾點講述:

  1. 什么是特征工程、特征工程的基本工作原則。
  2. 有哪些常用的特征類別。
  3. 常見的特征數據類型與處理辦法。
  4. 特征的選擇。

一、什么是特征工程、構建特征工程的基本原則是什么

特征工程(feature engineering)定義:特征的本質其實就是對某個行為過程相關信息的抽象表達

推薦過程某個行為必須轉化成某種數字形式才能被機器學習模型學習。所以為了完成這種轉化,就必須把這種行為過程的信息以特征形式抽取出來,用多個維度上的特征表達這一行為。

存在的問題:從具體行為轉化成抽象的特征,過程必然會造成信息損失。這個過程中具體有兩個問題:

  1. 因為具體的推薦行為和場景包含大量原始的場景、圖片和狀態信息,保存所有的信息存儲空間過大,現實中無法滿足。
  2. 具體的推薦場景也包含大量榮譽無用的信息,都考慮進來會損害模型的泛化能力。

特征工程構建基本原則:基于以上存在的問題,在特征工程構建中的基本原則為:盡可能讓特征工程抽取的一組特征能夠保留推薦環境以及用戶行為過程中的有用信息,盡量摒棄冗余信息。

舉個垂直場景推薦系統中具象化的例子便于大家理解,在推薦系統中對于書本推薦有哪些重要的因素呢?

Arthur枚舉了一下幾種類型:

推薦系統當中對于書本推薦的重要藝術

可以從上圖中看出,在抽取特征過程當中,必然存在信息的損失。例如“當時的心情”就從要素中被舍棄了;再比如,用戶觀看歷史推斷用戶偏好也會存在一定的信息丟失情況。

因此,在已有的、可獲取的數據基礎上,“盡量”保留有用信息是是實現特征工程的原則。

二、推薦系統常用的特征類別

推薦系統會使用到各個維度的特征信息。而不同的特征信息對于不同的推薦系統所帶來的增益效果大不相同,并且不同的業務抽取特征的時候權重也大相徑庭。

例如電商系統更加關注用戶的屬性特征、用戶點擊、加購商品類型,其中加購相對來說對于最終成交比點擊行為權重更大。而新聞推薦更加關注用戶關注的新聞類別,所在LBS的地域信息等等。

因此我將推薦系統的常用特征進行枚舉,提供大家在構建特征工程時候的選擇,該部分與之前介紹的定向類型有點相似。

1. 用戶行為數據類型

用戶行為數據是推薦系統最常用、也是最為關鍵的數據,因為用戶的潛在興趣、用戶對物品的真實評價都包含在用戶的行為歷史當中。

一般用戶行為特征包含顯性反饋行為(explicit feedback)隱性反饋行為(implicit feedback)。在不同業務場景中,用不同方式體現。

各業務場景中的顯性和隱性反饋行為

當前推薦系統的發展中,隱性反饋行為越來越重要,主要原因是顯性反饋的收集難度更大,數據量也比較小。在深度學習模型對于數據要求越來越大的背景下,如果只是用線性反饋的數據不足以支持推薦系統訓練過程中直到收斂。

所以,能夠反映用戶行為特點的隱性反饋行為是目前特征挖掘的重點。

2. 用戶關系數據類型

互聯網本質上是人和人、人和信息之間的鏈接。“物以類聚,人以群分”其實就是用戶關系數據最好的體現,同時也是推薦系統利用的有價值信息。

用戶關系類型分為“顯性”和“隱性”,又可以稱之為“強關系”與“弱關系”。

  • 強關系類型:用戶可以通過用戶之間的“關注”、“好友關系”,以及“通訊錄授權”建立“強關系”聯系。
  • 弱關系類型:通過“相互點贊”、“同處在一個社區”,甚至是“同看一部電影”來建立“弱關系”的聯系。

3. 屬性、標簽數據類型

屬性、標簽數據類型本質上都是直接描述用戶或者物品客觀特征。標簽和屬性的主體可以是用戶,也可以是物品,他們的來源非常多樣化。

大體上分為以下幾類:

用戶屬性、物品屬性以及標簽數據是屬于最重要的描述型數據。

成熟的公司會建立一套用戶和物品的標簽體系,有專門的團隊維護。典型的例子就是電商公司的商品分類體系,同樣這一套分類也會用于搜索召回策略中的實體識別當中。

阿里云中關于query詞的分類

在推薦系統當中使用屬性、標簽類數據,一般都是通過multi-hot編碼方式轉化成特征向量。一些重要的屬性標簽類特征也可以先轉化成Embedding,再輸入推薦模型。

4. 內容類數據

內容類型的數據可以看做是標簽類型的衍生,同樣也是描述用戶和物品的數據。但是相比較標簽數據,內容類型的數據往往都是大段的描述型文字、圖片,甚至是視頻。

一般來說,內容類數據無法直接轉化成推薦系統可以“消化”的特征,需要通過自然語言處理、計算機視覺等手段提取關鍵的內容特征,再輸入到推薦系統。

實體識別

例如,在圖片類、食品類或者帶有圖片的信息流場景中,往往會使用計算機視覺模型進行目標檢測,抽取圖片特征,再把特征轉化為標簽類數據提供給推薦系統。

5. 上下文Context信息數據

上下文信息表示的是描述推薦行為產生的場景信息。最常用的就是利用“時間”和通過GPS獲取到的“地點”信息。

根據推薦場景的不同,上下文信息的范圍非常的廣,包括地點、季節、時間、是否節假日、天氣濕度、社會大事件等等。

引入上下文信息的目的是盡可能保證推薦行為發生推薦場景的實時性

典型的例子是:在美團外賣APP場景中、臨近中午12-2點會推薦用戶愛吃的外賣食物,到了下午3-5點,可能用戶吃過飯了那么就會更加傾向于甜點、下午茶(奶茶、飲料等)。

如果不引用上下文特征,則推薦系統無法捕捉到這些有價值的實時信息。

6. 組合類特征

組合類特征指代將不同的特征類型進行組合后的得到的新特征。最常見的就是“年齡+性別”組成人口屬性分段特征(segment)。

在早期的推薦系統當中,推薦模型(比如說邏輯回歸LR)是不具備特征組合的能力。

隨著神對學習推薦系統的提出,組合類特征不一定通過人工組合、人工篩選的方法選出,還可以交給模型自行處理。

例如GBDT+LR的形式就是講特征工程模型化來處理。

三、常見的特征數據類型與特征處理方法

對于推薦系統來說,模型的輸入往往是數字組成的特征向量。有“年齡”、“播放時長”、“歷史點擊率CTR”這些可以由數字表達的特征,可以自然成為特征向量中的維度。

更多的特征來說,像是用戶的性別、觀看歷史也需要轉化成為數字特征向量。

因此需要從連續型特征和類別型特征兩個角度來介紹特征處理方法。

1. 連續型特征

連續型特征的典型例子就是用戶年齡、播放時長以及物品發布時間等統計類型特征。

對于這一類特征的處理,最常見的就是歸一化、離散化、加非線性函數等手段。

1)歸一化

統一各個特征的量綱,將連續值特征歸一到[0,1]之間。也可以做0均值的歸一化,即將原始數據歸一化為均值為0、方差為1的數據集。

  • 解決方案:將所有的數據映射到同一個尺度當中。
  • 最值歸一化:把所有的數據映射到0-1之間。

2)離散化

通過分位數的形式將原來的連續值進行分桶,最終形成離散值的過程

離散化的主要目的是放置連續紙帶來的過擬合現象以及特征值分布不均勻情況。

經過離散化處理的連續型特征和經過One-hot處理的類別型特征一樣,都是以特征向量的形式輸入特征模型當中的。

3)加非線性函數

加非線性函數的處理方法,就是直接把原來的特征通過非線性函數做變換,然后把原來的特征和變換后的特征一起加入模型進行訓練的過程。

加入非線性函數的目的為了更好的捕獲特征與優化目標之間的非線性關系。

常用的非線性函數包括以下幾類:

2. 類別型特征

類別型特征典型的例子:用戶歷史行為數據、屬性標簽類數據等。其原始表現為一個類別或者一個id。

這類特征最常用的方法就是使用one-hot編碼將其轉化成為一個數值向量,在one-hot編碼基礎上,面對同一個特征域或者非唯一類別選擇,還可以采用multi-hot編碼。

歷史行為序列類、標簽特征類數據來說,用戶往往會與多個物品產生交互行為,或者被打上多個同類別標簽,這是最常用的特征向量生成方式就是轉化為multi-hot編碼。

舉個例子,帶上網站共有1000個商品,用戶購買了其中10種,那么用戶的歷史行為就編程1000維的數值向量。其中僅有10個商品數值是1,其余的都是0,這就是multi-hot編碼。

對類別進行One-hot編碼或者是multi-hot編碼主要的問題就是特征向量的維度過大,特征過于稀疏的問題,這容易導致模型欠擬合,模型的權重參數的數量過多,導致模型收斂也會很慢。

所以在Embedding技術成熟之后,被廣泛應用在類別特征的處理之上?,F將類別特征編碼成稠密Embedding向量,再和其他的特征組合,最終形成輸入特征向量。

四、特征選擇

特征選擇是指為了構建模型而選擇相關特征子集的過程。特征選擇的目的有三個:

  1. 簡化模型。使模型更易于研究人員和用戶的理解。 可解釋性不僅讓我們對模型效果的穩定性有更多的把握,而且也能為業務運營等工作提供指引和決策支持。
  2. 改善性能。特征選擇的另一個作用就是節省存儲和計算QPS耗時開銷。
  3. 改善通用性。降低過擬合風險。 特征的增多會大大地增加模型的搜索空間,大多數模型所需要的訓練樣本數目隨著特征數量的增加而顯著增加,特征的增加雖然會更好的擬合訓練數據,但也可能增加方差。

特征選擇一般包括生產過程、評價函數、停止準則、驗證過程

為了進行特征選擇,我們首先需要產生特征或特征子集候選集合;其次需要衡量特征或特征子集的重要性或者好壞程度。

因此需要量化特征變量和目標變量之間的聯系以及特征之間的相互聯系。

為了避免過擬合,我們一般采用交叉驗證的方式來評估特征的好壞;為了減少計算復雜度,我們還需要設定一個閾值,當評價函數到達閾值后搜索停止;最后,我們需要在驗證數據集上驗證選出來的特征子集的有效性。

本文由 @策略產品Arthur 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 你好,這篇文章沒有下篇了嘛

    來自廣東 回復