百面機器學習|第一章 特征工程

前言

此為本人學習《百面機器學習——算法工程師帶你去面試》的學習筆記

第一章 特征工程

特征工程,是對原始數據進行一系列工程處理,將其提煉為特征,作為輸入供算法和模型使用。從本質上講,特征工程是一個表示和展現數據的過程。在實際工作中,特征工程旨在去除原始數據的雜質和冗余,設計更高效的特征以刻畫求解的問題和預測模型之間的關系。

兩種常用的數據類型

1、結構化數據。可以看做關系型數據庫的一張表,每列都有清晰的定義,包含了數值型、類別型兩種基本類型,每一行數據表示一個樣本的信息。

2、非結構化數據。主要包括文本、圖像、音頻、視頻數據,其包含的信息無法用一個簡單的數值表示,也沒有清晰的類別定義,并且每條數據的大小各不相同。

01 特征歸一化

1、目的:消除數據特征之間的量綱影響,使得不同指標之間具有可比性

2、常用的兩種歸一化方法

a. 線性函數歸一化(Min-Max Scaling)。對原始數據映射到[0, 1]的范圍。

? ??????????????????????????????????Xnorm = \frac{X - Xmin}{Xmax - Xmin }

b. 零均值歸一化(Z-Score Normalization)。將原始數據映射到均值為0、標準差為1的分布上。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????? ? ? ? ? ?z=\frac{x-\mu }{\sigma }

3、在使用梯度下降進行求解的過程中,數據歸一化主要對梯度下降收斂速度產生的影響,將各個特征映射到同一區間內,使得各個特征的更新速度一樣,可以更快地通過梯度下降找到最優解

4、實際應用中,通過梯度下降法求解的模型通常是需要歸一化的,包括線性回歸、邏輯回歸、支持向量機、神經網絡等模型。但對于決策樹模型并不適用,如C4.5在結點分裂時主要依據數據集D光宇特征x的信息增益比,而信息增益比和特征是否歸一化無關。

02 類別型特征

1、類別型特征指的是例如性別(男、女)等只在有限選項內取值的特征。通常是字符串形式,除了決策樹等少數模型可以直接處理字符串形式的輸入,對于邏輯回歸、支持向量機等模型,類別型特征必須轉換為數值型特征才能正確工作。

2、處理類別型特征方法:

a. 序號編碼:通常用于處理類別間具有大小關系的數據。如成績可分為低、中、高三擋,分別用1、2、3表示,轉換后依然保留大小關系

b. 獨熱編碼:通常用于處理類別間不具有大小關系的特征。如血型,一共有4個取值(A型 B型 AB型 O型),one-hot編碼會將其變成一個4位的稀疏向量,A型(1,0,0,0) B型(0,1,0,0)...

one-hot編碼注意點:當類別取值較多時,用one-hot就會非常稀疏,可以使用稀疏向量節省空間。高維度特征會帶來幾方面的問題,(1)k近鄰算法中,高維空間下兩點之間的距離很難得到有效的衡量.(2)邏輯回歸中參數的數量會隨維度的增高而增高,容易引起過擬合問題。(3) 通常只有部分維度對分類、預測有幫助,因此可以考慮配合特征選擇來降低維度。

c. 二進制編碼:和one-hot編碼思想類似,本質上是利用二進制對ID進行哈希映射,最終得到0/1特征向量,且比one-hot編碼節省空間。

03 高維組合特征的處理

1、目的:提高復雜關系的擬合能力。

2、高階組合特征是指把一階離散特征兩兩組合,構成高階特和特征。

例如將語言(中文、英文);劇集類型(電影、電視劇)兩個一階離散特征組合為二階特征,則有中文電影、中文電視劇、英文電影、英文電視劇四種類型。假設數據的特征向量X = (x1, x2, x3 ,..., xk),則有

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??Y = sigmoid \sum_{i}\sum_{j} w_{ij}<x_{i} , x_{j} >

則w的維度是2X2=4

3、當引入ID類型的特征時,通常需要降維。如推薦問題,通常有如下特征:

圖1.1

如上表所示,則要學習的參數規模使m x n,參數規模太大,一種行之有效的方法是經用戶和物品分別用k維的低維向量表示(k遠小于m和n),則參數的規模變為m x k+n x k。實際是矩陣分解

04 組合特征

實際問題中,簡單的兩兩組合容易存在參數過多、過擬合等問題。本節提供一種基于決策樹的特征組合尋找方法。

以點擊預測為例,假設原始輸入特征包含年齡、性別、用戶類型(試用期、付費)、物品類型(護膚、食品等)4個方面的信息,并且根據原始輸入和標簽(點擊/未點擊)構造了決策樹,如圖1.2

圖1.2 基于決策樹的特征組合方法


表1.1 兩個不同樣本對應的原始輸入特征

每一條從根節點到葉節點的路徑都可以看成一種特征組合的方式。根據上述決策樹可有4條路徑,針對表1.2 可得到以下組合方式,第一個樣本的組合特征可以編碼為(1, 1, 0, 0),第二個為(0, 0, 1, 1)

05 文本表示模型

1、詞袋模型和N-gram模型

詞袋模型是最基礎的文本表示模型。將每篇文章看成一袋子詞,忽略每個次出現的順序。具體來說,就是將整段文本以詞為單位切分開,每篇文章可以表示成一個長向量,向量中的每一維代表一個單詞,而該維對應的權重反映了這個詞在原文章的重要程度。常用 TF-IDF 來計算權重,公式為

????????????????????????????????????TF-IDF(t,d)=TF(t,d)×IDF(t) ;

TF(t,d) 為單詞?t?在文檔?d?中出現的頻率,IDF(t) 是逆文檔頻率,用來衡量單詞?t?對表達語義所起的重要性,表示為

? ??????????????????IDF(t)=log\frac{文章總數}{包含單詞t的文章總數+1} ? ? ? ? ? ? ? ? (1.6)

N-gram模型是指某些單詞組不能拆開,可以將連續出現的n個詞組成詞組(N-gram)作為一個單獨的特征放入向量表示,構成N-gram模型

注意:同一個詞可能有多種詞性變化,卻具有相似的含義。在實際應用中,一般會對單詞進行詞干抽取(Word Stemming)處理,即將不同詞性的單詞統一成為同一詞干的形式。

2、主題模型

詞袋模型和N-gram模型無法識別兩個不同的詞或詞組具有相同的主題,主題模型可以將具有相同主題的詞或詞組映射到同一維度上,映射到的這一維度表示某個主題。主題模型是一種特殊的概率圖模型,后面第六章第五節會講。

3、詞嵌入

詞嵌入是一類將詞向量化的模型的統稱,核心思想是將每個詞都映射成低維空間(通常?K=50~300 維)上的一個稠密向量(Dense Vector)。K?維空間的每一維也可以看作一個隱含的主題,只不過不像主題模型中的主題那樣直觀。

06 Word2Vec

1、谷歌 2013 年提出的 Word2Vec 是目前最常用的詞嵌入模型之一。Word2Vec 實際是一種淺層的神經網絡模型,它有兩種網絡結構,分別是 CBOW(Continues Bag of Words)和 Skip-gram。CBOW 的目標是根據上下文出現的詞語來預測當前詞的生成概率,?Skip-gram 是根據當前詞來預測上下文中各詞的生成概率。網絡結構如下:

圖1.3 Word2Vec 的兩種網絡結構

其中?w(t) 是當前所關注的詞,w(t?2)、w(t?1)、w(t+1)、w(t+2) 是上下文中出現的詞。這里前后滑動窗口大小均設為 2。

2、CBOW和Skip-gram均可表示成由 輸入層、映射層和輸出層組成的神經網絡

輸入層由one-hot編碼表示,即當詞匯表中的單詞總數是N,則輸入層的one-hot編碼維度也是N

映射層(隱藏層)中有K個隱藏單元,其取值由N為輸入向量以及連接輸入和隱藏單元之間的NxK維權重矩陣計算得到。

注意:CBOW中還需要將各個輸入詞所計算出的隱含單元求和

輸出層向量的值可以通過隱藏層向量(K維),以及隱藏層和輸出層之間的KxN維權重矩陣計算得到。輸出層也是一個N維向量,每維與詞匯表中的一個單詞對應。但是這里的輸出量并不能保證所有維度加起來為1(one-hot編碼加起來就為1),要通過Softmax激活函數歸一化。Softmax激活函數的定義為

? ??????????????????????????P(y=w_{n}|x)=\frac{e^{x_{n}} }{\Sigma^{N}_{k=1}e^{x_{k} }  } ? ? ? ? ? ? ? ? (1.7)

訓練目標是使得語料庫中所有單詞的整體生成概率最大化。學習權重可以用反向傳播算法實現,每次迭代時將權重沿梯度方向進一步更新。但是由于Softmax激活函數中存在歸一化項的緣故,推導出來的迭代公式需要需要對詞匯表中所有單詞進行遍歷,使得每次迭代過程非常緩慢,可使用?Hierarchical Softmax 和 Negative Sampling 兩種方法改進。

得到訓練出來的歌詞對應的向量:訓練得到維度為NxKKxN的兩個權重矩陣,可以選擇其中任意一個作為N個詞的K維向量表示

3、Word2Vec和LDA的區別和聯系

LDA利用文檔中單詞的共現關系對單詞按主題聚類,可以理解為對“文檔-單詞”矩陣進行分解,得到“文檔-主題”和“主題-單詞”兩個概率分布。但Word2Vec其實是對“上下文-單詞”矩陣進行學習,其中上下文由周圍的幾個單詞組成,更多的融入了上下文共現特性

主題模型通過一定的結構調整可以基于“上下文-單詞”矩陣進行主題推理。詞嵌入方法也可以根據“文檔-單詞”矩陣學習出詞的隱含向量表示。

主題模型和詞嵌入兩類方法的最大不同在于模型本身。主題模型是一種基于概率圖模型的生成式模型,其似然函數可以寫成若干條件概率連乘,其中包括需要推測的隱含變量(即主題);而詞嵌入模型一般表達為神經網絡的形式,似然函數定義在網絡的輸出之上,需要通過學習網絡的權重以得到單詞的稠密向量表示。

07 圖像數據不足時的處理方式

1、一個模型的信息來源一般來自兩個方面:一是訓練數據中蘊含的信息;二是在模型的形成過程中(包括構造、學習、推理等),人們提供的先驗信息

2、訓練數據不足時,為了保證模型效果則需要更多先驗信息。先驗信息可以作用在模型上,如讓模型采用特定的內在結構、條件假設或添加其他一些約束條件;先驗信息也可以直接作用在數據集上,即更具特定的先驗假設去調整、變換或擴展訓練數據,讓其展現更多的、更有用的信息。

3、圖像分類任務中,馴良數據不足帶來的問題主要表現在過擬合方面,即模型在訓練樣本上的效果可能不錯,但是在測試集上的泛化效果不佳。對應的處理方法大致可分為兩類:

基于模型的方法,主要采用降低過擬合風險的措施,包括簡化模型(如將非線性模型假話為線性模型)、添加約束項以縮小假設空間(如L1/L2正則)、集成學習、Droupout超參數等

基于數據的方法,主要通過數據擴充(Data Augmentation),即根據一些先驗知識,在保持特定信息的前提下,對原始數據進行適當變換以達到擴充數據集的效果

具體到圖像分類任務中,在保持圖像類別不變的前提下,可以對訓練集中每幅圖像進行以下變換 (1) 隨機旋轉、平移、縮放、裁剪、填充、左右翻轉等,對應著同一個目標在不同角度的觀察結果;(2) 對圖像中的像素添加噪聲擾動,比如椒鹽噪聲、高斯白噪聲等;(3) 顏色變換;(4) 改變圖像的亮度、其吸毒、對比度、銳度等。

圖1.4 圖像數據擴充樣例

4、除了之間在圖像空間進行變換,還可以對圖像進行特征提取,然后在圖像的特征空間內進行變換,利用一些通用的數據擴充或上采樣技術,如SMOTE(Synthetic Minority Over-sampling Technique)之類的啟發式的變換方法。此外還可以通過如GAN等生成模型合成新樣本,或者借助已有的其他模型或數據進行遷移學習

例如,對于大部分圖像分類任務,并不需要從頭開始訓練模型,而是借用一個在大規模數據集上預訓練好的通用模型,并在針對目標任務的小數據集上進行微調(fine-tune),這種微調操作就可以看成是一種簡單的遷移學習。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,825評論 6 546
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,814評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,980評論 0 384
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 64,064評論 1 319
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,779評論 6 414
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,109評論 1 330
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,099評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,287評論 0 291
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,799評論 1 338
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,515評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,750評論 1 375
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,221評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,933評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,327評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,667評論 1 296
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,492評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,703評論 2 380

推薦閱讀更多精彩內容