1. 程式人生 > >資料降維的作用PCA與LDA

資料降維的作用PCA與LDA

1.   當你的特徵數量p過多,甚至多過資料量N的時候,降維是必須的。 為什麼是必須的?有個東西叫curse of dimensionality,維度越高,你的資料在每個特徵維度上的分佈就越稀疏,這對機器學習演算法基本都是災難性的
你說特徵數量過多,砍一點就行了嘛?但是對不起,就有這樣的問題存在,砍不了。
你要研究某個罕見病跟什麼基因有關?基因很多哦,人類已知的基因有幾千個,可是病例通常也就幾百個,有時連幾百個都沒有……
2.  特徵有比較明顯的自相關的時候,也可以考慮降維。
自相關會讓很多模型的效果變差,主要是線性模型。這些模型效果不好,但是算的快,很多時候很有用。先降維再算會好的多。
3. 還有的應用跟降維沒多大關係,純粹只是去雜音而已。這是一個典型的應用: 分析籃球攻防組合的表現。就是給定一個籃球進攻球員,和他的對位防守球員,求出在一次進攻中這名進攻球員的(1)出手概率(2)如果出手,得分期望
根據籃球知識,我們容易知道,如果一個人防“射手A”防的好,但是防“突破手B”防的差,那他防“射手C”也防的好的可能性大過防“突破手D”防的好的可能性。於是這裡有必要把進攻球員(防守球員也類似)做個相似度出來,根據這個相似度再來構建模型(比如可以用Bayes Net)。
相似度怎麼構建?PCA就可以了,把選手的出手位置的分佈做成特徵,然後PCA之,取前若干維的相似度即可。(為啥不直接用出手位置的分佈來做呢?效果不好唄,去掉雜音會好的多,而且PCA出來的還是正交的,可以直接求距離)
4. PCA是無類別資訊,不知道樣本屬於哪個類,用PCA,通常對全體資料操作。 LDA有類別資訊,投影到類內間距最小and類間間距最大... 5. 你的特徵相互間有相關性而且分佈上是橢圓的,這會帶來複雜性,會更容易造成模型過擬合 PCA用一組正交基重構你的表達,然後還把分佈拉圓,這就相當於找到了資料的結構性,利用這些先驗去簡化問題。這對模型來說是幫了大忙。
你可以試試把一個橢圓分佈的樣本集直接塞給SVM;再白化後(拉成圓)試試。
6. 至於降維,你也可以不降維啊。當你確定資訊量少的那些維度對你的問題確實沒幫助,降維肯定是好的,這又使問題簡化了,而且去掉這些沒用資訊可以防過擬合。但是資訊少往往不意味著沒用,有時候資訊少的那部分資訊甚至是關鍵資訊。舉個例子,比如你招人打籃球,只看身高這一項,普通人的身高是集中分佈在一段裡的,而且天賦異稟的身高只有極少數,而這極少數恰好是你需要的。
7. 兩個演算法的原理是不一樣的,pca是選擇投影后使得資料方差最大的方向來投影,假設就是方差越大,資訊量越多,pca是一種無監督演算法,沒有類別資訊,而lda是選擇投影后使得類內方差小而類間方差大的方向來投影,用到了類別資訊,所以選擇用哪種演算法來降維應該是根據具體的目的和場景來的,如果你的目的就是分類,那麼顯然lda的選擇標準更合理,如果你沒有類別資訊(無監督),那就只能選pca,總之,兩者選擇投影的方向的標準是不一樣的,看哪個和你的需要更契合。 8. 我們可以知道,但特徵量維數大於3時,我們幾乎不能對資料進行視覺化。所以,有時為了對資料進行視覺化,我們需要對其進行降維。我們可以找到2個或3個具有代表性的特徵量,他們(大致)可以概括其他的特徵量。