原文地址:https://elitedatascience.com/dimensionality-reduction-algorithms
歡迎閱讀我們的現代機器學習算法的第2部分。 在這一部分中,我們將介紹降維的方法,進一步分為特征選擇和特征提取。 通常,這些任務很少單獨執行。 相反,他們通常都是數據預處理中的步驟。
如果你錯過了第1部分,你可以在這里查看。 它解釋了我們的對機器學習算法的分類方式,它涵蓋了“三大”機器學習任務:
- 回歸任務
- 分類任務
- 聚類任務
在這篇文章,我們將介紹:
- 特征選擇
- 特征提取
我們還將在未來的專用指南中介紹其他任務,如密度估算和異常檢測。
維度災難
在機器學習中,“維度”僅指數據集中的特征(即輸入變量)的數量。
當特征數量相對於數據集中的觀測樣本非常大時,某些算法很難訓練有效的模型。 這被稱為“維度災難”,它尤其適用於依賴於距離計算的聚類算法。
一個Quora用戶為維度詛咒提供了一個很好的類比,我們將在這里借用:
“假設你有一條100碼長的直線,你在它的某處丟了一分錢。 找到它並不難。 沿着這條線走,需要兩分鍾。
如果每邊都有一個100碼的方形,你在它的某處丟了一分錢。 這將是相當困難的,就像搜索兩個足球場粘在一起。 這可能需要數天時間。
現在一個100碼寬的立方體。 這就像搜索一個足球場大小的30層建築。 啊。
當你有更多的維度時,搜索空間的難度會變得更加困難。”
在本指南中,我們將介紹降低維度的兩種主要方法:特征選擇和特征提取。
4 特征選擇
特征選擇用於過濾數據集中的不相關或冗余特征。 特征選擇和提取之間的關鍵區別在於特征選擇是保留了原始特征的子集,而特征提取則創建了全新更小的特征。
需要明確的是,一些監督算法已經具有內置特征選擇,例如正則化回歸和隨機森林。 譯者添加:使用L1正則化的損失函數,導致一些特征的權重變成0。通常,我們建議從這些算法開始,如果它們適合您的任務。 它們在第1篇文章中有所涉及。
作為獨立任務,特征選擇可以是無監督的(例如,方差閾值)或監督的(例如遺傳算法)。 如果需要,您還可以組合多種方法。
4.1 方差閾值
方差閾值方法移除其值在觀測樣本沒有太大變化的特征(即,它們的方差低於閾值)。 這些特征幾乎沒有價值。
例如,如果您有一個公共健康數據集,其中96%的觀測樣本是針對35歲男性的,那么可以消除“年齡”和“性別”特征,而不會造成重大信息損失。
由於方差取決於縮放比例,因此您應始終首先規一化特征列。
優勢:應用方差閾值基於可靠的直覺:不會發生太大變化的功能也不會添加太多信息。 這是在建模過程開始時降低維度的簡單且相對安全的方法。
缺點:如果您的問題確實需要減少維數,那么應用方差閾值很少就足夠了。 此外,您必須手動設置或調整方差閾值,這可能很棘手。 我們建議從保守(即較低)閾值開始。
4.2相關性閾值
相關性閾值方法刪除與其他特征高度相關的特征(即,其值與另一個特征的變化非常相似)。 這些特征提供了冗余信息。
例如,如果您將具有“Floor Area(平方英尺)”和“Floor Area(平方米)”的房地產數據集作為單獨的兩個特征,則可以安全地刪除其中一個。
優勢:應用相關性閾值也基於可靠的直覺:類似的特征提供冗余信息。 某些算法對相關特征並不健壯,因此刪除它們可以提高性能。
缺點:同樣地,您必須手動設置或調整相關閾值,這可能很棘手。 另外,如果將閾值設置得太低,則可能會丟失有用信息。 只要有可能,我們更喜歡內置特征選擇而不是相關性閾值的學習算法。 即使對於沒有內置特征選擇的機器學習算法,主成分分析(PCA)通常也是更好的選擇。
4.3 遺傳算法
遺傳算法(GA)是一類可以適應不同目的的算法。 它們是受進化生物學和自然選擇啟發的搜索算法,結合了突變和交叉以有效地穿越大型解空間。 這是GA背后的直覺的一個很好的介紹。
在機器學習中,GA有兩個主要用途。 第一個是優化,例如為神經網絡尋找最佳權重。
第二個是監督地特征選擇。 在該用例中,“基因”代表個體特征,“有機體”代表候選特征集。 “群體”中的每個生物體在健康分數上進行分級,例如在保持集上的模型表現。 最適合的生物存活並繁殖,重復直到種群在幾代后收斂於解決方案。
優勢:遺傳算法可以從非常高維的數據集中有效地選擇特征,其中窮舉搜索是不可行的。 當您需要預處理沒有內置特征選擇的算法(例如最近鄰居)的數據時,以及當您必須保留原始特征(即不允許PCA)時,GA可能是您最好的選擇。 這些情況可能出現在需要透明且可解釋的解決方案中。
缺點:GA為您的實施增加了更高級別的復雜性,並且在大多數情況下它們不值得使用。 如果可能,使用PCA或直接使用具有內置特征選擇的算法更快更簡單。
4.4 榮譽獎:逐步選擇法
逐步選擇法是一種基於順序搜索的監督特征選擇方法,它有兩種風格:前向和后向。 對於前向逐步選擇法,您可以從沒有任何特征開始。 然后,您將使用每個候選特征訓練一個1特征模型,並保持版本具有最佳性能。 您將繼續一次只添加一項特征,直到您的性能改進停滯不前。
后向逐步選擇是相同的過程,只是顛倒過來:從模型中的所有特征開始,然后一次刪除一個,直到性能開始大幅下降。
我們完全出於歷史原因注意到這個算法。 盡管許多教科書將逐步搜索列為有效選項,但它的效率幾乎總是低於其他監督方法,例如和正則化比。 逐步搜索有許多已發現的缺陷,其中最致命的一個是它是一種貪心算法,不能解釋每個變化的未來影響。 我們不推薦這種方法。
5特征提取
特征提取用於創建一組新的,較小的特征,仍然可以捕獲大部分有用信息。 同樣,特征選擇保留原始特征的子集,而特征提取創建新特征。
與特征選擇一樣,一些算法已經具有內置特征提取。 最好的例子是深度學習,它通過每個隱藏的神經層提取原始輸入數據的越來越有用的表示出來。 我們在第1部分中介紹了這一點。
作為獨立的任務,特征提取可以是無監督的(即PCA)或監督的(即LDA)。
5.1主成分分析(PCA)
主成分分析(PCA)是一種無監督算法,可創建原始特征的線性組合。 新特征是空間正交的,這意味着它們是不相關的。 此外,它們按照“可解釋的方差”值的大小排列。 第一個主成分(PC1)解釋了數據集中的最大方差,PC2解釋了第二大方差,依此類推。
因此,您可以通過根據累積解釋的方差限制要保留的主要成分的數量來減少維度。 例如,您可能決定只保留所需的主要成分,以達到90%的累積可解釋性方差。
在執行PCA之前,應始終規一化數據集,因為轉換取決於縮放比例。 如果不這樣做,那么最大尺寸的特征列將主導您的新主要成分。
優勢:PCA是一種多功能技術,在實踐中運作良好。 它實現起來快速而簡單,這意味着您可以使用和不使用PCA算法來輕松測試比較性能。 此外,PCA提供了多種變體和擴展(即核PCA,稀疏PCA等)來解決特定的障礙。
缺點:新的主要組成部分不可解釋,在某些情況下可能是一個交易破壞者。 此外,您仍必須手動設置或調整累積可解釋性方差的閾值。
5.2線性判別分析(LDA)
線性判別分析(LDA) - 不要與潛在的Dirichlet分配混淆 - 也會創建原始特征的線性組合。 然而,與PCA不同,LDA不會最大化累計可解釋的方差。 相反,它最大化了類之間的可分離性。
因此,LDA是一種監督方法,只能用於標記數據。 那么哪個更好:LDA和PCA? 結果將因問題而異,並且適用第1部分中的“沒有免費午餐”定理。
LDA轉換還取決於縮放比例,因此您應首先規一化數據集。
優勢:LDA受到監督,可以(但不總是)提高提取特征的預測性能。 此外,LDA提供變化(即二次LDA)來解決特定的障礙。
缺點:與PCA一樣,新特征列不易解釋,您仍必須手動設置或調整要保留的組件數量。 LDA還需要標記數據,這使其更具情境性。
5.3 自動編碼機(Autoencoder)
自動編碼器是經過訓練以重建其原始輸入的神經網絡。 例如,訓練圖像自動編碼器以再現原始圖像,而不是將圖像分類為狗或貓。
所以這有什么用呢? 關鍵是要構建隱藏層,使其具有比輸入/輸出層更少的神經元。 因此,該隱藏層將學習產生原始圖像的較小表示。
由於您使用輸入圖像作為目標輸出,因此自動編碼器被視為無監督學習。 它們可以被直接使用(例如圖像壓縮)或按順序堆疊(例如深度學習)。
優勢:自動編碼器是神經網絡,這意味着它們可以很好地處理某些類型的數據,例如圖像和音頻數據。
缺點:自動編碼器是神經網絡,這意味着他們需要更多的數據來訓練。 它們不能用作通用的降維算法。
譯者添加:
另一種特征提取方法-因子分解機系列算法(Factorization Machines):在巨大稀疏矩陣的情況下,滿足xi,xj都不為0的情況非常少,這樣將導致交叉特征ωij無法通過訓練得出。
其中基於神經網絡地DeepFM模型就算稀疏向量在訓練樣本中沒有出現的組合在預測時也可以進行計算,針對隱藏在數據中的二階特征組合進行自動學習。且它不需要任何的人工特征工程。
離別的話
我們剛剛通過現代的降維方法進行旋風式探索,分為特征選擇和特征提取。
我們將提供與第一部分相同的建議:
- 實踐,實踐,實踐。 抓住數據集並成熱打鐵。
- 掌握基礎知識。 例如,首先理解PCA和LDA之間的差異比深入研究LDA與二次LDA的細微差別更有成效。
- 請記住,更好的數據優於更高級的算法。 我們重復了很多,但這是真相!
譯者添加:特征工程,也就是你對原始數據的表達,它會決定效果的上限;而模型的選擇和參數調優只是決定你能多大程度地去逼近這個上限。