SVD / PCA的“规范化”变量


17

假设我们有N可测量的变量(a1,a2,,aN),我们进行了M>N个测量,然后希望对结果进行奇异值分解,以找到最大方差轴。N维空间中的M个点。(注意:假设的装置一个已经减去,所以一个= 0对于所有)。Naiai=0i

现在假设一个(或多个)变量的特征量级与其余变量具有显着不同的特征量级。例如a1可具有值的范围在10100其余的可能约为0.11。这将扭曲向最高方差的轴a1的轴非常多。

大小上的差异可能仅仅是由于不幸地选择了度量单位(如果我们谈论的是物理数据,例如公里与米),但是实际上不同的变量可能具有完全不同的尺寸(例如重量与体积),因此可能没有任何明显的方法为它们选择“可比较”的单位。

问题: 我想知道是否存在任何标准/通用方法来规范化数据以避免这种问题。我更感兴趣的是产生了相当的幅度标准技术a1aN为了这个目的,而不是想出一些新的东西。

编辑: 一种可能性是通过其标准偏差或类似的东西标准化每个变量。但是,随后出现以下问题:让我们将数据解释为N维空间中的点云。该点云可以旋转,并且这种类型的归一化将根据旋转给出不同的最终结果(在SVD之后)。(例如,在最极端的情况下,想象精确地旋转数据以使主轴与主轴对齐。)

我希望不会有任何旋转不变的方法,但是如果有人能指出我对文献中有关此问题的某些讨论,特别是关于结果解释中的注意事项,我将不胜感激。


4
问题本身通常不是旋转不变的,因为每个变量都是用适合它的常规测量单位记录的。例如,可能是英尺,一个2微米级,一个3在升,等等。甚至当所有单位都是一样的,如果变量衡量不同性质的东西,数额由他们改变将可能的方式不同的特点这些变量:再一次,这不是旋转不变的。因此,您应该放弃旋转不变性作为指导原则或考虑因素。a1a2a3
ub

Answers:


11

三种常见的归一化是居中,缩放和标准化。

为随机变量。X

定心

xi=xix¯.

将所得的将具有¯ X * = 0xx¯=0

标度为

xi=xi(ixi2).

结果将具有ixixi2=1

标准化是先集中再扩展。将所得的将具有¯ X * = 0Σ X *xx¯=0ixi2=1


可以定义“ SS”吗?
Szabolcs

平方和。Xi的平方和。
ttnphns 2011年

将平方和设为1而不是方差的原因是,那么奇异值将对应于沿主轴的标准偏差(除非我弄错了)?
Szabolcs

另请参阅我对问题的编辑。
Szabolcs

@Szabolcs,实际上我可能会错过您的一些修改。但是PCA(或SVD)本身就是旋转(轴正交旋转的一种特殊情况)。云的任何平移(如居中)或缩小/扩展(如缩放)都应影响该旋转的结果。
ttnphns 2011年

7

完全正确的是,对于PCA,拥有方差非常不同的单个变量可能会带来问题,尤其是当这种差异是由于不同的单位或不同的物理尺寸引起的时。因此,除非变量都是可比较的(相同的物理量,相同的单位),否则建议对相关矩阵而不是协方差矩阵执行PCA。看这里:

在相关矩阵上进行PCA等效于在分析之前对所有变量进行标准化(然后在协方差矩阵上进行PCA)。标准化意味着居中,然后将每个变量除以其标准偏差,以便所有变量均具有单位方差。可以将其视为方便的“单位更改”,以使所有单位具有可比性。

有人可能会问,有时是否有更好的“标准化”变量的方法?例如,可以选择除以某种可靠的方差估计值,而不是除以原始方差。在下面的主题中对此进行了询问,并查看随后的讨论(即使那里没有给出明确的答案):

最后,您担心通过标准偏差(或类似方法)进行归一化不是旋转不变的。好吧,是的,不是。但是,正如上面的评论中@whuber所述,没有旋转不变的方法:更改单个变量的单位不是旋转不变的操作!这里没有什么可担心的。


我为PCA买到了它。但是,是否还建议在运行“单值分解”之前执行任何形式的标准化?
hipoglucido

4

应用PCA之前的常用技术是从样本中减去平均值。如果不这样做,第一个特征向量将是均值。我不确定您是否完成了,但让我来谈谈。如果我们用MATLAB代码讲:这是

clear, clf
clc
%% Let us draw a line
scale = 1;
x = scale .* (1:0.25:5);
y = 1/2*x + 1;

%% and add some noise
y = y + rand(size(y));

%% plot and see
subplot(1,2,1), plot(x, y, '*k')
axis equal

%% Put the data in columns and see what SVD gives
A = [x;y];
[U, S, V] = svd(A);

hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found directly')

%% Now, subtract the mean and see its effect
A(1,:) = A(1,:) - mean(A(1,:));
A(2,:) = A(2,:) - mean(A(2,:));

[U, S, V] = svd(A);

subplot(1,2,2)
plot(x, y, '*k')
axis equal
hold on
plot([mean(x)-U(1,1)*S(1,1) mean(x)+U(1,1)*S(1,1)], ...
     [mean(y)-U(2,1)*S(1,1) mean(y)+U(2,1)*S(1,1)], ...
     ':k');
plot([mean(x)-U(1,2)*S(2,2) mean(x)+U(1,2)*S(2,2)], ...
     [mean(y)-U(2,2)*S(2,2) mean(y)+U(2,2)*S(2,2)], ...
     '-.k');
title('The left singular vectors found after subtracting mean')

从图中可以看出,如果您想更好地分析(协)方差,则应该从数据中减去平均值。然后,这些值将不在10-100和0.1-1之间,但它们的平均值将均为零。方差将作为特征值(或奇异值的平方)找到。在我们减去均值的情况下,发现的本征向量不受维数规模的影响,而在没有维数的情况下,发现的特征向量不受此影响。例如,我已经测试并观察了以下内容,这些内容表明减去均值可能对您的情况很重要。因此,问题可能不是由方差引起的,而是由平移差异引起的。

% scale = 0.5, without subtracting mean
U =

-0.5504   -0.8349
-0.8349    0.5504


% scale = 0.5, with subtracting mean
U =

-0.8311   -0.5561
-0.5561    0.8311


% scale = 1, without subtracting mean
U =

-0.7327   -0.6806
-0.6806    0.7327

% scale = 1, with subtracting mean
U =

-0.8464   -0.5325
-0.5325    0.8464


% scale = 100, without subtracting mean
U =

-0.8930   -0.4501
-0.4501    0.8930


% scale = 100, with subtracting mean
U =

-0.8943   -0.4474
-0.4474    0.8943

在此处输入图片说明


1
我应该在问题中提到均值已被减去。我将对其进行相应的编辑。
Szabolcs

1
NN

1
我意识到可能没有旋转不变的方法,但是我很乐意至少阅读一些关于这些问题的讨论……欢迎任何指点。 注意:我没有应用统计方面的培训(只有数学,例如linalg,概率论),所以我正在学习这些东西。
Szabolcs

1
当您不将样本居中(从列中减去均值)时,第一个特征向量通常不是均值向量。
ub

-1下投票,因为此答案仅与居中有关,而问题与缩放有关。同样,如@whuber所指出的那样,声称第一特征向量一定是均值向量的说法是错误的。
变形虫说恢复莫妮卡

-5

为了规范PCA的数据,还使用了以下公式

SC=100X-X最高X-X

哪里 X 是该指标在国家/地区的原始值 C 在一年中 ŤX 描述该国家所有年份所有指标的所有原始值。


7
谁说过国家或年份?
尼克·史陶纳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.