機器學習中特徵的處理及選擇


基礎概念

特徵工程是經過對原始數據的處理和加工,將原始數據屬性經過處理轉換爲數據特徵的過程,屬性是數據自己具備的維度,特徵是數據中所呈現出來的某一種重要的特性,一般是經過屬性的計算,組合或轉換獲得的。好比主成分分析就是將大量的數據屬性轉換爲少數幾個特徵的過程。某種程度而言,好的數據以及特徵每每是一個性能優秀模型的基礎。html

既然叫特徵工程,天然涵蓋了不少內容,而其中涉及到的比較重要的部分是特徵的處理及選擇。算法

特徵處理包含:app

  • 數據清洗
  • 數據規範化
  • 特徵衍生與提取

特徵選擇包含:機器學習

  • 特徵過濾
  • wrapper method
  • embedded method


數據清洗

數據清洗是指發現並糾正數據文件中可識別的錯誤以及經過處理獲得建模過程須要數據的過程。函數

數據清洗包含:性能

  • 缺失值處理
  • 異常值檢測與處理
  • 調配樣本比例和權重


缺失值處理

缺失值是指粗糙數據中因爲缺乏信息而形成的數據的聚類、分組、刪失或截斷。它指的是現有數據集中某個或某些屬性的值是不徹底的。學習

缺失值的處理目前主要有兩種方法:刪除缺失值和填充缺失值3d

1.刪除缺失值htm

若是一個樣本或變量中所包含的缺失值超過必定的比例,好比超過樣本或變量的一半,此時這個樣本或變量所含有的信息是有限的,若是咱們強行對數據進行填充處理,可能會加入過大的人工信息,致使建模效果打折扣,這種狀況下,咱們通常選擇從數據中剔除整個樣本或變量,即刪除缺失值。blog

2.缺失值填充

  • 隨機填充法

從字面上理解就是找一個隨機數,對缺失值進行填充,這種方法沒有考慮任何的數據特性,填充後可能仍是會出現異常值等狀況,通常狀況下不建議使用。

  • 均值填充法

尋找與缺失值變量相關性最大的那個變量把數據分紅幾個組,而後分別計算每一個組的均值,而後把均值填入缺失的位置做爲它的值,若是找不到相關性較好的變量,也能夠統計變量已有數據的均值,而後把它填入缺失位置。這種方法會在必定程度上改變數據的分佈。

  • 最類似填充法

在數據集中找到一個與它最類似的樣本,而後用這個樣本的值對缺失值進行填充。
與均值填充法有點相似,尋找與缺失值變量(好比x)相關性最大的那個變量(好比y),而後按照變量y的值進行排序,而後獲得相應的x的排序,最後用缺失值所在位置的前一個值來代替缺失值。

  • 迴歸填充法

把缺失值變量做爲一個目標變量y,把缺失值變量已有部分數據做爲訓練集,尋找與其高度相關的變量x創建迴歸方程,而後把缺失值變量y所在位置對應的x做爲預測集,對缺失進行預測,用預測結果來代替缺失值。

  • k近鄰填充法

利用knn算法,選擇缺失值的最近k個近鄰點,而後根據缺失值所在的點離這幾個點距離的遠近進行加權平均來估計缺失值。


異常值檢測與處理

異常值(outlier)是指一組測定值中與平均值的誤差超過兩倍標準差的測定值,與平均值的誤差超過三倍標準差的測定值,稱爲高度異常的異常值。異常值的產生通常由系統偏差、人爲偏差或數據自己的變異引發的。

  • 單變量異常值檢測(格拉布斯法)

首先,將變量按照其值從小到大進行順序排列x1,x2.....xn

其次,計算平均值x拔和標準差S,

同時計算偏離值,即平均值與最大值之差和平均值與最小值之差,而後肯定一個可疑值,通常是偏離平均值較大的那個。

計算統計量gi(殘差與標準差的比值),i爲可疑值的序列號。

再者,將gi與格拉布斯表給出的臨界值GP(n)比較,若是計算的Gi值大於表中的臨界值GP(n),則能判斷該測量數據是異常值,能夠剔除。這裏臨界值GP(n)與兩個參數有關:檢出水平α和測量次數n 。

檢出水平α:若是要求嚴格,檢出水平α能夠定得小一些,例如定α=0.01,那麼置信機率P=1-α=0.99;若是要求不嚴格,α能夠定得大一些,例如定α=0.10,即P=0.90;一般定α=0.05,P=0.95。

  • 多變量異常值檢測(基於距離計算)

基於距離的多變量異常值檢測相似與k近鄰算法的思路,通常的思路是計算各樣本點到中心點的距離,若是距離太大,則判斷爲異常值,這裏距離的度量通常使用馬氏距離(Mahalanobis Distance)。由於馬氏距離不受量綱的影響,並且在多元條件下,馬氏距離還考慮了變量之間的相關性,這使得它優於歐氏距離。

  • 異常值處理

單變量的狀況下異常值能夠考慮相似缺失值的刪除法、均值填充法或迴歸填充法,而多變量的狀況下,能夠嘗試用均值向量填充或者刪除。

總的來講,缺失值和異常值的處理要根據實際的狀況肯定合適的方法,由於某些狀況下異常值恰好可以反應一些現實問題。


調配樣本比例和權重

當數據集中出現樣本不均衡狀況時,須要調配樣本的比例以及權重,以便可以訓練出性能更優的模型,具體方法參考上一篇文章:機器學習中的類別不均衡問題
http://www.cnblogs.com/wkslearner/p/8870673.html


數據規範化

在機器學習中,因爲不一樣模型的須要,咱們常常要多數據作不一樣的規範化處理,以便可以獲得性能更優的模型。

在數據處理中,常常會接觸到的數據規範化操做有:

  • 數據無量綱化
  • 連續變量離散化
  • 離散變量處理


數據無量綱化

無量綱化使不一樣規格的數據轉換到同一規格,在某些比較和評價的指標處理中常常會用到,去除數據的單位限制,將其轉化爲無量綱的純數值,便於不一樣單位或量級的指標可以進行比較和加權。

數據無量綱化經常使用方法有:

  • 標準化方法
  • 極值化方法
  • 均值化方法
  • 標準差化方法


1.標準化方法

標準化方法是將變量的每一個值與其平均值之差除以該變量的標準差,無量綱化後變量的平均值爲0,標準差爲1。使用該方法無量綱化後不一樣變量間的均值和標準差都相同,即同時消除了變量間變異程度上的差別。
標準化公式爲:

2.極值化方法

極值化方法一般是經過變量取值的最大值和最小值將原始數據轉換爲特定範圍內的數據,從而消除量綱和數量級的影響。這種方法十分依賴兩個極端值。

一般狀況下極值化方法有3種方式:

第一種方法,是將變量的值除以該變量的全距,標準化後每一個變量的取值範圍在[-1,1]。
公式爲:

第二種方法,是將變量值與最小值之差除以該變量的全距,標準化後取值範圍在[0,1]。
公式爲:

第三種方法,是將變量值除以該變量的最大值,標準化後變量的最大取值爲1。
公式爲:

3.均值化方法

均值化方法是將變量值直接除以該變量的平均值,跟標準化方法不一樣的是,均值化方法可以保留變量間取值差別程度的信息。
均值化方法公式:

4.標準差化方法

標準差化方法是標準化方法的一種變形,標準差化方法是直接將變量值除以標準差,而不是減去均值後再除以標準差。標準差化方法無量綱化後變量的均值爲原始變量均值與標準差的比值,而不是0。
公式爲:


連續變量離散化

在使用某些算法時,咱們須要把連續變量轉換爲離散變量,在一些狀況下離散變量可以簡化模型計算同時可以提高模型的穩定性,好比邏輯迴歸常用離散後的變量進行訓練,可以體現模型的訓練速度以及提高模型的可解釋性。

連續變量離散化大體有兩類方法:

  • 卡方檢驗方法
  • 信息增益方法


1.卡方檢驗方法

一般狀況下,將變量按照值大小進行排列,將每一個值做爲一個組,而後對每一對相鄰的組計算卡方值,對其中最小的一對組合進行合併,接下來不斷重複以上操做,直到知足咱們設定的某一個條件,好比最小分組數5,即將連續變量分爲5組。

卡方統計量是指數據的分佈與所選擇的預期或假設分佈之間的差別的度量。它是由各項實際觀測次數(fo )與理論分佈次數(fe )之差的平方除以理論次數,而後再求和而得出的,其計算公式爲:

卡方值包含兩個信息:

  • 實際值與理論值誤差的絕對大小。
  • 差別程度與理論值的相對大小。


2.信息增益方法

信息增益方法是使用信息計算肯定分割點的自上而下的分裂技術。

首先是把每一個值當作分割點,將數據分紅兩個部分,在多種可能的分法中選擇產生最小信息熵的分法。而後在分紅的兩個區間中,尋找最大熵區間,繼續進行按前面的方法進行分割,直到知足條件爲止,好比知足指定個數時結束過程。

數據的信息屬性是與任務相關的,對於分類任務, 標籤值y包含的信息量爲:

其中, p(y)爲y出現的機率. p(y)越小, y包含的信息量越大. 這是符合直覺的.

熵定義爲信息的指望值.
一個能夠分爲m類的數據集S, 它的信息熵爲隨機獲得的一個label包含的信息量的指望值:

數據集的信息熵表明這個數據集的混亂程度. 熵越大, 越混亂.

若按照某種特定的方式, 例如按照某一屬性的值對S進行劃分, 獲得n個子集。新的子集們都有本身的信息熵, 它們的熵的和與原S的熵的差值就是這個劃分操做帶來的信息熵增益.


離散變量處理

在某些狀況下,好比迴歸建模時,咱們一般須要將分類變量量化處理或離散變量啞變量化。

分類變量分爲兩種:有序分類變量和無序分類變量,在引入模型是咱們一般須要對其進行量化處理,轉化爲離散變量,好比疾病的嚴重程度輕微,中度,重度,量化後用1,2,3來代替。但無序的分類變量,好比血型A,B,O型,若是咱們也用1,2,3表示就不合理了,由於血型之間並不存在遞進的關係。

此時咱們須要對離散變量進行進一步的處理,即啞變量化。

啞變量(Dummy Variable),又稱爲虛擬變量、虛設變量或名義變量,一般取值爲0或1,來反映某個變量的不一樣屬性。對於有n個分類屬性的自變量,一般須要選取1個分類做爲參照,所以能夠產生n-1個啞變量。

啞變量化後,特徵就變成了稀疏的了。這有兩個好處,一是解決了模型很差處理屬性數據的問題,二是在必定程度上也起到了擴充特徵的做用。


特徵衍生與提取

在建模過程當中,咱們一般會遇到一些問題,現有特徵的顯著性不高或者特定算法的須要,咱們須要從現有數據中構造一些特徵,有時又可能由於特徵過多,而須要降維處理,通常的方法是從衆多特徵中提取出特徵的共性,而後進行建模。


特徵衍生

特徵衍生通常是對原有的特徵進行轉換,計算以及組合而產生的新的特徵。

  1. 單一變量的基礎轉換,好比經過對單一變量進行平方,開根號,log轉換等。

  2. 變量經過添加時間維度進行衍生,好比3個月交易數據,6個月交易數據等。

  3. 多變量的運算,好比兩個變量相加,相乘或變量間計算一個比率後獲得新變量。

固然特徵衍生的方式各類各樣,具體仍是要看業務場景的須要,而後作相應的處理。


特徵提取

特徵提取是從原始特徵中找出最有效的特徵,這種作法的目的是下降數據冗餘,減小模型計算,發現更有意義的特徵等。

特徵提取分爲:

  • 線性特徵提取
  • 非線性特徵提取


線性特徵提取

線性特徵提取通常方法有PCA-主成分分析,LDA-線性判別分析,ICA-獨立成分分析等


1.PCA-主成分分析

主成分分析的原理是將一個高維向量x,經過一個特殊的特徵向量矩陣U,投影到一個低維的向量空間中,表徵爲一個低維向量y,而且僅僅損失了一些次要信息。也就是說,經過低維表徵的向量和特徵向量矩陣,能夠基本重構出所對應的原始高維向量。

PCA的算法步驟:

  • 去平均值,對每個特徵減去各自的平均值
  • 計算協方差矩陣
  • 計算協方差矩陣的特徵值及對應的特徵向量
  • 將特徵向量按對應特徵值從大到小進行排序,取靠前的k個特徵向量
  • 將數據轉換到k個特徵向量構建的新空間中,即爲降維到k維後的數據


2.LDA-線性判別分析

LDA是一種監督學習的降維技術,也就是說它的數據集的每一個樣本是有類別輸出的。這點和PCA不一樣。PCA是不考慮樣本類別輸出的無監督降維技術。LDA是經過將數據在低緯度上進行投影,投影后但願每一種類別數據的投影點儘量的接近,而不一樣類別的數據的類別中心之間的距離儘量的大。

LDA的算法步驟:

  • 計算類內散度矩陣
  • 計算類間散度矩陣
  • 計算類內散度矩陣的逆與類間散度矩陣的乘積
  • 計算乘積結果的最大特徵值及其對應的特徵向量,獲得投影矩陣
  • 將數據集中的每個樣本特徵轉換爲新樣本
  • 輸出獲得新數據集


特徵選擇

特徵選擇的通常過程是這樣的,首先是從特徵全集中產生出一個特徵子集,篩選過程採用某種評價標準,把符合標準的特徵篩選出來,同時對篩選出來的特徵進行有效性驗證。

產生特徵子集通常是一個搜索的過程,搜索空間中的每一個狀態就是一個特徵子集,搜索算法分爲徹底搜索,啓發式搜索和隨機搜索。
特徵選擇的過程可分爲,特徵過濾,wrapper及embedded。


特徵過濾

特徵過濾是選定一個指標來評估特徵,根據指標值來對特徵進行重要性排序,去掉達不到指標的特徵,評價指標包含方差,相關性,信息增益等。

  • 基於方差的特徵過濾:計算每一個特徵的方差大小進行排序,而後按照特定的閾值或者特徵個數進行篩選,方差的大小實際上表示的是變量所含有的信息量,方差較小可能的表現是變量的取值比較單一,對於咱們區分目標變量的用處不大,於是能夠選擇剔除。

  • 相關性特徵過濾:計算各個特徵對目標特徵的相關係數以及相關係數的P值,選擇顯著性高的特徵。

  • 基於信息增益的特徵過濾:計算包含每一個特徵帶來信息增益的大小,並以此來判斷每一個特徵對於咱們分類器所提供信息量的大小,信息增益越大,說明該特徵對於分類結果正確提供的幫助越大。


Wrapper Method

Wrapper方與特徵過濾不一樣,它不單看特徵和目標直接的關聯性,而是從添加這個特徵後模型最終的表現來評估特徵的好壞。而在一個特徵空間中,產生特徵子集的過程能夠當作是一個搜索問題。目前主要用的一個Wrapper方法是遞歸特徵消除法。

遞歸特徵消除的主要思想是不斷使用從特徵空間中抽取出來的特徵子集構建模型,而後選出最好的的特徵,把選出來的特徵放到一遍,而後在剩餘的特徵上重複這個過程,直到全部特徵都遍歷了。這個過程當中特徵被消除的次序就是特徵的排序。這是一種尋找最優特徵子集的貪心算法。


Embedded Method

Embedded方法是在模型構建的同時選擇最好的特徵。最爲經常使用的一個Embedded方法就是:正則化。正則化就是把額外的約束或者懲罰項加到已有模型的損失函數上,以防止過擬合併提升泛化能力。正則化分爲L1正則化(Lasso)和L2正則化(Ridge迴歸)。

L1正則化是將全部係數的絕對值之和乘以一個係數做爲懲罰項加到損失函數上,如今模型尋找最優解的過程當中,須要考慮正則項的影響,即如何在正則項的約束下找到最小損失函數。一樣的L2正則化也是將一個懲罰項加到損失函數上,不過懲罰項是參數的平方和。其餘還有基於樹的特徵選擇等。

相關文章
相關標籤/搜索