作者:CDA教研組 編輯:JYD 隨著通信技術(shù)、計算能力、數(shù)據(jù)采集等領(lǐng)域的發(fā)展成熟,企業(yè)積累了大量的數(shù)據(jù),這里的“大量”體現(xiàn)在數(shù)據(jù)的條數(shù)多,海量的數(shù)據(jù),同時也體現(xiàn)在維度、字段上的多;面對大量字段,數(shù)據(jù)分析師在建立模型時,除了會面臨字段理解上的困難(數(shù)量多,內(nèi)容多),若不事先預(yù)處理就把全部特征納入模型,那只會“垃圾進(jìn)垃圾出”,除了給模型增加復(fù)雜度,帶來過擬合的風(fēng)險,其他作用微乎其微; 可見,并不是信息越多越好,維度越多,確實可能帶來更多的信息,但是在實際商業(yè)應(yīng)用建模時,首先問一下自己:這些信息都是對我們的建模分析、需求有用的信息嗎,有沒有噪點?這些信息全都是不相關(guān)的嗎,其中有無變量是共線的,若共線,那這樣的信息就是多余的,因為他們都在表達(dá)同一個信息,同一個意思。 好在,數(shù)據(jù)科學(xué)是有些處理維度過大的方法的,一般來說,降維的手段有兩種,一種是特征篩選,通過統(tǒng)計分析里的方法(如方差閾值化、卡方檢驗、方差分析、T檢驗等)從眾多的特征里選擇其中的一些拿來使用,其他特征丟掉;另外一種降維技術(shù)是通過轉(zhuǎn)換的方式,不是純粹的挑選,是通過轉(zhuǎn)換的技術(shù)得到新的特征,理解起來往往沒那么容易,降維的技術(shù)也有很多,如LDA、PCA,本文會介紹PCA,即主成分分析。 要說明一個算法,首先要知道其簡單定義,即該技術(shù)是什么? 所謂主成分分析,其思想是用少數(shù)不相關(guān)的變量來代替相關(guān)的變量,并且要求能夠保留數(shù)據(jù)中大部分的信息,這些線性無關(guān)的變量就叫主成分。 那么上面的這句話,我們需要解決幾個問題:第一個問題,是怎么用少的變量來代替相關(guān)變量,由少數(shù)變量代替多數(shù)變量,那維度確實是在變少(降維);第二個問題,保留大部分信息好理解,因為雖然是降維,但是不希望損失很多信息,比如我們是生活在三維空間,但是看我們的自拍照(二維),我們還是可以知道那是我們自己(主要信息),那這個信息怎么去量化呢?怎么說是保存了大部分信息?我們帶著這兩個問題去看看PCA是怎么實現(xiàn)數(shù)據(jù)降維的。 為了能夠以圖形可視化展現(xiàn)PCA是怎么進(jìn)行降維的,現(xiàn)在假設(shè)數(shù)據(jù)只有兩個維度(方便畫圖),即這些數(shù)據(jù)能夠畫在x軸和y軸兩個維度,圖1是這些數(shù)據(jù)放在直角坐標(biāo)下的展現(xiàn)情況。 (圖1) 圖1我們可以看到數(shù)據(jù)有斜向上的趨勢,這放在散點圖里可以解釋說明兩個變量x1和y1之間有線性關(guān)系(即兩個維度是有相關(guān)性的,滿足PCA的第一個條件),這是二維上的數(shù)據(jù),現(xiàn)在降維(肯定是降到一維),二維是個面,降到一維說明數(shù)據(jù)全都集中在一條直線上(一維),那怎么找這條直線呢? 這條直線一定會有這樣的特點:即原二維數(shù)據(jù)的點投影到這直線上盡可能分散,這樣才能保證盡可能多的點到這條直線上,即保留的信息盡量最大,為什么不是緊湊呢?若是緊湊那有些點可能是重合的,那無疑有些點損失了,這些信息沒有體現(xiàn)在一維上,而這條直線就是圖1所畫的紅色直線,想象一下,這里的點所組成的橢圓形圖像是不是可以抓住主要特征將其看成一條斜上的直線,而這條紅色直線能夠解釋的數(shù)據(jù)變動、差異最多,所以叫第一主成分; 既然有第一主成分,那第二主成分呢,也就是次之能夠解釋數(shù)據(jù)的信息的直線,與第一主成分垂直即可(才能保證不相關(guān)),即圖1上的藍(lán)色直線,這里直線箭頭的方向并不重要,若是箭頭大致朝向跟原來的直角坐標(biāo)軸保持一致的話,那也有的教材會直接理解為,數(shù)據(jù)保持不動,將原來的直角坐標(biāo)旋轉(zhuǎn)到所畫的紅色和藍(lán)色的線上重合,這樣x軸的就是能夠最大化解釋數(shù)據(jù)的變異,即第一主成分,y軸就是第二主成分。那能找出第三主成分嗎,即我能找出第三條直線,跟其他兩條互相垂直,在這里是沒有的,因為只有兩個維度,實際上,原數(shù)據(jù)有多少個維度,那么就有幾個主成分。 那么這里的演示能夠從數(shù)學(xué)的角度找到證據(jù)嗎,好在可以以線性代數(shù)向量的視角去解釋。 為了解釋這個問題,首先回顧一下線性代數(shù)里向量的相關(guān)知識。 (圖2) 如圖2,B向量B(2,2)在A向量A(3,1)的投影d等于|B|cos(α),而這個值是向量A和B的內(nèi)積(2*3+2*1=8),8是新坐標(biāo)軸下的坐標(biāo),現(xiàn)在新的坐標(biāo)軸不再是x和y軸了,是向量A(3,1)所在的軸,以矩陣的形式表示:,也就是說(8,0)是在新的坐標(biāo)軸下的投影,原來的二維數(shù)據(jù)被降到了一維;那么這條合適的向量(新的坐標(biāo)軸)是怎么確定的呢? PCA思想其中有條是讓信息得到最大化的保存,以現(xiàn)在二維數(shù)據(jù)為例,投影到一維上的直線上,這些直線(新的坐標(biāo)體系)下的點應(yīng)該是盡量分散的,而描述數(shù)據(jù)的離散情況統(tǒng)計學(xué)里有一個指標(biāo)是方差,即方差越大,波動越大,影響越大,那么這個維度的數(shù)據(jù)就越重要(很大的影響),于是基于這個思想,那么n個m維度數(shù)據(jù)點在u方向上的方差公式,即樣本點投影在u上的方差:,其中S=是原始變量的協(xié)方差矩陣,u是所求參數(shù),為了便于求解,這里設(shè)置讓數(shù)據(jù)的均值等于0,這里有讀者會糾結(jié)樣本點自由度應(yīng)該是N-1的問題,其實樣本大的時候,是可以直接使用1/N的; 也就是說,現(xiàn)在的問題轉(zhuǎn)換成求在滿足最大方差的情況下的u是多少,根據(jù)拉格朗日乘子法,將作為約束,求目標(biāo)函數(shù)的極值。對對u進(jìn)行求導(dǎo),讓導(dǎo)函數(shù)等于0,可以得到:,該公式就是線性代數(shù)里的矩陣特征值分解,線性代數(shù)其中用一條定理: A為n*n的矩陣,x為非零向量,若存在數(shù)使得成立,那么稱為A的特征值,x稱為對應(yīng)與的特征向量。 那么在這里u是協(xié)方差矩陣S的特征向量,即所要求的主成分,是矩陣S的特征向量u的特征值,正好是對應(yīng)投影方向上數(shù)據(jù)的方差。 那么在這里u是協(xié)方差矩陣S的特征向量,即所要求的主成分,是矩陣S的特征向量u的特征值,正好是對應(yīng)投影方向上數(shù)據(jù)的方差。 那怎么就達(dá)到了降維的效果了呢?根據(jù)矩陣特征值分解的性質(zhì),可以得到m對特征值和特征向量(原始數(shù)據(jù)有多少維度,就有多少主成分,就多少個線性組合),為了達(dá)到降維的效果,需要丟棄掉變異較小即方差小的主成分,即只保留前k個比較大的特征值所對應(yīng)的特征向量;下面兩個條件幫助更好的去選擇多個主成分:
具體來說,以這兩個條件為參考的情況下,當(dāng)你的需求是用主成分進(jìn)行變量壓縮時,可以保留較少的數(shù)量的主成分,如果是在做多元回歸或者多變量模型時,為了在預(yù)測模型中避免特征之間的共線性,可以考慮保留較多的主成分,盡量保留信息。 作為一個以線性代數(shù)為基礎(chǔ)的線性降維技術(shù),PCA除了是很多算法的基礎(chǔ)外,也有很多的場景應(yīng)用。 綜合打分:就是比較與平時簡單的加總方法的一個優(yōu)化,如員工績效的匯總和排名,比較適合用主成分分析來得出一個綜合打分,因為實際情況下每個員工的每個維度下的權(quán)重是不一樣的,不同的主成分下的方差會給與不同的權(quán)重,讓打分更合合理。 去除數(shù)據(jù)中的噪音:就如我開文所說,信息不是越多越好,里面可能有噪音,這項應(yīng)用最典型的就是用主成分來對圖像進(jìn)行降噪識別圖像。 變量壓縮:面對較多的變量時,全部納入模型可能會帶來過擬合的問題,所以PCA在多元回歸或聚類分析里常用來做變量壓縮,達(dá)到降維的目的,當(dāng)然如果在做多元回歸時,原始變量之間不相關(guān),則不需要做主成分分析(也不滿足主成分的條件:用少數(shù)不相關(guān)的線性組合來表示多數(shù)線性相關(guān)的變量)。 為了更好的描述數(shù)據(jù):能用較少的內(nèi)容來描述清楚一件事那肯定是優(yōu)于復(fù)雜冗雜的方法,如知名的波士頓矩陣,只用市場占有率和市場增長率兩個維度來對產(chǎn)品在市場行情進(jìn)行描述,這種兩個維度除了便于描述,也便于進(jìn)行可視化展現(xiàn)。 要強(qiáng)調(diào)的是,在用協(xié)方差矩陣計算時,要對原始變量先進(jìn)行標(biāo)準(zhǔn)化,因為不同變量的量綱可能不統(tǒng)一,主成分分析對不同的量綱非常敏感,因為不同的量綱,也意味著方差的大小懸殊,變異巨大,而主成分分析又是依靠最大化方差來解釋信息的。
點這里??關(guān)注我,記得標(biāo)星哦~
|
|