機器學習(二十一)— 特征工程、特征選擇、歸一化方法


  特征工程:特征選擇,特征表達和特征預處理。

1、特征選擇

  特征選擇也被稱為變量選擇和屬性選擇,它能夠自動地選擇數據中目標問題最為相關的屬性。是在模型構建時中選擇相關特征子集的過程。

  特征選擇與降維不同。雖說這兩種方法都是要減少數據集中的特征數量,但降維相當於對所有特征進行了重新組合而特征選擇僅僅是保留或丟棄某些特征,而不改變特征本身。 
降維常見的方法有PCA,SVD,薩蒙映射等,特征選擇是丟棄作用小的特征。

  為什么要做特征選擇?

  在有限的樣本數目下,用大量的特征來設計分類器計算開銷太大而且分類性能差。通過特征選取,刪選掉冗余重復的和不相關的特征來進一步降維,獲取盡可能小的特征子集,模型僅需少量的樣本就可以得到較高的預測准確率。特征選擇可以移除那些重復冗余、無關的特征,利於構建復雜度更低、解釋性更強的模型。  

  1、去除冗余和不相關的特征,減少了特征維度,有利於提高模型的預測能力,構建效率更高的模型。2、更好地理解數據生成的過程,模型的解釋性更強。

  特征選擇方法有很多,一般分為三類:

  (1)第一類Filter(過濾法)比較簡單,它按照特征的發散性或者相關性指標對各個特征進行評分,即給每一維的特征賦予權重,這樣的權重就代表着該維特征的重要性,然后依據權重排序。設定評分閾值或者待選擇閾值的個數,選擇合適特征。

  使用方差選擇法,先要計算各個特征的方差,然后根據閾值,選擇方差大於閾值的特征,即去除取值變化小的特征。

  卡方檢驗,經典的卡方檢驗是檢驗定性自變量對定性因變量的相關性。假設自變量有N種取值,因變量有M種取值,考慮自變量等於i且因變量等於j的樣本頻數的觀察值與期望的差距,構建統計量。拿觀察的現象推測結果。用方差來衡量某個觀測頻率和理論頻率之間差異性的方法。

  個人經驗是,在沒有什么思路的 時候,可以優先使用卡方檢驗和互信息、信息增益來做特征選擇。

  (2)第二類是Wrapper(包裝法),根據目標函數,通常是預測效果評分,每次選擇部分特征,或者排除部分特征。

  將子集的選擇看作是一個搜索尋優問題,生成不同的組合,對組合進行評價,再與其他的組合進行比較。這樣就將子集的選擇看作是一個是一個優化問題,這里有很多的優化算法可以解決,尤其是一些啟發式的優化算法。一般我們會在不同的子集上構建模型,再利用模型的預測准確率來對不同的特征子集打分。搜索方法可以是隨機式的,例如隨機爬山法,也可以是啟發式的,例如前向迭代和反向迭代。

  (3)第三類Embedded(嵌入法)則稍微復雜一點,它先使用某些機器學習的算法和模型進行訓練,得到各個特征的權值系數,根據權值系數從大到小來選擇特征。類似於過濾法,但是它是通過機器學習訓練來確定特征的優劣,而不是直接從特征的一些統計學指標來確定特征的優劣。

  正則化,回歸模型,SVM,決策樹,隨機森林。

  其中回歸模型學習,越是重要的特征在模型中對應的系數就會越大,而跟輸出變量越是無關的特征對應的系數就會越接近於0。

  正則化L1正則化將系數w的l1范數作為懲罰項加到損失函數上,由於正則項非零,這就迫使那些弱的特征所對應的系數變成0。因此L1正則化往往會使學到的模型很稀疏(系數w經常為0),這個特性使得L1正則化成為一種很好的特征選擇方法。L1正則化像非正則化線性模型一樣也是不穩定的,如果特征集合中具有相關聯的特征,當數據發生細微變化時也有可能導致很大的模型差異。

  L2正則化將系數向量的L2范數添加到了損失函數中。由於L2懲罰項中系數是二次方的,這使得L2和L1有着諸多差異,最明顯的一點就是,L2正則化會讓系數的取值變得平均。對於關聯特征,這意味着他們能夠獲得更相近的對應系數。L2正則化對於特征選擇來說一種穩定的模型,不像L1正則化那樣,系數會因為細微的數據變化而波動。所以L2正則化和L1正則化提供的價值是不同的,L2正則化對於特征理解來說更加有用:表示能力強的特征對應的系數是非零。

  隨機森林,是一種非常流行的特征選擇方法,它易於使用,一般不需要feature engineering、調參等繁瑣的步驟,並且很多工具包都提供了平均不純度下降方法。它的兩個主要問題,1是重要的特征有可能得分很低(關聯特征問題),2是這種方法對特征變量類別多的特征越有利(偏向問題)。

  GBDT,梯度提升樹。

  在Kaggle之類的算法競賽中,高分團隊主要使用的方法除了集成學習算法,剩下的主要就是在高級特征上面做文章。所以尋找高級特征是模型優化的必要步驟之一。當然,在第一次建立模型的時候,我們可以先不尋找高級特征,得到以后基准模型后,再尋找高級特征進行優化。

    尋找高級特征最常用的方法有:

    若干項特征加和: 我們假設你希望根據每日銷售額得到一周銷售額的特征。你可以將最近的7天的銷售額相加得到。
    若干項特征之差: 假設你已經擁有每周銷售額以及每月銷售額兩項特征,可以求一周前一月內的銷售額。
    若干項特征乘積: 假設你有商品價格和商品銷量的特征,那么就可以得到銷售額的特征。
    若干項特征除商: 假設你有每個用戶的銷售額和購買的商品件數,那么就是得到該用戶平均每件商品的銷售額。

  當然,尋找高級特征的方法遠不止於此,它需要你根據你的業務和模型需要而得,而不是隨便的兩兩組合形成高級特征,這樣容易導致特征爆炸,反而沒有辦法得到較好的模型。個人經驗是,聚類的時候高級特征盡量少一點,分類回歸的時候高級特征適度的多一點。

2、特征表達

  即如果對某一個特征的具體表現形式做處理。主要包括缺失值處理,特殊的特征處理比如時間和地理位置處理,離散特征的連續化和離散化處理,連續特征的離散化處理幾個方面。

3、特征預處理

  (1)歸一化:

  0、為什么一些機器學習模型需要對數據進行歸一化?

  1)歸一化后加快了梯度下降求最優解的速度;2)歸一化有可能提高精度。

  有哪些方法:

  z-score標准化:這是最常見的特征預處理方式,基本所有的線性模型在擬合的時候都會做 z-score標准化。具體的方法是求出樣本特征x的均值mean和標准差std,然后用(x-mean)/std來代替原特征。這樣特征就變成了均值為0,方差為1了。

  max-min標准化:也稱為離差標准化,預處理后使特征值映射到[0,1]之間。具體的方法是求出樣本特征x的最大值max和最小值min,然后用(x-min)/(max-min)來代替原特征。如果我們希望將數據映射到任意一個區間[a,b],而不是[0,1],那么也很簡單。用(x-min)(b-a)/(max-min)+a來代替原特征即可。

  經常我們還會用到中心化,主要是在PCA降維的時候,此時我們求出特征x的平均值mean后,用x-mean代替原特征,也就是特征的均值變成了0, 但是方差並不改變。這個很好理解,因為PCA就是依賴方差來降維的,如果我們做了z-score標准化,所以特征的方差為1,那么就沒法來降維了。

  雖然大部分機器學習模型都需要做標准化和歸一化,也有不少模型可以不做做標准化和歸一化,主要是基於概率分布的模型,比如決策樹大家族的CART,隨機森林等。當然此時使用標准化也是可以的,大多數情況下對模型的泛化能力也有改進。

  (2)異常特征樣本清洗

  (3)樣本不平衡:一般是兩種方法:權重法或者采樣法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM