一、前話
二、主成分分析法PCA
三、奇異值分解SVD
四、因子分析法FA
五、獨立成分分析ICA
六、缺失值比率
七、低方差濾波
八、高相關濾波
創(chuàng)作不易,如需轉載,請注明出處,謝謝!
在降維算法中,我們經(jīng)常要用到協(xié)方差的概念,下面給出協(xié)方差,相關系數(shù)等概念解釋
協(xié)方差描述兩個變量的相關程度,同向變化時協(xié)方差為正,反向變化時協(xié)方差為負,而相關系數(shù)也是描述兩個變量的相關程度,只是相關系數(shù)對結果相當于做了歸一化處理,協(xié)方差的值范圍是負無窮到正無窮,而相關系數(shù)值范圍是在負一到正一之間,詳細描述參考:https://www.zhihu.com/question/20852004?utm_source=wechat_session&utm_medium=social
數(shù)據(jù)降維作用
1、減少存儲空間
2、低維數(shù)據(jù)減少模型訓練用時
3、一些算法在高維表現(xiàn)不佳,降維提高算法可用性
4、刪除冗余數(shù)據(jù)
5、有助于數(shù)據(jù)的可視化
方差的大小描述一個變量的信息量,對于模型來說方差越小越穩(wěn)定,但是對于數(shù)據(jù)來說,我們自然是希望數(shù)據(jù)的方差大,方差越大表示數(shù)據(jù)越豐富,維度越多
方差大的方向是信號的方向,方差小的方向是噪聲的方向,我們在數(shù)據(jù)挖掘模型處理中,往往需要提高信噪比,即是信號和噪聲的比例,因此相對于下圖既是保留signal方向的數(shù)據(jù),對noise方向的數(shù)據(jù)進行縮減,達到對原始數(shù)據(jù)一個不錯的近似
當進行數(shù)據(jù)降維的時候,我們一般都是對列進行壓縮,即對數(shù)據(jù)的特征進行壓縮,當然我們也可以對數(shù)據(jù)行進行壓縮,即將相似的數(shù)據(jù)合并
PCA本質上是將方差最大的方向作為第一維特征,方差描述的是數(shù)據(jù)的離散程度,方差最大的方向即是能最大程度上保留數(shù)據(jù)的各種特征,接下來第二維特征既選擇與第一維特征正交的特征,第三維特征既是和第一維和第二維正交的特征
PCA的思想是將N維特征映射到K維上(K<N),這k維是全新的正交特征,是重新構造出來的k維特征,而不是簡單的從n維特征中去除其余n-k維特征
設現(xiàn)在有n條d維的數(shù)據(jù),d表示數(shù)據(jù)特征數(shù)
(1) 將原始數(shù)據(jù)按列組成n行d列矩陣X
(2) 將X的每一列進行零均值化,即將這一列的數(shù)據(jù)都減去這一列的均值,目的:防止因為某一維特征數(shù)據(jù)過大對協(xié)方差矩陣的計算有較大的影響
(3) 求出2中零均值化后矩陣的協(xié)方差矩陣
(4) 求出協(xié)方差矩陣的特征值和對應的特征向量
(5) 將特征向量按照對應的特征值大小從大到小排列成矩陣,取前k行組成矩陣P,而選擇的k特征個數(shù)可以利用對前K個大的特征值求和來判斷占了整個特征值和的比例來看對原始數(shù)據(jù)特征保留的程度
(6) Y = XP 即是降維到k為維后的數(shù)據(jù)
PCA即將一個高維數(shù)據(jù)映射到低維,假設映射前的m個n維數(shù)據(jù)為:
若我們已經(jīng)成功選擇了k個重要的特征構建降維后空間的k個標準正交基,假設W是標準正交基構成的矩陣,k個正交基
假設映射后空間的數(shù)據(jù)為:
則在PCA中我們主要是尋找重要的前k個特征構成標準正交基,這樣便可將高維降維:
接下來我們看如何求解W,看W和原數(shù)據(jù)x的關系,拿到原數(shù)據(jù)后,第一步需要對數(shù)據(jù)做零均值歸一化處理,因此原數(shù)據(jù)的均值為0
則數(shù)據(jù)xi、xj的協(xié)方差矩陣為:
E(x)=0, 因此原數(shù)據(jù)的協(xié)方差矩陣為:
下面通過推導證明W中選的k個重要特征是樣本數(shù)據(jù)的協(xié)方差矩陣 XXT 的前k個重要的特征向量組成的,設λ是特征值,即證明有下式成立:
下面利用樣本點到降維超平面的距離足夠近來推導降維空間特征向量W與原始樣本點數(shù)據(jù)協(xié)方差的特征向量之間的關系,第一步利用zi和W恢復數(shù)據(jù)為:
最小化樣本點到降維超平面的距離:
下面給出對于上式的推導公式
上式中加號后半項是常數(shù),因此可以將上式等價于:
利用拉格朗日乘子法得到:
對W求導整理便可得:
最大方差理論闡述:方差最大的方向是保留數(shù)據(jù)特征最多的方向,也即是特征值最大的方向
樣本點在超平面上的投影能盡可能的分開,即投影后數(shù)據(jù)的方差盡可能大,保留原始數(shù)據(jù)特征盡可能最多,下面證明我們選取的W中k個特征方向也是最大方差方向,下面公式中的u既是3pca理論推導中的W,都是選取的重要的特征方向
數(shù)據(jù)樣本是xi,主成分方向為u,u是直線的斜率也是直線的方向向量,設定為單位向量,將數(shù)據(jù)xi投影到主成分方向u上,使得投影后的樣本方差最大,樣本數(shù)據(jù)都做了零均值歸一化處理,因此數(shù)據(jù)在投影后的均值為0,數(shù)據(jù)在投影后的方差為:
等式右邊括號中既是樣本特征的協(xié)方差矩陣,因此我們令:
另外我們令方差為λ:
這樣方差的表達式寫成如下形式,其中u是單位向量:
Σ是協(xié)方差矩陣,λ表示Σ的特征值,u是特征向量,并且我們上面令得方差為λ,因此從這里我們便可以得出,數(shù)據(jù)方差最大的方向既是數(shù)據(jù)協(xié)方差矩陣對應的特征值最大的方向,因此我們只需要對特征值進行特征值分解,然后去前k個最大的特征值對應的特征向量,既是最佳的k維新特征,且k維新特征是相互正交的
對非線性數(shù)據(jù)做降維處理,下面首先給出一張PCA和kernel PCA的實例圖:
PCA不僅可以從協(xié)方差矩陣C入手,也可以從kernel maxtrix K入手,Kernel Pca的思路:
(1) 利用 kernel tricks 計算 kernel matrix K
(2) 對K做SVD分解,找到topk的特征向量
(3) 把高維數(shù)據(jù) x 投射到 k 個特征向量上,從而把它降低到 k 維
按照PCA的思路,我們要對協(xié)方差矩陣C=XTX做SVD分解,并且C的維度將會是m*m,但是Kernel PCA的思路卻是對Kernel Matrix K做SVD分解,如果是線性kernel的話,K =XXT 維度是n*n,下面給出Kernel PCA和PCA的關系推導:
其中將矩陣U用X的線性來表示,有:U = αX,因此將X映射到低維空間:
下圖展示了傳統(tǒng)PCA的投影和Kernel PCA的投影效果比較:
SVD可以看成是對PCA主特征向量的一種解法,在上述PCA介紹過程中,為了求數(shù)據(jù)X的主特征方向,我們通過求協(xié)方差矩陣 XXT 的特征向量來表示樣本數(shù)據(jù)X的主特征向量,但其實我們可以通過對X進行奇異值分解得到主特征方向,下面我們首先比較一下特征值分解和奇異值分解,然后分析一下特征值和奇異值的關系以及SVD在PCA中的應用
特征值分解,特征值分解的矩陣必須是方陣,特征值分解的目的:提取這個矩陣最重要的特征,特征值表示這個特征有多重要,特征向量即表示這個特征是什么,可以理解是這個變化最主要的方向
對方陣A進行特征值分解,則Q是由A的特征向量構成的矩陣,Q中的矩陣都是正交的,Σ是對角陣,對角線上的元素既是方陣A的特征值
特征值分解只能夠對于方陣提取重要特征,奇異值分解可以對于任意矩陣
U是左奇異矩陣,V是右奇異矩陣,均是正交矩陣,Σ是對角陣,除對角線元素外都是0,對角線元素是奇異值,在大多數(shù)情況下,前10%甚至前1%的奇異值的和便占據(jù)了全部奇異值之和的99%以上了,因此當利用奇異值分解對數(shù)據(jù)進行壓縮時,我們可以用前r個大的奇異值來近似描述矩陣:
首先我們寫出ATA的特征值分解式如下:
其中v向量既是奇異值分解公式中向量v,假設σ是奇異值,奇異值是特征值取平方根,則:
可以通過公式推導得到上式的由來,為何特征值和奇異值之間滿足那種關系,如何看待特征值分解和奇異值分解,如何對一個矩陣進行奇異值分解
先給出如下結論:U是方陣AAT 的特征向量構成的正交矩陣,V是方陣ATA的特征向量構成的正交矩陣
簡單推導:
因此有:
這樣便可以把V看成是方陣ATA的特征向量構成的正交矩陣,并且Σ2 構成了特征值,同理
從此公式可以把U是方陣AAT 的特征向量構成的正交矩陣,并且Σ2 構成了特征值,根據(jù)上式可得到奇異值也有兩種計算方式:
奇異值可以通過特征值取平方根直接求得,也可通過特征向量求得,這樣我們便明白了奇異值和特征值之間的關聯(lián)
PCA通過特征矩陣W,將原始數(shù)據(jù)X降維到Z,其中X是m*n維,W是n*k維,Z是m*k維
其中轉換特征矩陣W是原數(shù)據(jù)X的協(xié)方差矩陣XTX的前k個特征向量構成的,這樣便完成了對數(shù)據(jù)的降維,而其實我們可以直接通過SVD完成對X降維到Z,看下面SVD分解:
可以看出我們直接將原數(shù)據(jù)X進行奇異值分解,X乘以右奇異矩陣V便可將m*n數(shù)據(jù)壓縮到m*k的數(shù)據(jù),完成對列的壓縮,不需要進行特征值分解直接奇異值分解便可完成數(shù)據(jù)壓縮,同理我們也可以按照下面方式對數(shù)據(jù)的行進行壓縮:
列壓縮是將數(shù)據(jù)特征進行壓縮,列壓縮是將相似的數(shù)據(jù)進行壓縮,這樣我們得出結論:可以直接對原數(shù)據(jù)X進行奇異值分解完成數(shù)據(jù)降維,不需要先由原數(shù)據(jù)X得到協(xié)方差矩陣求特征值得到轉換特征矩陣再對數(shù)據(jù)進行降維
因子分析法是數(shù)據(jù)降維的一種方法,因子分析法目的是找到原始變量的公共因子,然后用公共因子的線性組合來表示原始變量,舉個例子:觀察一個學生,統(tǒng)計出很多原始變量:代數(shù)、幾何、語文、英語等各科的成績,每天作業(yè)時間,每天筆記的量等等,通過這些現(xiàn)象尋找本質的因子,如公共因子有:邏輯因子、記憶因子、計算因子、表達因子
在降維算法中,主成分分析法使用更廣泛,PCA主要是通過數(shù)據(jù)的協(xié)方差矩陣得到數(shù)據(jù)的主特征向量方向,這便要求m>>n,m表示樣本數(shù)、n表示特征數(shù),即樣本數(shù)要遠大于特征數(shù),這樣協(xié)方差矩陣Σ滿足是非奇異矩陣,特征向量是有解的。當樣本數(shù)m和特征數(shù)n近似或者m<n時,此時協(xié)方差矩陣Σ是奇異矩陣,如果求解特征向量時,是無解的,因為方程數(shù)不夠,不滿秩,因此無法得到解。
當然對于上述Σ不滿秩的情況,我們可以限制Σ
(1) 限制Σ是對角陣,即Σ出對角元素不為0外其他均為0
(2) 在(1)的基礎上,要求對角元素均相等
但這種限制Σ會倒是大量特征信息丟失,因此在此情況下,我們可采用因子分析對數(shù)據(jù)降維
前驗知識:在混合多元高斯分布中,如何求邊緣高斯分布、條件高斯分布
聯(lián)合多元隨機變量x=[x1,x2] 的邊緣高斯分布和條件高斯分布,其中x1屬于Rr,x2屬于Rm,則x屬于Rr+m,則假設多元隨機變量x服從均值為u,方差為Σ的高斯分布,可以得到x的符合的高斯分布形式為:
x1、x2稱為聯(lián)合多元高斯分布,則x1、x2的邊緣高斯分布為:
我們可以通過推導x的協(xié)方差分布得到x1、x2的協(xié)方差分布:
這樣我們便能夠通過x得到x1和x2的邊緣分布,即x1、x2邊緣高斯分布滿足:
同時我們也可以得出給定x2情況下x1的 條件高斯分布:
則條件高斯分布的均值和協(xié)方差分別是:
在下述的因子分析法建模中便用到了這里的邊緣高斯分布和條件高斯分布
在因子分析法中,假設我們得到的原始數(shù)據(jù)為x,降維后的因子特征為z,x為n維的原始變量,z為k維的因子變量,我們找到原始數(shù)據(jù)x的因子變量z的線性組合,便完成將數(shù)據(jù)從n維降到k維,n>>k
首先給出因子分析法的假設模型:
我們假設z服從均值為0,協(xié)方差矩陣為單位矩陣的高斯分布,上面式子 x=u+?z+ε 即完成了低維數(shù)據(jù)z到高維數(shù)據(jù)x的一個映射,我們下面通過一個例子來看一下一維數(shù)據(jù)到二維數(shù)據(jù)的映射過程:
假設我們現(xiàn)在有一個一維的數(shù)據(jù)點z:
通過變換 ?z,其中?屬于R2*1,便將一維數(shù)據(jù)為映射到二維:
然后再在數(shù)據(jù)上加上均值u,即u+?z,對數(shù)據(jù)進行一個平移操作:
最后,我們再加上 ε 的誤差擾動,使得數(shù)據(jù)點可以不在線上,ε 是符合高斯分布的誤差,這樣即得到了映射到了高維數(shù)據(jù)x:
同理,我們只要找到了原始數(shù)據(jù)x的低維公共因子z的線性組合便完成了數(shù)據(jù)降維
因子分析法目的便是用z代替x,那么如何求出x、z公式中的參數(shù)u、?、ψ,這里便用到了之前介紹的聯(lián)合多元高斯分布的邊緣高斯分布和條件高斯分布,這里我們把x、z看成聯(lián)合多元高斯分布:
因此我們可以得到變量x的邊緣高斯分布為:
因此利用最大似然法優(yōu)化目標函數(shù)為:
通過最大化上式,我們便可求得參數(shù)u、?、ψ,上式因為含有隱變量z無法直接求解,對于含有隱變量z的最大似然函數(shù)可通過EM算法求解
EM算法首先E-Step:
根據(jù)條件高斯分布可得:
其中:
于是便可得到:
M-step優(yōu)化目標函數(shù),其中z滿足高斯分布的連續(xù)變量,因此:
這樣再對各個參數(shù)求偏導,然后不斷迭代E步和M步求得參數(shù) u、?、ψ
下面再簡單提幾個實際工程中也常用到的數(shù)據(jù)降維的方式的思想,不做詳細討論,僅供參考!
先用一張圖客觀理解一下ICA降維方法,在下圖中
(1) 圖表示的是主成分分析PCA對特征方向的選取
(2) 圖表示的是獨立成分分析ICA對特征方向選取
在構建模型前,對數(shù)據(jù)進行探索性分析必不可少。但在瀏覽數(shù)據(jù)的過程中,有時候我們會發(fā)現(xiàn)其中包含不少缺失值。如果缺失值少,我們可以填補缺失值或直接刪除這個變量;當缺失值在數(shù)據(jù)集中的占比過高時,一般會選擇直接刪除這個變量,因為它包含的信息太少了。但具體刪不刪、怎么刪需要視情況而定,我們可以設置一個閾值,如果缺失值占比高于閾值,刪除它所在的列。閾值越高,降維方法越積極,通過刪除無效缺失值完成數(shù)據(jù)降維
如果我們有一個數(shù)據(jù)集,其中某列的數(shù)值基本一致,也就是它的方差非常低,那么這個變量還有價值嗎?我們通常認為低方差變量攜帶的信息量也很少,所以可以把它直接刪除。放到實踐中,就是先計算所有變量的方差大小,然后刪去其中最小的幾個。需要注意的一點是:方差與數(shù)據(jù)范圍相關的,因此在采用該方法前需要對數(shù)據(jù)做歸一化處理
如果兩個變量之間是高度相關的,這意味著它們具有相似的趨勢并且可能攜帶類似的信息。同理,這類變量的存在會降低某些模型的性能(例如線性和邏輯回歸模型)。為了解決這個問題,我們可以計算獨立數(shù)值變量之間的相關性。如果相關系數(shù)超過某個閾值,就刪除其中一個變量。作為一般準則,我們應該保留那些與目標變量顯示相當或高相關性的變量