《精通特征工程》学习笔记(5):数据(特征)降维

news2024/11/29 20:33:02

1.数据降维

通过自动数据收集和特征生成技术,可以快速获取大量特征,但不是所有特征都是有用的。数据降维就是在保留重要信息的同时消除那些“无信息量的信息”。

“无信息量”有多种定义方法,PCA 关注的是线性相关性,假设我们将数据矩阵的列空间描述为所有特征向量的生成空间。如果列空间的秩小于特征总数,那么多数特征就是几个关键特征的线性组合。线性相关的特征是对空间和计算能力的浪费,因为它们包含的信息可以从更少的几个特征中推导出来。为了避免这种情况,PCA 试图将数据挤压到一个维度大大小于原空间的线性子空间,从而消除这些“臃肿”。

PCA 的核心思想是,使用一些新特征代替冗余特征,这些新特征能恰当地总结初始特征空
间中包含的信息。当只有两个特征时,很容易找出新特征,但当初始特征空间中有成百上
千个维度时,就非常困难了。我们需要一种方法,先用数学语言描述要找出的新特征,然
后使用最优化技术来找出它们。

在这里插入图片描述

对“恰当地总结信息”的一种数学定义是,新的数据点团应该尽量多地保持原数据集中的
信息。我们将数据点团挤压成了一个扁平的饼,但我们希望这个饼在正确的方向上尽可能
地大。这意味着我们需要一种测量信息量的方式。信息量肯定与距离有关,但数据集合中的距离表示总是有点模糊。有人使用集合中任意两点之间距离的最大值,但事实证明这种函数很难进行数学优化。另一种方式是使用两点之间距离的平均值,或另一种等价形式——每个数据点与均值之间的平均距离,也就是方差;事实证明这种方式更容易进行优化。(生活本已艰难,幸好统计学家已经找到了捷径。)采用数学方式,这个问题就变成了使新特征空间中数据点的方差最大化。

2.PAC思想

PCA 关注的是线性相关性。将数据矩阵的列空间描述为所有特征向量的生成空间,如果列空间的秩小于特征总数,那么多数特征就是几个关键特征的线性组合。线性相关的特征是对空间和计算能力的浪费,因为它们包含的信息可以从更少的几个特征中推导出来。为了避免这种情况,PCA 试图将数据挤压到一个维度大大小于原空间的线性子空间,从而消除这些“臃肿”。

  • PCA 的核心思想是,使用一些新特征代替冗余特征,这些新特征能恰当地总结初始特征空间中包含的信息。

在使用 PCA 进行数据降维时,必须确定要使用的主成分的数目(k)。和所有超参数一样,这个数目可以根据最终模型的质量来进行优化,但也有一些不需要昂贵计算成本的启发式方法。

  • 选择 k 的一种可行方法是要求主成分能解释一定比例的总方差。

3.PCA降维实现

from sklearn import datasets
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
%matplotlib notebook
digits_data = datasets.load_digits()
n = len(digits_data.images)
print(n)
# 每个图像都表示为一个8×8的数组。将这个数组作为PCA的输入。
image_data = digits_data.images.reshape((n, -1))
print(image_data.shape)

# 真实值标签
labels = digits_data.target
labels
# 为这个数据集拟合一个PCA转换器
# 自动选择主成分的数目,使主成分能解释至少80%原来的方差\
pca_transformer = PCA(n_components=0.8)
pca_images = pca_transformer.fit_transform(image_data)
pca_transformer.explained_variance_ratio_
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for i in range(100):
    ax.scatter(pca_images[i,0], pca_images[i,1], pca_images[i,2], marker=r'${}$'.format(labels[i]), s=64)
    
ax.set_xlabel('Principal component 1')
ax.set_ylabel('Principal component 2')
ax.set_zlabel('Principal component 3')
# 因为数字之间还有相当数量的重叠,所以在投影空间中使用线性分类器将数字区分开来还是很困难的。只使用前 3 个主成分作为特征是不够的。
# 所以这里仅仅是演示PCA的降维而已。

在这里插入图片描述

4.白化与ZCA

由于目标函数的正交限制,PCA 转换有一个非常好的副作用:转换后的特征都是不相关的。换句话说,每对特征向量之间的内积都是 0。

白化:一组特征,彼此之间的相关度为 0,与自身的相关度为 1。数学上,将PCA 转换乘以奇异值的倒数,就可以实现白化;

ZCA:是一种与 PCA 联系非常紧密的白化转换,但它不会减少特征的数量。ZCA 白化使用未削减的整个主成分集合,还要再乘上一个 V 的T次方 。白化与数据降维是彼此独立的,可以分别进行。
在这里插入图片描述
简单的 PCA 投影可以在新特征空间中以主成分为基生成坐标。这些坐标只表示投影向量的长度,不表示方向。乘以主成分之后,才能得到长度和方向。另一个合理解释是,这次相乘可以将坐标旋转回初始特征空间。(V 是一个正交矩阵,正交矩阵可以对输入进行没有拉伸和压缩的旋转。)所以,ZCA 生成的白化数据与初始数据是最接近的(用欧氏距离衡量)。

5.PCA的局限性与注意事项

在使用 PCA 进行数据降维时,必须确定要使用的主成分的数目(k)。和所有超参数一样,这
个数目可以根据最终模型的质量来进行优化,但也有一些不需要昂贵计算成本的启发式方法。

5.1谱分析确定降维个数K

选择 k 的一种可行方法是要求主成分能解释一定比例的总方差。(scikit-learn 的 PCA 包中有
这个选项。)在 k 个主成分上的投影的方差为:
在这里插入图片描述

这个方差就是 X 第 k 大奇异值的平方。奇异值的排序列表称为矩阵的谱(spectrum)。因
此,要确定使用多少主成分,可以对数据矩阵做一个简单的谱分析,并选定能解释足够方
差的阈值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/619979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正态(高斯)分布什么时候等于杨辉三角(二项式)展开

(ab)^10的杨辉三角展开项系数是1,10,45,120,200,252,200,120,45,10,1 这些系数11项的和等于1004,每项除以1004&#xff0c…

数据结构与算法之美 | 递归(Recursion)

什么叫做递归? 递归:去的过程叫“递”,回来的过程叫“归” 递归的三个条件 条件一:一个问题的解可以分解为几个子问题的解 条件二:这个问题与分解之后的子问题,除了数据规模不同,求解思路完全…

CnOpenData全国养老机构数据

一、数据简介 养老机构指为老年人提供集中居住和照料服务的机构,县级以上地方人民政府民政部门负责本行政区域内养老机构的指导、监督和管理。其他有关部门依照职责分工对养老机构实施监督。 与其他服务不同的是,养老服务是一种全人、全员、全程服务,养老…

路径之谜 2016年国赛 深度优先搜索

目录 解题思路 AC代码: 题目描述 小明冒充 XX 星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 nn 个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向…

智能 CAN 总线/串口 RS-232485 协议转换器

能CAN/串口协议转换器LCNET Pro RS-232/485提供一路RS-485、一路RS-232和一路CAN通道,实现CAN与串口RS-485或RS-232之间的双向数据智能转换。每个通道独立隔离,每路通道采用金升阳电源模块和信号隔离芯片实现2500VDC电气隔离,电源输入防反设计…

NAT模式 LVS负载均衡群集部署

NAT模式 LVS负载均衡群集部署 一.部署共享存储(NFS服务器:192.168.80.102)1.关闭防火墙,查看是否有rpcbind和nfs-utils的包2.创建两个共享文件目录3.将共享路径及网段添加到/etc/exports中(设置为只可读)4.…

VulnHub项目:MONEYHEIST: CATCH US IF YOU CAN

靶机名称: MONEYHEIST: CATCH US IF YOU CAN 地址:MoneyHeist: Catch Us If You Can ~ VulnHub 这个系列是一部剧改编,还是挺好看的,大家有兴趣可以去看看! 废话不多说,直接上图开始! 渗透…

(单调栈) 496. 下一个更大元素 I——【Leetcode每日一题】

❓496. 下一个更大元素 I 难度:简单 nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 ,下标从 0 开始计数,其中 nums1 是 nums2 的子集。 对…

直播美颜技术:视频美颜sdk的快速集成与开发实践

视频美颜sdk则是直播美颜技术的重要组成部分,它可以帮助开发者快速集成美颜功能,实现直播美颜。目前已经被广大平台、主播、平台用户所应用,在近几年甚至成了一个极其热门的讨论话题,毕竟它与人们的日常拍摄生活息息相关。 一、视…

重磅:百亿人工心脏赛道再添新玩家,行业未来趋势明显

市场火热,资本加持 昨日,深圳核心医疗科技股份有限公司自主研发的Corheart 6植入式左心室辅助系统获得国家药品监督管理局批准上市。这是一枚完全国产,拥有完备自主知识产权的人工心脏。该产品正式获批上市,加之之前获批的永仁心…

C++ 参数的三种传递方式和应用参加

C 参数的三种传递方式分别是值传递、指针传递和引用传递。 值传递 值传递的实质 将实参的值(a、b)复制到形参(m、n)相应的存储单元中,即形参和实参分别占用不同的存储单元。 值传递的特点 值传递的特点是单向传递,即主调函数…

「C/C++」C/C++ 回调函数

✨博客主页:何曾参静谧的博客 📌文章专栏:「C/C」C/C程序设计 相关术语 回调函数:是一种常用的编程技术,它可以将一个函数作为参数传递给另一个函数,并在后者执行过程中调用前者。回调函数通常用来处理异步…

python怎么搭建免费代理IP池,免费代理IP适合爬虫工作吗

Python可以使用一些第三方库和工具来搭建免费代理IP池。简单来说,搭建代理IP池的步骤如下: 1. 获取代理IP:从一些免费或付费代理IP网站上爬取并验证IP地址和端口信息。 2. 验证代理IP:使用代理IP访问一些网站或服务,验…

什么是IT服务请求管理

什么是服务请求 用户每天都会提出各种 IT 请求。它可能是对新软件的请求、旧硬件的更换、对应用程序的访问或资产组件的更改。这些请求被归类为服务请求。 服务请求是向 IT 团队发出的请求,以满足最终用户的需求。理想情况下,请求是从服务请求目录中选择…

优维低代码实践:编排优化Plus

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

管理项目-加载菜单

人事管理项目-加载菜单 引入ElementUI菜单1.菜单模板 引入ElementUI 数据成功访问后,引入ElementUI组件对数据进行渲染,首先引入其依赖: npm install element-ui -S 依赖添加成功后,接着在main.js中引入ElementUI&a…

G2上看看Notes/Domino

大家好,才是真的好。 Engageug2023正在如火如荼进行,今年的主题是“The Future is Now”。 开场就发布了很多Notes/Domino以及相关产品的全新路线图,例如今年第四季度发布的新的Domino 14会直接集成Verse邮箱支持、Nomad Web功能&#xff0…

MySQL学习-数据库创建-数据库增删改查语句-事务-索引

MySQL学习 前言 SQL是结构化查询语言的缩写,用于管理关系数据库(RDBMS)中的数据。SQL语言由IBM公司的Donald Chamberlin和Raymond Boyce于20世纪70年代开发而来,是关系型数据库最常用的管理语言。 使用SQL语言可以实现关系型数据库中的数据处理、数据…

MySQL模糊查询再也不用like+%了

前言 倒排索引 全文检索 创建全文索引 使用全文索引 删除全文索引 小结 前言 我们都知道 InnoDB 在模糊查询数据时使用 "%xx" 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基…

记录一个Invalid bound statement (not found)问题

SpringBootMyBatisPlus项目&#xff0c;非常简单&#xff0c;没有任何业务逻辑&#xff1a; 1. pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.…