机器学习之PCA降维(Day7)

1. 数据降维案例

案例一

案例1:通过美国1929-1938年各年经济数据,预测国民收入与支出。
数据包括:雇主补贴、消费资料和生产资料、纯公共支出、净增库存、股息、利息、外贸平衡等十七个指标。
显然,建立这17项指标模型,这在当时是非常困难的。因此统计学家斯通利用主成分分析方法降维,解决了该问题。具体如图:
在这里插入图片描述

案例二

对50项经济指标进行降维。
在这里插入图片描述
得到F1、F2俩个复合指标
在这里插入图片描述
复合指标可视化:
在这里插入图片描述
最终通过这两项指标代替先前的50项指标,大大降低了难度,同时精确度还很高。
通过以上两个案例,我们发现对于某些多因子数据,降维是必然要求,最终还能可视化。

2. 数据降维的实现

(1)概念介绍

数据降维,是指在某些限定条件下,降低随机变量个数,得到一组“不想关”主变量的过程。
作用:

  • 较少模型分析数据量,提升处理效率,降低计算难度
  • 实现数据可视化

举个简单例子:
2D数据降维到1D数据(求每个点到直线的最短距离之和最小)
在这里插入图片描述
3D数据降维到2D数据(点到平面的距离之和最小)
在这里插入图片描述

(2)主成分分析

PCA(principal components analysisi):数据降维技术中,应用最多的方法。
目标:寻找k(k<n)维新数据,使他们反映事物的主要特征。
核心:在信息损失尽可能少的情况下,降低数据维度。
举例:
在这里插入图片描述
3D到2D:投影到u1、u2形成的平面。
所以从n维到k维:投影到u1、u2…uk形成的空间
由于PCA的模型较为复杂,这里就不在给出了

具体如何实现目标,保留主要特征k呢?
转化为使投影后的不同特征的数据尽可能分得开(即不相关)。也就是使投影后的数据的方差最大,因为方差越大数据越分散。

计算过程:

  • 原始数据预处理(标准化)
  • 计算协方差矩阵特征向量,及数据在各特征向量投影后的方差
  • 根据需求(任务指定或方差比例)确定降维维度k
  • 选取k维特征向量,计算数据在其形成空间的投影

(3)代码实现

标准化处理

#降维之前,首先要进行标准化处理
from sklearn.preprocessing import StandardScaler
X_norm = StandardScaler().fit_transform(X)
print(X_norm)

PCA降维

#模型训练获得PCA降维后数据
from sklearn.decomposition import PCA
pca = PCA(n_components=4)
X_pca = pca.fit_transform(X_norm)
#计算各成分投影数据方差比例
var_ratio = pca.explained_variance_ratio_
print(var_ratio)

可视化方差比例

#可视化方差比例
fig = plt.figure(figsize=(10,5))
plt.bar([1,2,3,4],var_ratio)
plt.xticks([1,2,3,4],["PCA1","PCA2","PCA3","PCA4"])
plt.show()

在这里插入图片描述
此时就可以选择PCA1、PCA2两个方差比例较大的维度,丢弃PCA3、PCA4。数据从2D降到了4D。

注意:给出的代码是依据某个实例的,不具有普遍性。
读者可参考下一节针对PCA降维示例的文章。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值