1. 程式人生 > >機器學習 特徵工程

機器學習 特徵工程

本文聊一聊機器學習的大致過程,探討下機器學習中常見的問題。本文藉助了廣告CTR預估這條主線,大概流程及內容如圖所示:
這裡寫圖片描述 詳細參見此博文
1.想特徵
想特徵主要靠一些經驗,這些經驗可能來源於以前做過的專案、特徵選擇、特徵構建等一些實踐或知識。大概的方向是想出的特徵要具有區分性。比如現在要預測使用者對籃球點選的概率,性別就可以作為一個特徵,因為根據我們的常識:男性打籃球的可能性比女性要大。那麼就引出另一個問題,怎麼判斷想出的特徵具有區分性,特徵的區分性有多明顯呀?這就要根據資料進行特徵分析了。
2.特徵分析
對一個想到的特徵是否具有區分性,我們可以基於歷史資料進行統計分析。例如,經過統計我們發現,對籃球的點選男性的比例要遠高於女性,那麼說明性別這個特徵是具有區分性的,可以作為特徵考慮進模型中。經過特徵分析,發現想到的特徵是有區分性的,那麼怎樣使用特徵才能使模型效果更明顯呢?這就要引出特徵加工了。
3.特徵加工
對於特徵加工,本文按照下圖所示的過程進行講解:
這裡寫圖片描述


3.1二值化
下面主要探討什麼是二值化、為什麼要二值化、怎樣二值化以及二值化要注意的問題。
3.1.1什麼是二值化
通過舉例我們說明二值化,對於性別特徵,我們可以二值化為兩個特徵:is_male,is_female。對於男性使用者他在二值化的性別特徵取值為10,女性為01.
3.1.2為什麼要二值化
對有些特徵來說直接進行加減乘除等數學運算是沒有意義的,而後續所運用的模型可能會涉及到這些特徵值之間的加減乘除的數學運算,這是不合理的。舉例說明,我們要預測色彩對使用者點選廣告的影響。現在有紅、黃、綠三種色彩,我們可以編碼規定:色彩值=1,紅色;色彩值=2,黃色;色彩值=3,綠色。我們的常識告訴我們,紅、黃、綠之間是沒有大小關係的,之間不存在紅1<黃2<綠3的。因此,上述編碼是不合理的。那麼,怎麼辦才能更合理呢?採用二值化,其中一種二值化結果如下圖所示:
這裡寫圖片描述

3.1.3怎樣二值化
這裡探討下dummy和one-hot編碼。對上述色彩進行編碼,dummy可以是3維,也可以是2維。one-hot是3維,可以說one-hot是dummy的一種情況。為了區分,在本文對色彩dummy編碼特指2維。對色彩進行dummy編碼如下圖所示:
這裡寫圖片描述
對色彩進行one-hot編碼如下圖所示:
這裡寫圖片描述

3.1.4one-hot編碼與多重共線性
什麼是多重共線性,如下定義:
這裡寫圖片描述
多重共線性會造成模型很不穩定,也就是說方程組的解不唯一,可能有無數多個解。這就可能導致以下問題(有不正確之處歡迎指正):
(1)一些特徵的權重值非常大,另一些特徵的權重值非常小。如果那些權重特別大的特徵是一些不相關特徵,就會導致模型預測時效能有所下降。
(2)造成ill-condition問題。也就是說當我們的特徵值稍微改變一下,預測輸出結果就會變化很大。在我們做預測時,往往假設具有相似特徵的例項具有相似類別,而現在相似的特徵可能會得到差別較大的結果,使模型變得不可信。
上述兩點也從共線性解釋了資料過擬合問題。那麼怎樣解決多重共線性問題,防止過擬合問題的發生,其中一種方法 引入正則化。關於正則請看這篇牛文

規則化,正則化使模型更簡單,提高模型的泛化能力,並且正則化可以約束模型特性,使模型具有我們所需要的性質:稀疏、平滑等。在這裡,簡單總結下L1、L2正則化。
L1:可以實現稀疏性,進行特徵選擇。
L2:使每個feature的權重都很小,提高泛化能力。另外L2還可以使我們的求解更穩定、迅速。
L1與L2的區別及聯絡也請參見上述博文
3.2特徵交叉(待續)
3.3 平滑
下面主要探討為什麼要平滑、怎樣進行平滑等問題
3.3.1為什么平滑
為什麼要進行平滑呢?舉個例子,現在進行拋硬幣,連續拋了三次,出現的都是正面朝上,如果根據實驗結果,正面朝上的概率為1,顯然這是不可信的。為什麼會出現這種不可信的概率估計?我們知道,當我進行了充分多的實驗,通過實驗結果估計出的概率會接近真實概率。而現在,只進行了三次實驗,不能通過這三次得出正面朝上的概率就是1. 為了應對這種情況,就要引入平滑處理,使得正面出現的概率不會是1,而反面出現的概率也不會是0,從而使結果更合理。
3.3.2 怎樣進行平滑
平滑的方法有很多,這裡簡單討論下關於廣告點選率的平滑問題。wang等人對廣告CTR進行了平滑處理,獲得了很好的效果,因此,本文藉助這篇paper討論下涉及到的一種平滑方法。看了這篇論文,我們可能會產生這樣的疑問,為什麼文章假設使用者是否點選符合二項分佈之後提出二項分佈的期望的先驗分佈期望是beta分佈呢?在這裡我們進行探討一下。深入瞭解參考此博文
二項分佈與beta分佈在這裡就不過多的講述。我們知道,二項分佈與beta分佈是共軛的,也就是說beta分佈作為二項分佈均值P(X=1)的先驗分佈時,後驗分佈正比於先驗分佈與似然函式的乘積,且與先驗分佈具有相同的函式形式。beta分佈如下式:
這裡寫圖片描述
資料集大小為N,具有m個x=1的二項分佈為:
這裡寫圖片描述
把(1)看成beta先驗分佈,把(2)看成似然函式,只保留關於u的因子,得後驗分佈:
這裡寫圖片描述
其中l=N-m,為x=0的次數。其實(3)也是beta分佈,可以寫成:
這裡寫圖片描述
這樣,從先驗分佈到後驗分佈,把x=1的個數從a增加到m+a個,x=0的個數從b個增加到l+b個,那麼我們基於後驗可以算出x=1的概率:
這裡寫圖片描述
至此,我們可以瞭解到paper的統計學原理,至於怎樣計算a,b超引數,這裡就不再贅述。
3.4離散化
接著討論下什麼是離散化、為什麼要離散化、怎樣離散化等問題
3.4.1 什麼是離散化
對於離散化的介紹參見博文
特徵離散化
3.4.2為什麼要離散化
對於某個連續特徵,可以出於以下考慮:
(1)特徵數值之間的大小沒有明顯的區分性。舉個例子,假設是否買籃球與收入有關,A月收入1萬,B月收入5千,這兩者之間的收入差異不能夠說明兩者之間買籃球的概率差異A就是B的兩倍。
(2)離散化可以增強資料的表達能力。還是買籃球,如果收入特徵權重為w,那麼10000*w=5000*w。現在,把收入離散化,收入1萬為w1,收入5千為w2.那麼每一個工資段都對應一個權重wi,就有可能10000*w1<5000*w2等情況發生。
(3)防止過擬合。
3.4.3怎樣離散化
怎樣離散化參見博文
離散化方法