机器学习入门--主成分分析原理与实践

本文详细介绍了主成分分析(PCA)的原理、数学推导过程以及在实际中的应用,包括Python代码示例,展示了如何使用PCA降低数据维度并提取关键特征,以提升机器学习模型效率。
摘要由CSDN通过智能技术生成

主成分分析

主成分分析(Principal Component Analysis,简称PCA)是一种常用的降维技术和数据分析方法。它通过线性变换将原始高维数据映射到低维空间,从而提取出数据中最重要的特征。

主成分分析的基本原理与数学推导

基本原理

PCA的主要思想是找到一个新的坐标系,将数据投影到这个坐标系上,使得投影后的数据具有最大的方差。这意味着在新的坐标系下,数据的信息尽可能地集中在少数几个维度上,而其他维度的方差较小,可以被忽略。
具体步骤如下:

  1. 对原始数据进行去中心化,使得数据的均值为0。
  2. 计算数据的协方差矩阵。
  3. 对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。
  4. 根据特征值的大小,选择前k个特征向量作为主成分,其中k是降维后的维度。
  5. 将原始数据投影到选定的主成分上,得到降维后的数据。

数学推导

设原始数据矩阵为 X ∈ R m × n X \in R^{m \times n} XRm×n,其中 m m m为样本数, n n n为特征数。我们的目标是将数据降低到 k k k维。

1. 1. 1. 去中心化

对原始数据矩阵 X X X进行去中心化,即将每个特征减去其均值,得到去中心化矩阵 Z Z Z

Z = X − 1 m ∑ i = 1 m X i Z = X - \frac{1}{m} \sum_{i=1}^{m} X_i Z=Xm1i=1mXi

其中, X i X_i Xi表示第 i i i个样本。

2. 2. 2. 协方差矩阵

计算去中心化矩阵 Z Z Z的协方差矩阵 C C C,其中:

C = 1 m Z T Z C = \frac{1}{m} Z^T Z C=m1ZTZ

协方差矩阵 C C C的各个元素为:

C 1 , 1 = 1 m ∑ i = 1 m ( z i , 1 − z ˉ 1 ) 2 C 1 , 2 = 1 m ∑ i = 1 m ( z i , 1 − z ˉ 1 ) ( z i , 2 − z ˉ 2 ) ⋯ C i , j = 1 m ∑ i = 1 m ( z i , i − z ˉ i ) ( z i , j − z ˉ j ) ⋯ C n , n = 1 m ∑ i = 1 m ( z i , n − z ˉ n ) 2 \begin{aligned} C_{1,1} &= \frac{1}{m} \sum_{i=1}^{m} (z_{i,1}-\bar z_1)^2 \\ C_{1,2} &= \frac{1}{m} \sum_{i=1}^{m} (z_{i,1}-\bar z_1)(z_{i,2}-\bar z_2) \\ \cdots \\ C_{i,j} &= \frac{1}{m} \sum_{i=1}^{m} (z_{i,i}-\bar z_i)(z_{i,j}-\bar z_j) \\ \cdots \\ C_{n,n} &= \frac{1}{m} \sum_{i=1}^{m} (z_{i,n}-\bar z_n)^2 \end{aligned} C1,1C1,2Ci,jCn,n=m1i=1m(zi,1zˉ1)2=m1i=1m(zi,1zˉ1)(zi,2zˉ2)=m1i=1m(zi,izˉi)(zi,jzˉj)=m1i=1m(zi,nzˉn)2

其中, z i , j z_{i,j} zi,j表示去中心化矩阵 Z Z Z中第 i i i个样本的第 j j j个特征, z ˉ j \bar z_j zˉj是所有样本的第 j j j个特征的均值。

3. 3. 3. 特征值分解

对协方差矩阵 C C C进行特征值分解,得到特征值 λ 1 , λ 2 , ⋯   , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,,λn和对应的特征向量 v 1 , v 2 , ⋯   , v n v_1,v_2,\cdots,v_n v1,v2,,vn

C v i = λ i v i , i = 1 , 2 , ⋯   , n Cv_i = \lambda_i v_i, i=1,2,\cdots,n Cvi=λivi,i=1,2,,n

由于协方差矩阵 C C C是实对称矩阵,所以其特征向量 v 1 , v 2 , ⋯   , v n v_1,v_2,\cdots,v_n v1,v2,,vn是正交的单位向量。

4. 4. 4. 选择主成分

根据特征值的大小,选择前 k k k个特征向量,构成投影矩阵 P = [ v 1 , v 2 , ⋯   , v k ] P = [v_1, v_2, \cdots, v_k] P=[v1,v2,,vk],其中 v i v_i vi为第 i i i个特征向量。这 k k k个特征向量就是数据中最重要的 k k k个特征,也称为主成分。

5. 5. 5. 投影

将去中心化矩阵 Z Z Z投影到选定的主成分上,得到降维后的数据矩阵 Y Y Y

Y = Z P Y = ZP Y=ZP

其中, Y ∈ R m × k Y \in R^{m \times k} YRm×k P ∈ R n × k P \in R^{n \times k} PRn×k

代码实现

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA

# 加载iris数据集
data = load_iris()
X = data.data
y = data.target

# 创建PCA对象,并设置降维后的维度为2
pca = PCA(n_components=2)

# 使用fit_transform方法进行降维
transformed_data = pca.fit_transform(X)

# 可视化降维结果
colors = ['navy', 'turquoise', 'darkorange']
# 设置线宽
lw = 2
for color, i, target_name in zip(colors, [0, 1, 2], data.target_names):
    plt.scatter(transformed_data[y == i, 0], transformed_data[y == i, 1], color=color, 
                alpha=0.8, lw=lw,label=target_name)

plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.title('PCA of IRIS dataset')
plt.show()

上述代码首先加载了iris数据集,并将数据和标签分别存储在X和y变量中。然后,创建了一个PCA对象,并通过设置n_components参数为2,指定降维后的维度为2。接着,使用fit_transform方法对数据进行降维并得到降维后的结果transformed_data。最后,可视化降维结果,并使用不同颜色表示不同类别的数据点。运行代码后,会显示降维结果的散点图(如下图所示)。
PCA-Iris Dataset

总结

主成分分析(Principal Component Analysis,PCA)是一种常用的降维方法,可以用于减少数据的维度并提取出数据的主要特征。其基本原理是找到一个新的坐标系,将数据投影到这个坐标系上,使得投影后的数据具有最大的方差。具体步骤包括去中心化、计算协方差矩阵、进行特征值分解、选择主成分和投影。我们在实践的过程中可以使用sklearn中的PCA对象进行降维,并根据需要选择合适的降维后的维度。总之,PCA是一种简单有效的降维方法,可以在保留主要特征的情况下减少数据的维度,从而提高机器学习算法的效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值