機器學習之特徵工程
目錄大綱
- 特徵工程是什麼?
- 特徵工程的重要性
- 特徵工程子問題:
1.特徵處理
2.Feature Selection(特徵選擇)
3.Feature Extraction(特徵提取)
4.Feature construction(特徵構造)
特徵工程的思維導圖:
特徵工程是什麼?
想要預測模型效能達到最佳時,你要做的不僅是要選取最好的演算法,還要儘可能的從原始資料中獲取更多的資訊。應該如何為預測模型得到更好的資料呢?
簡而言之,特徵工程就是一個把原始資料轉變成特徵的過程,這些特徵可以很好的描述這些資料,並且利用它們建立的模型在未知資料上的表現效能可以達到最優(或者接近最佳效能)。
特徵工程的重要性
坊間常說:“資料和特徵決定了機器學習的上限,而模型和演算法只是逼近這個上限而已”。由此可見,特徵工程在機器學習中佔有相當重要的地位。在實際應用當中,可以說特徵工程是機器學習成功的關鍵。
首先,我們大家都知道,資料特徵會直接影響我們模型的預測效能。你可以這麼說:“選擇的特徵越好,最終得到的效能也就越好”。這句話說得沒錯,但也會給我們造成誤解。事實上,你得到的實驗結果取決於你選擇的模型、獲取的資料以及使用的特徵,甚至你問題的形式和你用來評估精度的客觀方法也扮演了一部分。此外,你的實驗結果還受到許多相互依賴的屬性的影響,你需要的是能夠很好地描述你資料內部結構的好特徵。
(1)特徵越好,靈活性越強:
只要特徵選得好,即使是一般的模型(或演算法)也能獲得很好的效能,因為大多數模型(或演算法)在好的資料特徵下表現的效能都還不錯。好特徵的靈活性在於它允許你選擇不復雜的模型,同時執行速度也更快,也更容易理解和維護。
(2)特徵越好,構建的模型越簡單:
有了好的特徵,即便你的引數不是最優的,你的模型效能也能仍然會表現的很nice,所以你就不需要花太多的時間去尋找最有引數,這大大的降低了模型的複雜度,使模型趨於簡單。
(3)特徵越好,模型的效能越出色
顯然,這一點是毫無爭議的,我們進行特徵工程的最終目的就是提升模型的效能。
特徵工程子問題
特徵工程主要包括:
- 特徵處理
- Feature Selection(特徵選擇)
- Feature Extraction(特徵提取)
- Feature construction(特徵構造)
1. 特徵處理
特徵處理分類
特徵處理分為:數值型,類別型,時間型,文字型,統計型和組合特徵
1)數值型
- 幅度調整,歸一化:幅度常控制在[0,1]
- 離散化:連續值分段變成類別型,1個值對映為一個向量,離散化後引入非線性,如年齡為變數,可讓老人和小孩同時獲得高權重
2)類別型
one-hot編碼/啞變數:如小孩,青年,老人->[1,0,0],[0,1,0],[0,0,1]
-
hash分桶(類別很多,較稀疏):
- 例1:使用聚類將userId根據某些特徵分為幾類
-
例2:如下圖是將一個詞典分成三個桶,每個桶可能代表某個領域內的詞,兩句話如果在同一個同中出現的單詞數相同,可能說明他們在某一領域內指代性相同,為每句話構造了一個新向量
-
Histogram對映:把某個特徵與target做後驗關聯度的統計,以統計量表示該特徵
- 例子:如特徵-男/女,target-愛好,統計P(愛好|性別),得到 男:[1/3,2/3,0],可表示男生1/3喜歡散步,2/3喜歡足球,沒有喜歡看電視劇;用愛好比例對性別進行編碼,得到的統計特徵之間map到特徵向量中,可以與原性別特徵[1,0]同時存在
3)時間型
- 時間型特徵可分為數值型和類別型,時間型資料可以表示不同時間人們心態和行為存在差別,可用於區分人群,商品推薦等
- 數值型:網頁停留時間,上次瀏覽離現在間隔時間
- 類別型:月、周、日、時等
4)文字型
詞袋(去停用詞)、word2vec
-
TF-IDF權重
:表示一個詞對一個樣本或樣本集的重要程度
- TF(w)=(詞w在當前文中出現的次數)/(w在全部文件中出現的次數)
- IDF(w)=ln(總文件數/含w的文件數)
- TF-IDF權重: TF*IDF
5) 統計型
- 統計特徵與業務的契合度高
- 加減平均:商品價格超平均價格,連續登陸天數超平均,商品出售超平均編碼
- 分位線:商品價格分位線體現使用者的購買能量
- 次序型、比例型
6)組合型
- 拼接型:如userId&&category拼接可以為某個使用者建立個性化特徵
- 模型特徵組合:如GBDT產出的特徵組合路徑,路徑命中為1,否則為0
- 組合特徵和原始特徵一起放進LR中訓練
2. 特徵選擇 Feature Selection
為什麼做特徵選擇:
在機器學習的實際應用中,特徵數量往往較多,其中可能存在不相關的特徵,特徵之間也可能存在相互依賴,容易導致如下的後果:
- 特徵個數越多,分析特徵、訓練模型所需的時間就越長。
- 特徵個數越多,容易引起“維度災難”,模型也會越複雜,其推廣能力會下降。
特徵選擇能剔除不相關(irrelevant)或亢餘(redundant )的特徵,從而達到減少特徵個數,提高模型精確度,減少執行時間的目的。另一方面,選取出真正相關的特徵簡化了模型,使研究人員易於理解資料產生的過程。
資料預處理完成之後,我們需要選擇有意義的特徵,輸入機器學習的演算法和模型進行訓練,通常來說,從兩個方面考慮來選擇特徵:
- 是否發散
- 是否相關
特徵選擇的三種方法:
1. Filter方法
其主要思想是:對每一維的特徵“打分”,即給每一維的特徵賦予權重,這樣的權重就代表著該維特徵的重要性,然後依據權重排序。它主要側重於單個特徵跟目標變數的相關性。
優點:計算時間上較高效,對於過擬合問題也具有較高的魯棒性。
缺點:傾向於選擇冗餘的特徵,因為他們不考慮特徵之間的相關性,有可能某一個特徵的分類能力很差,但是它和某些其它特徵組合起來會得到不錯的效果。
主要的方法有:
-
Variance selection (方差選擇法)
使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵。
-
Chi-squared test (卡方檢驗)
經典的卡方檢驗是檢驗定性自變數對定性因變數的相關性。假設自變數有N種取值,因變數有M種取值,考慮自變數等於i且因變數等於j的樣本頻數的觀察值與期望的差距,構建統計量:
不難發現,這個統計量的含義簡而言之就是自變數對因變數的相關性。
-
information gain (資訊增益)
經典的互資訊(資訊增益)也是評價定性自變數對定性因變數的相關性的,互資訊計算公式如下:
2. Wrapper方法
其主要思想是:將子集的選擇看作是一個搜尋尋優問題,生成不同的組合,對組合進行評價,再與其他的組合進行比較。這樣就將子集的選擇看作是一個優化問題,這裡有很多的優化演算法可以解決,尤其是一些啟發式的優化演算法,如GA,PSO,DE,ABC等;詳見“優化演算法——人工蜂群演算法(ABC)”,“ 優化演算法——粒子群演算法(PSO) ”。
wrapper方法實質上是一個分類器,封裝器用選取的特徵子集對樣本集進行分類,分類的精度作為衡量特徵子集好壞的標準,經過比較選出最好的特徵子集。常用的有逐步迴歸(Stepwise regression)、向前選擇(Forward selection)和向後選擇(Backward selection)。
優點:考慮了特徵與特徵之間的關聯性
缺點:當觀測資料較少時容易過擬合,而當特徵數量較多時,計算時間又會增長。
主要方法有:
recursive feature elimination algorithm(遞迴特徵消除演算法)
遞迴消除特徵法使用一個基模型來進行多輪訓練,每輪訓練後,消除若干權值係數的特徵,再基於新的特徵集進行下一輪訓練。
3. Embedded方法
其主要思想是:在模型既定的情況下學習出對提高模型準確性最好的屬性。這句話並不是很好理解,其實是講,在確定模型的過程中,挑選出那些對模型的訓練有重要意義的屬性。
主要方法:
-
基於懲罰項的特徵選擇法
-
基於樹模型的特徵選擇法
-
降維
當特徵選擇完成後,可以直接訓練模型了,但是可能由於特徵矩陣過大,導致計算量大,訓練時間長的問題,因此降低特徵矩陣維度也是必不可少的。常見的降維方法除了以上提到的基於L1懲罰項的模型以外,另外還有主成分分析法(PCA)和線性判別分析(LDA),線性判別分析本身也是一個分類模型。PCA和LDA有很多的相似點,其本質是要將原始的樣本對映到維度更低的樣本空間中,但是PCA和LDA的對映目標不一樣:PCA是為了讓對映後的樣本具有最大的發散性;而LDA是為了讓對映後的樣本有最好的分類效能。所以說PCA是一種無監督的降維方法,而LDA是一種有監督的降維方法。
3. 特徵提取 Feature Extraction
原則上來講,特徵提取應該在特徵選擇之前。特徵提取的物件是原始資料(raw data),它的目的是自動地構建新的特徵,將原始特徵轉換為一組具有明顯物理意義(Gabor、幾何特徵[角點、不變數]、紋理[LBP HOG])或者統計意義或核的特徵。比如通過變換特徵取值來減少原始資料中某個特徵的取值個數等。對於表格資料,你可以在你設計的特徵矩陣上使用主要成分分析(Principal Component Analysis,PCA)來進行特徵提取從而建立新的特徵。對於影象資料,可能還包括了線或邊緣檢測。
常用的方法有:
- PCA (Principal component analysis,主成分分析)
- ICA (Independent component analysis,獨立成分分析)
- LDA (Linear Discriminant Analysis,線性判別分析)
- 對於影象識別中,還有SIFT方法。
4. 特徵構造 Feature construction
特徵構建指的是從原始資料中人工的構建新的特徵。我們需要人工的建立它們。這需要我們花大量的時間去研究真實的資料樣本,思考問題的潛在形式和資料結構,同時能夠更好地應用到預測模型中。
特徵構建需要很強的洞察力和分析能力,要求我們能夠從原始資料中找出一些具有物理意義的特徵。假設原始資料是表格資料,一般你可以使用混合屬性或者組合屬性來建立新的特徵,或是分解或切分原有的特徵來建立新的特徵。
總結
參考資料
[1]From 參考美團的"機器學習中的資料清洗與特徵處理綜述"
[2]From特徵工程與模型調優
相關文章
- 機器學習 | 特徵工程機器學習特徵工程
- 機器學習——特徵工程機器學習特徵工程
- 機器學習特徵工程機器學習特徵工程
- 機器學習2-特徵工程機器學習特徵工程
- 面向機器學習的特徵工程一、引言機器學習特徵工程
- SparkML機器學習之特徵工程(一)特徵提取(TF-IDF、Word2Vec、CountVectorizer)Spark機器學習特徵工程
- python基礎學習之 特徵工程Python特徵工程
- 機器學習之良好特徵的特點機器學習特徵
- 機器學習-特徵提取機器學習特徵
- 機器學習中,有哪些特徵選擇的工程方法?機器學習特徵
- 機器學習之 基於xgboost的特徵篩選機器學習特徵
- 百面機器學習總結--第一章特徵工程機器學習特徵工程
- 機器學習之特徵組合:組合獨熱向量機器學習特徵
- 機器學習的靜態特徵和動態特徵機器學習特徵
- 美團機器學習實踐第二章-特徵工程總結機器學習特徵工程
- 在大型金融資料集上使用機器學習的特徵工程測試機器學習特徵工程
- 機器學習筆記——特徵標準化機器學習筆記特徵
- 機器學習的未來——深度特徵融合機器學習特徵
- 機器學習1-sklearn&字典特徵抽取機器學習特徵
- 為什麼說自動化特徵工程將改變機器學習的方式特徵工程機器學習
- 【機器學習】--Python機器學習庫之Numpy機器學習Python
- 機器學習之學習速率機器學習
- 回顧·機器學習/深度學習工程實戰機器學習深度學習
- 機器學習之學習曲線機器學習
- 機器學習框架ML.NET學習筆記【3】文字特徵分析機器學習框架筆記特徵
- 機器學習之pca機器學習PCA
- 機器學習之皮毛機器學習
- 機器學習之特徵組合: 多非線性規律進行編碼機器學習特徵
- 哪些特徵對我的機器學習模型影響最大?特徵機器學習模型
- 機器學習工程師方向文章清單機器學習工程師
- 機器學習之梯度下降機器學習梯度
- 機器學習之迭代方法機器學習
- 機器學習之泛化機器學習
- 人工智慧-機器學習-Python-第三方庫-scikit-learn(用於特徵工程)人工智慧機器學習Python特徵工程
- 【Meetup預告】OpenMLDB+OneFlow:連結特徵工程到模型訓練,加速機器學習模型開發特徵工程模型機器學習
- AI工程師的機遇在哪?機器學習工程師最急缺AI工程師機器學習
- 谷歌機器學習43條規則:機器學習工程的最佳實踐經驗谷歌機器學習
- 機器學習-無監督學習(人臉識別,使用NMF進行特徵提取)機器學習特徵