Ⅰ 两个时间序列的相关系数能否反映它们之间的相似性
从概念上说基本可以。在应用学科里,斗吵分析相关系数,是很普遍的做法。
举个例子:很多金融分析,就通过做两支股票价格波动(实际上是两个时间序列)的相关,来判断他们之间的关系,这个做法在行业里非常普遍,比如基金经理,就要分析他的portfolio里各支股票之间的相关系数,来达到最大化收益(portfolio期望值)同时最小化风险(portfolio标准方差)的目的。
比如,同一板块里(比如高科技板块)的股票价格波动,经常是正相关。直接竞争行业或公司之间的股票价格波动,不少是负相关。
下面是词条里抄的:
相关系数又称线性相关系数.它是衡量变量之间线性相关程度的指标。样本相关系数用r表示,总体相关系数用ρ表示,相关系数的取值范围为[-1,1]。|r|值越大,误差Q越小,变量之间的线性相关程度越高;|r|值越接近0,Q越大,变量之间的线性相关程度越低。
相关系数又称皮(尔生)氏积矩相关系数,说明两个现象之间相关关系密切程度的统计分析指标。相关系数用希腊字母γ表示,γ值的范围在-1和+1之间。γ>0为正相关,γ<0为负相关。γ=0表示不相关;γ的绝对值越大,相关程度越高。
两个现象之间的相关程度,一般划分为四级:
如两者呈正相关,r呈正值,r=1时为完全正相关;如两者呈负相关则r呈负值,而r=-1时为完全负相关。完全正相关或负相关时,所有图点都在直线回归线上;点子的分布在直线回归线上下越离散,r的绝对值越小。当例数相等时,相关系数的绝对值越接近1,相关禅销碰越密切;越接近于0,相关越不密切。当r=0时,说明X和Y两个变量贺谈之间无直线关系。通常|r|大于0.8时,认为两个变量有很强的线性相关性。
Ⅱ 基于Dynamic Time Warping(DTW)的时间序列相似度计算与效率优化
首先,我们要了解时间序列问题。时间序列是事件随时间变化而变化的序列,比如一个人做后空翻的动作,相机每秒记录10张照片,形成时间序列。或者录制一段话,录音笔每秒记录10个音,形成时间序列。生活中很多现象,如一天的室内温度、一个月的股票价格,都是时间序列。
对于这些时间序列,我们经常想知道两个时间序列之间的相似度。例如,家中的语音识别开门系统,先记录下“我要开门”的声音,以后每次说出“我要开门”,系统会匹配这两个时间序列的相似度,相似度高就开门,低则不开门。动态时间规整(Dynamic Time Warping,简称DTW)是一种计算时间序列相似度的经典且常用方法。
在介绍DTW之前,我们先了解一个基础的相似度计算方法:欧氏距离(Euclidean Distance,ED)。以时间序列Q和C为例,假设长度都是N,ED的计算方法是在每个时间点上将Q值减去C值,将这些差值相加得到总距离D。然而,ED存在一个问题:如果两个时间序列形状相似但存在时间偏移,ED计算出的相似度可能不高。
动态时间规整(DTW)则解决了这个问题。DTW的目标是找到最匹配的Q和C之间的距离,定义最匹配的方式是让总距离最小。DTW需要构建一个矩阵DA,y轴代表时间序列Q,x轴代表时间序列C。矩阵从左下角开始填起,直到右上角。每个点代表Q和C之间距离的累加值。矩阵建立完成后,从右上角开始追溯,找到最短距离的路径,即为两个时间序列之间的最佳匹配。
接下来,我们使用动态规划算法(Dynamic Programming)来实现DTW。构建一个矩阵,左下角为Q的第一个时间点和C的第一个时间点的差值,右上角为Q的最后一个时间点和C的最后一个时间点的差值。矩阵中的每个点代表从起点到当前点的最短距离。我们从左下角开始,计算每个点与其左下方三个点的距离,并选取最小值作为当前点的距离。最终,我们从右上角找到最短的路径,即为两个时间序列之间的最匹配路径。
实现DTW的代码中,我们首先构建矩阵并填充,通过计算每个点与其左下方三个点的距离,选择最小值作为当前点的距离。最后,通过回溯路径,找到最匹配的Q和C之间的距离。
然而,DTW也有其缺点,主要在于时间复杂度高,为O(NM),其中N和M分别是两个时间序列的长度。为提高效率,我们可以使用Early Abandoning Z-Normalisation方法,提前放弃计算距离超过当前最优距离的时间序列。Normalisation是为了确保时间序列在比较前已标准化,防止不同尺度带来的影响。此外,通过Reordering Early Abandoning方法,我们优化计算顺序,从而减少计算量。
再进一步,我们可以通过Reversing the Query/Data Role方法,改变查询和数据的角色,利用Lower Bounding方法来进一步减少计算量。Cascading Lower Bounds方法则结合多个Lower Bounding方法,根据时间复杂度和紧凑度权衡,实现高效计算。
综上所述,动态时间规整(DTW)是一种高效计算时间序列相似度的方法,通过一系列剪枝优化,提高了计算效率。这些方法不仅适用于语音识别、模式识别等领域,也广泛应用于各类时间序列相似度计算。