「推薦系統中的特徵工程」1. 特徵工程基礎知識介紹

資料與智慧

出版了專著「構建企業級推薦系統:演算法、工程實現與案例分析」。每週輸出7篇推薦系統、資料分析、大資料、AI原創文章。「資料與智慧」(同名影片號、知乎、頭條、B站、快手、抖音、小紅書等自媒體平臺號) 社群,聚焦資料、智慧領域的知識分享與傳播。

作者 | gongyouliu

編輯 | auroral-L

全文共6858字,預計閱讀35分鐘。

本章目錄

一、特徵的基本概念

二、特徵工程介紹

三、特徵工程的基本思路和方法

1。 根據不同資料型別來構建特徵

2。 構建特徵的流程和步驟

四、構建特徵的基本原則

1。 能用簡單的模型先用簡單的模型

2。 特徵不是越多越好,需要挖掘能夠代表事物本質的特徵

3。 儘量選擇從多個維度來描述事物的特徵

4。 特徵之間要儘量獨立

5。 平衡構建特徵的成本和收益

五、特徵工程的難點與挑戰

1。 特徵工程依賴所獲得的資料

2。 特徵是模型、領域相關的

3。 資料來源的複雜多樣性

4。 應用場景的限制

總結

我們知道自然界中的萬事萬物都是演化發展的。宇宙經過億萬年的演化,形成了當今浩瀚的空間。地球作為無垠宇宙中的一個不起眼而又特別的星球,在這億萬年的進化中出現了生命的奇蹟,而人作為這一進化鏈條中最高階的物種,不過3億年(人類是從一種3億多年前漫遊在海洋中的史前鯊魚演化而來的,參見百度百科)。

生命作為一個有機體,是可以感受外界的刺激並對外界的刺激做出反應的。正是這種對外界的感受、反饋能力,讓生命體可以更好地生存繁衍。人類作為地球上(或許是宇宙中)最高階的生命體,我們的感受力更強,我們除可以直接感受外界的物理刺激,還有內在的情感感受。

人類的感受往往是透過我們的身體器官來識別的。所謂的七情六慾,就是我們身體器官對外界或者內心的直接或者潛意識反饋。眼、耳、鼻、口、手、面板、大腦等身體器官都可以感受到外界和內在的各種刺激。所有這些刺激對我們產生的影響,我們會以特定的方式識別和記憶。

當我們用眼睛觀察外面的世界時,我們可以看見五顏六色、多姿多彩的世界,我們可以看到物體的長度、大小、顏色、形狀、質地、紋理等;當我們品嚐美味的食物時,我們可以感受到酸甜苦辣。當我們用手觸控東西時,我們可以感受到光滑、柔軟、堅硬、冰涼等;當我們用耳朵聽聲音時,可以感受到輕柔、悅耳、嘈雜等;當我們用鼻子聞味道時,我們可以聞到花香、食物的香氣、腐爛物體的臭味;當我們跟別人相處時,我們內心可以感受到和諧、平靜、不安、躁動、快樂、痛苦等。

我們就是利用我們的身體器官去感受外界事物的,不同的器官對物體的不同方面進行識別,透過這些感受我們在大腦中留下了對這些事物的記憶。事物不同維度的特性(比如上面提到的形狀、大小、顏色、質地、氣味、味道等)就是事物的不同

特徵

,正是這些特徵讓我們可以識別、理解和認識這個世界。人類的感覺器官對外界的刺激進行處理轉化為人類大腦可以識別的物件的處理過程,就是

特徵處理

人的成長過程可以看成是一個不斷學習的過程,我們從嬰幼兒開始就不斷接觸外界,透過不斷地感受外界的刺激、與外界的互動,我們可以更好地認識理解這個世界。這些理解就沉澱為我們獲得的知識與技能,這樣以後遇到類似的事物或者環境,我們可以更好地做出正確的反饋(比如我們知道顏色鮮豔的毛毛蟲是有毒的,觸控它,我們會受傷,小時候如果我們有觸控的慘痛教訓,以後在遇到時,我們就會躲得遠遠的),從而更好地在這個複雜的世界上生存下來。

機器學習的學習過程可以看成人類學習、認識世界的等價體。機器學習模型學習的資料等價於人類感受到的各種外界刺激。我們需要對資料進行處理(特徵工程),形成合適的資料結構,以便機器學習模型可以更好地利用這些資料,這個處理過程就類似於人類的身體器官對外界刺激的識別與反饋,處理好後的資料機器學習模型就可以直接使用了。而構建機器學習模型的過程就類似於人類對外界的理解學習過程。訓練好的模型就類似於人類在成長過程中獲得的對外界的理解和認識。機器學習模型做推斷的過程就類似於人類透過學習到的認知對未知事物進行處理反饋的過程。

有了上面的介紹,我們就可以更好地理解這篇文章中講解的機器學習中的特徵與特徵工程相關的知識了。那麼,下面我們就從特徵的基本概念、特徵工程介紹、特徵工程的基本思路和方法、構建特徵的基本原則、特徵工程的難點與挑戰等5個方面來展開介紹。

一、特徵的基本概念

特徵

Feature

)是對事物某種特性的描述,是建立在原始資料之上的特定表示,它是一個可識別的屬性。日常生活中的很多事物我們都可以用二維表格來表示(這就是為什麼Excel這麼通用的原因),我們收集到的資料同樣也可以用二維表格表示,那麼通常特徵就對應這種表示中的某一列。對於一個通用的二維資料集,每個觀測值由一行表示,每個特徵由一列表示,對於每一個觀測具有一個特定的值。下面圖1就是使用者基本屬性表,其中每一列就是一個特徵,其中年齡、身高、體重是數值的,是數值特徵,數值特徵也叫做連續特徵,而性別是用文字描述的,並且只有男女兩種取值,是離散特徵。

「推薦系統中的特徵工程」1. 特徵工程基礎知識介紹

圖1:使用者屬性特徵

透過上面的簡單介紹,我們知道了什麼是特徵,知道有連續特徵和離散特徵,那麼特徵具體怎麼分類呢?一般從特徵的取值型別可以分為5類:

(1) 離散特徵

離散特徵一般分為類別特徵和有序特徵,類別之間是無序關係的, 比如性別,有序特徵之間是有序關係的,比如收入的低、中、高三個等級,之間是有序的。

(2) 連續(數值)特徵

能夠用實數或者整數等數值度量的特徵就是連續特徵,比如身高、透過演算法獲得的嵌入特徵等都屬於連續特徵。

(3) 時空特徵

在某些模型中時間是非常重要的特徵,時間一般是相對的,具有周期性。對基於地理位置的服務,位置是非常重要的特徵,位置也可能跟使用者的行為有關(如東北地區的喜歡看二人轉),地理位置可以用行政區劃的層級關係表示,也可以用相對距離來表示。

(4) 文字特徵

文字是非常重要的一類資料,我們可以從文字中抽提特徵,比如利用TF-IDF等獲得的特徵,文字特徵一般可以透過轉化為向量來表示。

(5) 富媒體特徵

包括從圖片、影片、音訊、HTML、XML、Json,甚至程式語言等富媒體中抽提的特徵,這些特徵也一般用數值向量來表示。

從特徵的可解釋性來分類,可以分為顯式特徵和隱式特徵:

(1) 顯示特徵

顯示特徵是具有實際意義的特徵,人們可以理解,可以用語言來說明和解釋。類別、數值、時空、TF-IDF、LDA等特徵都屬於這一類。

(2) 隱式特徵

隱式特徵是不具備實際意義,難於在現實中找到對應的特徵,一般透過演算法生成的嵌入特徵都屬於這一類,如word2vec、矩陣分解等模型生成的嵌入特徵。

這裡我們從兩個維度簡單介紹了一下特徵的分類,我們在第二篇的第3章還會更細緻、從更多的維度來講解特徵的概念。

講完了什麼是特徵,特徵的兩種分類方法及對應不同特徵的介紹,那麼大家肯定會關心特徵怎麼轉化為機器學習模型可以識別和處理的物件,有什麼方法和技巧,這就是下面一節要解決的問題。

二、特徵工程介紹

特徵工程

Feature Engineering

)是將原始資料轉化為特徵的過程,這些特徵可以很好地測量或者描述輸入輸出之間的內在關係,透過這些特徵來構建數學模型,從而提高模型對未知資料預測的準確性。特徵工程在整個機器學習模型生命週期中所處的階段見下面圖2。

「推薦系統中的特徵工程」1. 特徵工程基礎知識介紹

圖2:特徵工程在機器學習建模中所處的階段

絕大多數機器學習模型一般只能處理數值特徵(這不是絕對的,比如樹模型就可以處理非數值特徵),特徵工程的主要目的就是將原始的特徵轉變為數值形式,並且處理的過程也需要保證獲得的特徵可以更好地度量事物的屬性,這樣機器學習才可以更好學習事物內在的規律和特性。

特徵工程一般包括對原始資料的預處理、特徵構建、特徵篩選、特徵評估等多個環節 ,每個環節都有對應的方法和策略,我們會在下面進行簡單介紹,第二章會詳細講解這些知識點,這裡不贅述。

特徵工程在整個機器學習流程中是非常重要的一環,有很多枯燥、繁雜的工作需要處理,看起來不那麼高大上,並且很多特徵工程的技巧是需要經驗積累的,也是領域相關的(不同領域有自己的一套做特徵工程的獨特的方法和思路),我們這本書主要講解的就是在推薦系統中怎麼去做特徵工程。特徵工程的質量往往直接決定了機器學習的最終效果,在機器學習圈有一句很出名的話很好地說出了特徵工程的價值,這句話大致意思是“特徵工程的好壞決定了機器學習能力的上限,而演算法和模型只是無限逼近這個上限”。

三、特徵工程的基本思路和方法

特徵工程是一個偏工程實踐的領域,需要非常多的經驗積累,更需要對建模的問題有很好的理解和把握。下面我們從2個維度來概述構建特徵工程的基本思路和方法。這裡我們不會細講,只是概述大致的思路,具體的講解我們會放到第二篇和第三篇中。這裡主要的目的是讓讀者有一個大致的認知,方便後面系列文章的學習。

1. 根據不同資料型別來構建特徵

我們在第一部分特徵的基本概念中講到特徵可以分為離散特徵、數值特徵、文字特徵、時空特徵、富媒體特徵。不同資料型別的儲存、表示、處理方式都是不一樣的,因而基於這些資料構建特徵的方式也不一樣。所以我們可以根據資料形式的不同來採用不同的方法來構建特徵。我們會在第二篇第5章來講解針對不同形式的資料構建特徵的一般方法和思路,這裡不贅述。

2. 構建特徵的流程和步驟

為機器學習模型構建特徵,構建完了特徵不代表事情結束,我們還需要保證特徵是合適的,是有價值的,可以讓模型獲得很好的效果。一般來說,構建特徵的過程是一個閉環的體系,我們需要不斷迭代,獲得最適合具體模型和問題(即我們期望用機器學習解決的問題,比如推薦、風控等)的特徵,讓模型獲得更好的業務價值。

「推薦系統中的特徵工程」1. 特徵工程基礎知識介紹

圖3:構建特徵的流程

上面圖3就是構建特徵的一般步驟。下面我們對各個步驟進行的工作進行簡單介紹,更具體、細緻的介紹我們會在第二篇的第4、5、6、7章中展開。

√ 資料預處理

我們構建的特徵的原材料就是我們收集的資料。資料預處理這一步就是對收集的資料進行適當的處理,包括剔除掉髒資料,補全缺失的欄位,對異常值進行處理,將資料轉化為合適的量綱等操作。我們會在第4章詳細講解各種方法和策略。

√ 特徵構建

特徵構建這一步是最重要的一步,這一步就是從處理好的資料中構建出適合機器學習模型訓練處理的特徵的過程。一般會根據不同的資料型別採用不同的方法來構建。針對不同的模型和應用場景也會有獨特的要求和方法。這一塊我們會在第5章詳細展開。

√ 特徵選擇

所謂特徵選擇,就是從構建的所有特徵中選擇最合適模型的特徵。合適的特徵一般能夠起到提升模型的度量指標(如點選率、人均播放時長、轉化率等)、減少模型的複雜度等作用。

特徵選擇可以根據特徵之間的相關性進行選擇,也可以結合特徵加入或者剔除出模型對模型效果的影響這種方式去選擇。總之,有很多種選擇特徵的策略和方法,我們會在第6章詳盡地介紹。

√ 特徵評估

所謂特徵評估是在將特徵灌入模型進行訓練之前,事先評估特徵的價值,提前發現可能存在的問題,及時解決,避免將有問題的特徵匯入模型,導致訓練過程冗長而得不到好的結果。特徵評估是對選擇好的特徵進行整體評價,而不是特徵選擇中所謂的對單個特徵重要性的評判。特徵評估包括特徵的覆蓋率、特徵的維度、定性分析和定量分析等幾種方式。我們會在第6章詳細介紹。

上述四個步驟一般可以依次進行,當確定最後的特徵後,我們可以利用最終的特徵進行模型訓練。訓練好後,我們可以對模型進行離線評估,獲得離線評估的度量指標(比如召回率、精準度、MAP等)。如果達不到預定的要求,我們需要找原因,可以對特徵工程的流程進行迭代最佳化(也可能是換不同的模型)。如果達到了要求,我們就可以利用訓練好的模型用於真實業務場景,然後收集使用者反饋資料獲得真實的業務指標資料(如點選率、播放時長等),再根據真實業務資料的情況去對構建特徵的過程進行最佳化迭代。總之,構建特徵及模型服務業務的整個過程是一個閉環系統,我們可以基於業務指標對整個過程不斷迭代最佳化,最終讓業務指標越來越好(也可能是螺旋式上升)。

四、構建特徵的基本原則

特徵工程雖然有很多方法和策略,但這是一個偏業務和工程的領域,需要遵循一些最基本的原則,這樣可能讓我們少走彎路。我覺得最重要的基本原則如下:

1. 能用簡單的模型先用簡單的模型

一般來說,簡單的模型可能泛化能力更好(在同樣資料下),簡單模型也更容易理解,特徵工程、構建、訓練、推斷的成本也相對較低。當我們在簡單模型下能夠將業務閉環打通,然後就可以嘗試一些更復雜一些的模型了。對於在工業界比較成熟的複雜模型(比如wide & deep模型)等也是可以使用的,不建議對一些學術上發表的新模型直接拿到業務中使用,除非你們有非常多的人才和資源去預研、測試,否則不建議做第一個吃螃蟹的人。

2. 特徵不是越多越好,需要挖掘能夠代表事物本質的特徵

在構建特徵之前,需要對模型要解決的業務問題有比較深刻的瞭解(這要求自己多用用自己負責的產品),多跟產品、運營、使用者溝通(或者檢視使用者行為資料),他們可能對業務更瞭解,往往可以給你提供更好的建議,有利於你找到更本質的特徵。

在特徵選擇上,“奧卡姆剃刀”原則也是適用的。如果能夠找到最本質的特徵,那麼少量的特徵就可以獲得非常好的效果。

3. 儘量選擇從多個維度來描述事物的特徵

這一條原則背後的原理是:從機率統計上看,任何一個機器學習模型可以看成一個機率問題,我們選擇的資料是從服從某個分佈(可能是非常複雜的)中的一次隨機抽樣。那麼選擇描述事物更廣泛維度的特徵的意思就是選擇的樣本要能夠代表整個機率空間。

這一條原則也跟整合學習的思路是不謀而合的。在整合學習中,每個模型可能學習到了客觀規律的一部分,多個不同的模型結合起來就可以學習到事物的更全面的特性。

4. 特徵之間儘量要獨立

特徵獨立的要求跟上面一條原則的道理是一樣的,相關的特徵描述事物相同的特性,那麼就沒必要重複(重複的缺點在於,首先構建特徵需要花費資源,另外對模型效果也沒有太多的作用)。

有很多特徵我們是可以基於實際資料來源就可以判定他們是不是相關的,不一定需要構建好後再去計算特徵之間的相關性(我們在特徵選擇那一章會講到這方面的知識點)。

5. 平衡構建特徵的成本和收益

有些特徵可能對模型有用,但是構建這類特徵需要收集相關資料,如果收集資料的過程非常複雜或者構建特徵的過程非常複雜,那麼我們就需要權衡投入產出比了。

上面這5條原則看起來非常簡單,上面也沒有細緻地講解怎麼使用這些原則,可能指導性沒有那麼強。不過這些原則是當你在特徵工程相關業務上有一些經驗和積累之後是可以比較容易理解和感受到的,最終你也會形成自己的一套策略和方法去思考和落地這些原則的。這裡只希望讀者可以瞭解和記住這些原則,我們在後續章節的具體場景中也會提到這些原則。

五、特徵工程的難點與挑戰

雖然說構建特徵工程有一套比較完善的思路和方法體系,但要構建一套好的特徵不是一件容易的事情。構建特徵需要依賴資料,也需要對問題有更深刻的理解,同時也會受到不同場景的限制,具體來說,構建特徵工程的過程中,我們會面臨如下的挑戰。

1. 特徵工程依賴所獲得的資料

當我們在為某個業務構建機器學習模型時,我們能夠構建什麼樣的特徵,往往依賴我們的資料。如果我們收集不到足夠多的、高質量的資料,那麼我們構建的特徵的數量和質量就得不到保證。

2. 特徵是模型、領域相關的

不同的機器學習模型能夠處理的資料型別以及對資料變化的敏感度是不一樣的(比如樹模型可以處理非數值特徵,也不需要對特徵進行歸一化),因此,對於某個問題,我們選擇不同的模型,對我們怎麼去做特徵是有前置限制的。

另外,不同的領域由於對問題處理的要求是不一樣的,那麼對我們構建什麼樣的特徵是有限制的。比如在金融領域,是對模型的可解釋性是有要求的,那麼像嵌入特徵這類隱式特徵就不太合適。

3. 資料來源的複雜多樣性

目前的手機APP包含了非常多的富媒體資訊(比如文字、圖片、影片、聲音等,淘寶現在很多商品就包含了短影片的商品介紹,見下面圖4),處理這些更復雜的資訊不僅更耗費時間、資源(計算、儲存等),處理的方法也會更加複雜,這無形對特徵工程提出了更高的挑戰和要求。

「推薦系統中的特徵工程」1. 特徵工程基礎知識介紹

圖4:淘寶商品介紹採用短影片的形式

4. 應用場景的限制

目前很多機器學習模型用在了時效性非常高的場景下(比如資訊流推薦、競價排名廣告等),這就需要能夠對收集到的使用者行為資料進行實時處理,獲得實時的特徵,才能夠利用構建好的模型進行預測和推斷。這對特徵工程的時效性提出了非常高的要求。

有些機器學習模型部署在終端上(比如無人駕駛汽車等),這不光對特徵工程的時效性提出了要求,還對構建特徵的精準度提出了更高的要求(比如L4級無人駕駛車在下雨天、甚至是晚上都能夠很好地識別障礙物,在環境不好的時候,鐳射雷達的處理也需要達到極高的精準度)。

總之,隨著機器學習在各行業各、在更多場景下的應用的出現,對特徵工程提出了更好的要求,這也無形中凸顯了特徵工程的重要性。

總結

這一章我們對特徵工程的基本知識做了一個簡單的概括。我們拿人類理解和認識世界作為例子,講解什麼是特徵、人是怎麼識別這些特徵的,基於人與機器的類比關係,大家可以更好地理解機器學習和特徵工程相關概念和問題。

本章我們主要講解了特徵的基本概念、特徵的分類、特徵工程的概念、構建特徵的基本思路和方法、構建特徵的基本原則,以及特徵工程的難點和挑戰。這一節的主要目的是給讀者提供一個全域性的視覺,希望讀者對特徵工程相關的概念和知識有一個初步的印象,我們會在後續章節中對本節中提到的每一點都會深入講解。

「推薦系統中的特徵工程」1. 特徵工程基礎知識介紹