【问题标题】:PCA zero mean confusionPCA 零均值混淆
【发布时间】:2016-05-22 02:26:00
【问题描述】:

我在 Matlab 中实现 PCA,对零均值步长感到困惑。假设我有一个数据集 X 的矩阵,每一列是一个示例,每一行对应一个特征/变量。我认为要删除平均值,我们应该计算每一行的平均值,然后从同一行中的值中减去它,因为我们要删除同一变量的平均值。
但是,从斯坦福网站herehere 看来,这不是真的。相反,他们想要删除每个示例的平均值。 你能帮我验证一下吗?

【问题讨论】:

    标签: matlab pca


    【解决方案1】:

    我想你可能误解了斯坦福在做什么。

    您对自己应该做的事情的理解是正确的:您计算每个特征的平均值,然后从该特征中的每个值中减去该平均值。在您的情况下,取每一行的平均值,然后从该行中的每个元素中减去该平均值。

    Stanford 示例将一张图像分割成 144 个图块。每个图块对应一个“特征”,10000 个数据点对应于图块内的像素。他们计算每个图块/特征的平均值,然后从图块中的每个像素中减去它。斯坦福的例子可能有点令人困惑,因为它试图将特征缩放/PCA 应用于图像。

    【讨论】:

    • 我不确定你是对的,他们明确写了for each image patch, compute the mean pixel value and subtract it from that image, this centering the image around zero. You should compute a different mean value for each image patch - 也就是说,每个例子你得到不同的平均值。
    • @ItamarKatz 是的,这句话让我很困惑
    【解决方案2】:

    对于 PCA,您绝对应该减去每个 特征 的平均值,而不是每个示例的平均值。这是因为您对角化的矩阵是“经验”协方差矩阵,其定义如下:

    E[(X-EX)(X-EX)']
    

    其中X 是一个向量,' 是矩阵的transpose。从这个公式中你可以看到你减去了与样本无关的东西,因为你应用了期望EX

    关于链接,要么是错误,要么是某些特定于实现或特定于实验的步骤。很难说(没有仔细阅读,我没有)

    【讨论】:

      猜你喜欢
      • 2017-12-13
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2020-07-25
      相关资源
      最近更新 更多