特征的選擇對于整個模型預測的準確性有至關重要的作用,好的特征集對于一個機器學習模型的預測效果的邊際貢獻遠遠大于好的模型的貢獻:
- 不同的機器學習模型(SVM或RandomForest等)對于有效的特征集的訓練效果,差別不會特別大;
- 但是,如果特征集很爛,無論什么模型,都很難有較好的訓練效果。
所以,還是那句話:
Garbage in, garbage out !
1. 什么是特征(Features)?
特征是任何機器學習模型的進行訓練的”原材料”,無論是監督式模型(Supervised)還是無監督式(Unsupervised)模型,都需要特征集作為輸入變量(Input variables)。當然監督式模型相比無監督式模型還需要輸出變量(Output),我們稱之為目標(target)。無論是特征還是目標,它們的類型無非以下幾種:
- 二元制(Binary):如{漲,跌}, {對, 錯}, {男, 女};
- 有限的離散集 (finite discrete): 如一周有七天(星期一、星期二...),或者一個城市的行政區(黃埔、靜安...)。這些數據可以是有序的,也可以是無序的。
- 連續性數值:處于負無窮到正無窮所有數值,如股價、利率等
2. 特征怎么來?
特征是機器學習模型的“原材料”,那特征的“原材料”是什么?其實就是原始數據,例如股票的行情數據、財務數據等;將這些原始數據經過一系列的轉換加工得到特征,例如技術指標(MACD、DMA等)。在這個轉換的過程中涉及到一系列的數據處理的流程,下面我們進行詳細說明。
數據清洗及處理
做研究最怕什么?數據是錯的,那一切無從談起,在盡可能的確保數據質量的前提下,我們還是要對數據進行規范性的清洗,無論是原始數據、還是經轉換后的特征集都要經過以下步驟進行處理:
- 缺失值處理:1. 直接刪除(常用); 2. 或者進行插值處理(Interpolate);
- 異常值處理:1. 直接刪除; 2. 極值處理到一個正常區間(推薦);
- 標準化處理:1. 正態標準化(常用);2. 其他標準化(見文末);
- 相關性指標處理:有時候特征集當中有些指標的相關性特別高,對于一些模型,這種指標間的高度相關可能會降低模型的預測效果,所以在訓練模型之前,要找出相關性較高的幾對指標,并保留其中一個。
-
線性相關指標處理:除了上文提高一對高度相關的指標的問題,同時也可能存在某幾個指標與另一個指標存在線性回歸的關系,這也會影響模型的預測效果。01
- 特征的轉換(可選):如PCA等方法
3. 怎么選擇特征(或指標)?
訓練任何一個機器學習的模型時,輸入的特征并不是越多越好,如果一股腦放入幾十上百個特征去訓練,往往會適得其反。一個模型的好壞往往取決于幾個(三到五個)核心的指標。所以特征的選擇就極為重要。特征選擇主要由以下兩類方法:
過濾法:該方法的特點是不需要機器學習模型的參與,直接測量特征與預測目標(Target)的相關程度,只要通過某些選取標準的指標才會被應用到模型的訓練中。
封裝法:該方法與過濾法最大的區別是在選特征的時候運用的相關的機器學習模型,直接通過篩選預測效果好的指標作為特征集。
兩種方法各有優缺點,過濾法會刪除相關度較低的特征,缺點是某些特征可能本身與目標相關度較低,但與其他特征結合起來可能會提高預測的效果,所以存在誤刪的情況。封裝法直接將特征輸入模型,通過各種迭代選出最適合某些模型的一組特征;缺點時運算效率太慢,而且存在過度擬合的風險。最適合的解決辦法是,通過過濾法篩選出一批有潛力的特征,再通過封裝法精選特征,從而構建一個預測效果良好的機器學習模型。
在這篇文章中,我們主要討論過濾法的實際運用。通過各種不同的判斷特征重要性的方法與標準選則相應的特征,無外乎以下幾種方法:
- 選擇重要性最高的前N個特征;
- 選擇重要性最高的前n%的特征;
- 選擇重要性超過一定閾值s的特征。
無論是N、n還是s,都可以通過優化的方法找到最優值運用到最后的模型中去。
3.1 重要性
現在主要的問題就是怎么評價一個特征對于所需預測的目標的重要性,我們稱之為Variable Importance(VI)。結合各方面的文獻,VI的評價方法主要有以下指標:
- 信息熵(Mutual Information)
- Cramer's V
(未完待續)
總結
所有算法的學習都要了解該算法所針對的問題,以及這個問題是不是你當前遇到的。不推薦窮舉式的嘗試去找出一個最優的組合,這樣的做法
附錄
其他標準化方法