不同长度时间序列的SVD维数缩减


13

我正在使用奇异值分解作为降维技术。

给定N维向量D,其思想是表示不相关维的变换空间中的特征,这将以重要性降序将大多数数据信息压缩到该空间的特征向量中。

现在,我正在尝试将此过程应用于时间序列数据。问题在于并非所有序列都具有相同的长度,因此我无法真正构建num-by-dim矩阵并应用SVD。我的第一个想法是通过构建num-by-maxDim矩阵并用零填充空白空间来用零填充矩阵,但是我不确定这是否正确。

我的问题是,如何将SVD降维方法应用于不同长度的时间序列?或者,是否还有其他通常用于时间序列的本征空间表示方法?

下面是一段MATLAB代码来说明这一想法:

X = randn(100,4);                       % data matrix of size N-by-dim

X0 = bsxfun(@minus, X, mean(X));        % standarize
[U S V] = svd(X0,0);                    % SVD
variances = diag(S).^2 / (size(X,1)-1); % variances along eigenvectors

KEEP = 2;                               % number of dimensions to keep
newX = U(:,1:KEEP)*S(1:KEEP,1:KEEP);    % reduced and transformed data

(我主要在MATLAB中进行编码,但我也足够阅读R / Python / ..)


好问题!我认为您可以改善标题,可能在某处出现“丢失数据”或“不同长度的时间序列”。
罗宾吉拉德

1
我不会将其称为“丢失数据”,也许不是“针对不同长度的时间序列的SVD维数缩减”?
Amro

1
我喜欢你提议的标题!
罗宾吉拉德

1
这也有助于了解为什么系列的长度不同。例如,如果它们表示手写任务期间铅笔的轨迹,例如在写数字时说X位移,那么您可能希望对齐时间序列,以使它们的长度相同。同样重要的是要知道您想保留什么类型的变体,而不想要什么。
vqv 2010年

Answers:


5

有一个相当新的研究领域叫做矩阵完成,它可以满足您的需求。伊曼纽尔·坎德斯(Emmanuel Candes)在这次演讲中给出了一个非常好的介绍


我不知道网站VideoLecture的+1,您是否在有关视频讲座的问题中提到它?
罗宾吉拉德

我最近只是在阅读有关这些内容的信息。我真的很喜欢Candes和Tao的最新主题arxiv.org/abs/0903.1476
Robby McKilliam,2010年

2

填充零是不好的。尝试使用过去的观察结果进行重采样。


+1复制/重采样绝对比填充零更好。.我仍然要等一下,看看是否还有其他想法:)
Amro

2

只是想一想:您可能不需要完整的SVD解决问题。令M = USV *d x n矩阵的SVD (,时间序列为列)。要实现你将要使用的矩阵降维V小号。您可以通过对角化M * M = V(S * S)V *来找到它们。但是,因为你缺少某些值,则无法计算M×M个。不过,您可以估算一下。其条目是M列的乘积之和。计算任何SSP时,请忽略涉及缺失值的对。重新缩放每个产品以解决缺失值的问题:也就是说,每当SSP涉及nk对时,就将其重新缩放n /(nk)。 此过程是M * M的“合理”估计量,您可以从那里开始。如果您想变得更高级,也许多种插补技术或矩阵补全将有所帮助。

(这可以通过计算转置数据集的成对协方差矩阵并对其应用PCA或因子分析,在许多统计软件包中进行。)


MTM

这是一个好点,但是结果可能不会那么糟。人们希望的是,M * M的估计值足够接近真实值,因此特征值的扰动相当小。因此,通过投影到对应于最大特征值的特征空间,您只会对正确解产生微小的扰动,仍然可以实现所需的尺寸减小。也许最大的问题可能是算法问题:由于您无法再假定半定性,因此可能需要使用通用性更高的算法来查找本征系统。
ub

1

您可以估计“短”序列的单变量时间序列模型,并将其外推到将来以“对齐”所有序列。


外推将包括填充部分的平滑度,而该填充度在现有部分中不存在。您必须添加随机性...因此,重新采样(在外推上重新映射似乎是个好主意)
robin girard 2010年

外推模型将需要对误差项进行采样,这将导致所需的随机性。

IMO的两个建议都可以归结为根据现有的价值预测未来价值(也许是AR / ARMA模型?)。我想我仍然希望找到一种不涉及采样值的解决方案(因此可能会引入误差)。除了估计此类模型本身就是

1

我对您的示例代码有些困惑,因为您似乎V从计算中删除了变量newX。您是要建模X为降级产品,还是要减少列空间X?在后一种情况下,我认为采用EM-PCA方法是可行的。您可以在标题PCA标题下找到缺少值的 Matlab代码。

hth,


我不是要计算X的降秩近似,而是要转换的X。您会看到我的目标不是过滤嘈杂的序列,而是寻找维数减少的表示形式(用于时间序列的分类/聚类) )...您能否详细介绍一下EM-PCA方法?
Amro 2010年
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.