【sklearn驯化-降维】一文搞懂机器学习中的降维技术PCA、LDA用法

【sklearn驯化-降维】一文搞懂机器学习中的降维技术PCA、LDA用法
 
本次修炼方法请往下查看
在这里插入图片描述

🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地!
🎇 免费获取相关内容文档关注:微信公众号,发送 pandas 即可获取
🎇 相关内容视频讲解 B站

🎓 博主简介:AI算法驯化师,混迹多个大厂搜索、推荐、广告、数据分析、数据挖掘岗位 个人申请专利40+,熟练掌握机器、深度学习等各类应用算法原理和项目实战经验

🔧 技术专长: 在机器学习、搜索、广告、推荐、CV、NLP、多模态、数据分析等算法相关领域有丰富的项目实战经验。已累计为求职、科研、学习等需求提供近千次有偿|无偿定制化服务,助力多位小伙伴在学习、求职、工作上少走弯路、提高效率,近一年好评率100%

📝 博客风采: 积极分享关于机器学习、深度学习、数据分析、NLP、PyTorch、Python、Linux、工作、项目总结相关的实用内容。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


下滑查看解决方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

  

🎯 1. 基本介绍

  在机器学习领域,降维是一种常用的技术,用于减少数据集中的特征数量,从而简化模型、提高计算效率,并有助于避免过拟合。两种常见的降维技术是主成分分析(PCA)和线性判别分析(LDA)。

  • PCA:是一种无监督学习方法,通过正交变换将数据转换到新的坐标系,使得数据的任何投影的方差最大化。
  • LDA:是一种监督学习方法,不仅考虑了数据的方差,还考虑了数据的类别信息,以实现类别之间的最佳分离。

  降维就是提取数据中比较重要的,对于降维的思想以结果的好坏可以有两种解释,第一种解释是样本点到这个直线的距离足够近,第二种解释是样本点在这个直线上的投影能尽可能的分开。
  对于距离来说就是点到降维平面的距离尽可能的小则效果比较好,而对于投影尽可能的分开就是投影后方差尽可能的大

💡 2. 使用方法

2.1 pca降维知识总结

  • pca仅仅需要以方差衡量信息量,不受数据集以外的因素影响
  • pca各主成分之间正交,可消除原始数据成分间的相互影响的因素
  • pca计算方法简单,主要运算是特征值分解,易于实现。
  • pca主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
  • pca方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响
  • 在PCA算法中,我们假设存在一个线性的超平面,可以让我们对数据进行投影。但是有些时候,数据不是线性的,不能直接进行PCA降维。这里就需要用到和支持向量机一样的核函数的思想,先把数据集从n维映射到线性可分的高维在进行pca算法,这个就叫做KPCA算法
  • 下面我们看看具体的算法流程。
  • 输入:n维样本集 D = ( x ( 1 ) , x ( 2 ) , . . . , x ( m ) ) D=(x^{(1)},x^{(2)},...,x^{(m)}) D=(x(1),x(2),...,x(m)),要降维到的维数n’.
  • 输出:降维后的样本集D′
  • 对所有的样本进行中心化: x ( i ) = x ( i ) − 1 m ∑ j = 1 m x ( j ) x^{(i)}=x^{(i)}−\frac{1}{m}\sum_{j=1}^{m}x^{(j)} x(i)=x(i)m1j=1mx(j)
  • 计算样本的协方差矩阵XXT
  • 对矩阵XXT进行特征值分解
  • 取出最大的n’个特征值对应的特征向量 ( w 1 , w 2 , . . . , w n ′ ) (w_1,w_2,...,w_{n′}) (w1,w2,...,wn), 将所有的特征向量标准化后,组成特征向量矩阵W。
  • 对样本集中的每一个样本 x ( i ) x^{(i)} x(i),转化为新的样本 z ( i ) = W T x ( i ) z^{(i)}=W^Tx^{(i)} z(i)=WTx(i)
  • 得到输出样本集 D ′ = ( z ( 1 ) , z ( 2 ) , . . . , z ( m ) ) D^{'}=(z^{(1)},z^{(2)},...,z^{(m)}) D=(z(1),z(2),...,z(m))
  • 有时候,我们不指定降维后的n’的值,而是换种方式,指定一个降维到的主成分比重阈值t。这个阈值t在(0,1]之间。假如我们的n个特征值为 λ 1 ≥ λ 2 ≥ . . . ≥ λ n λ_1≥λ_2≥...≥λ_n λ1λ2...λn,则n’可以通过下式得到:
    ∑ i = 1 n ′ λ i ∑ i = 1 n λ i ⩾ t \frac{\sum_{i=1}^{n'}\lambda_i}{\sum_{i=1}^{n}\lambda_i} \geqslant t i=1nλii=1nλit

  相关的代码实践如下所示:

import numpy as np
from sklearn.decomposition import PCA
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
from sklearn.datasets import make_classification

# 创建一个具有类别标签的二维数据集
X, y = make_classification(n_features=2, n_redundant=0, n_informative=2,
                           n_clusters_per_class=1, n_classes=3, random_state=42)

# 初始化 PCA 对象并拟合数据
pca = PCA(n_components=1)
X_pca = pca.fit_transform(X)

print("PCA 降维后的数据:\n", X_pca)

PCA 降维后的数据:
 [[-1.57061628]
 [-1.57061628]
 ...
 [ 1.57061628]]

2.2 LDA知识总结使用

   LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的,这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”,如下图所示。 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
   相关理论知识推导:

  • 输入:数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( ( x m , y m ) ) D={(x_1,y_1),(x_2,y_2),...,((x_m,y_m))} D=(x1,y1),(x2,y2),...,((xm,ym)),其中任意样本 x i x_i xi为n维向量, y i ∈ C 1 , C 2 , . . . , C k y_i\in{C_1,C_2,...,C_k} yiC1,C2,...,Ck,降维到的维度d。
  • 输出:降维后的样本集 D ′ D′ D
  • 计算类内散度矩阵 S w S_w Sw
  • 计算类间散度矩阵 S b S_b Sb
  • 计算矩阵 S w − 1 S b S^{−1}_wS_b Sw1Sb, 其实这一步就是通过广义熵原理推导过来的
  • 计算 S w − 1 S b S^{−1}_wS_b Sw1Sb的最大的d个特征值和对应的d个特征向量 ( w 1 , w 2 , . . . w d ) (w_1,w_2,...w_d) (w1,w2,...wd),得到投影矩阵WW
  • 对样本集中的每一个样本特征 x i x_i xi,转化为新的样本 z i = W T x i z_i=W^Tx_i zi=WTxi
  • 得到输出样本集 D ′ = ( z 1 , y 1 ) , ( z 2 , y 2 ) , . . . , ( ( z m , y m ) ) D′={(z_1,y_1),(z_2,y_2),...,((z_m,y_m))} D=(z1,y1),(z2,y2),...,((zm,ym))
# 初始化 LDA 对象并拟合数据
lda = LDA(n_components=1)
X_lda = lda.fit_transform(X, y)

print("LDA 降维后的数据:\n", X_lda)

LDA 降维后的数据:
 [[ 0.40808208]
 [-0.40808208]
 ...
 [-0.40808208]]

🔍 3. LDA和PCA之间的区别

  • LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
  • 两者均可以对数据进行降维。
  • 两者在降维时均使用了矩阵特征分解的思想。
  • 两者都假设数据符合高斯分布。
  • LDA是有监督的降维方法,而PCA是无监督的降维方法
  • LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
  • LDA除了可以用于降维,还可以用于分类。
  • LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
      

🔍 4. 注意事项

  二中降维技术在机器学习的处理中都是使用特别广泛的,但是在使用的过程中需要注意一些细节,具体如下所示:

  • PCA 是一种无监督方法,不考虑标签信息,适合于探索性数据分析和去噪。
  • LDA 是一种监督方法,适合于分类问题,特别是当类别是线性可分的。
  • 降维后的解释性可能会降低,特别是当使用 PCA 时,因为主成分通常不对应于原始数据的实际特征。
  • 在选择降维技术时,应考虑数据的特性和分析的目标。

🔧 5. 总结

  本文介绍了两种常用的降维技术:PCA 和 LDA。通过实际的代码示例和输出结果,我们可以看到它们如何应用于数据集。PCA 通过最大化方差进行降维,而 LDA 同时考虑了方差和类别信息。降维技术不仅可以减少数据的复杂性,还可以提高机器学习模型的性能。希望这篇博客能够帮助你更好地理解并应用这些降维技术。。

  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只红花猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值