机器学习之降维(特征选择与特征提取)
一、降維技術主要分為兩大類:特征選擇和特征提取。
基本概念:特征選擇:我們可以選出原始特征的一個子集。特征提取:通過現有信息進行推演,構造出一個新的特征子空間。
為什么要降維:
? ?(1)數據的多重共線性導致解的空間不穩定, 維度災難,模型復雜,導致模型的泛化能力弱;
? ?(2)高維空間樣本具有稀疏性,導致模型比較難找到數據特征;
? ?(3)過多的變量會妨礙模型查找規律;
? ?(4)有時特征矩陣過大, 導致計算量比較大,訓練時間長的問題。
降維的目的:
? ?(1)減少特征屬性的個數,剔除不相關或冗余特征,減少特征個數,提高模型精確度,減少運行時間。
? ?(2)確保特征屬性之間是相互獨立的
1、特征選擇
? ? sklearn.feature_selection :模塊中的類可以用來對樣本集進行 feature selection(特征選擇)和 dimensionality reduction(降維),這將會提高學習器的準確度或者增強它們在高維數據集上的性能。
? ? 特征選擇的功能:減少特征數量、降維,使模型泛化能力更強,減少過擬合;增強對特征和特征值之間的理解。
? ? 下面是sklearn中的幾種常見的特征選擇方法:各個方法的使用鏈接,中文的。
1.1、去掉取值變化小的特征:(Removing features with low variance),
? ?此方法只有在特征為離散型變量時才使用,如果是連續則要離散化。某特征的特征值只有0和1,若95%的樣本在該特征的取值都為1,那么該特征就沒什么意義,也就是變化比較小。但實際中,很少有這樣的特征,一般將它作為特征選擇的預處理,然后再用其他方法進行選擇。
? ?VarianceThreshold:是特征選擇中的一項基本方法。它會移除所有方差不滿足閾值的特征。默認設置下,它將移除所有方差為0的特征,即那些在所有樣本中數值完全相同的特征。
1.2、單變量特征選擇:(Univariate feature selection) ,
? ?通過基于單變量的統計測試來選擇最好的特征。它可以當做是評估器的預處理步驟。衡量它們與響應變量之間的關系,根據得分扔掉不好的特征。如:在回歸和分類中,可以使用卡方檢驗等方式對也特征進行測試。這種方法有許多改進的版本、變種。
? ?(1)、Pearson相關系數 Pearson Correlation:能幫助理解特征和響應變量之間關系衡量的是變量之間的線性相關性,結果的取值區間為[-1,1],-1表示完全的負相關(這個變量下降,那個就會上升),+1表示完全的正相關,0表示沒有線性相關。作為特征排序機制時,只對線性關系敏感。Scipy的 pearsonr 方法能夠同時計算相關系數和p-value。
? ?(2)、互信息和最大信息系數 (Mutual information and maximal information coefficient (MIC) ):互信息系數:能夠很好地度量各種相關性,計算復雜,不過很多toolkit都包含此工具(例如sklearn的MINE),得到相關性就可以排序選擇特征了。最大信息系數尋找一種最優的離散化方式,然后把互信息取值轉換成一種度量方式,取值區間在[0,1],通常變量要先離散化。
? ?(3)、距離相關系數 (Distance correlation):Pearson相關系數是0,我們也不能斷定這兩個變量是獨立的(有可能是非線性相關);但如果距離相關系數是0,那么我們就可以說這兩個變量是獨立的。
? ?(4)、基于學習模型的特征排序 (Model based ranking):構建單個特征的模型,通過模型的準確性為特征排序,借此選擇特征。當選擇到了目標特征之后,再用來訓練最終的模型。
? ?思路:先選擇機器學習算法,再針對每個單獨的特征和響應變量建立預測模型。某個特征和響應變量之間的關系是:(1)線性的:其實Pearson相關系數等價于線性回歸里的標準化回歸系數。(2)非線性的:可以用基于樹的方法(決策樹、隨機森林)、或者擴展的線性模型等?;跇涞姆椒ū容^易于使用,因為他們對非線性關系的建模比較好,并且不需要太多的調試。但要注意過擬合問題,因此樹的深度最好不要太大,再就是運用交叉驗證。注意:該基于學習模型,是針對單獨特征和響應變量之間的模型,下面的就是基于機器學習模型的方法1.3,1.4。
1.3、線性模型和正則化:
? ?1.2中的單變量特征選擇方法獨立的衡量每個特征與響應變量之間的關系,另一種主流的特征選擇方法是基于機器學習模型的方法。有些機器學習方法本身就具有對特征進行打分的機制,或者很容易將其運用到特征選擇任務中,例如回歸模型,SVM,決策樹,隨機森林等等。
? ?(1)線性模型:用回歸模型的系數w來選擇特征。越是重要的特征在模型中對應的系數就會越大,而跟輸出變量越是無關的特征對應的系數就會越接近于0。在噪音不多的數據上,或者是數據量遠遠大于特征數的數據上,如果特征之間相對來說是比較獨立的,那么即便是運用最簡單的線性回歸模型也一樣能取得非常好的效果。邏輯回歸同理。
? ?(2)正則化模型:正則化就是把額外的約束或者懲罰項加到已有模型(損失函數)上,以防止過擬合并提高泛化能力。損失函數由原來的E(X,Y)變為E(X,Y)+alpha||w||,w是模型系數組成的向量,||·||一般是L1或者L2范數,alpha是一個可調的參數,控制著正則化的強度。當用在線性模型上時,已有損失函數后加L1正則化稱為Lasso、已有損失函數后加L2正則化稱為Ridge regression、已有損失函數后加L1正則化和L2正則化稱為Elastic Net。
? ?(2.1)、L1正則化/Lasso:L1正則化將系數w的l1范數作為懲罰項加到損失函數上,由于正則項非零,這就迫使那些弱的特征所對應的系數變成0。因此L1正則化往往會使學到的模型很稀疏(系數w經常為0),L1正則方法具有稀疏解的特性,因此天然具備特征選擇的特性,稀疏解他們的許多系數為 0。 當目標是降低使用另一個分類器的數據集的維度, 它們可以與feature_selection.SelectFromModel 一起使用來選擇非零系數。
? ?(2.2)L2正則化/Ridge regression:L2正則化對于特征選擇來說一種穩定的模型,不像L1正則化那樣,系數會因為細微的數據變化而波動。所以L2正則化和L1正則化提供的價值是不同的,L1沒有選到的特征不代表不重要,原因是連個具有高相關性的特征可能只保留了一個,如果要確定哪個特征重要應再通過L2正則方法交叉檢驗。
? ?(2.3)ElasticNet :是一種使用L1和L2先驗作為正則化矩陣的線性回歸模型.這種組合用于只有很少的權重非零的稀疏模型,比如:Lasso, 但是又能保持Ridge 的正則化屬性。當多個特征和另一個特征相關的時候彈性網絡非常有用。Lasso 傾向于隨機選擇其中一個,而彈性網絡更傾向于選擇兩個,具體來說,應該分別使用L1和L2擬合,如果兩個特征在L2中系數相接近,在L1中一個系數為0一個系數不為0,那么其實這兩個特征都應該保留,原因是L1對于強相關特征只會保留一個。。
1.4、 隨機森林
? ?隨機森林具有準確率高、魯棒性好、易于使用等優點,這使得它成為了目前最流行的機器學習算法之一。隨機森林提供了兩種特征選擇的方法:mean decrease impurity和mean decrease accuracy??梢杂胹klearn中在訓練了RandomForestClassifier后,通過feature_importances來得到這些內容。根據重要程度給不同特征賦予不同的重要等級。無須做標準化或歸一化處理。還可以設定閾值的基礎上進行特征選擇。
(1)平均不純度減少 mean decrease impurity
? ?隨機森林由多個決策樹構成。決策樹中的每一個節點都是關于某個特征的條件,為的是將數據集按照不同的響應變量一分為二。利用不純度可以確定節點(最優條件),對于分類問題,通常采用 基尼不純度 或者 信息增益 ,對于回歸問題,通常采用的是 方差 或者最小二乘擬合。當訓練決策樹的時候,可以計算出每個特征減少了多少樹的不純度。對于一個決策樹森林來說,可以算出每個特征平均減少了多少不純度,并把它平均減少的不純度作為特征選擇的值。
(2)平均精確率減少 Mean decrease accuracy
? ?另一種常用的特征選擇方法就是直接度量每個特征對模型精確率的影響。主要思路是打亂每個特征的特征值順序,并且度量順序變動對模型的精確率的影響。很明顯,對于不重要的變量來說,打亂順序對模型的精確率影響不會太大,但是對于重要的變量來說,打亂順序就會降低模型的精確率。
1.5、兩種頂層特征選擇算法
? ?之所以叫做頂層,是因為他們都是建立在基于模型的特征選擇方法基礎之上的,例如回歸和SVM,在不同的子集上建立模型,然后匯總最終確定特征得分。
(1) 穩定性選擇 Stability selection
? ?穩定性選擇是一種基于二次抽樣和選擇算法相結合較新的方法,選擇算法可以是回歸、SVM或其他類似的方法。它的主要思想是在不同的數據子集和特征子集上運行特征選擇算法,不斷的重復,最終匯總特征選擇結果,比如可以統計某個特征被認為是重要特征的頻率(被選為重要特征的次數除以它所在的子集被測試的次數)。理想情況下,重要特征的得分會接近100%。稍微弱一點的特征得分會是非0的數,而最無用的特征得分將會接近于0。sklearn在 隨機lasso 和 隨機邏輯回歸 中有對穩定性選擇的實現。
(2)遞歸特征消除 Recursive feature elimination (RFE)
? ?遞歸特征消除的主要思想是反復的構建模型(如SVM或者回歸模型)然后選出最好的(或者最差的)的特征(可以根據系數來選),把選出來的特征放到一邊,然后在剩余的特征上重復這個過程,直到所有特征都遍歷了。這個過程中特征被消除的次序就是特征的排序。因此,這是一種尋找最優特征子集的貪心算法。RFE的穩定性很大程度上取決于在迭代的時候底層用哪種模型。例如,假如RFE采用的普通的回歸,沒有經過正則化的回歸是不穩定的,那么RFE就是不穩定的;假如采用的是Ridge,而用Ridge正則化的回歸是穩定的,那么RFE就是穩定的。Sklearn提供了 RFE 包,可以用于特征消除,還提供了 RFECV ,可以通過交叉驗證來對的特征進行排序。
1.6、總結
? ?(1)對于理解數據、數據的結構、特點來說,單變量特征選擇是個非常好的選擇。盡管可以用它對特征進行排序來優化模型,但由于它不能發現冗余(例如假如一個特征子集,其中的特征之間具有很強的關聯,那么從中選擇最優的特征時就很難考慮到冗余的問題)。
? ?(2)正則化的線性模型對于特征理解和特征選擇來說是非常強大的工具。L1正則化能夠生成稀疏的模型,對于選擇特征子集來說非常有用;相比起L1正則化,L2正則化的表現更加穩定,由于有用的特征往往對應系數非零,因此L2正則化對于數據的理解來說很合適。由于響應變量和特征之間往往是非線性關系,可以采用basis expansion的方式將特征轉換到一個更加合適的空間當中,在此基礎上再考慮運用簡單的線性模型。
? ?(3)隨機森林是一種非常流行的特征選擇方法,它易于使用,一般不需要feature engineering、調參等繁瑣的步驟,并且很多工具包都提供了平均不純度下降方法。它的兩個主要問題,1是重要的特征有可能得分很低(關聯特征問題),2是這種方法對特征變量類別多的特征越有利(偏向問題)。盡管如此,這種方法仍然非常值得在你的應用中試一試。
? ?(4)特征選擇在很多機器學習和數據挖掘場景中都是非常有用的。在使用的時候要弄清楚自己的目標是什么,然后找到哪種方法適用于自己的任務。當選擇最優特征以提升模型性能的時候,可以采用交叉驗證的方法來驗證某種方法是否比其他方法要好。當用特征選擇的方法來理解數據的時候要留心,特征選擇模型的穩定性非常重要,穩定性差的模型很容易就會導致錯誤的結論。對數據進行二次采樣然后在子集上運行特征選擇算法能夠有所幫助,如果在各個子集上的結果是一致的,那就可以說在這個數據集上得出來的結論是可信的,可以用這種特征選擇模型的結果來理解數據。
1.7、Tips
? ?什么是卡方檢驗?用方差來衡量某個觀測頻率和理論頻率之間差異性的方法
? ?什么是皮爾森卡方檢驗?這是一種最常用的卡方檢驗方法,它有兩個用途:1是計算某個變量對某種分布的擬合程度,2是根據兩個觀測變量的Contingency table來計算這兩個變量是否是獨立的。主要有三個步驟:第一步用方差和的方式來計算觀測頻率和理論頻率之間卡方值;第二步算出卡方檢驗的自由度(行數-1乘以列數-1);第三步比較卡方值和對應自由度的卡方分布,判斷顯著性。
? ?什么是p-value?簡單地說,p-value就是為了驗證假設和實際之間一致性的統計學意義的值,即假設檢驗。有些地方叫右尾概率,根據卡方值和自由度可以算出一個固定的p-value,
? ?什么是響應變量(response value)?簡單地說,模型的輸入叫做explanatroy variables,模型的輸出叫做response variables,其實就是要驗證該特征對結果造成了什么樣的影響
2、特征提取:
? ?前面講了特征選擇,下面講一下特征抽取來降維,可理解為:盡可能多的保持相關信息的情況下,對數據進行壓縮的一種方法。三種:都可以將原始數據集變換為一個維度更低的新的特征子集。
(1)PCA:無監督數據降維技術—主成分分析principal component analysis;
sklearn.decomposition.PCA。
? ?主成分分析是一種用于連續屬性的數據降維方法,它構造了原始數據的一個正交變換,新空間的基地去除了原始空間基底下數據的相關性,只需要使用少數新變量就能夠解釋原始數據中大部分變量。在應用中通常是選出比原始變量個數少,能夠解釋大部分數據中的變量的幾個新變量,即所謂的主成分,來代替原始變量進行建模。通過線性變化,將原始數據集變化為一組各維度線性無關的表示!
? ?在高維數據中找到最大方差的方向,將數據映射到一個不大于原始數據的新的子空間上。構建一個dXk維的轉換矩陣W,來完成維度的轉換。第一主成分的方差應該最大,由于各主成分之間不相關(正交),后續主成分也具備盡可能大的方差。注意:要先進行標準化處理。sklearn的decomposition類的PCA方法。參數為主成分數目。提供了PCA類,在轉換前要使用訓練數據對模型進行擬合。步驟:數據標準化,構造樣本協方差矩陣,獲得協方差矩陣的特征值和特征向量,按降序排列特征值所對應的特征向量,選擇k個最大特征值對應的特征向量,其中k為新特征空間的維度,構建映射矩陣,進行轉換。
(2)LDA: 基于類別可分最大化的有監督降維技術—線性判別分析linear discriminant analysis
? ?sklearn.discriminant_analysis.LinearDiscriminantAnalysis
? ?用來發現最優化分類的特征子空間。是有監督算法。更適用于分類的特征提取技術。步驟:標準化處理,計算均值向量,構造類間和類內的散布矩陣,計算某矩陣的特征值和特征向量,選取k個特征對應的特征向量,構造轉換矩陣,映射。sklearn的lda中有LDA方法。
(3)核PCA:通過核主成分分析進行線性降維,kernel principal component analysis
? ?sklearn.decomposition.KernelPCA
? ?現實世界,面對非線性問題,我們使用它。將非線性可分的數據轉換到一個適合對其進行線性分類的新的低維子空間上。sklearn中的decomposition模塊有核PCA類,通過kernel參數選擇不同的核函數。
總結
以上是生活随笔為你收集整理的机器学习之降维(特征选择与特征提取)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 未来ET大脑将如何打造可编程城市
- 下一篇: [C语言] 文件操作,解压SZB格式中的