高维数据中特征筛选方法的思考总结——多变量分析筛选法
前言:之前的文章(高維數(shù)據(jù)中特征篩選方法的思考總結(jié)——單變量分析篩選法)中,對單變量分析篩選變量進(jìn)行了初步考量,本文將進(jìn)一步總結(jié)多變量分析篩選法。由于本文多處摘錄網(wǎng)上的博客,只是進(jìn)行了歸納整理,因此筆者將本文定性為轉(zhuǎn)載類(轉(zhuǎn)載請注明出處:https://blog.csdn.net/fjsd155/article/details/93754257)。
多變量分析方法根據(jù)建模特點可以分為線性降維和非線性降維。線性降維主要是?LASSO?和?PLS。非線性降維包括:XGBoost(GBDT的高效實現(xiàn))、Random Forest?等。其實個人感覺CNN應(yīng)該也是可以進(jìn)行非線性降維的(但是目前CNN處理“非序列數(shù)據(jù)”并沒有優(yōu)勢,筆者有個預(yù)處理的設(shè)想,準(zhǔn)備嘗試一下拓寬CNN的適用范圍)。另外SVM這種強(qiáng)大的機(jī)器學(xué)習(xí)方法,似乎只能用來建模而不能篩選特征。
LASSO和PLS都是線性模型的降維方法,也就是說,這兩種方法甚至包括上述單變量降維的方法,最終篩選的變量都是為了建立線性模型而準(zhǔn)備的,而不能孵育出非線性模型(如存在交互作用的模型、復(fù)雜的SVM模型、決策樹類模型以及復(fù)雜的神經(jīng)網(wǎng)絡(luò)模型)。非線性模型的生物學(xué)解釋性很差(黑箱模型),一般不推薦使用。但是若強(qiáng)行想構(gòu)建非線性模型,則僅采用上述線性降維的方法是不夠理想的,需要采用非線性降維。
注意一個問題的存在:我們篩選特征往往基于訓(xùn)練數(shù)據(jù)(選擇超參數(shù)或者最終建模常常會根據(jù)交叉驗證,但是變量的篩選卻常常只是基于訓(xùn)練集)。在訓(xùn)練數(shù)據(jù)中,變量的貢獻(xiàn)程度越大,并不意味著這個變量越有價值。可能某些變量在模型中表現(xiàn)很普通,但是始終十分穩(wěn)定(經(jīng)得起考驗);而有些變量在訓(xùn)練數(shù)據(jù)中表現(xiàn)很好,但外推性卻較弱,表現(xiàn)波動大。因此變量的選擇有必要綜合訓(xùn)練數(shù)據(jù)和驗證數(shù)據(jù)(如綜合CV或Bootstrapping篩選變量)。最后再由獨立測試數(shù)據(jù)進(jìn)行檢驗。
篩選特征及建模的科學(xué)觀念:模型的可重復(fù)性(多批數(shù)據(jù))>大樣本建模>模型的準(zhǔn)確性。有人提出(貌似是范劍青老師等人提出),“針對一個統(tǒng)計方法,統(tǒng)計準(zhǔn)確性、模型可解釋性和計算復(fù)雜性是衡量其好壞的三個重要指標(biāo)。”
(下面部分內(nèi)容參考自:
一些變量篩選方法——1、綜述
一些變量篩選方法——2、《An Introduction to Statistical Learning with R》上的數(shù)據(jù)降維方法
一些變量篩選方法——3、部分其它變量篩選方法)
剛剛從線性與否的角度對降維方法進(jìn)行了分類概述。另外,An Introduction to Statistical Learning with R?這本書中將篩選變量的方法分為:子集選擇法(Subset Selection)、系數(shù)壓縮法(Shrinkage)、映射降維法(Dimension Reduction)。
子集選擇法
子集選擇法分為最優(yōu)子集選擇、逐步篩選法等,這部分方法依賴于下述模型評判指標(biāo):
- Mallows 提出運用Cp去評估一個以普通最小二乘法(Ordinary Least Square或OLS)為假設(shè)的線性回歸模型的優(yōu)良性,從而用于模型選擇。
- 日本學(xué)者 Akaike 在1974年基于極大似然方法提出了AIC準(zhǔn)則,它建立在熵的概念基礎(chǔ)上,可以權(quán)衡所估計模型的復(fù)雜度和此模型擬合數(shù)據(jù)的優(yōu)良性。
- Schwarz 在Bayes方法的基礎(chǔ)上提出BIC準(zhǔn)則。與AIC相比,BIC加強(qiáng)了懲罰力度,考慮了樣本量,從而在選擇變量進(jìn)入模型上更加謹(jǐn)慎。
- Seymour Geisser 提出了交叉驗證法(Cross validation),利用交叉驗證結(jié)合最小平方誤差的方法,是一種在沒有任何前提假定的情況下直接進(jìn)行參數(shù)估計的變量選擇方法。
此外,還可以使用Adjusted R2進(jìn)行評價來選擇特征子集。這些指標(biāo)的具體含義和使用方法,可參照An Introduction to Statistical Learning with R?或?一些變量篩選方法——2、《An Introduction to Statistical Learning with R》上的數(shù)據(jù)降維方法。
最優(yōu)子集法(Best Subset Selection):其思想是將所有的特征組合都進(jìn)行建模,然后選擇最優(yōu)的模型(最優(yōu)的判斷依據(jù)都是前面敘述的幾種指標(biāo))。特點是能夠找到全局最優(yōu)但是計算量較大。
逐步篩選法(Stepwise Selection)分為向前逐步回歸與向后逐步回歸。其主要思想是:每一次迭代都只能沿著上一次迭代的方向繼續(xù)進(jìn)行。向前逐步回歸是指初始模型只有常數(shù)項,然后逐漸添加變量;向后逐步回歸是指初始模型包含了所有變量,然后逐漸刪除變量。特點是僅關(guān)注局部最優(yōu)(貪心策略)難以保證全局最優(yōu)(注:向前與向后逐步回歸篩選出的變量可能不一樣,但其思想完全一樣。)
系數(shù)壓縮法
系數(shù)壓縮法主要指LASSO。嶺回歸只能實現(xiàn)系數(shù)壓縮而不能降維,但是可以通過合理的調(diào)參,將系數(shù)壓縮后對系數(shù)進(jìn)行排序,從而實現(xiàn)降維(但既然LASSO已經(jīng)還不錯了,沒必要強(qiáng)行使用嶺回歸降維)。
LASSO可參考博客:LASSO回歸
映射降維法
映射降維法主要指的是PLS。另外,PCR(主元回歸法)是進(jìn)行主成分分析(PCA)后,選取前幾個主成分進(jìn)行建模,但實際上建模的效果很一般;PLS是基于PCA的思想,結(jié)合回歸建模、典型關(guān)聯(lián)分析(CCA)以及擬合殘差(帶一點Gradient Boost)等各家思想,所孕育出的一種建模分析和降維方法。
PLS可參考博客:偏最小二乘法 Partial Least Squares
其他不錯的方法
除了上述三大類方法,樹結(jié)構(gòu)的方法以及Boosting類的方法也是比較有效的,如:Random Forest、XGBoost(GBDT的高效實現(xiàn))等。此外,Fan和Li?結(jié)合L0與L1范數(shù)提出的SCAD (Smoothly Clipped Absolute Deviation);Fan 提出的SIS(Sure Independence Screening)等。
Random Forest
隨機(jī)森林模型本身是用于預(yù)測的模型,但在預(yù)測過程中,可以對變量重要性進(jìn)行排序,然后通過這種排序來進(jìn)行變量篩選。
變量重要性評判用Gini指數(shù)為標(biāo)準(zhǔn),針對一棵樹中的每個節(jié)點 k,我們都可以計算一個Gini指數(shù):
? ? ??
其中表示樣本在節(jié)點 k 屬于任意一類的概率估計值。
一個節(jié)點的重要性由節(jié)點分裂前后Gini指數(shù)的變化量來確定:
? ? ??
?和?分別表示?產(chǎn)生的子節(jié)點。針對森林中的每棵樹,都用上述的標(biāo)準(zhǔn)來遞歸產(chǎn)生,最終隨機(jī)抽取樣本和變量,產(chǎn)生森林,假設(shè)森林共產(chǎn)生 T 棵樹。
森林中,如果變量?在第 t 棵樹中出現(xiàn) M 次,則變量?在第 t 棵樹的重要性為:
? ? ??
則?在整個森林中的變量重要性為:
? ? ??
最終我們根據(jù)變量重要性來選擇變量,選擇的個數(shù)可以用SIS中的方法,選取n?1 或n/logn 個。
XGBoost
GBDT的建模過程是,一步步擬合殘差,那么在一步步的擬合的過程中,也便是變量選擇的過程(從一定程度上實現(xiàn)了變量的篩選)(這種逐步擬合殘差的思想的方法還有PLS)。XGBoost是GBDT的高效實現(xiàn)方法。
GBDT的介紹可參考:GBDT
XGBoost 的介紹可參考:XGBoost
SCAD
與嶺回歸相比,SCAD降低了模型的預(yù)測方差,與此同時與LASSO相比,SCAD又縮小了參數(shù)估計的偏差,因而受到了廣泛的關(guān)注。L0方法只會進(jìn)行變量篩選,不會進(jìn)行壓縮,L1(LASSO)既會進(jìn)行變量篩選,也會對系數(shù)繼續(xù)一定的調(diào)整。而SCAD可以從圖中很明顯的其結(jié)合了兩種方法,對系數(shù)較大的變量不進(jìn)行懲罰,對系數(shù)較少的進(jìn)行壓縮或者刪去,因此這種方法既可以篩選變量,也有著Oracle的性質(zhì)。SCAD雖然有相應(yīng)的迭代算法,但是由于其復(fù)雜度高,所以計算速度相對較慢。
SCAD的產(chǎn)生,有點借鑒Elastic Net。
SIS
當(dāng)遇到超高維數(shù)據(jù),即維數(shù)P無窮大時,上述的算法會出現(xiàn)問題。針對這類超高維問題,Fan等人提出了SIS的方法。
針對線性回歸模型(2),按照SIS的思想,首先Y為中心化向量,計算Y與每一個自變量?的相關(guān)系數(shù),記為?
其中,若越大,說明與Y 相關(guān)性越強(qiáng)。所以,可以根據(jù)??的大小來進(jìn)行變量選擇。對任意的,對??進(jìn)行從大到小排序,然后取其一個子集
? ? ??
其中,n是樣本數(shù),?是?的整數(shù)部分,進(jìn)而保證了,與之對應(yīng)的自變量則入選模型。如果覺得選擇??不便于確定,可以選擇 n-1 或n/logn。
而關(guān)于相關(guān)系數(shù),可以選用自己認(rèn)為合適的。本文后面的模擬選用傳統(tǒng)的Pearson相關(guān)系數(shù),以及近幾年比較火的可用于檢驗獨立的無參數(shù)假設(shè)的距離相關(guān)性(Distance Covariance)(見:一些變量篩選方法——3、部分其它變量篩選方法)。
嚴(yán)格來說,SIS 屬于單變量分析方法。
另外,SIS有一些衍生版本,如DC-SIS及Qa-SIS等,其中Qa-SIS好像是可以處理非線性問題的(據(jù)說還是“異方差”)。
PDAS
原始對偶激活集算法(Primal Dual Active Set,PDAS)是一個非常新的方法,但做的事情是最優(yōu)子集選擇的事情。其主要思想是引入激活集,對所有的 β 進(jìn)行批量迭代更新。這個方法的優(yōu)勢在于,可以處理超高維數(shù)據(jù)(上萬維),而最優(yōu)子集選擇一旦超過了50維,基本就完全沒辦法進(jìn)行運算。后面我們也將采用PDAS來進(jìn)行模擬。
PDAS的介紹可參考:一些變量篩選方法——3、部分其它變量篩選方法
?
另外,有人總結(jié)了7種降維方法(七種降維方法):
本文的總結(jié)其實基本上都包含了這些內(nèi)容。
也有人總結(jié)了12種降維方法(在以上7種方法基礎(chǔ)上加了5種)(來源:Analytics Vidhya:The Ultimate Guide to 12 Dimensionality Reduction Techniques (with Python codes),也可參考:12種降維方法終極指南(含Python代碼)):
? ? ??
之后有空可以再總結(jié)下 t-SNE(無監(jiān)督降維方法,主要用于高維度數(shù)據(jù)的降維可視化)。
另外,scikit-learn機(jī)器學(xué)習(xí)工具包的官網(wǎng)也有一些特征篩選的方法介紹,有博客基于此進(jìn)行了介紹(原文:http://dataunion.org/14072.html,但是好像原文訪問不了了,可以看看轉(zhuǎn)載的博客,比如:幾種常用的特征選擇方法,或 干貨:結(jié)合Scikit-learn介紹幾種常用的特征選擇方法 )。
除了這些,還有一些方法也值得一試,如:隨機(jī)投影(Random Projections),非負(fù)矩陣分解(N0n-negative Matrix Factorization),自動編碼(Auto-encoders),卡方檢測與信息增益(Chi-square and information gain), 多維標(biāo)定(Multidimensional Scaling),?相關(guān)性分析(Coorespondence Analysis),聚類(Clustering)以及貝葉斯模型(Bayesian Models)。
基于聚類的方法,可以參考:
特征篩選(變量聚類proc varclus)
聚類特征變量選取、聚類算法與效果評價簡述
特征選擇(二)-聚類變換
還有互信息法、模擬退火法以及一些組合策略等,之后再了解一下。參考:
特征選擇(2):特征選擇:方差選擇法、卡方檢驗、互信息法、遞歸特征消除、L1范數(shù)
模擬退火篩選變量
特征選擇的策略--數(shù)據(jù)相關(guān)性(皮爾遜系數(shù))與gini或者信息熵的的結(jié)合
特征選擇之基于相關(guān)性的特征選擇(CFS)
自編碼器也是不錯的無監(jiān)督降維方法,是一種神經(jīng)網(wǎng)絡(luò),之后可以研究下。
?
各種方法的對比評測及代碼示例
這部分內(nèi)容可以參考:
一些變量篩選方法——4、模擬實驗
一些變量篩選方法——5、真實數(shù)據(jù)與總結(jié)
一些變量篩選方法——6、代碼
?
參考資料
一些變量篩選方法——1、綜述
一些變量篩選方法——2、《An Introduction to Statistical Learning with R》上的數(shù)據(jù)降維方法
一些變量篩選方法——3、部分其它變量篩選方法
一些變量篩選方法——4、模擬實驗
一些變量篩選方法——5、真實數(shù)據(jù)與總結(jié)
一些變量篩選方法——6、代碼
LASSO回歸
偏最小二乘法 Partial Least Squares
GBDT
XGBoost
七種降維方法
The Ultimate Guide to 12 Dimensionality Reduction Techniques (with Python codes)
Comprehensive Guide on t-SNE algorithm with implementation in R & Python
12種降維方法終極指南(含Python代碼)
特征篩選(變量聚類proc varclus)
聚類特征變量選取、聚類算法與效果評價簡述?
特征選擇(一)-維數(shù)問題與類內(nèi)距離
特征選擇(二)-聚類變換
總結(jié)
以上是生活随笔為你收集整理的高维数据中特征筛选方法的思考总结——多变量分析筛选法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米盒子访问计算机硬盘,小米盒子3增强版
- 下一篇: Leetcode 1386:安排电影院座