传统的线性降维方法效果不佳。_10分钟数据降维入门
1. 前言
在碩士期間學習研究了數據降維相關的知識,閱讀了一些相關文章,也斷斷續續在知乎上寫了
一些數據降維的入門級文章,收獲了一些小伙伴的贊同,并在GitHub上開源了一些特征抽取算
法的源代碼,獲得了的1.1k+star。
因為在GitHub的代碼中留下了郵箱,因此有許多小伙伴來詢問我數據降維方法的使用,其中有
很大一部分并不是計算機專業的,也是剛剛接觸機器學習這一領域。所遇到的問題都類似這
種:
我有數據,我想降維,我怎么選擇方法。
希望小伙伴們在閱讀完本文之后,將學會如何根據自己的數據和目的,快速地選擇簡單基本的
特征降維算法構建一個baseline的模型。
2. 數據降維是什么
顧名思義,數據降維就是通過特征選擇或者特征變換操作將數據從原始的D維空間投影到新的
K維空間。數據降維方法主要分為特征選擇和特征抽取(特征降維)兩類。
2.1 特征選擇
特征選擇方法是在所有的特征中通過子集搜索算法尋找和模型最相關的特征子集的過程,簡單
的說就是在所有特征中選擇和目標最相關的一些特征,丟棄掉一些不太重要的特征。
特征選擇方法又分為三個類型:
- 過濾式
過濾式特征選擇方法根據特征的統計學特性選擇特征。對于有標簽的數據,我們可以計算標簽
和特征的互信息、相關系數等值,作為特征的得分,然后選擇得分比較高的特征。對于沒有標
簽的數據,也可以選擇計算特征的方差等值,通常方差較小的特征是無用特征的概率更大一
些。經過上述操作,我們就可以簡單快速的選擇更有用的特征,實現特征降維。
優點:只需要對特征進行常數級別的遍歷,效率高;得到的特征子集使用范圍廣,后續各種模
型都可以使用這個特征子集。
缺點:特征子集具有冗余性(可以想想為什么,答案在文末);得到的特征子集通常不是最優的。
常用算法:ReliefF、基于互信息的特征選擇、基于相關系數的特征選擇、基于Fisher-score的特征選擇
- 包裹式
包裹式特征選擇方法通過訓練機器學習模型來選擇特征。例如SVM-RFE方法,需要多次調用
SVM方法,每次選擇表現最好的特征。
優點:得到的特征子集準確率高;
缺點:需要多次調用模型,很耗時;得到的特征子集只適用于當前的模型(其他模型使用這個
特征子集效果不一定會好)。
常用算法:SVM-RFE
- 嵌入式
在訓練機器學習模型的同時選擇了特征,例如邏輯回歸、LASSO模型。嵌入式特征選擇方法的
特點就是在訓練好模型的同時,模型會給不同特征不同的權重,使用這個權重來衡量特征的重
要性。
優點:耗時適中,同時有較好的準確率。
缺點:容易被噪聲特征影響。
常用算法:邏輯回歸、Lasso
2.2 特征抽取
特征抽取也被稱為特征降維,用的最廣泛也最常見的一種特征抽取方法就是PCA。特征抽取根
據變換的方式分為線性和非線性兩種。
一些常見的特征抽取方法- 線性降維
線性降維就是通過某種線性變換,將數據從高維空間映射到低維空間。
舉一個簡單的例子:比如你在經營一個水果攤子“晴子水果”,好多來你這買水果的顧客都很特
別,每次都會買(3個蘋果2個梨)的組合。此時你每次記賬都要記:【蘋果:3,梨:2】。久而
久之,你決定把3個蘋果2個梨組合到一起,稱為一個“晴”,之后記賬的時候就可以簡單記下
【晴:1】。
上述例子有這樣的關系:晴*1=蘋果*1/3+梨*1/2,1/3和1/2就是蘋果和梨所占的權重。線性降
維就可以理解為尋找高維空間向低維空間映射時每個維度所占的權重,例如PCA就是尋找在低
維空間中數據點的方差盡可能的大,協方差為0時,不同維度所所占的權重。
- 非線性降維
非線性降維指的是是從高維空間向低維空間的轉化是非線性的,看下面經典的三維瑞士卷:
3維瑞士卷數據和利用LE算法得到的二維數據瑞士卷可以看作是二維數據折疊、彎曲之后展現在三維空間,其本身還是一個二維數據。一種
常見的非線性降維思想是認為高維數據在局部上是線性的,我們只需要保證局部線性,就可以
將數據從三維轉換到二維。以瑞士卷為例,我們可以把瑞士卷看作是很多小塊的二維平面在三
維空間拼接而成,只要保證這些小的二維平面,就可以將數據從三維空間轉化到二維空間。
2.3 如何選擇
介紹了常見的特征降維方法,在不同的場景下我們應該使用什么樣的特征降維方法呢,如下幾
點是你需要考慮的:
- 特征數目
當數目特征較多的時候,應該首先選擇過濾式特征選擇方法,快速減少數據量,可以有效防止
過擬合現象,同時加快后續模型訓練的速度。當數目特征較少時,可以使用特征抽取方法或者
包裹式特征選擇方法,此時需要你對方法和數據的特點都有一定的了解,才能選擇合適的方法。
- 特征有效性
如果可能存在和目標無關的特征,可以考慮使用特征選擇方法,去除一些無用特征。如果特征
都和目標有一定的關系,可以考慮使用特征抽取方法對特征進行變化,在盡可能保留信息的情
況下降低特征數目。
- 目的
如果你的目的是選擇和目標最相關的特征,那么特征抽取方法明顯是不合適的,因為其會將原
始特征轉化為新的特征;如果你關心準確率等指標,那么請隨意使用特征抽取方法。同時特征
選擇方法的可解釋性也要略高于特征抽取方法。
3. 數據降維能干什么
數據降維可以做什么,在選擇數據降維方法之前一定要考慮數據降維能否解決你的問題,下面是數據降維能解決的幾個問題。
3.1 提高準確率
數據降維算法可以去除無效特征,提高模型的準確率,同時緩解模型的過擬合現象。
3.2 減少數據量
減少特征的數目,可以提高后續的處理速度和所需要的儲存空間。
3.3 可視化
某些數據降維算法可以很好的將高維數據在二維或者三維空間進行展示,直觀有效的像別人展
示你的結果,非線性的特征抽取方法常常用于數據可視化,其中T-SNE是一個表現很好的可視
化算法。
4、如何選擇合適的數據降維方法
當你有一份數據需要降維時,該如何選擇特征降維算法。
4.1 目的
明確你的目的,是為了提高模型的準確率,還是為了選擇重要的特征,抑或是對數據進行可視
化,不同的目的需要選擇不同的數據降維算法。
舉一些典型的例子:
- 我想要對一份數據進行降維,從而提高模型的準確率
此時你需要考慮你選擇的特征降維算法是否具有樣本外降維的能力。也就是當你使用訓練了降
維算法之后,是否可以得到一個轉移函數或者矩陣F(X),當出現了一個或一批新的樣本點,通
過F(x)可以將這些樣本點進行降維。大部分非線性特征抽取方法都不具備樣本外降維的能力,
一種解決方法是將原始數據作為輸入,降維后的數據作為輸出,訓練一個模型,利用這個模型
對數據進行降維。
- 我需要選擇重要的特征
也許你分析數據是為了找到和目的最有關的特征,從而進行下一步工作。此時你的選擇就只能
局限在特征選擇算法中,此時你需要考慮的是如何組合不同類型的特征選擇方法,找到更優的
特征子集。
- 我需要展示我的數據
此時你的重點就更應該放在可視化算法上,這里我推薦你使用T-SNE算法或者其衍生算法,它
在數據可視化領域具有十分好的表現。
4.2 數據的特點
數據的特點是你選擇數據降維算法不得不考慮的一點,只有選擇適合數據的數據降維方法,才
會有更好的結果。主要遵循能更有效的利用數據這個準則。
- 數據是有標簽的:盡可能的選擇有監督的數據降維算法。
- 數據是二維的:選擇可以利用二維結構的數據降維算法。
- 數據中有無效特征:使用特征選擇方法。
根據經驗來說,通常使用過濾式特征選擇方法+PCA算法可以在大部分數據上取得還不錯的效
果,同時實現起來也較為簡單,如果沒有什么想法,可以嘗試使用這種組合。如果對數據和方
法有一定的了解,還是應該選擇更合適的方法。
5、后記
數據降維是數據預處理手段的一種,當你嘗試了幾種數據降維方法效果卻依舊不盡人意的時
候,也可以考慮使用其他數據預處理手段。
常用機器學習庫sklearn手冊:
https://scikit-learn.org/
11種特征抽取算法源代碼:
https://github.com/heucoder/dimensionality_reduction_alo_codes
總結
以上是生活随笔為你收集整理的传统的线性降维方法效果不佳。_10分钟数据降维入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python调用浏览器打开网页_pyth
- 下一篇: python取列表前几个元素_Pytho