数据降维(Dimensionality reduction)

数据降维(Dimensionality reduction)

应用范围

  • 无监督学习
  • 图片压缩(需要的时候在还原回来)
  • 数据压缩
  • 数据可视化

数据压缩(Data Compression)

  • 将高维的数据转变为低维的数据, 这样我们存储数据的矩阵的列就减少了, 那么我们需要存储的数据就减少了

数据可视化

  • 数据可视化是非常重要的, 通过可视化数据可以发现数据的规律, 但是大多数时候我们到的数据是高维度的, 可视化很困难, 采用数据降维可以将数据降到二维进行数据可视化

加快机器学习算法的速度

  • 维度少了程序运行就快了

算法

PCA

注意点

  • 数据降维不是随意降维的, 我们要首先发现样本的规律, 如果样本在2D时都在一条之间上, 那么我们可以将数据都投影到这条直线上, 从而降到1D; 如果在3D中, 基本上在一个平面上, 我们可以将所有的数据都投影到这个平面上, 从而降到2D; 降维要找的直线或者平面我们要保证原始原始样本到新的直线或者平面的距离和最小, 从而保留尽可能多的信息
  • 使用PCA降维时需要对数据进行标准化

PCA降维步骤

  1. 数据标准化
  2. 计算协方差矩阵: \(\Sigma{1\over{m}}X^TX\), 其中X为样本, 在MATLAB中Sigma = 1 / m * X' * X
  3. 调用svd函数计算出协方差矩阵的特征向量: [U, S, V] = svd(Sigma), 其中U为特征矩阵, 其他返回的变量暂时用不到
  4. U是一个\(nxn\)的矩阵, \(n\)表示原始数据特征的数量, 选择K个作为我们新的特征
  5. 获取新的数据: Z = X * U(:, 1:K), Z就是一个\(mxk\)的新的样本

恢复数据

  1. X_recovered = Z * U(:, 1:K)', 通过这条语句得到的X_recovered = X * U(:, 1:K) * U(:, 1:K)', 我们恢复的数据并不是要原先的数据, 但是已经非常接近了, 只是原来的数据X乘以U与U的转置的乘积

猜你喜欢

转载自www.cnblogs.com/megachen/p/10049129.html