一.特征提取和特征選擇的區別
特征選擇和降維(特征提取)有着些許的相似點,這兩者達到的效果是一樣的,就是試圖去減少特征數據集中的屬性(或者稱為特征)的數目;但是兩者所采用的方式方法卻不同:降維的方法主要是通過屬性間的關系,如組合不同的屬性得到新的屬性,這樣就改變了原來的特征空間;而特征選擇的方法是從原始特征數據集中選擇出子集,是一種包含的關系,沒有更改原始的特征空間。
二.常用的特征選擇方法有哪些?
特征選擇是從樣本集中選取重要的特征子集
比較有名的特征選擇有過濾法(Filter),包裹法(Wrapper),嵌入法(Embedded)
先介紹幾個和特征選擇相關的名詞:
特征發散:如果特征不發散,也就是說特征的方差趨近於0,則代表這個特征上不同樣本之間沒有差異性,對區分樣本的作用基本不存在。
特征與目標的相關性:所謂相關性,就是說特征和目標值之間存在正相關(隨着目標值的變大特征值也逐漸變大)或者負相關的特性。代表了特征值和目標值之間具有很強的數據上的因果關系。
1.過濾法
過濾法就是按照發散性或者相關性對各個特征進行評分,設定閾值或者選擇閾值的個數,完成特征選擇。
1) 方差法:這種方法通過計算每個特征的均值和方差,設定一個基礎閾值,當該維度的特征方差小於基礎閾值時,則丟棄該特征。這種方法簡單高效的過濾了一些低方差的特征,但是存在一個問題就是閾值的設定是一個先驗條件,當設置過低時,保留了過多低效的特征,設置過高則丟棄了過多有用的特征。
2)單變量特征選擇:單變量特征選擇能夠對每一個特征進行測試,衡量該特征和響應變量之間的關系,根據得分扔掉不好的特征。單變量特征選擇方法,獨立的衡量每個特征與響應變量之間的關系
卡方檢驗:對於回歸和分類問題可以采用卡方檢驗等方式對特征進行測試。
卡方檢驗是數理統計中一種常用的檢驗兩個變量獨立性的方法。
卡方檢驗最基本的思想就是通過觀察實際值與理論值的偏差來確定理論的正確與否。
具體做的時候常常先假設兩個變量確實是獨立的(行話就叫做“原假設”),然后觀察實際值(也可以叫做觀察值)與理論值(這個理論值是指“如果兩者確實獨立”的情況下應該有的值)的偏差程度,如果偏差足夠小,我們就認為誤差是很自然的樣本誤差,是測量手段不夠精確導致或者偶然發生的,兩者確確實實是獨立的,此時就接受原假設;如果偏差大到一定程度,使得這樣的誤差不太可能是偶然產生或者測量不精確所致,我們就認為兩者實際上不是相互獨立的,即否定原假設,而接受備擇假設。
在分類任務的特征選擇階段,我們主要關心一個隨機變量(某一特征)與另一個隨機變量(樣本類別)之間是否相互獨立?如果獨立,就可以說該特征對樣本類別的確定不起作用,即我們根本無法根據該特征出現與否來判斷該樣本是否屬於這個分類。
注意:首先我們需要明白對特征選擇來說原假設是什么,因為計算出的卡方值越大,說明對原假設的偏離越大,我們越傾向於認為原假設的反面情況是正確的。通常我們一般使用”特征xi與類別y不相關“來做原假設。選擇的過程也變成了為每個特征xi計算它與類別y的卡方值,從大到小排個序(此時開方值越大越相關),取前k個就可以(因為是從大到小排序的,卡方值越大說明越偏離特征xi與類別y不相關的這個原假設,那么特征和類別相關性就越大)。
總結:卡方通常用於檢驗兩個變量間的獨立性,在做特征選擇時我們希望檢驗每個特征和類別之間的獨立性,對於每個特征我們假設特征和類別相互獨立。卡方值越大越偏離於這個假設,說明特征和類別不相互獨立是我們想要選擇的特征,因此對卡方值從大到小進行排序,選擇前k個。
互信息法選擇特征樣例:
什么是互信息?
互信息(Mutual Information)是信息論里一種有用的信息度量,它可以看成是一個隨機變量中包含的關於另一個隨機變量的信息量,或者說是一個隨機變量由於已知另一個隨機變量而減少的不肯定性。
2. 包裹法(Wrapper)
所謂包裹法就是選定特定算法,然后再根據算法效果來選擇特征集合。
就是通過不斷的啟發式方法來搜索特征,主要分為如下兩類。
方法一:選擇一些特征,逐步增加特征保證算法模型精度是否達標。
方法二:刪除一些特征,然后慢慢在保持算法精度的條件下,縮減特征。
即為選用那些本就提供特征重要性測量的模型,直接調用相應方法進行特征選擇。
1)利用線性回歸模型
這個不常用,因為真實數據的線性關系不是很好,故應選擇能處理非線性的隨機森林模型,它精確度更高,也提供預測特征重要性的方法。
lr.coef_ lr為創建的模型,會輸出形如:
Linear model: -1.291 * X0 + 1.591 * X1 + 2.747 * X2 通過特征前的權重值來判斷特征的重要性
2)RF選取重要特征的依據
平均不純度減少(MDI):表示每個特征對誤差的平均減少程度。
平均精確率減少(MDA):打亂每個特征的特征值順序,並且度量順序變動對模型的精確率的影響。對於不重要的特征來說,打亂順序對模型的精確率影響不會太大,但是對於重要的特征來說,打亂順序就會降低模型的精確率。
3)sklearn GBDT是根據非葉子節點在分裂時加權不純度減少的程度來衡量的,減少得越多說明特征越重要。不純度的減少實際上就是該節點此次分裂的收益,因此我們也可以這樣理解,節點分裂時收益越大,該節點對應的特征的重要度越高。(收益的計算參考:https://blog.csdn.net/yangxudong/article/details/53872141)
4)XGBoost則有三種方法(get_score)
weight:特征用來作為分裂點的次數
gain:使用特征進行切分的平均增益
cover:某個特征在某個結點進行分裂時所覆蓋的樣本個數
3. 嵌入法(Embedded)
就是利用正則化的思想,將部分特征屬性的權重調整到0,則這個特性相當於就是被舍棄了。(其實就是在損失函數上再加入正則項,不斷的利用梯度下降極小化損失函數,調整一些特征的權重,有些權重變為0了則相當於被舍棄了,沒被舍棄的相當於被選擇出來的向量。)
L1正則方法具有稀疏解的特性,因此天然具備特征選擇的特性,但是要注意,L1沒有選到的特征不代表不重要,原因是兩個具有高相關性的特征可能只保留了一個,如果要確定哪個特征重要應再通過L2正則方法交叉檢驗;
三、常用的特征提取方法有哪些?
常用的方法有主成分分析(PCA),獨立成分分析(ICA),線性判別分析(LDA)一般數據是有類別的,最好先考慮用LDA降維。也可先用小幅度的PCA降維消除噪聲再用LDA降維,若訓練數據沒有類別優先考慮PCA。
特征提取是由原始輸入形成較少的新特征,它會破壞數據的分布,為了使得訓練出的模型更加健壯,若不是數據量很大特征種類很多,一般不要用特征提取。
1.PCA
作為一個非監督學習的降維方法,它只需要特征值分解,就可以對數據進行壓縮,去噪。因此在實際場景應用很廣泛。為了克服PCA的一些缺點,出現了很多PCA的變種,比如為解決非線性降維的KPCA,還有解決內存限制的增量PCA方法Incremental PCA,以及解決稀疏數據降維的PCA方法Sparse PCA等。
PCA是最常用的線性降維方法,它的目標是通過某種線性投影,將高維的數據映射到低維的空間中表示,並期望在所投影的維度上數據的方差最大(樣本的分布最散亂)以使用較少的數據維度同時保留住較多的原數據點的特征。
PCA的優缺點分析:
優點:
第一、僅僅需要以方差衡量信息量,不受數據集以外的因素影響。第二、各主成分之間正交,可消除原始數據成分間的相互影響的因素。第三、計算方法簡單,主要運算是特征值分解,易於實現。
缺點:
第一、提取出的各個特征維度的含義具有一定的模糊性,不如原始樣本特征的解釋性強。第二、PCA會消除一些類信息,但是方差小的非主成分也可能含有對樣本差異的重要信息,因降維丟棄可能對后續數據處理有影響。
2.LDA
LDA是一種監督學習的降維技術,也就是說它的數據集的每個樣本是有類別輸出的。LDA的思想可以用一句話概括,就是“投影后類內方差最小,類間方差最大”。什么意思呢? 我們要將數據在低維度上進行投影,投影后希望每一種類別數據的投影點盡可能的接近,而不同類別的數據的類別中心之間的距離盡可能的大。
LDA的優缺點分析:
LDA算法的主要優點有:
1)在降維過程中可以使用類別的先驗知識經驗,而像PCA這樣的無監督學習則無法使用類別先驗知識。
2)LDA在樣本分類信息依賴均值而不是方差的時候,比PCA之類的算法較優。
LDA算法的主要缺點有:
1)LDA不適合對非高斯分布樣本進行降維,PCA也有這個問題。
2)LDA降維最多降到類別數k-1的維數,如果我們降維的維度大於k-1,則不能使用LDA。當然目前有一些LDA的進化版算法可以繞過這個問題。
3)LDA在樣本分類信息依賴方差而不是均值的時候,降維效果不好。
4)LDA可能過度擬合數據。