首页 > 编程语言 >【机器学习】无监督学习算法之:主成分分析

【机器学习】无监督学习算法之:主成分分析

时间:2024-03-20 12:33:42浏览次数:18  
标签:屌丝 机器 特征向量 shape 学习 算法 小鱼 成分 PCA

主成分分析

1、引言

小屌丝:鱼哥, 快,快。
小鱼:… 啥情况, 你可别乱喊。
小屌丝:额… 我的意思,是你该继续
小鱼:… 说清楚, 继续啥???

小屌丝:就…就是… 继续啊
小鱼:我擦… 你说清楚,不然容易误会。
小屌丝:就是继续,无监督学习啊
小鱼:我…!!!
小屌丝:咋了,鱼哥,你想成啥了?
小鱼: 没…没…没想啥。
在这里插入图片描述

小屌丝: 你咋脸红了。
小鱼:不可能, 绝对不可能, 我从不脸红。
小屌丝:不承认就不承认吧。
小鱼:… 不解释,不掩饰,安安静静的看我的书了
小屌丝:别啊,把PCA讲完啊
小鱼: 然后呢?
小屌丝: 我就不打扰你看小人书
小鱼:…

2、主成分分析

2.1 定义

主成分分析(PCA)是一种通过正交变换将原始特征空间中的线性相关变量转换为少数几个线性无关的新变量的统计方法。

这些新变量称为主成分,它们按照方差从大到小的顺序排列,第一个主成分具有最大的方差,即包含最多的变异信息,后续的主成分则依次递减。

2.2 原理

PCA的原理基于以下两个基本思想:

  • 最大方差理论:在降维后的低维空间中,样本的投影应该尽可能分开,即投影后的方差最大。
  • 最近重构性:样本点到这个超平面的距离都足够近,即尽可能使原始数据点到这个超平面的垂直距离最短。

通过这两个原则,PCA能够在降维的同时尽可能地保留原始数据中的有用信息。

2.3 实现方式

PCA的实现主要包括以下步骤:

  • 数据标准化:对原始数据进行标准化处理,消除量纲和尺度的影响。
  • 计算协方差矩阵:计算标准化后数据的协方差矩阵,该矩阵反映了各变量之间的相关性。
  • 计算协方差矩阵的特征值和特征向量:对协方差矩阵进行特征分解,得到特征值和特征向量。
  • 选择主成分:根据特征值的大小选择前k个主成分,通常选择累积贡献率达到一定阈值的特征值对应的特征向量作为主成分。
  • 转换数据:将原始数据投影到选定的主成分上,得到降维后的新数据集。

2.4 算法公式

PCA的关键公式包括

  • 协方差矩阵公式: ( Σ = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( x i − x ˉ ) T ) ( \Sigma = \frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})(x_i - \bar{x})^T ) (Σ=n−11​∑i=1n​(xi​−xˉ)(xi​−xˉ)T)其中 ( x i ) ( x_i ) (xi​)是第i个样本, ( x ˉ ) ( \bar{x} ) (xˉ)是样本均值, n n n是样本数量。

  • 特征值和特征向量公式:通过解特征方程 ( ∣ Σ − λ I ∣ = 0 ) ( |\Sigma - \lambda I| = 0 ) (∣Σ−λI∣=0)得到特征值 ( λ ) ( \lambda ) (λ)和对应的特征向量 ( v ) ( v ) (v)

  • 主成分投影公式:对于第 j j j个主成分,其投影向量 ( p j ) ( p_j ) (pj​)是对应的特征向量 ( v j ) ( v_j ) (vj​),原始数据 ( x ) ( x ) (x)在该主成分上的投影为 ( z j = p j T x ) ( z_j = p_j^T x ) (zj​=pjT​x)。

2.5 代码示例

# -*- coding:utf-8 -*-
# @Time   : 2024-03-13
# @Author : Carl_DJ

'''
实现功能:
   scikit-learn库实现PCA
      
'''
import numpy as np  
from sklearn.decomposition import PCA  
from sklearn.preprocessing import StandardScaler  
  
# 假设我们有一个二维数据集  
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])  
  
# 数据标准化  
scaler = StandardScaler()  
X_scaled = scaler.fit_transform(X)  
  
# 创建PCA对象,设置主成分数量为1  
pca = PCA(n_components=1)  
  
# 拟合并转换数据  
X_pca = pca.fit_transform(X_scaled)  
  
# 输出降维后的数据  
print("Original shape:   ", X.shape)  
print("Transformed shape:", X_pca.shape)  
  
# 输出解释方差比,即每个主成分所占的方差比例  
print("Explained variance ratio:", pca.explained_variance_ratio_)


运行结果

Original shape:    (4, 2)  
Transformed shape: (4, 1)  
Explained variance ratio: [0.99999999]

在这里插入图片描述

3、总结

主成分分析(PCA)是一种强大的无监督学习算法,它通过正交变换将数据从原始的高维空间转换到低维空间,同时尽可能保留数据中的主要变异信息。

PCA在数据预处理、特征提取和降维等方面有着广泛的应用,能够简化数据的复杂性,提高机器学习算法的性能。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 企业认证金牌面试官
  • 多个名企认证&特邀讲师等
  • 名企签约职场面试培训、职场规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

关注小鱼,学习机器学习领域的知识。

标签:屌丝,机器,特征向量,shape,学习,算法,小鱼,成分,PCA
From: https://blog.csdn.net/wuyoudeyuer/article/details/135896708

相关文章

  • HTML学习(3)(HTML字符格式)
    常见的字符格式有字体颜色,字体大小,加粗,倾斜等。字符格式化标签标签功能标签功能<b>定义粗体文本<sub>定义下标字<em>定义着重文本<sup>定义上标字<i>定义斜体字<ins>定义插入字<small>定义小号字<del>定义删除字<strong>定义加重语气<u>下画线计算机输出标签标签功能<code>定义计......
  • [Java基础学习][集合]java常见集合:Java中集合框架提供了大量的集合类:常见的list、set
    总结与区别:Set:去重;      set去重本质:equals+hashcode;    常见的HashSet、TreeSet。    HashSet基于哈希表实现,插入、删除、查找。不保证顺序    TreeSet基于红黑树实现,保证顺序,查找较快;treeSet:排序继承comparable接口进行比较排序   Se......
  • CAD学习日志-003
    *******************************************************/ 保存默认自动保存间隔是10分钟(可改),自动创建备份副本。一般保存为2007的一个版本。向上兼容,便于交流。*******************************************************/ 加密20版本以上,可以保存为一个压缩包,然后对......
  • 在离线机器上安装并运行Milvus镜像
     机器:Ubuntu等Linux类系统,提前安装好docker、docker-compose——我的另一篇博客目标:Milvus的standalone-v2.3.0-beta版本——官方教程 以下为非GPU版。GPU版的需要准备好nvidia-docker环境,配置文件也不同 在可联网的机器中:1.获取Milvus镜像的配置文件并保存为docker-co......
  • bloom 算法
    该文章翻译自(https://www.enjoyalgorithms.com/blog/bloom-filter/)[https://www.enjoyalgorithms.com/blog/bloom-filter/]Bloom过滤器是一种空间效率高的概率数据结构,它能告诉我们某个元素可能在某个集合中,或者肯定不在某个集合中。如果我们在Bloom过滤器中查找一个项,可以......
  • wasm 学习笔记,写个求和demo
    最近由于工作内容需要,正好学习了一下wasm(WebAssembly的缩写)。下面通过一个例子说明如何使用:c++写的方法打包成wasm文件后,js如何调用里面方法:要将C++写好的方法打包成wasm文件,并在JavaScript中调用其中的方法,可以按照以下步骤进行:首先,使用Emscripten工具链将C++代......
  • 2024年是否是人形机器人的元年 —— 继OpenAI/Google/特斯拉之后黄仁勋也宣布NVIDIA公
    相关:https://www.youtube.com/watch?v=bMIRhOXAjYk......
  • 机器学习结合运筹学,有钱途~
    学习笔记6—报童模型(最详细最全总结含公式推导和应用举例)在这篇文章中我们介绍了标准的报童模型,在标准模型中需求分布是已知的,然而在现实世界中,需求往往是不确定的,不容易得知需求的分布。这样的问题也被称为不确定优化问题,常采用随机规划、鲁棒优化、分布式鲁棒优化、模糊规划......
  • 学习大学计算机知识有用?“有用但不多”
    大学学习的计算机知识有用但真不多:1.知识更新迅速:计算机科学和技术是一个发展非常迅速的领域,新的技术和工具不断涌现。大学课程往往更侧重于基础理论和经典技术,而工作中可能需要使用最新的技术和工具,因此需要不断学习和更新知识。2.实践机会有限:大学课程通常注重理论知识的......
  • 算法训练营day1
    1.二分查找给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1https://leetcode.cn/problems/binary-search/description/classSolution{public:intsearch(vector<int>&......