PCA 简介
PCA -- 主成分分析,是一种数据线性降维算法。广泛应用于数据降维领域,与核函数结合可以适用于非线性降维。
算法原理
在数据集中,找出一个方差最大的超平面,并将数据集映射到该超平面上,实现降维。
方差最大化是为了最大限度保留原始数据的分类特征。
算法步骤
- 计算数据集的均值和标准差: X = Σx/n,S = sqrt((Σ(x-X)2)/n)
- 将数据集减去均值后除以标准差(中心化处理 & 标准化处理): x -= X, z = x/S
- 计算数据集协方差矩阵: C = cov(z)
- 计算矩阵 C 的特征值 U 和特征向量 V: U, V = eig(C)
- 对 V 进行排序,按照其对应的 U 的大小从大到小排序
- 取出 V 中前 m 个向量组成一个矩阵 D, 转置得 T, T 即为最终降维模型
横向联邦学习 简介
联邦学习旨在保证在进行机器学习/深度学习训练中,数据不离本地,实现多数据源的模型训练。
横向联邦学习则是在各个数据源的数据特征相同,而数据集不同的情况下,实现联邦学习训练。
横向联邦 PCA 简单实现
假设参与训练的数据源有 t 个,聚合方由一个计算节点组成。
算法步骤
- 各个数据源在本地计算数据集的均值: Xi = Σx/n
- 各数据源将自己的均值 Xi 发送给聚合方,计算平均均值(可根据实际调整聚合方式): X = Σ(Xi)/t
- 将聚合结果 X 发送给各数据源
- 各数据源将数据集减去平均均值 X 后进行标准化处理(中心化处理 & 标准化处理): x -= X, z = x/S
- 计算数据集协方差矩阵: Ci = cov(z)
- 各数据源将自己的协方差矩阵 Ci 发送给聚合方,计算平均协方差矩阵(可根据实际调整聚合方式): C = Σ(Ci)/t
- 将聚合结果 C 发送给各数据源
- 各数据源计算矩阵 C 的特征值 U 和特征向量 V: U, V = eig(C)
- 对 V 进行排序,按照其对应的 U 的大小从大到小排序
- 取出 V 中前 m 个向量组成一个矩阵 D, 转置得 T, T 即为最终降维模型