降维技术内涵及使用代码
目录
背景
降维技术内涵理解
实例
描述
代码
运行结果
解释
背景
降维技术本身其实并不晦涩难懂,但是专家总喜欢讲一些平常人听不太懂的,极具专业性的词语把人搞蒙圈,其实个人觉得没必要,实际上,当你接触一个新技术或者新理念的时候,并不是要很完美的理解里面的所有细节,而是知道他的大概,精髓,并知道如何使用。从这点上来说,我还是喜欢用大白话来解释一个所谓的高大上技术。今天focus 在降维技术上,听这名字高大上,其实内涵比较简单,就是聚焦在降维上。我们看看怎么理解和使用他,我希望你看了我的这篇文章,不是能透彻完整的理解降维技术的所有内涵,你只需要知道他的核心逻辑在哪里,怎么使用,如果需要的时候,不要忘记还有这种技术可以帮你解决实际问题,那目的就达到了。
降维技术内涵理解
降维技术的内涵,本质就是降维,说白了,就是把一个高维度的数据线低维度转变,但是你不能乱转变,总还是需要尽量保证你的数据在高纬度上的绝大部分特征,不然就是乱转,没有任何实际意义。我们希望通过将高纬度数据通过在不同向量空间的投影,将数据本身最大的特点保留住,同时降低数据的复杂度。这就是降维的本质。那么选择怎样的向量空间投影后,才能尽可能报错数据特征最大程度不丢失呢?其实里面用到了数学衡量稳定度的的均值,方差,数据相关性的协方差以及矩阵计算。本身听上去比较晦涩,但是你不用理解所有,但我相信凭借你的认知,应该没有忘记所有我列出的一些概念,或许他们在你的脑海里还有残留,这就足够了。下面我局例子来说明。
实例
描述
4个人考试,语文,数学,英语,物理,成绩分别为:
data = np.array([[80, 70, 85, 72],[90, 85, 95, 90],[75, 65, 70, 65],[85, 75, 80, 86] ])
典型的一个 4*4矩阵,当然数据可以更多。我觉得数据太多了,我需要压缩下数据,形成一个 4*2的矩阵,说直白点,就是把每一个人的成绩从4变到2科。你获取觉得很神奇,还能这么处理吗?当让,你注意,当我把数据从 4*4 表换到 4*2之后,你不能说之前考的4科变成了现在的2科,你只能说以前你考的4科的一些数据特征会综合反映到 现在通过向量投影后的2上面。但是这里的2 已经不是考试科目,而是对这些数据走势,特征的一些分析,我慢慢说清楚。我们先看看代码额运行结果,我再进一步解释。
代码
data = np.array([[80, 70, 85, 72],[90, 85, 95, 90],[75, 65, 70, 65],[85, 75, 80, 86]
])# 指定要降到的维度数
n_components = 2# 创建PCA对象,设置降维后的维度数和启用白化处理
pca = PCA(n_components=n_components, whiten=True)# 对数据进行拟合和转换
reduced_data = pca.fit_transform(data)# 输出降维后的数据
print("降维后的数据(二维):")
print(reduced_data)# 输出主成分(特征向量),注意这里只有2个主成分,因为n_components=2
print("主成分(特征向量):")
print(pca.components_)# 如果需要,还可以输出每个主成分解释的方差比例
print("每个主成分解释的方差比例:")
print(pca.explained_variance_ratio_)
运行结果
降维后的数据(二维):
[[-0.28711911 -1.10259618][ 1.19851805 -0.36264186][-1.1856971 0.19442235][ 0.27429816 1.27081569]]
主成分(特征向量):
[[ 0.35482893 0.46508701 0.52251785 0.62029478][ 0.10734112 -0.00352563 -0.78856308 0.60550287]]
每个主成分解释的方差比例:
[0.9104593 0.08244142]
解释
是不是神奇?4*4 变成了 4*2matrix,但你要注意内涵,这个最终的 4 * 2 是在 两个特征向量上的投影,分别是 [ 0.35482893 0.46508701 0.52251785 0.62029478] 与 [ 0.10734112 -0.00352563 -0.78856308 0.60550287],并且这两个投影最终影响降维后的答案权重比例是91% 和 8%,所以我们有理由认为 [ 0.35482893 0.46508701 0.52251785 0.62029478] 方向上的投影是降维的关键方向向量,因为它的影响最终结果的权重达到了 91%。我们仔细看看这个权重, [ 0.35482893 0.46508701 0.52251785 0.62029478] 他表示 就语文,数学,英语,物理,成绩 这四门成绩而言,他们的影响度分别是 0.3,0.4,0.5,0.6, 也就是物理的影响度最大,换句话说,我们有理由相信,这四门成绩中,物理成绩的数据特征能够进一步左右整体数据的特征。实际上我们也看出来了,物理最高分 90,最低分 65,确实跨度是最大的。
从给出的降维后的数据来看:
[[-0.28711911 -1.10259618]
[ 1.19851805 -0.36264186]
[-1.1856971 0.19442235]
[ 0.27429816 1.27081569]]
我们重点关注第一分量上的投影,因为权重最高。我们发现 第一名 1.19851805 趋势是成绩最好的,对应着 [90, 85, 95, 90], 二三名分别是第四个与第一个,[85, 75, 80, 86], [80, 70, 85, 72] 你会发现他们确实很接近,伯仲之间,反映出的数据差值也很小0.2 与 -0.2。最后一名 -1.1856971 肯定是最差的,[75, 65, 70, 65]
这种分析方式可以说尽量保留了数据本身的特点,但是对于一些非线性或很难发现的特点肯定在高维想低维转换的过程中会丢失。
还是那句话,任何事物或者技术都具有两面性,就像程序效率总是在时间和空间上来回切换一样,数据维度下来了,我们能做的就是尽量保证数据特点,但这不能说所有的数据特点都被保留了。但是庆幸的是,我们再图像分析,视频分析,以及大型高维数据分析的过程中,降维产生的增益足以抵消一些非重要数据特征的丢失。
通过这篇文章,希望你能明白PCA降维的核心。注意下,降维的方式有很多种,但是万变不离其宗,思路都是一样的。PCA是一种比较成熟的降维技术实现。