赞
踩
高维数据降维是指采用某种映射方法,降低随机变量的数量,例如将数据点从高维空间映射到低维空间中,从而实现维度减少。
降维分为:特征选择 和 特征提取
特征选择:是从含有冗余信息以及噪声信息的数据中找出主要变量;
特征提取:是去掉原来的数据,生成新的变量,可以寻找数据内部的本质结构特征。
降维的过程是通过对输入的原始数据特征进行学习,得到一个映射函数,实现将输入样本映射后到低维空间中之后,原始数据特征并没有明显的损失,通常情况下新空间的维度要小于原空间的维度。目前大部分降维算法是处理向量形式的数据。
主成分分析 PCA 是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的方差最大,以此使用较少的维度,同时保留较多原数据的维度。
主成分分析的降维是指经过正交变换后,形成新的特征集合,然后从中选择比较重要的一部分子特征集合,从而实现降维。这种方式并非是在原始特征中选择,所以 PCA 这种线性降维方式最大程度上保留了原有的样本特征。
设有 m 条 n 维的数据, PCA 一般步骤为:
(1) 将原始数据按列组成 n 行 m 列矩阵 X;
(2) 计算矩阵 X 中每个特征属性 (n 维) 的平均向量 M (平均值);
(3) 将 X 的每一行(代表一个属性字段)进行零均值化,即减去 M ;
(4) 按照公式 C = 1 m X X T C = \frac{1}{m} XX^T C=m1XXT 求出协方差矩阵;
(5) 求出协方差矩阵的特征值及对应的特征向量;
(6) 将特征向量按照对应特征值从大到小按行排列成矩阵,取前 k(k<n) 行组成基向量 P;
(7) 通过 Y = P X Y = PX Y=PX 计算降维到 k 维后的样本特征。
# 例:基于sklearn和numpy随机生成2个类别共40个三维空间的样本点 import numpy as np import matplotlib.pyplot as plt # multivariate_normal 生成多元正态分布需要参数:期望和方差 # 第一个类别 mu_vec1 = np.array([0,0,0]) # 样本均值 cov_mat1 = np.array([[1,0,0],[0,1,0],[0,0,1]]) # 协方差矩阵 class1_sample = np.random.multivariate_normal(mu_vec1, cov_mat1, 20).T # 第二个类别 mu_vec2 = np.array([1,1,1]) cov_mat2 = np.array([[1,0,0],[0,1,0],[0,0,1]]) class2_sample = np.random.multivariate_normal(mu_vec2, cov_mat2, 20).T ax = plt.subplot(projection = '3d') ax.scatter(class1_sample[0],class1_sample[1],class1_sample[2],c = 'b') ax.scatter(class2_sample[0],class2_sample[1],class2_sample[2],c = 'r')
现在用 PAC 降维到二维空间
# 计算平均向量 all_samples = np.concatenate((class1_sample, class2_sample), axis=1) mean_x = np.mean(all_samples[0,:]) mean_y = np.mean(all_samples[1,:]) mean_z = np.mean(all_samples[2,:]) print(mean_x,mean_y,mean_z) mean_vector = np.array([mean_x,mean_y,mean_z]) print(mean_vector) scatter_matrix = np.zeros((3,3)) for i in range(all_samples.shape[1]): scatter_matrix += (all_samples[:,i].reshape(3,1) - mean_vector).dot((all_samples[:,i].reshape(3,1) - mean_vector).T) # 散布矩阵 S 和协方差矩阵是不一样的,但是都是 PCA 里可用于求解特征向量和特征值 print(scatter_matrix) # 计算特征值 和 特征向量 eig_val_sc,eig_vec_sc = np.linalg.eig(scatter_matrix) print(eig_val_sc) print(eig_vec_sc)
最后按照特征值和特征向量进行配对,并按照特征值的大小从高到低进行排序,由于需要将三维空间投射到二维空间中,选择前两个特征值 - 特征向量对作为坐标,并构建 2 × \times × 3 的特征向量矩阵 W ,原来空间的样本通过与此矩阵相乘,使用公式 y = W T x y=W^Tx y=WTx 的方法将所有样本转换到新的空间中。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。