1. 概念:数据降维的数学方法
定义
- 主成分分析(PCA)是一种统计方法,通过正交变换将一组可能相关的变量转换为一组线性不相关的变量,这组新的变量称为主成分。
- 大白话,PCA能够从数据中提取出最重要的特征,通过减少变量的数量来简化模型,同时保留原始数据集中的大部分信息。
特点
- PCA是最广泛使用的数据降维技术之一,能够有效地揭示数据的内部结构,减少分析问题的复杂度。
应用领域
- 图像处理:图像压缩和特征提取。
- 金融数据分析:风险管理、股票市场分析。
- 生物信息学:基因数据分析、疾病预测。
- 社会科学研究:问卷数据分析、人口研究。
2 核心原理:方差最大化
- 方差最大化:
- PCA通过找到数据方差最大的方向来确定主成分,然后找到次大方向,且这些方向必须是相互正交的。
- 这样做的目的是保证降维后的数据能够保留最多的原始数据信息。
- 计算步骤:
- 数据标准化:使得每个特征的平均值为0,方差为1。
- 计算协方差矩阵:反映变量之间的相关性。
- 计算协方差矩阵的特征值和特征向量:特征向量决定了PCA的方向,特征值决定了方向的重要性。
- 选择主成分:根据特征值的大小,选择最重要的几个特征向量,构成新的特征空间。
3 优缺点分析
- 优点:
- 降维效果显著:能够有效地减少数据的维度,同时尽可能地保留原始数据的信息。
- 揭示数据结构:有助于发现数据中的模式和结构,便于进一步分析。
- 无需标签数据:PCA是一种无监督学习算法,不需要数据标签。
- 缺点:
- 线性限制:PCA只能捕捉到数据的线性关系和结构,对于非线性结构无能为力。
- 方差并非信息量的唯一衡量:有时候数据的重要性并不仅仅体现在方差上,PCA可能会忽略掉一些重要信息。
- 对异常值敏感:异常值可能会对PCA的结果产生较大影响。
4 PCA 实战
介绍一个用于主成分分析的 Python 库
PCA的核心是构建在sklearn功能之上,以便在与其他包结合时实现最大的兼容性。
除了常规的PCA外,它还可以执行SparsePCA和TruncatedSVD。
其他功能包括:
- 使用Biplot绘制载荷图
- 确定解释的方差
- 提取性能最佳的特征
- 使用载荷绘制的散点图
- 使用Hotelling T2和/或SPE/Dmodx进行异常值检测
pip install pca
from pca import pca # 导入PCA模块
import numpy as np
import pandas as pd
# Dataset
from sklearn.datasets import load_iris # 导入鸢尾花数据集
# 从鸢尾花数据集中创建DataFrame对象
X = pd.DataFrame(data=load_iris().data, columns=load_iris().feature_names, index=load_iris().target)
# 初始化PCA模型,指定主成分数量为3,并进行数据标准化
model = pca(n_components=3, normalize=True)
# 拟合并转换数据
out = model.fit_transform(X)
# 创建只包含方向的图
fig, ax = model.biplot(textlabel=True, legend=False, figsize=(10, 6))
下面我们使用 sklearn 里面的 PCA 工具,在一组人脸数据上直观感受下,
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_olivetti_faces
from sklearn.decomposition import PCA
# 加载Olivetti人脸数据集
faces_data = fetch_olivetti_faces()
X = faces_data.data
# 可视化原始图像和对应的主成分
n_images = 4 # 每行显示的图像数量
n_rows = 4 # 总共的行数
fig, axes = plt.subplots(n_rows, 2*n_images, figsize=(16, 10), subplot_kw={'xticks':[], 'yticks':[]})
# 使用PCA降维
n_components = 50 # 设置PCA保留的主成分数量
pca = PCA(n_components=n_components, whiten=True, random_state=42)
X_pca = pca.fit_transform(X)
for r in range(n_rows):
for i in range(n_images):
index = r * n_images + i
axes[r, 2*i].imshow(X[index].reshape(64, 64), cmap='gray')
axes[r, 2*i].set_title(f'大侠 {index+1} 图像', fontproperties='SimHei') # 手动设置字体
axes[r, 2*i+1].imshow(pca.inverse_transform(X_pca[index]).reshape(64, 64), cmap='bone')
axes[r, 2*i+1].set_title(f'大侠 {index+1} 主成分', fontproperties='SimHei') # 手动设置字体
plt.tight_layout()
plt.show()
我们保留了前 50 个主成分
通过可视化对比图直观感受下,信息保留了多多少,损失了多少
通过对比图可以看到,某一张人脸的基本信息都保留了下来
如果保留 前 100 个主成分,那就更接近原始图片了
你也可以试下,保留 1 个主成分会怎样?通过保留的信息你还认得出来哪过大侠是哪过吗
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓