1. 特徵工程概述
數據和特徵決定了機器學習的上限,而模型和算法只是去儘可能地逼近這個上限。由此可見,特徵工程在機器學習中佔有相當重要的地位。
特徵工程:找到與問題有關的任何信息並把它們轉換成特徵矩陣的數值
2 特徵工程在本案例中的應用
2.1 異常值處理
在數據預處理時,是否對異常值進行剔除,需要視具體情況而定,因爲有些異常值中也有可能蘊含有用的信息。
異常值處理方法 | 方法描述 |
---|---|
刪除含有異常值的記錄 | 直接將整條記錄刪除 |
視爲缺失值 | 將異常值視爲缺失值,利用對缺失值處理的方法處理異常值 |
平均值修正 | 可用前後兩個觀測值的平均值修正該異常值 |
不處理 | 直接在具有異常值的數據集上進行挖掘建模 |
在處理異常值時,應該先分析異常值出現的可能原因,再判斷異常值是否應該捨棄,如果是正確的數據,可以直接在具有異常值的數據集上進行挖掘建模。
2.2 數據歸一化
也稱爲數據規範化,是數據挖掘一項基礎工作。由於不同評價指標往往具有不同量綱,數值間的差別可能很大,不進行處理可能會影響到數據分析的結果。爲此,將其按照比例進行縮放,使之落入一個特定的區域,以便於綜合分析。
1)最值歸一化
也稱爲離差標準化,是對原始數據進行線性變化,將數值映射到之間。轉換公式:
其中:爲樣本數據的最大值,爲樣本的最小值。爲極差。
缺點:若數值集中某個數值很大,則規範化後會接近於0,並且將會過度集中。而一旦遇到超過範圍時的數據,將會出現報錯,需重新確定和。
2)標準差歸一化
也稱爲零-均值規範化,經過處理的數據均值爲,標準差爲。轉換公式:
其中:爲原始數據的均值,爲原始數據的標準化。是目前最爲常用的標準化方法
2.3 數據分桶
也稱爲連續數據離散化,即將連續屬性變換成分類屬性。對於某些數據挖掘算法如(ID3、Apriori算法等),要求數據是分類屬性形式。
連續數據的離散化就是在數據的取值範圍內設定若干個離散的劃分點,將取值範圍劃分爲一些離散化的區間,最後用不同的符號或整數值代表落在每個子區間中的數據值。所以,離散化涉及兩個子任務:確定分類數以及如何將連續屬性值映射到這些分類值。
常用的數據分桶方法有:等寬分桶、等頻分桶、基於聚類的分桶……
1)等寬分桶
將屬性的值域分成具有相同寬度的區間,區間的個數可以由數據本身決定也可由用戶指定,類似於製作頻率分佈表。
缺點:1.需要人爲規劃分佈區間;2.對於離羣點比較敏感,傾向於不均勻地把屬性值分佈到各個區間,這樣的結果會嚴重損壞建立的決策模型。
2)等頻分桶
將相同數量的記錄放進每個區間。
優點:避免了等寬分桶的缺點;
缺點:1.需要人爲規劃分佈區間;2.可能將相同的數據值分到不同的區間以滿足每個區間中固定的數據個數
3)基於聚類的分桶
一維聚類的方法包括兩個步驟,首先將連續屬性的值用聚類算法(如K-Means)進行聚類,然後將聚類得到的簇進行處理,合併到一個簇的連續屬性值並做同一標記。
2.4 缺失值處理
針對缺失值的處理方法有三類:刪除記錄、不處理、數據插補和數據分箱。
1)刪除記錄
如果有小部分的樣例有缺失,直接刪除該樣例的方法顯然是最有效的。
缺點:會造成數據的浪費。
2)不處理
部分模型允許在含有缺失的數據集上建立模型。
3)數據插補
插補方法 | 方法描述 |
---|---|
固定值 | 用固定的常量進行代替 |
均值/中位數/衆數 | 根據數據屬性類型,對其直接用對應數值填補 |
最近鄰插補 | 在記錄中找到與缺失樣本最接近的樣本的該屬性值插補 |
迴歸方法 | 根據已有數據和其他有關的其他變量(因變量)的數據建立擬合模型估計缺失值 |
插值法 | 利用幾個已知點建立合適的插值函數,未知值由對應點求函數值填補 |
4)數據分箱
將數據含有缺失值的數據放在同一組中。
2.5 特徵構建
1)統計量特徵
2)時間特徵
3)地理信息特徵
4)非線性變換
5)特徵組合
2.6 特徵篩選
原則:獲取儘可能小的特徵子集,不顯著降低分類精度,不影響分類分佈以及特徵子集應具有穩定、適應性強的特點。
1)過濾式(Filter)
該方法中,先進行特徵選擇,然後去訓練學習器,所以特徵選擇的過程與選擇器無關。相當於先對特徵進行過濾操作,然後用特徵子集來訓練學習器。
思想:對每一維特徵“打分”,即給每一維的特徵賦予權重,然後依次根據權重進行排序
方法:
- Chi-squared test(卡方檢驗)
- Information gain(信息增益)
- Correlation coefficient scores(相關係數)
優點:運行速度快,是一種非常常用的特徵篩選方法;
缺點:1. 無法提供反饋,特徵選擇的標準、規範的制定實在特徵搜索算法中完成,學習算法無法向特徵搜索算法傳遞對特徵的需求;2. 可能會在處理某個特徵時由於任意原因導致該特徵不重要,但是該特徵與其他特徵結合起來則有可能很重要。
2)封裝式(Wrapper)
又稱包裹式方法。該方法直接把最後要使用的分類器作爲特徵選擇的評價函數,對於特定的分類器選擇最優的特徵子集。
思想:把子集的選擇看作是一個搜索尋優問題,生成不同的組合,對組合進行評價,再與其他的組合進行比較。此時可以將其視爲優化問題,此時可以使用一些優化算法,尤其是一些啓發式的優化算法,如GA、PSO、DE、ABC等方法。
方法:遞歸特徵消除算法。
優點:1. 對特徵進行搜索是圍繞學習算法展開,對特徵選擇的標準是按照學習算法的需求展開;2. 能夠考慮學習算法所屬的任意學習偏差,從而確定最佳子特徵,真正關注學習問題本身;3. 由於每次針對特定子集時必須運行學習算法,故能關注到學習算法的學習偏差、歸納偏差,因此封裝能夠發揮巨大的作用。
缺點:運行遠遠慢於過濾算法,實際應用不夠廣泛。
3)嵌入式(Embedded)
將特徵選擇嵌入到模型訓練中,其訓練可能是相同的模型,但是特徵選擇完成後,還能給予特徵選擇完成的特徵和模型訓練出的超參數,再次訓練優化。
思想:在模型既定的情況下學習出對提高模型準確性最好的特徵,也就是在確定模型的過程中,挑選出那些對模型的訓練有着重要意義的特徵。
方法:用帶有L1正則化的項完成特徵選擇(也可以結合L2懲罰項來優化)、隨機森林平均不純度減少法、平均精確度減少法。
優點:1. 對特徵進行搜索時圍繞學習算法展開,能夠考慮學習算法所屬的任意學習偏差;2. 訓練次數小於封裝式方法,比較節省時間。
缺點:運行速度相對於過濾式方法仍較慢。
2.7 降維
1) 主成分分析
主成分分析(Principal Component Analysis, PCA)算法是利用正交變換來對一系列可能相關的變量的觀測值進行線性轉換,從而投影爲一系列線性不相關變量的值,這些不相關變量稱爲主成分。是非常基礎的一種降維算法。
注意:PCA對原始數據的正則化或預處理敏感。
2)線性判別降維
線性判別降維(Linear Discriminant Analysis, LDA)算法是將數據投影到低維空間之後,使得同一類數據儘可能的緊湊,不同類的數據儘可能分散,是一種有監督的機器學習算法。
3)獨立成分分析
獨立成分分析(Independent Component Analysis, ICA)是從多維統計數據中尋找其內在因子或成分的一種方法。
未完待續
參考: