參考 :
當特徵選擇完成後,可以直接訓練模型了,但是可能由於特徵矩陣過大,導致計算量大,訓練時間長的問題,因此降低特徵矩陣維度也是必不可少的。但不要盲目降維,當你在原資料上跑到了乙個比較好的結果,又嫌它太慢的時候才進行降維,不然降了半天白降了。
常見的降維方法有主成分分析法(pca)和線性判別分析(lda),線性判別分析本身也是乙個分類模型。pca和lda有很多的相似點,其本質是要將原始的樣本對映到維度更低的樣本空間中,但是pca和lda的對映目標不一樣:pca是為了讓對映後的樣本具有最大的發散性;而lda是為了讓對映後的樣本有最好的分類效能。所以說pca是一種無監督的降維方法,而lda是一種有監督的降維方法。
principal component analysis(pca)是最常用的線性降維方法,它的目標是通過某種線性投影,將高維的資料對映到低維的空間中表示,並期望在所投影的維度上資料的方差最大,以此使用較少的資料維度,同時保留住較多的原資料點的特性。
通俗的理解,如果把所有的點都對映到一起,那麼幾乎所有的資訊(如點和點之間的距離關係)都丟失了,而如果對映後方差盡可能的大,那麼資料點則會分散開來,以此來保留更多的資訊。可以證明,pca是丟失原始資料資訊最少的一種線性降維方式。(實際上就是最接近原始資料,但是pca並不試圖去探索資料內在結構)
使用decomposition庫的pca類選擇特徵的**如下:
from sklearn.decomposition import pca
#主成分分析法,返回降維後的資料
#引數n_components為主成分數目
pca(n_components=2).fit_transform(iris.data)
pca追求的是在降維之後能夠最大化保持資料的內在資訊,並通過衡量在投影方向上的資料方差的大小來衡量該方向的重要性。但是這樣投影以後對資料的區分作用並不大,反而可能使得資料點揉雜在一起無法區分。這也是pca存在的最大乙個問題,這導致使用pca在很多情況下的分類效果並不好。具體可以看下圖所示,若使用pca將資料點投影至一維空間上時,pca會選擇2軸,這使得原本很容易區分的兩簇點被揉雜在一起變得無法區分;而這時若選擇1軸將會得到很好的區分結果。
lda所追求的目標與pca不同,不是希望保持資料最多的資訊,而是希望資料在降維後能夠很容易地被區分開來。後面會介紹lda的方法,是另一種常見的線性降維方法。
linear discriminant analysis (也有叫做fisher linear discriminant)是一種有監督的(supervised)線性降維演算法。與pca保持資料資訊不同,lda是為了使得降維後的資料點盡可能地容易被區分!
假設原始資料表示為x,(m*n矩陣,m是維度,n是sample的數量)
既然是線性的,那麼就是希望找到對映向量a, 使得 a『x後的資料點能夠保持以下兩種性質:
1、同類的資料點盡可能的接近(within class)所以呢還是上面pca用的這張圖,如果圖中兩堆點是兩類的話,那麼我們就希望他們能夠投影到軸1去(pca結果為軸2),這樣在一維空間中也是很容易區分的。2、不同類的資料點盡可能的分開(between class)
使用lda庫的lda類選擇特徵的**如下:
from sklearn.lda import lda
#線性判別分析法,返回降維後的資料
#引數n_components為降維後的維數
lda(n_components=2).fit_transform(iris.data, iris.target)
降維方法之PCA,LDA
減少冗餘資訊造成的誤差,提高資料資訊的精度。pca 主成分分析 principal component analysis pca 主成分分析,是最常用的線性降維方法,無監督的,它通過某種線性對映,將高維的向量轉化為低維空間表示,並且希望在所投影的低維空間上資料方差盡可能的大 實際表現為資料點盡可能的...
特徵提取,特徵選擇,降維
特徵提取就是將機器學習演算法不理解的原始資料抽取特徵出來,這些特徵可以描述原始的資料,使得這些特徵可以被機器學習演算法所理解,這些特徵也就作為機器學習演算法的輸入。在machine learning中,特徵降維和特徵選擇是兩個常見的概念,在應用machine learning來解決問題的 中經常會出...
特徵工程(5) 降維
當特徵選擇完成後,可以直接訓練模型了,但是可能由於特徵矩陣過大,導致計算量大,訓練時間長的問題,因此降低特徵矩陣維度也是必不可少的。常見的降維方法除了上篇提到的基於l1懲罰項的模型以外,另外還有主成分分析法 pca 和線性判別分析 lda 線性判別分析本身也是乙個分類模型。pca和lda有很多的相似...