机器学习——主成分分析

主成分分析

主成分分析概括

主成分分析(Principal Component Analysis, PCA)是一种常用的机器学习和统计学方法,用于降低数据集的维度,同时保留数据集中的重要信息。它通过线性变换将数据映射到一个新的坐标系中,使得数据在新坐标系中的每个维度(称为主成分)彼此正交且按照方差递减的顺序排列。

应用场景

降维:在高维数据中减少特征的数量,同时保留数据的关键信息,有助于可视化和模型的效率提升。

去除噪声:由于PCA将数据投影到主成分上,可以通过忽略较小的主成分来减少数据中的噪声影响。

数据压缩:将数据压缩到较低维度,有助于在存储和计算方面节省成本。

降维要求

1)最大可分性:降维之后的数据点之间的距离最远。
2)最近重构性:降维之前的点距离投影线或投影面距离最近。

举例:如图,将样本投影到M上明显比投影到N上点与点之间的距离更远,并且投影点距离M的长度明显比N点的近,所以满足了最大可分性和最近重构性。
在这里插入图片描述

PCA的步骤

数据中心化

首先,对原始数据进行中心化处理,即将每个特征的均值减去所有样本对应特征的均值,使得数据的均值为零。
目的:消除数据中的平均值,使得数据的均值为零。这个过程通常在数据预处理阶段进行,在应用某些机器学习算法或统计分析之前进行。

举例:在如图所示的六个点中,分别计算特征值X1和X2的均值,并且在图中标出即为蓝色叉子的点,之后将X轴和Y轴分别向蓝色点平移,将远点置于蓝色点的位置即为去中心化。去中心化并不会影响特征之间的关系,但是可以让之后的运算实现算法更加的方便。
在这里插入图片描述

计算协方差矩阵:

(1)协方差:在统计学中,协方差描述了两个随机变量之间的关系。如果两个变量的协方差为正值,表示它们具有正相关性;如果为负值,则表示它们之间存在负相关性。在主成分分析中,通过计算原始数据的协方差矩阵来确定数据之间的相关性,从而找到数据中的主成分。

在这里插入图片描述

(2)方差:方差表示一个随机变量与其均值之间的差异程度,是协方差的一种特殊形式,即两个变量相同时的协方差即为它们自身的方差。在主成分分析中,方差也被用来衡量数据中的变异性,方差越大,表示数据的变化范围越广。

(3)协方差矩阵:协方差矩阵是一个对称矩阵,其中对角线上的元素是各个变量的方差,非对角线上的元素是相应变量之间的协方差。在主成分分析中,协方差矩阵是一个重要的概念,通过对协方差矩阵进行特征分解,我们可以找到数据中的主成分方向,并且可以通过主成分的重要性(即方差)来选择最重要的主成分。

在这里插入图片描述

特征值分解

对协方差矩阵进行特征值分解(或奇异值分解),得到特征值和对应的特征向量。特征向量表示新坐标系的方向,特征值表示在该方向上的方差大小.对于一个给定的方阵A,它的特征向量(eigenvector,也译固有向量、本征向量)经过这个线性变换之后,得到的新向量仍然与原来的保持在同一条直线上,但其长度或方向也许会改变。即以下关系式:Av=λv.其中λ(特征值)为标量,即特征向量的长度在该线性变换下缩放的比例。如果特征值为正,则表示v在经过线性变换的作用后方向也不变;如果特征值为负,说明方向会反转;如果特征值为0,则是表示缩回原点。

举个例子:
在这里插入图片描述
以X为例,我们用PCA方法将这两行数据降到一行。

1)因为X矩阵的每行已经是零均值,所以不需要去平均值。

2)求协方差矩阵:
在这里插入图片描述
3)求协方差矩阵的特征值与特征向量。

求解后的特征值为:λ1 = 2,λ2 = 2/5,对应的特征向量为:
在这里插入图片描述
其中对应的特征向量分别是一个通解,c1和c2可以取任意实数。那么标准化后的特征向量为:
在这里插入图片描述
4)矩阵P为:
在这里插入图片描述
5)最后我们用P的第一行乘以数据矩阵X,就得到了降维后的表示:
在这里插入图片描述

代码实现

import matplotlib.pyplot as plt
import sklearn.decomposition as dp
from sklearn.datasets import load_iris
 
x,y=load_iris(return_X_y=True) #加载数据,x表示数据集中的属性数据,y表示数据标签
pca=dp.PCA(n_components=2) #加载pca算法,设置降维后主成分数目为2
reduced_x=pca.fit_transform(x) #对原始数据进行降维,保存在reduced_x中
red_x,red_y=[],[]
blue_x,blue_y=[],[]
green_x,green_y=[],[]
for i in range(len(reduced_x)): #按鸢尾花的类别将降维后的数据点保存在不同的表中
    if y[i]==0:
        red_x.append(reduced_x[i][0])
        red_y.append(reduced_x[i][1])
    elif y[i]==1:
        blue_x.append(reduced_x[i][0])
        blue_y.append(reduced_x[i][1])
    else:
        green_x.append(reduced_x[i][0])
        green_y.append(reduced_x[i][1])
plt.scatter(red_x,red_y,c='r',marker='x')
plt.scatter(blue_x,blue_y,c='b',marker='D')
plt.scatter(green_x,green_y,c='g',marker='.')
plt.show()

结果:
在这里插入图片描述

实验小结

PCA是一种使用最广泛的数据降维算法,主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。特征约减的目的是将高维特征向量映射到低维子空间中;无监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩去噪,因此应用很广泛。

优点:简单易实现;仅需要以方差衡量信息量,不受数据集以外的因素影响;各主成分之间正交,可消除原始数据成分间的相互影响的因素。

缺点:主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

  • 17
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值