【ML特征工程】第 6 章 :降维:用 PCA 压缩数据薄饼
???🔎大家好,我是Sonhhxg_柒,希望你看完之后,能對(duì)你有所幫助,不足請(qǐng)指正!共同學(xué)習(xí)交流🔎
📝個(gè)人主頁-Sonhhxg_柒的博客_CSDN博客?📃
🎁歡迎各位→點(diǎn)贊👍 + 收藏?? + 留言📝?
📣系列專欄 - 機(jī)器學(xué)習(xí)【ML】?自然語言處理【NLP】? 深度學(xué)習(xí)【DL】
?
?🖍foreword
?說明?本人講解主要包括Python、機(jī)器學(xué)習(xí)(ML)、深度學(xué)習(xí)(DL)、自然語言處理(NLP)等內(nèi)容。
如果你對(duì)這個(gè)系列感興趣的話,可以關(guān)注訂閱喲👋
文章目錄
直覺
導(dǎo)航線性代數(shù)公式的技巧
推導(dǎo)
線性投影
方差和經(jīng)驗(yàn)方差
主要成分:第一個(gè)配方
主成分:矩陣向量公式
主成分通解
轉(zhuǎn)換特征
實(shí)施主成分分析
行動(dòng)中的主成分分析
Whitening?和ZCA
PCA 的注意事項(xiàng)和局限性
根據(jù)核算方差選擇 K
用例
概括
借助自動(dòng)數(shù)據(jù)采集和特征生成技術(shù),可以快速獲取大量特征。? 但并非所有這些都有用。在第3章和第4章中,我們討論了基于頻率的過濾和特征縮放作為修剪掉無信息特征的方法。現(xiàn)在我們將仔細(xì)研究使用主成分分析(PCA) 進(jìn)行特征降維的主題。
本章標(biāo)志著進(jìn)入基于模型的特征工程技術(shù)。在此之前,大多數(shù)技術(shù)都可以在不引用數(shù)據(jù)的情況下定義。例如,基于頻率的過濾可能會(huì)說,“去掉所有小于n的計(jì)數(shù)”,該過程無需數(shù)據(jù)本身的進(jìn)一步輸入即可執(zhí)行。
另一方面,基于模型的技術(shù)需要來自數(shù)據(jù)的信息。例如,PCA 是圍繞數(shù)據(jù)的主軸定義的。在前面的章節(jié)中,數(shù)據(jù)、特征和模型之間總是有著明確的界線。從這一點(diǎn)開始,差異變得越來越模糊。這正是當(dāng)前特征學(xué)習(xí)研究令人興奮的地方。
直覺
降維是關(guān)于在保留關(guān)鍵位的同時(shí)去除“無信息信息”。有很多方法可以定義“無信息”。PCA 關(guān)注線性相關(guān)的概念。在“矩陣剖析”中,我們將數(shù)據(jù)矩陣的列空間描述為所有特征向量的跨度。如果列空間與特征總數(shù)相比很小,那么大部分特征都是少數(shù)關(guān)鍵特征的線性組合。線性相關(guān)的特征會(huì)浪費(fèi)空間和計(jì)算能力,因?yàn)樾畔⒈究梢杂酶俚奶卣鬟M(jìn)行編碼。為了避免這種情況,主成分分析試圖通過將數(shù)據(jù)壓縮到低維線性子空間中來減少這種“絨毛”。
描繪特征空間中的數(shù)據(jù)點(diǎn)集。每個(gè)數(shù)據(jù)點(diǎn)都是一個(gè)點(diǎn),整組數(shù)據(jù)點(diǎn)形成一個(gè)斑點(diǎn)。在圖 6-1?(a) 中,數(shù)據(jù)點(diǎn)均勻地分布在兩個(gè)特征維度上,并且 blob 填滿了空間。在此示例中,列空間具有滿秩。然而,如果其中一些特征是其他特征的線性組合,那么斑點(diǎn)看起來就不會(huì)那么豐滿;它看起來更像圖 6-1?(b),一個(gè)扁平的斑點(diǎn),其中特征 1 是特征 2 的副本(或標(biāo)量倍數(shù))。在在這種情況下,我們說 blob 的固有維數(shù)是 1,即使它位于二維特征空間中。
實(shí)際上,事物很少彼此完全相等。我們更有可能看到非常接近相等但不完全相等的特征。在這種情況下,數(shù)據(jù) blob 可能類似于圖 6-1?(c)。這是一個(gè)消瘦的斑點(diǎn)。如果我們想減少傳遞給模型的特征數(shù)量,那么我們可以用一個(gè)新特征替換特征 1 和特征 2,可能稱為特征 1.5,它位于原始兩個(gè)特征之間的對(duì)角線上。然后可以用一個(gè)數(shù)字(特征 1.5 方向上的位置)而不是兩個(gè)數(shù)字f1和f2來充分表示原始數(shù)據(jù)集。
圖 6-1。特征空間中的數(shù)據(jù)塊:(a) 全秩數(shù)據(jù)塊,(b) 低維數(shù)據(jù)塊,和 (c) 近似低維數(shù)據(jù)塊
這里的關(guān)鍵思想是用一些新特征替換冗余特征,這些新特征充分總結(jié)了原始特征空間中包含的信息。當(dāng)只有兩個(gè)特征時(shí),很容易判斷新特征應(yīng)該是什么。當(dāng)原始特征空間有數(shù)百或數(shù)千個(gè)維度時(shí),這就更難了。我們需要一種方法來數(shù)學(xué)描述我們正在尋找的新功能。然后我們可以使用優(yōu)化技術(shù)來找到它們。
從數(shù)學(xué)上定義“充分總結(jié)信息”的一種方法是說新數(shù)據(jù)塊應(yīng)盡可能多地保留原始數(shù)據(jù)量。我們正在將數(shù)據(jù)塊壓成一個(gè)扁平的煎餅,但我們希望煎餅在正確的方向上盡可能大。這意味著我們需要一種測(cè)量體積的方法。
體積與距離有關(guān)。但是一團(tuán)數(shù)據(jù)點(diǎn)中的距離概念有些模糊。人們可以測(cè)量任意兩對(duì)點(diǎn)之間的最大距離,但事實(shí)證明這是一個(gè)很難進(jìn)行數(shù)學(xué)優(yōu)化的函數(shù)。另一種方法是測(cè)量點(diǎn)對(duì)之間的平均距離,或者等效地,測(cè)量每個(gè)點(diǎn)與其均值(即方差)之間的平均距離。事實(shí)證明這更容易優(yōu)化。(生活是艱難的。統(tǒng)計(jì)學(xué)家已經(jīng)學(xué)會(huì)了走方便的捷徑。)從數(shù)學(xué)上講,這轉(zhuǎn)化為最大化新特征空間中數(shù)據(jù)點(diǎn)的方差。
導(dǎo)航線性代數(shù)公式的技巧
要在線性代數(shù)的世界中保持方向性,請(qǐng)跟蹤哪些量是標(biāo)量,哪些是向量,以及向量的方向——垂直或水平。了解矩陣的維度,因?yàn)樗鼈兺ǔ?huì)告訴您感興趣的向量是在行中還是在列中。在頁面上將矩陣和向量繪制為矩形,并確保形狀匹配。正如通過注意測(cè)量單位(距離以英里為單位,速度以英里/小時(shí)為單位)可以在代數(shù)中走得更遠(yuǎn)一樣,在線性代數(shù)中,所有需要的都是維度。
推導(dǎo)
和以前一樣,讓X表示n?×?d數(shù)據(jù)矩陣,其中n是數(shù)據(jù)點(diǎn)的數(shù)量,d是特征的數(shù)量。令x為包含單個(gè)數(shù)據(jù)點(diǎn)的列向量。(因此x是X中其中一行的轉(zhuǎn)置。)讓v表示我們?cè)噲D找到的新特征向量之一或主成分。
矩陣的奇異值分解 (SVD)
任何矩形矩陣都可以分解為三個(gè)具有特定形狀和特征的矩陣:
X?=?UΣV?T
這里,U和V是正交矩陣(即U?T?U?= I和V?T?V?= I)。Σ是包含X奇異值的對(duì)角矩陣,奇異值可以是正數(shù)、零或負(fù)數(shù)。假設(shè)X有n行和d列并且n ≥ d。那么U的形狀為 n?×?d,而Σ和V的形狀為d?×?d。(參見“奇異值分解 (SVD)”以全面了解 SVD 和矩陣的特征分解。)
線性投影
讓我們休息一下下一步步推導(dǎo)PCA。圖 6-2說明了整個(gè)過程。
圖 6-2。PCA 示意圖:(a) 特征空間中的原始數(shù)據(jù);(b) 集中數(shù)據(jù);(c) 將數(shù)據(jù)向量 x 投影到另一個(gè)向量 v 上;(d) 投影坐標(biāo)的最大方差方向(等于 X?T?X 的主特征向量)
PCA 使用線性投影將數(shù)據(jù)轉(zhuǎn)換到新的特征空間。圖 6-2?(c) 說明了線性投影的樣子。當(dāng)我們將x投影到v上時(shí),投影的長(zhǎng)度與兩者之間的內(nèi)積成正比,由v的范數(shù)(它與自身的內(nèi)積)歸一化。稍后,我們將約束v具有單位范數(shù)。因此,唯一相關(guān)的部分是分子——我們稱它為v(參見公式 6-1)。
?公式 6-1。投影坐標(biāo)
z =?x?T?v
請(qǐng)注意,z是標(biāo)量,而x和v是列向量。由于有一堆數(shù)據(jù)點(diǎn),我們可以將它們?cè)谛绿卣?strong>v上的所有投影坐標(biāo)的向量z公式化(等式 6-2)。這里,X是熟悉的數(shù)據(jù)矩陣,其中每一行都是一個(gè)數(shù)據(jù)點(diǎn)。生成的z是一個(gè)列向量。
公式 6-2。投影坐標(biāo)向量
z?=?X?v
方差和經(jīng)驗(yàn)方差
下一步是計(jì)算投影的方差。方差定義為均值平方距離的期望值(公式 6-3)。
公式 6-3。隨機(jī)變量 Z 的方差
Var(?Z?) = E[?Z?– E(?Z?)]?2
有一個(gè)小問題:我們對(duì)問題的表述沒有提及均值E(Z);它是一個(gè)自由變量。一種解決方案是通過從每個(gè)數(shù)據(jù)點(diǎn)中減去平均值來將其從等式中刪除。生成的數(shù)據(jù)集的均值為零,這意味著方差只是Z?2的期望值。從幾何上講,減去均值具有使數(shù)據(jù)居中的效果。(見圖 6-2?(ab)。)
密切相關(guān)的量是兩個(gè)隨機(jī)變量Z?1和Z?2之間的協(xié)方差(公式 6-4)。將此視為將(單個(gè)隨機(jī)變量的)方差概念擴(kuò)展到兩個(gè)隨機(jī)變量。
公式 6-4。兩個(gè)隨機(jī)變量 Z?1和 Z?2之間的協(xié)方差
Cov(?Z?1?,?Z?2?) = E[(?Z?1?– E(?Z?1?)(?Z?2?– E(?Z?2?)]
當(dāng)隨機(jī)變量的均值為零時(shí),它們的協(xié)方差與它們的線性相關(guān)E[Z?1?Z?2?]一致。稍后我們將更多地討論這個(gè)概念。
方差和期望等統(tǒng)計(jì)量是在數(shù)據(jù)分布上定義的。實(shí)際上,我們沒有真正的分布,只有一堆觀察到的數(shù)據(jù)點(diǎn),z?1?, ...,?z?n。這是稱為經(jīng)驗(yàn)分布,它為我們提供了方差的經(jīng)驗(yàn)估計(jì)(公式 6-5)。
公式 6-5。Z 基于觀測(cè)值 z 的經(jīng)驗(yàn)方差
主要成分:第一個(gè)配方
結(jié)合公式 6-1中z?i的定義,我們有最大化的公式公式 6-6中給出的預(yù)測(cè)數(shù)據(jù)的方差。(我們從經(jīng)驗(yàn)方差的定義中刪除分母n?–1,因?yàn)樗且粋€(gè)全局常數(shù),不會(huì)影響出現(xiàn)最大值的位置。)
公式 6-6。主成分的目標(biāo)函數(shù)
?這里的約束強(qiáng)制w與自身的內(nèi)積為1,相當(dāng)于說向量必須有單位長(zhǎng)度。這是因?yàn)槲覀冎魂P(guān)心方向而不關(guān)心w的大小。w的大小是一個(gè)不必要的自由度,因此我們通過將其設(shè)置為任意值來擺脫它。
主成分:矩陣向量公式
接下來是棘手的步驟。公式 6-6中的平方和項(xiàng)相當(dāng)繁瑣。矩陣向量格式會(huì)更清晰。我們能做到嗎?答案是肯定的。關(guān)鍵在于平方和恒等式:一堆平方項(xiàng)的和等于以這些項(xiàng)為元素的向量的范數(shù)平方,相當(dāng)于向量與自身的內(nèi)積。有了這個(gè)恒等式,我們可以用矩陣向量表示法重寫公式 6-6,如公式 6-7所示。
公式 6-7。主成分的目標(biāo)函數(shù),矩陣向量公式
PCA 的這個(gè)公式更清楚地呈現(xiàn)了目標(biāo):我們尋找最大化輸出范數(shù)的輸入方向。這聽起來很熟悉嗎?答案在于X的奇異值分解(SVD)?。事實(shí)證明,最佳w是X的主左奇異向量,它也是X?T?X的主特征向量。投影數(shù)據(jù)稱為原始數(shù)據(jù)的主成分。
主成分通解
這個(gè)過程可以重復(fù)。找到第一個(gè)主成分后,我們可以重新運(yùn)行公式 6-7,并添加新向量與先前找到的向量正交的約束(請(qǐng)參見公式 6-8)。
公式 6-8。k+1 主成分的目標(biāo)函數(shù)
解是X的第k?+1 個(gè)左奇異向量,按奇異值降序排列。因此,前k個(gè)主成分對(duì)應(yīng)于X的前k個(gè)左奇異向量。
轉(zhuǎn)換特征
一旦找到主成分,我們就可以使用線性投影來轉(zhuǎn)換特征。設(shè)X?=?UΣV?T是X的 SVD ,V?k是其列包含前k個(gè)左奇異向量的矩陣。X的維度為 n?×?d,其中d是原始特征的數(shù)量,而V?k的維度為d?×?k。與公式 6-2中的單個(gè)投影向量不同,我們可以同時(shí)投影到投影矩陣(公式 6-9)中的多個(gè)向量上。
公式 6-9。PCA投影矩陣
?
?投影坐標(biāo)矩陣很容易計(jì)算,并且可以使用奇異向量彼此正交的事實(shí)進(jìn)一步簡(jiǎn)化(參見公式 6-10)。
公式 6-10。簡(jiǎn)單的 PCA 變換
?投影值只是前k個(gè)右奇異向量按前k個(gè)奇異值縮放。因此,可以通過X的 SVD 方便地獲得整個(gè) PCA 解決方案、組件和投影等。
實(shí)施主成分分析
PCA 的許多推導(dǎo)涉及首先將數(shù)據(jù)居中,然后對(duì)協(xié)方差矩陣進(jìn)行特征分解。但實(shí)現(xiàn) PCA 的最簡(jiǎn)單方法是對(duì)中心數(shù)據(jù)矩陣進(jìn)行奇異值分解。
PCA 實(shí)施步驟
將數(shù)據(jù)矩陣居中:
C?=?X?–?1μT?_
其中1是包含所有 1 的列向量,μ是包含X的行平均值的列向量。
計(jì)算 SVD:
C?=?UΣV?T
找出主要成分。前k個(gè)主成分是V的前k列;即,對(duì)應(yīng)于k個(gè)最大奇異值的右奇異向量。
轉(zhuǎn)換數(shù)據(jù)。轉(zhuǎn)換后的數(shù)據(jù)只是U的前k列。(如果需要白化,則按逆奇異值縮放向量。這要求所選奇異值不為零。請(qǐng)參閱“白化和 ZCA”。)
行動(dòng)中的主成分分析
讓我們通過將 PCA 應(yīng)用于一些圖像數(shù)據(jù)來更好地了解 PCA 的工作原理。MNIST數(shù)據(jù)集包含從 0 到 9 的手寫數(shù)字圖像。原始圖像為 28 × 28 像素。圖像的較低分辨率子集隨scikit-learn一起分發(fā),其中每個(gè)圖像被下采樣為 8×8 像素。scikit-learn 中的原始數(shù)據(jù)有 64 個(gè)維度。在示例 6-1中,我們應(yīng)用 PCA 并使用前三個(gè)主成分可視化數(shù)據(jù)集。
示例 6-1。scikit-learn 數(shù)字?jǐn)?shù)據(jù)集(MNIST 數(shù)據(jù)集的一個(gè)子集)的主成分分析
>>> from sklearn import datasets >>> from sklearn.decomposition import PCA# Load the data >>> digits_data = datasets.load_digits() >>> n = len(digits_data.images)# Each image is represented as an 8-by-8 array. # Flatten this array as input to PCA. >>> image_data = digits_data.images.reshape((n, -1)) >>> image_data.shape (1797, 64)# Groundtruth label of the number appearing in each image >>> labels = digits_data.target >>> labels array([0, 1, 2, ..., 8, 9, 8])# Fit a PCA transformer to the dataset. # The number of components is automatically chosen to account for # at least 80% of the total variance. >>> pca_transformer = PCA(n_components=0.8) >>> pca_images = pca_transformer.fit_transform(image_data) >>> pca_transformer.explained_variance_ratio_ array([ 0.14890594, 0.13618771, 0.11794594, 0.08409979, 0.05782415,0.0491691 , 0.04315987, 0.03661373, 0.03353248, 0.03078806,0.02372341, 0.02272697, 0.01821863]) >>> pca_transformer.explained_variance_ratio_[:3].sum() 0.40303958587675121# Visualize the results >>> import matplotlib.pyplot as plt >>> from mpl_toolkits.mplot3d import Axes3D >>> %matplotlib notebook >>> fig = plt.figure() >>> ax = fig.add_subplot(111, projection='3d') >>> for i in range(100): ... ax.scatter(pca_images[i,0], pca_images[i,1], pca_images[i,2], ... marker=r'${}$'.format(labels[i]), s=64)>>> ax.set_xlabel('Principal component 1') >>> ax.set_ylabel('Principal component 2') >>> ax.set_zlabel('Principal component 3')前 100 個(gè)投影圖像顯示在圖 6-3的 3D 圖中。標(biāo)記對(duì)應(yīng)于標(biāo)簽。前三個(gè)主成分約占數(shù)據(jù)集中總方差的 40%。這絕不是完美的,但它允許方便的低維可視化。我們看到 PCA 將彼此接近的相似數(shù)字分組。數(shù)字 0 和 6 與 1 和 7,以及 3 和 9 位于同一區(qū)域。空間大致分為一側(cè)的 0、4 和 6,以及另一側(cè)的其余數(shù)字。
圖 6-3。MNIST 數(shù)據(jù)子集的 PCA 投影——標(biāo)記對(duì)應(yīng)于圖像標(biāo)簽
由于數(shù)字之間存在大量重疊,因此很難在投影空間中使用線性分類器區(qū)分它們。因此,如果任務(wù)是對(duì)手寫數(shù)字進(jìn)行分類并且所選模型是線性分類器,那么前三個(gè)主成分不足以作為特征。然而,有趣的是看看 64 維數(shù)據(jù)集有多少可以僅在 3 維中捕獲。
Whitening?和ZCA
由于目標(biāo)函數(shù)中的正交性約束,PCA 轉(zhuǎn)換產(chǎn)生了一個(gè)很好的副作用:轉(zhuǎn)換后的特征不再相關(guān)。換句話說,特征向量對(duì)之間的內(nèi)積為零。使用奇異向量的正交性很容易證明這一點(diǎn):
?結(jié)果是一個(gè)對(duì)角矩陣,其中包含奇異值的平方,表示每個(gè)特征向量與其自身的相關(guān)性,也稱為其??2范數(shù)。
有時(shí),將特征的比例歸一化為 1 也很有用。在信號(hào)處理術(shù)語中,這稱為白化。它產(chǎn)生一組特征,這些特征與自身具有單位相關(guān)性并且彼此之間具有零相關(guān)性。從數(shù)學(xué)上講,白化可以通過將 PCA 變換與逆奇異值相乘來完成(請(qǐng)參見公式 6-11)。
公式 6-11。PCA+?whitening
??whitening與降維無關(guān);一個(gè)人可以在沒有另一個(gè)的情況下執(zhí)行一個(gè)。例如,零相位分量分析(ZCA)(Bell and Sejnowski,1996)是一種與 PCA 密切相關(guān)的白化變換,但不會(huì)減少特征數(shù)量。ZCA 白化使用完整的主成分集V而不進(jìn)行縮減,并且包括一個(gè)額外的乘法返回到V?T(公式 6-12)。
公式 6-12。ZCA?whitening
?簡(jiǎn)單的 PCA 投影(公式 6-10)在新的特征空間中生成坐標(biāo),其中主要成分作為基礎(chǔ)。這些坐標(biāo)僅表示投影矢量的長(zhǎng)度,而不表示方向。與主成分相乘得到長(zhǎng)度和方向。另一個(gè)有效的解釋是額外的乘法將坐標(biāo)旋轉(zhuǎn)回原始特征空間。(V是正交矩陣,正交矩陣在不拉伸或壓縮的情況下旋轉(zhuǎn)其輸入。)因此,ZCA 生成盡可能接近(歐幾里得距離)原始數(shù)據(jù)的白化數(shù)據(jù)。
PCA 的注意事項(xiàng)和局限性
使用 PCA 進(jìn)行降維時(shí),必須解決使用多少主成分 (?k?) 的問題。與所有超參數(shù)一樣,這個(gè)數(shù)字可以根據(jù)生成模型的質(zhì)量進(jìn)行調(diào)整。但也有不涉及昂貴計(jì)算方法的啟發(fā)式方法。
一種可能是選擇k來解釋總方差的所需比例。(此選項(xiàng)在 scikit-learn 包中可用PCA。)投影到第k個(gè)分量的方差為:
║?Xv?k?║?2?=║?u?k?σ?k?║?2?=?σ?k?2
這是X的第k個(gè)最大奇異值的平方。矩陣奇異值的有序列表稱為它的譜。因此,要確定要使用多少分量,可以對(duì)數(shù)據(jù)矩陣執(zhí)行簡(jiǎn)單的頻譜分析并選擇保留足夠方差的閾值。
根據(jù)核算方差選擇 K
要保留足夠的分量以覆蓋數(shù)據(jù)中總方差的 80%,請(qǐng)選擇k使得
?另一種選擇k的方法涉及數(shù)據(jù)集的固有維度。這是一個(gè)比較模糊的概念,但也可以從光譜中確定。基本上,如果頻譜包含一些大的奇異值和一些小的奇異值,那么人們可能只收獲最大的奇異值并丟棄其余的。有時(shí)頻譜的其余部分并不小,但頭部和尾部值之間存在很大差距。這也是一個(gè)合理的截止點(diǎn)。此方法需要對(duì)光譜進(jìn)行目視檢查,因此不能作為自動(dòng)化管道的一部分執(zhí)行。
對(duì) PCA 的一個(gè)主要批評(píng)是轉(zhuǎn)換相當(dāng)復(fù)雜,因此結(jié)果難以解釋。主成分和投影向量是實(shí)數(shù)值的,可以是正數(shù)也可以是負(fù)數(shù)。主成分本質(zhì)上是(居中)行的線性組合,投影值是列的線性組合。例如,在股票收益應(yīng)用程序中,每個(gè)因素都是股票收益時(shí)間片的線性組合。這意味著什么?很難為學(xué)習(xí)因素表達(dá)一個(gè)人類可以理解的原因。因此,分析師很難相信結(jié)果。如果你無法解釋為什么你應(yīng)該將其他人的數(shù)十億資金投入特定股票,你可能不會(huì)選擇使用該模型。
PCA 的計(jì)算成本很高。它依賴于 SVD,這是一個(gè)昂貴的過程。計(jì)算矩陣的完整 SVD 需要O?(?nd?2?+ d?3?) 次操作(Golub 和 Van Loan,2012),假設(shè)n ≥?d——即,數(shù)據(jù)點(diǎn)多于特征。即使我們只需要k個(gè)主成分,計(jì)算截?cái)嗟?SVD(k個(gè)最大的奇異值和向量)仍然需要O?((?n+d?)?2?k?) =?O?(?n?2?k?) 次操作。當(dāng)有大量數(shù)據(jù)點(diǎn)或特征時(shí),這是禁止的。
很難以流方式、批量更新或從完整數(shù)據(jù)的樣本中執(zhí)行 PCA。SVD 的流式計(jì)算、更新 SVD 和從子樣本計(jì)算SVD 都是困難的研究問題。算法是存在的,但以降低準(zhǔn)確性為代價(jià)。一種含義是,當(dāng)將測(cè)試數(shù)據(jù)投影到訓(xùn)練集中發(fā)現(xiàn)的主要成分時(shí),人們應(yīng)該期望較低的表示精度。隨著數(shù)據(jù)分布的變化,人們將不得不重新計(jì)算當(dāng)前數(shù)據(jù)集中的主要成分。
最后,最好不要將 PCA 應(yīng)用于原始計(jì)數(shù)(字?jǐn)?shù)、音樂播放數(shù)、電影觀看數(shù)等)。這樣做的原因是此類計(jì)數(shù)通常包含較大的異常值。(有一個(gè)粉絲觀看了 314,582 次指環(huán)王的可能性非常高,這使其他計(jì)數(shù)相形見絀。)正如我們所知,PCA 尋找特征內(nèi)的線性相關(guān)性。相關(guān)性和方差統(tǒng)計(jì)對(duì)大異常值非常敏感;一個(gè)大數(shù)字可能會(huì)大大改變統(tǒng)計(jì)數(shù)據(jù)。因此,最好先修剪大值數(shù)據(jù)(“基于頻率的過濾”),或者應(yīng)用縮放變換,如 tf-idf(第 4 章)或?qū)?shù)變換(“對(duì)數(shù)變換”)。
用例
PCA 通過尋找特征之間的線性相關(guān)模式來降低特征空間維度。由于涉及 SVD,PCA 計(jì)算超過幾千個(gè)特征的成本很高。但是對(duì)于少量有實(shí)際價(jià)值的特征來說,是非常值得嘗試的。
PCA 轉(zhuǎn)換會(huì)丟棄數(shù)據(jù)中的信息。因此,下游模型的訓(xùn)練成本可能較低,但準(zhǔn)確性較低。在 MNIST 數(shù)據(jù)集上,一些人觀察到使用來自 PCA 的降維數(shù)據(jù)會(huì)導(dǎo)致分類模型不太準(zhǔn)確。在這些情況下,使用 PCA 既有利也有弊。
最酷的之一PCA的應(yīng)用是時(shí)間序列的異常檢測(cè)。Lakhina 等人。(2004) 使用 PCA 檢測(cè)和診斷互聯(lián)網(wǎng)流量異常。他們專注于流量異常,即從一個(gè)網(wǎng)絡(luò)區(qū)域到另一個(gè)網(wǎng)絡(luò)區(qū)域的流量出現(xiàn)激增或下降時(shí)。這些突然的變化可能表明網(wǎng)絡(luò)配置錯(cuò)誤或協(xié)同拒絕服務(wù)攻擊。無論哪種方式,了解此類更改發(fā)生的時(shí)間和地點(diǎn)對(duì)互聯(lián)網(wǎng)運(yùn)營商都很有價(jià)值。
由于互聯(lián)網(wǎng)上的總流量如此之大,因此很難檢測(cè)到小區(qū)域的孤立流量激增。一組相對(duì)較小的主干鏈路處理大部分流量。他們的主要見解是流量異常會(huì)同時(shí)影響多個(gè)鏈路(因?yàn)榫W(wǎng)絡(luò)數(shù)據(jù)包需要跳躍通過多個(gè)節(jié)點(diǎn)才能到達(dá)目的地)。將每個(gè)鏈接視為一個(gè)特征,并將每個(gè)時(shí)間步長(zhǎng)的流量作為度量。數(shù)據(jù)點(diǎn)是網(wǎng)絡(luò)上所有鏈路的流量測(cè)量的時(shí)間片。該矩陣的主要組成部分表示網(wǎng)絡(luò)上的整體流量趨勢(shì)。其余分量表示包含異常的殘差信號(hào)。
PCA 也經(jīng)常用于金融建模。在這些用例中,它作為一種因素分析,這個(gè)術(shù)語描述了一系列統(tǒng)計(jì)方法,旨在使用少量未觀察到的因素來描述觀察到的數(shù)據(jù)變異性。在因子分析應(yīng)用程序中,目標(biāo)是找到解釋成分,而不是轉(zhuǎn)換后的數(shù)據(jù)。
股票收益等財(cái)務(wù)數(shù)量通常相互關(guān)聯(lián)。股票可能同時(shí)上下波動(dòng)(正相關(guān)),也可能反向波動(dòng)(負(fù)相關(guān))。為了平衡波動(dòng)性和降低風(fēng)險(xiǎn),投資組合需要一組彼此不相關(guān)的多樣化股票。(不要把所有的雞蛋都放在一個(gè)籃子里,如果那個(gè)籃子會(huì)沉下去的話。)找到強(qiáng)相關(guān)模式有助于決定投資策略。
股票相關(guān)模式可以是全行業(yè)的。例如,科技股可能會(huì)一起漲跌,而航空股往往會(huì)在油價(jià)高時(shí)下跌。但行業(yè)可能不是解釋結(jié)果的最佳方式。分析師還在觀察到的統(tǒng)計(jì)數(shù)據(jù)中尋找意想不到的相關(guān)性。特別地,統(tǒng)計(jì)因子模型(Connor, 1995) 在個(gè)股收益的時(shí)間序列矩陣上運(yùn)行 PCA 以找到通常協(xié)變的股票。在此用例中,最終目標(biāo)是主成分本身,而不是轉(zhuǎn)換后的數(shù)據(jù)。
ZCA 在從圖像中學(xué)習(xí)時(shí)作為預(yù)處理步驟很有用。在自然圖像中,相鄰像素通常具有相似的顏色。ZCA 白化可以去除這種相關(guān)性,這使得后續(xù)的建模工作可以專注于更有趣的圖像結(jié)構(gòu)。Krizhevsky (2009) 的論文“從圖像中學(xué)習(xí)多層特征”包含很好的示例,這些示例說明了 ZCA 白化對(duì)自然圖像的影響。
許多深度學(xué)習(xí)模型使用 PCA 或 ZCA 作為預(yù)處理步驟,盡管這并不總是必要的。在“用于自然圖像建模的因式三向受限玻爾茲曼機(jī)”中,Ranzato 等人。(2010) 評(píng)論,“白化不是必需的,但可以加快算法的收斂速度。”?在“無監(jiān)督特征學(xué)習(xí)中單層網(wǎng)絡(luò)的分析”中,Coates 等人。(2011) 發(fā)現(xiàn) ZCA 美白對(duì)某些模型有幫助,但不是全部。(注意本文中的模型是無監(jiān)督特征學(xué)習(xí)模型,因此 ZCA 被用作其他特征工程方法的特征工程方法。方法的堆疊和鏈接在機(jī)器學(xué)習(xí)管道中很常見。)
概括
PCA 的討論到此結(jié)束。關(guān)于 PCA 要記住的兩個(gè)主要事情是它的機(jī)制(線性投影)和目標(biāo)(最大化投影數(shù)據(jù)的方差)。解決方案涉及協(xié)方差矩陣的特征分解,這與數(shù)據(jù)矩陣的SVD密切相關(guān)。人們還可以通過將數(shù)據(jù)壓成盡可能蓬松的煎餅來記住 PCA?。
PCA就是一個(gè)例子模型驅(qū)動(dòng)的特征工程。(當(dāng)目標(biāo)函數(shù)進(jìn)入場(chǎng)景時(shí),人們應(yīng)該立即懷疑模型潛伏在背景中。)這里的建模假設(shè)是方差充分表示數(shù)據(jù)中包含的信息。同樣,該模型尋找特征之間的線性相關(guān)性。這在多個(gè)應(yīng)用程序中用于減少相關(guān)性或找到輸入中的共同因素。
PCA 是一種眾所周知的降維方法。但它有其局限性,例如高計(jì)算成本和無法解釋的結(jié)果。它作為預(yù)處理步驟很有用,尤其是當(dāng)特征之間存在線性相關(guān)時(shí)。
當(dāng)被視為消除線性相關(guān)性的方法時(shí),PCA 與白化的概念有關(guān)。它的表親 ZCA 以一種可解釋的方式對(duì)數(shù)據(jù)進(jìn)行白化處理,但不會(huì)降低維度。
總結(jié)
以上是生活随笔為你收集整理的【ML特征工程】第 6 章 :降维:用 PCA 压缩数据薄饼的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php获取域名后的东西,php获取域名_
- 下一篇: 使用 Flutter 快速实现请假与写周