深入理解主成分分析(PCA):原理、算法與應用

內容摘要

本文深入剖析主成分分析(PCA)技術。介紹其通過正交變換簡化數據維度的核心原理,詳細推導基于最小投影距離和最大投影方差的算法過程,總結算法流程步驟。全面分析PCA的優缺點,并對比其與KPCA的差異。同時闡述降維的必要性和目的,助力讀者系統掌握PCA技術及其在數據處理中的應用。

關鍵詞:主成分分析;降維;協方差矩陣;特征值分解

一、引言

在機器學習和數據處理領域,數據的高維度常常帶來諸多挑戰,如計算復雜度增加、數據稀疏性問題以及過擬合風險提高等。主成分分析(Principal Component Analysis,PCA)作為一種強大的降維技術,能夠有效地將高維數據轉換為低維數據,同時最大程度保留數據的關鍵信息。本文將深入探討PCA的原理、算法、優缺點以及其在實際應用中的價值。

二、PCA核心思想

2.1 解決數據特征問題

在處理訓練數據時,經常會面臨數據特征過多或特征累贅的問題。PCA的核心思想是將m維特征映射到n維(n<m),這n維形成的主元是重構出來最能代表原始數據的正交特征。通過這種方式,PCA可以去除數據中的冗余信息,簡化數據結構,使得后續的數據分析和處理更加高效。

2.2 核心思想圖解

假設數據集中包含m個n維數據,現在需要將其降維到n’維。以n=2,n’=1為例,我們要在眾多維度方向中找到一個最能代表原始數據集的方向。
在這里插入圖片描述

如圖1所示,有 u 1 u_{1} u1? u 2 u_{2} u2?兩個向量方向,從圖中可以直觀地看出, u 1 u_{1} u1? u 2 u_{2} u2?更適合代表原始數據集。這是基于兩個主要評價指標:

  1. 樣本點到這個直線的距離足夠近。
  2. 樣本點在這個直線上的投影能盡可能分開。

如果需要降維的目標維數是其他任意維,則評價指標相應變為:

  1. 樣本點到這個超平面的距離足夠近。
  2. 樣本點在這個超平面上的投影能盡可能分開。

三、PCA算法推理

3.1 基于最小投影距離的推理

假設數據集中包含m個n維數據,且數據進行了中心化。經過投影變換得到的新坐標為 z ( i ) = w T x ( i ) z^{(i)} = w^{T}x^{(i)} z(i)=wTx(i),其中w是標準正交基。如果我們將數據從n維降到n’維,經過降維后,新坐標為 Z = [ z ( 1 ) , z ( 2 ) , ? , z ( m ) ] T Z = [z^{(1)}, z^{(2)}, \cdots, z^{(m)}]^{T} Z=[z(1),z(2),?,z(m)]T。樣本點 x ( i ) x^{(i)} x(i)在新坐標系下的投影為 x ~ ( i ) = W z ( i ) \tilde{x}^{(i)} = Wz^{(i)} x~(i)=Wz(i)

要想使樣本點到超平面的距離足夠近,目標是最小化 ∑ i = 1 m ∥ x ~ ( i ) ? x ( i ) ∥ 2 2 \sum_{i = 1}^{m}\left\|\tilde{x}^{(i)} - x^{(i)}\right\|_{2}^{2} i=1m? ?x~(i)?x(i) ?22?。對此式進行推理,可得:
∑ i = 1 m ∥ x ~ ( i ) ? x ( i ) ∥ 2 2 = ∑ i = 1 m ∥ W z ( i ) ? x ( i ) ∥ 2 2 = ∑ i = 1 m ( W z ( i ) ) T ( W z ( i ) ) ? 2 ∑ i = 1 m ( W z ( i ) ) T x ( i ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = ∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) ? 2 ∑ i = 1 m ( z ( i ) ) T x ( i ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) = ? t r ( W T ( ∑ i = 1 m x ( i ) ) T ( z ( i ) ) + ∑ i = 1 m ( x ( i ) ) T x ( i ) ) = ? t r ( W T ( ∑ i = 1 m x ( i ) ( x ( i ) ) T ) W ) \begin{align*} \sum_{i = 1}^{m}\left\|\tilde{x}^{(i)} - x^{(i)}\right\|_{2}^{2} &=\sum_{i = 1}^{m}\left\|Wz^{(i)} - x^{(i)}\right\|_{2}^{2}\\ &=\sum_{i = 1}^{m}\left(Wz^{(i)}\right)^{T}\left(Wz^{(i)}\right)-2\sum_{i = 1}^{m}\left(Wz^{(i)}\right)^{T}x^{(i)}+\sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)}\\ &=\sum_{i = 1}^{m}\left(z^{(i)}\right)^{T}\left(z^{(i)}\right)-2\sum_{i = 1}^{m}\left(z^{(i)}\right)^{T}x^{(i)}+\sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)}\\ &=-tr\left(W^{T}\left(\sum_{i = 1}^{m}x^{(i)}\right)^{T}\left(z^{(i)}\right)+\sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)}\right)\\ &=-tr\left(W^{T}\left(\sum_{i = 1}^{m}x^{(i)}\left(x^{(i)}\right)^{T}\right)W\right) \end{align*} i=1m? ?x~(i)?x(i) ?22??=i=1m? ?Wz(i)?x(i) ?22?=i=1m?(Wz(i))T(Wz(i))?2i=1m?(Wz(i))Tx(i)+i=1m?(x(i))Tx(i)=i=1m?(z(i))T(z(i))?2i=1m?(z(i))Tx(i)+i=1m?(x(i))Tx(i)=?tr ?WT(i=1m?x(i))T(z(i))+i=1m?(x(i))Tx(i) ?=?tr(WT(i=1m?x(i)(x(i))T)W)?
在推導過程中,分別用到了矩陣轉置公式以及矩陣的跡,最后兩步是將代數和轉為矩陣形式。

由于W的每一個向量 w j w_{j} wj?是標準正交基, S = 1 m ∑ i = 1 m x ( i ) ( x ( i ) ) T S = \frac{1}{m}\sum_{i = 1}^{m}x^{(i)}\left(x^{(i)}\right)^{T} S=m1?i=1m?x(i)(x(i))T是數據集的協方差矩陣, ∑ i = 1 m ( x ( i ) ) T x ( i ) \sum_{i = 1}^{m}\left(x^{(i)}\right)^{T}x^{(i)} i=1m?(x(i))Tx(i)是一個常量。最小化 ∑ i = 1 m ∥ x ~ ( i ) ? x ( i ) ∥ 2 2 \sum_{i = 1}^{m}\left\|\tilde{x}^{(i)} - x^{(i)}\right\|_{2}^{2} i=1m? ?x~(i)?x(i) ?22?又可等價于:
a r g m i n ? W ? t r ( W T X X T W ) \underbrace{arg min}_{W}-tr\left(W^{T}XX^{T}W\right) W argmin???tr(WTXXTW) s . t . W T W = I s.t. W^{T}W = I s.t.WTW=I
利用拉格朗日函數可得到:
J ( W ) = ? t r ( W T X X T W ) + λ ( W T W ? I ) J(W)=-tr\left(W^{T}XX^{T}W\right)+\lambda\left(W^{T}W - I\right) J(W)=?tr(WTXXTW)+λ(WTW?I)
對w求導,可得 ? X X T W + λ W = 0 -XX^{T}W+\lambda W = 0 ?XXTW+λW=0,即 X X T W = λ W XX^{T}W=\lambda W XXTW=λW X X T XX^{T} XXT是由n’個特征向量組成的矩陣,λ為 X X T XX^{T} XXT的特征值。w即為我們想要的矩陣。

3.2 基于最大投影方差的推導

基于最大投影方差的推導過程較為復雜,本文不再贅述,感興趣的讀者可自行查閱資料。

四、PCA算法流程總結

PCA算法的輸入為n維樣本集 X = [ x ( 1 ) , x ( 2 ) , ? , x ( m ) ] X = [x^{(1)}, x^{(2)}, \cdots, x^{(m)}] X=[x(1),x(2),?,x(m)],目標降維維數為n’;輸出為降維后的新樣本集 Y Y Y。主要步驟如下:

  1. 對所有的樣本進行中心化,使得數據的均值為0。
  2. 計算樣本的協方差矩陣 X X T XX^{T} XXT,協方差矩陣能同時表現不同維度間的相關性及各個維度上的方差。
  3. 對協方差矩陣 X X T XX^{T} XXT進行特征值分解,得到特征值和特征向量。
  4. 取出最大的n’個特征值對應的特征向量,這些特征向量將構成新的低維空間的基。
  5. 標準化特征向量,得到特征向量矩陣w,確保其具有良好的數學性質。
  6. 轉化樣本集中的每個樣本,將原始樣本投影到新的低維空間中。
  7. 得到輸出新樣本集,完成降維操作。

在降維時,有時不明確目標維數,而要指定降維后的主成分比重閾值 k ( k ∈ ( 0 , 1 ] ) k(k \in(0,1]) k(k(0,1])。假設n個特征值為 λ 1 , λ 2 , ? , λ n \lambda_{1}, \lambda_{2}, \cdots, \lambda_{n} λ1?,λ2?,?,λn?,則n*可從 ∑ i = 1 n ? λ i ∑ i = 1 n λ i ≥ k \frac{\sum_{i = 1}^{n^{*}}\lambda_{i}}{\sum_{i = 1}^{n}\lambda_{i}} \geq k i=1n?λi?i=1n??λi??k得到。

五、PCA思想總結

PCA本質上是將高維數據通過線性變換投影到低維空間的過程。在這個過程中,它去除了可以被其他向量代表的線性相關向量,以及較小特征值對應的特征向量,從而找出最能代表原始數據的投影方法。

完成PCA的關鍵是求解協方差矩陣。對角化后的協方差矩陣,對角線上較小的新方差對應的就是那些該去掉的維度,所以取那些含有較大能量(特征值)的維度即可,其余的就舍掉,實現去冗余的目的。

六、PCA算法的優缺點

6.1 優點

  1. 僅僅需要以方差衡量信息量,不受數據集以外的因素影響,計算相對簡單直接。
  2. 各主成分之間正交,可消除原始數據成分間相互影響的因素,使得數據結構更加清晰。
  3. 計算方法主要運算是特征值分解,易于實現,在許多編程語言和機器學習庫中都有現成的實現方法。

6.2 缺點

  1. 主成分各個特征維度的含義具有一定的模糊性,不如原始樣本特征的解釋性強,這給后續的數據分析和理解帶來一定困難。
  2. 方差小的非主成分也可能含有樣本的重要信息,因降維去冗余可能對后續數據處理有影響,導致部分有用信息丟失。

七、降維的必要性及目的

7.1 必要性

  1. 避免多重共線性和預測變量之間相互關聯。多重共線性會導致解空間的不穩定,從而可能導致結果的不連貫,影響模型的準確性和可靠性。
  2. 高維空間本身具有稀疏性。例如,一維正態分布有68%的值落于正負標準差之間,而在十維空間上只有2%,數據的稀疏性使得在高維空間中進行數據分析和建模變得更加困難。
  3. 避免過多的變量對查找規律造成冗余麻煩,增加計算復雜度和分析難度。
  4. 僅在變量層面上分析可能會忽略變量之間的潛在聯系,而降維可以幫助發現這些潛在聯系。

7.2 目的

  1. 減少預測變量的個數,簡化數據結構,提高模型的訓練效率和泛化能力。
  2. 確保這些變量是相互獨立的,降低變量之間的相關性,提高模型的穩定性。
  3. 提供一個框架來解釋結果,相關特征,特別是重要特征更能在數據中明確顯示出來;如果只有二維或者三維的話,就更便于可視化展示,幫助用戶更好地理解數據。
  4. 數據在低維下更容易處理、使用,降低計算成本和存儲需求。
  5. 去除數據噪聲,提高數據的質量和可靠性。
  6. 降低算法運算開銷,使得模型能夠在更短的時間內完成訓練和預測任務。

八、KPCA與PCA的區別

KPCA(Kernelized PCA)用到了核函數思想,使用了核函數的主成分分析一般稱為核主成分分析。應用PCA算法的前提是假設存在一個線性超平面,進而投影。如果數據不是線性的,這時就需要用到KPCA。

KPCA將數據集從n維映射到線性可分的高維N(N>n),然后再從N維降維到一個低維度n’(n’<n<N)。假設高維空間數據由n維空間的數據通過映射?產生,n維空間的特征分解為:
∑ i = 1 m x ( i ) ( x ( i ) ) T W = λ W \sum_{i = 1}^{m}x^{(i)}\left(x^{(i)}\right)^{T}W=\lambda W i=1m?x(i)(x(i))TW=λW
其映射為:
∑ i = 1 m ? ( x ( i ) ) ? ( x ( i ) ) T W = λ W \sum_{i = 1}^{m}\phi\left(x^{(i)}\right)\phi\left(x^{(i)}\right)^{T}W=\lambda W i=1m??(x(i))?(x(i))TW=λW
KPCA通過在高維空間進行協方差矩陣的特征值分解,然后用和PCA一樣的方法進行降維。由于KPCA需要核函數的運算,因此它的計算量要比PCA大很多。

九、總結

主成分分析(PCA)是一種重要的降維技術,在數據處理、機器學習等領域有著廣泛的應用。本文詳細介紹了PCA的核心思想、算法推理、流程總結、思想總結、優缺點以及與KPCA的區別,同時闡述了降維的必要性和目的。希望讀者通過本文的學習,能夠對PCA有更深入的理解和掌握,在實際工作中靈活運用這一技術解決數據處理和分析的相關問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/77214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/77214.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/77214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp-商城-25-頂部模塊高度計算

計算高度&#xff1a; 使用computed進行頂部模塊的計算。 總高度&#xff1a;bartotalHeight log 介紹--收款碼這一條目 也就是上一章節的title的高度計算 bodybarheight。 在該組件中&#xff1a; js部分的代碼&#xff1a; 包含了導出的名字&#xff1a; shop-head…

【MCP】第一篇:MCP協議深度解析——大模型時代的“神經連接層“架構揭秘

【MCP】第一篇&#xff1a;MCP協議深度解析——大模型時代的"神經連接層"架構揭秘 一、什么是MCP&#xff1f;二、為什么需要MCP&#xff1f;三、MCP的架構四、MCP與AI交互的原理4.1 ReAct&#xff08;Reasoning Acting&#xff09;模式4.2 Function Calling 模式 五…

李飛飛團隊新作WorldScore:“世界生成”能力迎來統一評測,3D/4D/視頻模型同臺PK

從古老神話中對世界起源的幻想&#xff0c;到如今科學家們在實驗室里對虛擬世界的構建&#xff0c;人類探索世界生成奧秘的腳步從未停歇。如今&#xff0c;隨著人工智能和計算機圖形學的深度融合&#xff0c;我們已站在一個全新的起點&#xff0c;能夠以前所未有的精度和效率去…

[react]Next.js之自適應布局和高清屏幕適配解決方案

序言 閱讀前首先了解即將要用到的兩個包的作用 1.postcss-pxtorem 自動將 CSS 中的 px 單位轉換為 rem 單位按照設計稿尺寸直接寫 px 值&#xff0c;由插件自動計算 rem 值 2.amfe-flexible 動態設置根元素的 font-size&#xff08;即 1rem 的值&#xff09;根據設備屏幕寬度和…

C# 如何比較兩個List是否相等?

簡介 在 C# 里&#xff0c;比較兩個 List 是否相等&#xff0c;需要考慮多個方面&#xff0c;例如列表中的元素順序、元素本身是否相等。下面介紹幾種常見的比較方法&#xff1a; 基本類型比較&#xff08;元素順序必須一致&#xff09; var list1 new List<int> { 1…

【技術派后端篇】Redis分布式鎖:原理、實踐與應用

在當今的高并發系統中&#xff0c;分布式鎖是保障數據一致性和系統穩定性的重要手段。今天&#xff0c;我們就來深入探討一下Redis分布式鎖&#xff0c;揭開它神秘的面紗。 1 本地鎖與分布式鎖的區別 在Java開發的早期階段&#xff0c;我們接觸過synchronized和Lock鎖&#x…

奧比中光tof相機開發學習筆記

針對奧比中光 tof相機&#xff0c;官方提供的資料如下ProcessOn Mindmap|思維導圖 Orbbec SDK Python Wrapper基于Orbbec SDK進行設計封裝&#xff0c;主要實現數據流接收&#xff0c;設備指令控制。下面就其開發適配進行如下總結&#xff1a; &#xff08;1&#xff09;系統配…

如何學習嵌入式

寫這個文章是用來學習的,記錄一下我的學習過程。希望我能一直堅持下去,我只是一個小白,只是想好好學習,我知道這會很難&#xff0c;但我還是想去做&#xff01; 本文寫于&#xff1a;2025.04.16 請各位前輩能否給我提點建議&#xff0c;或者學習路線指導一下 STM32單片機學習總…

2025 年藍橋杯 Java B 組真題解析分享

今年是我第二次參加藍橋杯軟件類Java B組的比賽&#xff0c;雖然賽前做了不少準備&#xff0c;但真正坐在考場上時&#xff0c;還是有種熟悉又緊張的感覺。藍橋杯的題目一向以“基礎創新”著稱&#xff0c;今年也不例外&#xff0c;每道題都考驗著我們對算法的理解、代碼實現能…

Vue3服務器端渲染深度實踐:架構、性能與全棧集成

一、SSR架構設計模式 1.1 架構模式選擇矩陣 維度CSRSSR混合渲染首次內容渲染(FCP)慢(依賴JS執行)快(HTML直出)按路由動態選擇SEO支持需預渲染原生支持關鍵頁預渲染服務端壓力低(靜態托管)高(實時渲染)使用緩存中間層TTI(可交互時間)受限于JS體積需等待Hydration漸進式激活適用…

2025年泰迪杯數據挖掘競賽B題論文首發+問題一二三四代碼分享

料 基于穿戴裝備的身體活動監測 摘要 隨著科技的進步&#xff0c;加速度計&#xff0c;能夠實時、準確地捕捉人體的動態變化&#xff0c;成為醫學應用中的一個重要工具。本文將基于題目收集數據進行相關研究。 針對題目給出的數據集&#xff0c;我們首先進行數據清洗工作。首…

國內AI搜索平臺與ChatGPT橫向對比分析

一、核心技術差異 1、?百度文小言? 基于文心大模型4.0升級&#xff0c;主打“新搜索”能力&#xff0c;支持多模態輸入&#xff08;語音、圖片、視頻&#xff09;和富媒體搜索結果?。 獨有的“記憶個性化”功能可結合用戶歷史行為優化回答&#xff0c;并在醫療、教育等垂直…

安卓環境搭建開發工具下載Gradle下載

1.安裝jdk(使用java語言開發安卓app) 核心庫 java.lang java.util java.sq; java.io 2.安裝開發工具(IDE)android studio https://r3---sn-2x3elnel.gvt1-cn.com/edgedl/android/studio/install/2023.3.1.18/android-studio-2023.3.1.18-windows.exe下載完成后一步一步安裝即…

Python 趣味學習 -數據類型脫口秀速記公式 [特殊字符]

&#x1f3a4; Python數據類型脫口秀速記公式 &#x1f40d; 1?? 四大金剛登場 "Set叔(無序潔癖)、Tuple爺(頑固老頭)、List姐(百變女王)、Dict哥(萬能鑰匙)"2?? 特性對比RAP &#x1f3b6; 內存/作用域&#xff1a; 全局變量 → 函數內修改 → 可變(mutable)會…

單片機 | 基于51單片機的傾角測量系統設計

以下是一個基于51單片機的傾角測量系統設計詳解,包含原理、公式和完整代碼: 一、系統原理 核心器件:MPU6050(集成3軸加速度計+陀螺儀) 主控芯片:STC89C52RC(51單片機) 顯示模塊:LCD1602液晶 工作原理: 通過MPU6050采集XYZ三軸加速度數據,利用重力加速度分量計算俯仰…

2025年4月16日華為留學生筆試第二題200分

?? 點擊直達筆試專欄 ??《大廠筆試突圍》 ?? 春秋招筆試突圍在線OJ ?? 筆試突圍OJ 02. 圖書館借閱管理系統 問題描述 盧小姐是一家大學圖書館的管理員,她需要開發一個簡單的圖書借閱管理系統來處理日常的圖書流通操作。系統需要支持以下四種操作: in s:表示一本…

Linux通用一鍵換源腳本.sh - ubuntu、centos全自動更換國內源 - LinuxMirrors神器

效果 腳本 bash <(curl -sSL https://linuxmirrors.cn/main.sh) 來自 https://linuxmirrors.cn/ 截圖 ending...

【Unity】JSON數據的存取

這段代碼的結構是為了實現 數據的封裝和管理&#xff0c;特別是在 Unity 中保存和加載玩家數據時。以下是對代碼設計的逐步解釋&#xff1a; 1. PlayerCoin 類 PlayerCoin 是一個簡單的數據類&#xff0c;用于表示單個玩家的硬幣信息。它包含以下字段&#xff1a; count&…

python實現音視頻下載器

一、環境準備 確保當前系統已安裝了wxPython 、 yt-dlp 和FFmpeg。當前主要支持下載youtube音視頻 1、安裝wxPython pip install wxPython2、安裝yt-dp pip install wxPython yt-dlp3、安裝FFmpeg 在Windows 10上通過命令行安裝FFmpeg&#xff0c;最簡便的方式是使用包管理…

使用 vxe-table 來格式化任意的金額格式,支持導出與復制單元格格式到 excel

使用 vxe-table 來格式化任意的金額格式&#xff0c;支持導出與復制單元格格式到 excel 查看官網&#xff1a;https://vxetable.cn gitbub&#xff1a;https://github.com/x-extends/vxe-table gitee&#xff1a;https://gitee.com/x-extends/vxe-table 安裝 npm install vx…