機器學習之特徵工程(一)

一個人的場域發表於2017-02-11

一 什麼是特徵工程

特徵是指資料中抽取出來的對結果預測有用的資訊

特徵工程是使用專業背景和技巧處理資料,使得特徵能在機器學習演算法上發揮更好的作用的過程。

特徵工程的意義:1.更好的特徵意味著更強的靈活性 2更好的特徵意味著只需要簡單模型 3更好的特徵意味著更好的結果


應用機器學習的主要工作就是特徵工程

資料和特徵決定了演算法能達到的上限,演算法和模型的選擇只是無限接近這個上限

如何特徵十分清晰、易辨別,可能不需要神經網路這樣複雜的演算法,只需要常見的機器學習演算法就能達到很好的結果


二 特徵工程在實際工作中的作用

工作中可能70%的時間處理資料,30%的時間建模、模型狀態評估、ensemble。

演算法、模型的研究是一些演算法專家、專業人員在做

大部分人的工作:

     1. 跑資料,各種map-reduce, hive sql,資料庫搬磚

     2. 資料清洗,資料清洗,資料清洗...

     3.業務分析,分析case, 找特徵,找特徵...

     4. 一招LR打天下   (一般機器學習部分都有一個LR作為baseline, 可控; svm在小的資料集上效果很好,但很大的資料,例如電商每天資料很大,不太實用svm)


工業界的特徵工程有多大作用呢?

例如某搜尋引擎,廣告部門,2周內可以完成一次特徵迭代,有效的情況下AUC提升3-5%;  而一個月左右完成模型的小優化,有效的情況下AUC提升5%

貼近業務場景進行特徵分析可能比演算法的優化更有效

三 特徵工程的重要環節

1.  資料採集

    考慮哪些資料有用;

    埋點,資料打標籤

2  資料格式化

    確定儲存格式,例如時間格式

    大多數情況下,需要關聯非常多的hive表和叢集檔案

3. 資料清洗(data cleaning)

    garbage in, garbage out

    演算法大多數情況下就是一個加工機器,最後的產品往往取決於原材料的好壞。 所以理解業務更加透徹、資料清洗對結果影響很大

    主要是去除髒資料

    1. 錯誤資料,例如人身高5m,這樣的資料無論是否真實,對模型訓練不利

    2. 組合或統計屬性判定      例如購買籃球鞋的人應該男生佔多數才對

    3. 補齊可對應的預設值    不可信的樣本丟掉,預設極多的欄位考慮不用

4. 資料取樣

     1.很多情況下,正負樣本是不均衡的,例如電商的使用者點選/買過的商品和沒有行為的商品

     2.大多數模型對正負樣本比是敏感的   比如LR,如果有99個正樣本,1個負樣本,那預測時全部預測正,準確率也可以達到99%,這不能反映模型的好壞

     正負樣本不平衡的處理方法:

          1. 正負樣本量很大,一類樣本數量 >> 另一類樣本數量, 採用下采樣,即對偏多的資料進行取樣,使兩類樣本數量達到一定比例,例如1:1, 3:2等

          2. 正負樣本量不大, 一類樣本數量>>另一類樣本,

                1)採集更多的資料

                2)oversampling,即硬生生的增加量少的一方的樣本,比如增加幾倍的量少的樣本(或簡單處理量少的資料,例如影象識別中的映象、旋轉),容易過擬合

                3)修改loss function,例如增加量大的樣本的懲罰權重

相關文章