策略產(chǎn)品必知系列之一文詳解“特征工程”
本篇文章作者分享策略產(chǎn)品在特征工程上需要了解的原則和工作方法。特征工程在推薦系統(tǒng)中至關(guān)重要,需要遵循幾個基本原則:包括正確理解問題背景和業(yè)務(wù)需求、理解數(shù)據(jù)和特征的含義、保證數(shù)據(jù)的穩(wěn)定性和完整性等。希望通過本篇文章能對你有所幫助。
從策略產(chǎn)品的角度來審視特征工程,在算法工程師 & 策略產(chǎn)品屆有一句話叫做“Garbage in garbage out (垃圾進,垃圾出)”。這句話深刻的解釋了特征與數(shù)據(jù)對于深度學(xué)習(xí)模型的重要性。機器學(xué)習(xí)模型的能力邊界就在于對數(shù)據(jù)的擬合和泛化,那么數(shù)據(jù)及其表達數(shù)據(jù)的特征就決定了起學(xué)習(xí)模型效果的上限。
數(shù)據(jù)與特征工程決定了模型的上限,改進算法只不過是逼近這個上限而已。
今天Arthur就給大家介紹一下關(guān)于推薦系統(tǒng)的特征工程,幫助大家從全貌了解策略產(chǎn)品在特征工程需要捻熟于心的關(guān)鍵原則和工作方法。
本文分為上下兩篇,上篇主要提綱挈領(lǐng)的介紹特征工程的定義原則、重要特征類型以及常用的特征處理方法;下篇會著重的講解策略產(chǎn)品實用的特征數(shù)據(jù)處理的工作內(nèi)容。
具體分為以下幾點講述:
- 什么是特征工程、特征工程的基本工作原則。
- 有哪些常用的特征類別。
- 常見的特征數(shù)據(jù)類型與處理辦法。
- 特征的選擇。
一、什么是特征工程、構(gòu)建特征工程的基本原則是什么
特征工程(feature engineering)定義:特征的本質(zhì)其實就是對某個行為過程相關(guān)信息的抽象表達。
推薦過程某個行為必須轉(zhuǎn)化成某種數(shù)字形式才能被機器學(xué)習(xí)模型學(xué)習(xí)。所以為了完成這種轉(zhuǎn)化,就必須把這種行為過程的信息以特征形式抽取出來,用多個維度上的特征表達這一行為。
存在的問題:從具體行為轉(zhuǎn)化成抽象的特征,過程必然會造成信息損失。這個過程中具體有兩個問題:
- 因為具體的推薦行為和場景包含大量原始的場景、圖片和狀態(tài)信息,保存所有的信息存儲空間過大,現(xiàn)實中無法滿足。
- 具體的推薦場景也包含大量榮譽無用的信息,都考慮進來會損害模型的泛化能力。
特征工程構(gòu)建基本原則:基于以上存在的問題,在特征工程構(gòu)建中的基本原則為:盡可能讓特征工程抽取的一組特征能夠保留推薦環(huán)境以及用戶行為過程中的有用信息,盡量摒棄冗余信息。
舉個垂直場景推薦系統(tǒng)中具象化的例子便于大家理解,在推薦系統(tǒng)中對于書本推薦有哪些重要的因素呢?
Arthur枚舉了一下幾種類型:
推薦系統(tǒng)當(dāng)中對于書本推薦的重要藝術(shù)
可以從上圖中看出,在抽取特征過程當(dāng)中,必然存在信息的損失。例如“當(dāng)時的心情”就從要素中被舍棄了;再比如,用戶觀看歷史推斷用戶偏好也會存在一定的信息丟失情況。
因此,在已有的、可獲取的數(shù)據(jù)基礎(chǔ)上,“盡量”保留有用信息是是實現(xiàn)特征工程的原則。
二、推薦系統(tǒng)常用的特征類別
推薦系統(tǒng)會使用到各個維度的特征信息。而不同的特征信息對于不同的推薦系統(tǒng)所帶來的增益效果大不相同,并且不同的業(yè)務(wù)抽取特征的時候權(quán)重也大相徑庭。
例如電商系統(tǒng)更加關(guān)注用戶的屬性特征、用戶點擊、加購商品類型,其中加購相對來說對于最終成交比點擊行為權(quán)重更大。而新聞推薦更加關(guān)注用戶關(guān)注的新聞類別,所在LBS的地域信息等等。
因此我將推薦系統(tǒng)的常用特征進行枚舉,提供大家在構(gòu)建特征工程時候的選擇,該部分與之前介紹的定向類型有點相似。
1. 用戶行為數(shù)據(jù)類型
用戶行為數(shù)據(jù)是推薦系統(tǒng)最常用、也是最為關(guān)鍵的數(shù)據(jù),因為用戶的潛在興趣、用戶對物品的真實評價都包含在用戶的行為歷史當(dāng)中。
一般用戶行為特征包含顯性反饋行為(explicit feedback)和隱性反饋行為(implicit feedback)。在不同業(yè)務(wù)場景中,用不同方式體現(xiàn)。
各業(yè)務(wù)場景中的顯性和隱性反饋行為
當(dāng)前推薦系統(tǒng)的發(fā)展中,隱性反饋行為越來越重要,主要原因是顯性反饋的收集難度更大,數(shù)據(jù)量也比較小。在深度學(xué)習(xí)模型對于數(shù)據(jù)要求越來越大的背景下,如果只是用線性反饋的數(shù)據(jù)不足以支持推薦系統(tǒng)訓(xùn)練過程中直到收斂。
所以,能夠反映用戶行為特點的隱性反饋行為是目前特征挖掘的重點。
2. 用戶關(guān)系數(shù)據(jù)類型
互聯(lián)網(wǎng)本質(zhì)上是人和人、人和信息之間的鏈接。“物以類聚,人以群分”其實就是用戶關(guān)系數(shù)據(jù)最好的體現(xiàn),同時也是推薦系統(tǒng)利用的有價值信息。
用戶關(guān)系類型分為“顯性”和“隱性”,又可以稱之為“強關(guān)系”與“弱關(guān)系”。
- 強關(guān)系類型:用戶可以通過用戶之間的“關(guān)注”、“好友關(guān)系”,以及“通訊錄授權(quán)”建立“強關(guān)系”聯(lián)系。
- 弱關(guān)系類型:通過“相互點贊”、“同處在一個社區(qū)”,甚至是“同看一部電影”來建立“弱關(guān)系”的聯(lián)系。
3. 屬性、標簽數(shù)據(jù)類型
屬性、標簽數(shù)據(jù)類型本質(zhì)上都是直接描述用戶或者物品客觀特征。標簽和屬性的主體可以是用戶,也可以是物品,他們的來源非常多樣化。
大體上分為以下幾類:
用戶屬性、物品屬性以及標簽數(shù)據(jù)是屬于最重要的描述型數(shù)據(jù)。
成熟的公司會建立一套用戶和物品的標簽體系,有專門的團隊維護。典型的例子就是電商公司的商品分類體系,同樣這一套分類也會用于搜索召回策略中的實體識別當(dāng)中。
阿里云中關(guān)于query詞的分類
在推薦系統(tǒng)當(dāng)中使用屬性、標簽類數(shù)據(jù),一般都是通過multi-hot編碼方式轉(zhuǎn)化成特征向量。一些重要的屬性標簽類特征也可以先轉(zhuǎn)化成Embedding,再輸入推薦模型。
4. 內(nèi)容類數(shù)據(jù)
內(nèi)容類型的數(shù)據(jù)可以看做是標簽類型的衍生,同樣也是描述用戶和物品的數(shù)據(jù)。但是相比較標簽數(shù)據(jù),內(nèi)容類型的數(shù)據(jù)往往都是大段的描述型文字、圖片,甚至是視頻。
一般來說,內(nèi)容類數(shù)據(jù)無法直接轉(zhuǎn)化成推薦系統(tǒng)可以“消化”的特征,需要通過自然語言處理、計算機視覺等手段提取關(guān)鍵的內(nèi)容特征,再輸入到推薦系統(tǒng)。
實體識別
例如,在圖片類、食品類或者帶有圖片的信息流場景中,往往會使用計算機視覺模型進行目標檢測,抽取圖片特征,再把特征轉(zhuǎn)化為標簽類數(shù)據(jù)提供給推薦系統(tǒng)。
5. 上下文Context信息數(shù)據(jù)
上下文信息表示的是描述推薦行為產(chǎn)生的場景信息。最常用的就是利用“時間”和通過GPS獲取到的“地點”信息。
根據(jù)推薦場景的不同,上下文信息的范圍非常的廣,包括地點、季節(jié)、時間、是否節(jié)假日、天氣濕度、社會大事件等等。
引入上下文信息的目的是盡可能保證推薦行為發(fā)生推薦場景的實時性。
典型的例子是:在美團外賣APP場景中、臨近中午12-2點會推薦用戶愛吃的外賣食物,到了下午3-5點,可能用戶吃過飯了那么就會更加傾向于甜點、下午茶(奶茶、飲料等)。
如果不引用上下文特征,則推薦系統(tǒng)無法捕捉到這些有價值的實時信息。
6. 組合類特征
組合類特征指代將不同的特征類型進行組合后的得到的新特征。最常見的就是“年齡+性別”組成人口屬性分段特征(segment)。
在早期的推薦系統(tǒng)當(dāng)中,推薦模型(比如說邏輯回歸LR)是不具備特征組合的能力。
隨著神對學(xué)習(xí)推薦系統(tǒng)的提出,組合類特征不一定通過人工組合、人工篩選的方法選出,還可以交給模型自行處理。
例如GBDT+LR的形式就是講特征工程模型化來處理。
三、常見的特征數(shù)據(jù)類型與特征處理方法
對于推薦系統(tǒng)來說,模型的輸入往往是數(shù)字組成的特征向量。有“年齡”、“播放時長”、“歷史點擊率CTR”這些可以由數(shù)字表達的特征,可以自然成為特征向量中的維度。
更多的特征來說,像是用戶的性別、觀看歷史也需要轉(zhuǎn)化成為數(shù)字特征向量。
因此需要從連續(xù)型特征和類別型特征兩個角度來介紹特征處理方法。
1. 連續(xù)型特征
連續(xù)型特征的典型例子就是用戶年齡、播放時長以及物品發(fā)布時間等統(tǒng)計類型特征。
對于這一類特征的處理,最常見的就是歸一化、離散化、加非線性函數(shù)等手段。
1)歸一化
統(tǒng)一各個特征的量綱,將連續(xù)值特征歸一到[0,1]之間。也可以做0均值的歸一化,即將原始數(shù)據(jù)歸一化為均值為0、方差為1的數(shù)據(jù)集。
- 解決方案:將所有的數(shù)據(jù)映射到同一個尺度當(dāng)中。
- 最值歸一化:把所有的數(shù)據(jù)映射到0-1之間。
2)離散化
通過分位數(shù)的形式將原來的連續(xù)值進行分桶,最終形成離散值的過程。
離散化的主要目的是放置連續(xù)紙帶來的過擬合現(xiàn)象以及特征值分布不均勻情況。
經(jīng)過離散化處理的連續(xù)型特征和經(jīng)過One-hot處理的類別型特征一樣,都是以特征向量的形式輸入特征模型當(dāng)中的。
3)加非線性函數(shù)
加非線性函數(shù)的處理方法,就是直接把原來的特征通過非線性函數(shù)做變換,然后把原來的特征和變換后的特征一起加入模型進行訓(xùn)練的過程。
加入非線性函數(shù)的目的為了更好的捕獲特征與優(yōu)化目標之間的非線性關(guān)系。
常用的非線性函數(shù)包括以下幾類:
2. 類別型特征
類別型特征典型的例子:用戶歷史行為數(shù)據(jù)、屬性標簽類數(shù)據(jù)等。其原始表現(xiàn)為一個類別或者一個id。
這類特征最常用的方法就是使用one-hot編碼將其轉(zhuǎn)化成為一個數(shù)值向量,在one-hot編碼基礎(chǔ)上,面對同一個特征域或者非唯一類別選擇,還可以采用multi-hot編碼。
歷史行為序列類、標簽特征類數(shù)據(jù)來說,用戶往往會與多個物品產(chǎn)生交互行為,或者被打上多個同類別標簽,這是最常用的特征向量生成方式就是轉(zhuǎn)化為multi-hot編碼。
舉個例子,帶上網(wǎng)站共有1000個商品,用戶購買了其中10種,那么用戶的歷史行為就編程1000維的數(shù)值向量。其中僅有10個商品數(shù)值是1,其余的都是0,這就是multi-hot編碼。
對類別進行One-hot編碼或者是multi-hot編碼主要的問題就是特征向量的維度過大,特征過于稀疏的問題,這容易導(dǎo)致模型欠擬合,模型的權(quán)重參數(shù)的數(shù)量過多,導(dǎo)致模型收斂也會很慢。
所以在Embedding技術(shù)成熟之后,被廣泛應(yīng)用在類別特征的處理之上?,F(xiàn)將類別特征編碼成稠密Embedding向量,再和其他的特征組合,最終形成輸入特征向量。
四、特征選擇
特征選擇是指為了構(gòu)建模型而選擇相關(guān)特征子集的過程。特征選擇的目的有三個:
- 簡化模型。使模型更易于研究人員和用戶的理解。 可解釋性不僅讓我們對模型效果的穩(wěn)定性有更多的把握,而且也能為業(yè)務(wù)運營等工作提供指引和決策支持。
- 改善性能。特征選擇的另一個作用就是節(jié)省存儲和計算QPS耗時開銷。
- 改善通用性。降低過擬合風(fēng)險。 特征的增多會大大地增加模型的搜索空間,大多數(shù)模型所需要的訓(xùn)練樣本數(shù)目隨著特征數(shù)量的增加而顯著增加,特征的增加雖然會更好的擬合訓(xùn)練數(shù)據(jù),但也可能增加方差。
特征選擇一般包括生產(chǎn)過程、評價函數(shù)、停止準則、驗證過程。
為了進行特征選擇,我們首先需要產(chǎn)生特征或特征子集候選集合;其次需要衡量特征或特征子集的重要性或者好壞程度。
因此需要量化特征變量和目標變量之間的聯(lián)系以及特征之間的相互聯(lián)系。
為了避免過擬合,我們一般采用交叉驗證的方式來評估特征的好壞;為了減少計算復(fù)雜度,我們還需要設(shè)定一個閾值,當(dāng)評價函數(shù)到達閾值后搜索停止;最后,我們需要在驗證數(shù)據(jù)集上驗證選出來的特征子集的有效性。
本文由 @策略產(chǎn)品Arthur 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
你好,這篇文章沒有下篇了嘛