s********k 发帖数: 6180 | 1 【 以下文字转载自 CS 讨论区 】
发信人: silverhawk (silverhawk), 信区: CS
标 题: 怎样判断两个时间序列的相似度
发信站: BBS 未名空间站 (Tue Apr 13 14:02:44 2010, 美东)
时间序列的见附件1,2,有红色蓝色两个flow,直观看蓝色flow2之间的相似度更高,
红色flow1的相似度低一些(相反,红色flow1和蓝色flow2)的相似度更高(这也是我
希望得到的结论)。但是用correlation算出来红色序列的correlation更高。可能是噪
声以及shift的原因,所以想请问下有没有比较好的方法判断时间序列的相似度,我用
了一些比如distance或者FFT的方法,但是得到的效果都不好。哪位高人给指点下应该
怎么做? |
h***x 发帖数: 586 | 2 try (joint) entropy
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 【 以下文字转载自 CS 讨论区 】 : 发信人: silverhawk (silverhawk), 信区: CS : 标 题: 怎样判断两个时间序列的相似度 : 发信站: BBS 未名空间站 (Tue Apr 13 14:02:44 2010, 美东) : 时间序列的见附件1,2,有红色蓝色两个flow,直观看蓝色flow2之间的相似度更高, : 红色flow1的相似度低一些(相反,红色flow1和蓝色flow2)的相似度更高(这也是我 : 希望得到的结论)。但是用correlation算出来红色序列的correlation更高。可能是噪 : 声以及shift的原因,所以想请问下有没有比较好的方法判断时间序列的相似度,我用 : 了一些比如distance或者FFT的方法,但是得到的效果都不好。哪位高人给指点下应该 : 怎么做?
|
D*******a 发帖数: 207 | 3 直观上看FFT应该有效,因为图一的红色序列有大概15个峰,而别的序列都是只有8个峰
。每个序列FFT后的结果应该是这样的,一个高的基波载波和附近的调制信号,然后是
三倍频载波和附近的调制信号,然后是5倍频载波和附近的调制信号。。。偶次载波比
较小。
然后图一的红色序列的基频载波频率大概是别的序列的两倍。
你的FFT没做好。要像这样做:在这个序列后面pad 0;比方原来序列长度是200,则在
后面再跟上4096-200=3896个0,得到新序列。然后对这个新序列进行FFT。FFT完了,
取前面200个点打印就可以了。 |
s********k 发帖数: 6180 | 4 已经算过这个,用KL distance,觉得好像不是很合适,因为这个毕竟不是概率分布
【在 h***x 的大作中提到】![](/moin_static193/solenoid/img/up.png) : try (joint) entropy
|
w**********y 发帖数: 1691 | 5 There is sth. called cointegration for financial time series.
http://en.wikipedia.org/wiki/Cointegration
Maybe it helps. |
s********k 发帖数: 6180 | 6 谢谢,这个3倍5倍有什么理论依据吗?
【在 D*******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 直观上看FFT应该有效,因为图一的红色序列有大概15个峰,而别的序列都是只有8个峰 : 。每个序列FFT后的结果应该是这样的,一个高的基波载波和附近的调制信号,然后是 : 三倍频载波和附近的调制信号,然后是5倍频载波和附近的调制信号。。。偶次载波比 : 较小。 : 然后图一的红色序列的基频载波频率大概是别的序列的两倍。 : 你的FFT没做好。要像这样做:在这个序列后面pad 0;比方原来序列长度是200,则在 : 后面再跟上4096-200=3896个0,得到新序列。然后对这个新序列进行FFT。FFT完了, : 取前面200个点打印就可以了。
|
s********k 发帖数: 6180 | 7 thanks, I will take a look at it
【在 w**********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : There is sth. called cointegration for financial time series. : http://en.wikipedia.org/wiki/Cointegration : Maybe it helps.
|
o****o 发帖数: 8077 | 8 I once analyzed similarity between time series using SVD, and based on
similarity comparison on correlation of the original series to right
eigenvectors.
standardizing the data is necessary. I also removed the first eigen
component as it is the dominant systematic component shared by all these series (consider ALS) so that your comparison may result in vein
the method worked well, at least for my case
mathematically speaking, it is similar to FFT based analysis, can't tell
what went wrong with y
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : thanks, I will take a look at it
|
D******n 发帖数: 2836 | 9 it really depends on how u define similarity then...
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 【 以下文字转载自 CS 讨论区 】 : 发信人: silverhawk (silverhawk), 信区: CS : 标 题: 怎样判断两个时间序列的相似度 : 发信站: BBS 未名空间站 (Tue Apr 13 14:02:44 2010, 美东) : 时间序列的见附件1,2,有红色蓝色两个flow,直观看蓝色flow2之间的相似度更高, : 红色flow1的相似度低一些(相反,红色flow1和蓝色flow2)的相似度更高(这也是我 : 希望得到的结论)。但是用correlation算出来红色序列的correlation更高。可能是噪 : 声以及shift的原因,所以想请问下有没有比较好的方法判断时间序列的相似度,我用 : 了一些比如distance或者FFT的方法,但是得到的效果都不好。哪位高人给指点下应该 : 怎么做?
|
s********k 发帖数: 6180 | 10 我确实不知道怎么最好的定义,我想要的结果就是蓝色序列之间的相似度大大高于红色
序列之间的相似度
【在 D******n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : it really depends on how u define similarity then...
|
|
|
c****u 发帖数: 584 | |
b********y 发帖数: 63 | 12 Is your correlation based on the lag difference? |
s********k 发帖数: 6180 | 13 我就是用普通的correlation定义来算的
【在 b********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Is your correlation based on the lag difference?
|
b********y 发帖数: 63 | 14 That is not an answer.
Are you doing cor(x,y) or cor(diff(x,1), diff(y,1))?
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我就是用普通的correlation定义来算的
|
s********k 发帖数: 6180 | 15 我是直接拿cor(x,y)来做的,你的diff(x,1)意思是增量之间的correlation吗?我这个
也做过,效果和直接做cor差不多
【在 b********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : That is not an answer. : Are you doing cor(x,y) or cor(diff(x,1), diff(y,1))?
|
D*******a 发帖数: 207 | 16 那pad0的FFT,你还没做吧。为什么不试试呢。 |
s********k 发帖数: 6180 | 17 谢谢,我正准备做,我之所以暂时没做FFT的原因是我想尽量找一个能实时处理的。二
是做了FFT之后我能看出差别,但是有没有什么数量的方法可以度量这个差别(再用
distance吗)另外想请教一下你,pad的FFT和普通FFT相比差别在哪里?另外你说的那
个3倍频和5倍频是有什么理论依据,多谢
【在 D*******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 那pad0的FFT,你还没做吧。为什么不试试呢。
|
s******e 发帖数: 82 | 18 1. cross correlation in certain window, which on freq domain equals dot prod
of FFT transformed .
2. for wavelets, first choose a good mother wavelet based on ur data, then
threshold, padding, and use stationary wavelets. Then in wavelets domain, so
what? you still need distance to measure...
3.feature extraction, such as peak properties such as FWHM, auc,location...
anyway select any features robust in whatever space |
s********k 发帖数: 6180 | 19 你好,我想请问一下你的这个3倍,5倍取值情况,我现在序列有400个点,按照你的做
法做了4096的FFT然后取400个点打印.3倍频和5倍频分别对应的是什么?另外你说的基
频载波频率大概是别的序列的两倍,是指幅度还是频率个数?
【在 D*******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 直观上看FFT应该有效,因为图一的红色序列有大概15个峰,而别的序列都是只有8个峰 : 。每个序列FFT后的结果应该是这样的,一个高的基波载波和附近的调制信号,然后是 : 三倍频载波和附近的调制信号,然后是5倍频载波和附近的调制信号。。。偶次载波比 : 较小。 : 然后图一的红色序列的基频载波频率大概是别的序列的两倍。 : 你的FFT没做好。要像这样做:在这个序列后面pad 0;比方原来序列长度是200,则在 : 后面再跟上4096-200=3896个0,得到新序列。然后对这个新序列进行FFT。FFT完了, : 取前面200个点打印就可以了。
|
o****o 发帖数: 8077 | 20 hi, silverhawk, do you mind sharing your data here if the information is not
sensitive
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你好,我想请问一下你的这个3倍,5倍取值情况,我现在序列有400个点,按照你的做 : 法做了4096的FFT然后取400个点打印.3倍频和5倍频分别对应的是什么?另外你说的基 : 频载波频率大概是别的序列的两倍,是指幅度还是频率个数?
|
|
|
s********k 发帖数: 6180 | 21 原始的data在首文已经附上了啊?
not
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : hi, silverhawk, do you mind sharing your data here if the information is not : sensitive
|
D*******a 发帖数: 207 | 22
我是预测你FFT的结果。你把FFT的结果贴出来看看,然后再讨论吧。
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你好,我想请问一下你的这个3倍,5倍取值情况,我现在序列有400个点,按照你的做 : 法做了4096的FFT然后取400个点打印.3倍频和5倍频分别对应的是什么?另外你说的基 : 频载波频率大概是别的序列的两倍,是指幅度还是频率个数?
|
D*******a 发帖数: 207 | 23
首楼的是数据的plot,不是原始数据。能不能贴出数据?
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 原始的data在首文已经附上了啊? : : not
|
s********k 发帖数: 6180 | 24 好,今天晚了,明天我贴出来,原始数据贴出来也没问题。不过FFT做出来的结果有点
奇怪
【在 D*******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : 首楼的是数据的plot,不是原始数据。能不能贴出数据?
|
s********k 发帖数: 6180 | 25 原始数据见下面(附件好像不能贴),flowi-k,总共四个原始数据(第一列是采样时间
,第二列是数据)。i分别为1,2,表示flow1(red)和flow2(blue)。k表示两个不同
的图(实际系统中分别表示输入输出),k=1表示输入(首帖中的figure1),k=2表示
输出(首帖中的figure2).我所求的是flow1-1和flow1-2之间“相关性、相似性”x1。
然后是flow2-1和flow2-2之间“相关性、相似性”x2。直观感觉是x1>x2,但是用
correlation定义求出来相反。当然严格的说我可能用的correlation定义不对,因为这
个是时间序列。各位大侠有什么高见,先谢过了.
flow1-1
0.5 1
1 1
1.5 1
2 3
2.5 10
3 20.2981
3.5 21.4492
4 22.4971
4.5 23.5407
5 24.5806
5.5 25.6173
6 26.5383
6.5 27.4648
7 28.3963
7.5 29.2298
8
【在 D*******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : 首楼的是数据的plot,不是原始数据。能不能贴出数据?
|
s********k 发帖数: 6180 | 26 两个flow分别做FFT的结果见附件,蓝色表示输入的FFT(对应首帖figure1),红色表
示输出的FFT对应首帖figure2)
【在 D*******a 的大作中提到】![](/moin_static193/solenoid/img/up.png) : : 首楼的是数据的plot,不是原始数据。能不能贴出数据?
|
s********k 发帖数: 6180 | 27 这个记过比较奇怪,我总共有400个点,用的是4096FFT,只取了400个点答应,做FFT之
前首先对数据做了归一化
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 两个flow分别做FFT的结果见附件,蓝色表示输入的FFT(对应首帖figure1),红色表 : 示输出的FFT对应首帖figure2)
|
s********k 发帖数: 6180 | 28 首先非常感谢帮助,我可能没有表述清楚,我再写一下吧:
flow1-1,flow2-1 是输入, 为了表示清楚,我用flow1-input,flow2-input表示吧。原
帖figure1
flow1-2,flow2-2 是输出, 为了表示清楚,我用flow1-output,flow2-output表示吧。
原帖figure2
直观来看
simi(flow2-1, flow2-2)>simi(flow1-1, flow1-1)
也就是说
simi(flow2-input, flow2-output)>simi(flow1-input, flow1-output)
.这样也是我希望得到的结果。但是我用correlation算
cor(flow2-input, flow2-output)
因为这个是时间序列,是不是直接用correlation不是很合适,那么有什么更好的度量
方法能达到我希望的结果呢?
非常感谢大家的帮助
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 原始数据见下面(附件好像不能贴),flowi-k,总共四个原始数据(第一列是采样时间 : ,第二列是数据)。i分别为1,2,表示flow1(red)和flow2(blue)。k表示两个不同 : 的图(实际系统中分别表示输入输出),k=1表示输入(首帖中的figure1),k=2表示 : 输出(首帖中的figure2).我所求的是flow1-1和flow1-2之间“相关性、相似性”x1。 : 然后是flow2-1和flow2-2之间“相关性、相似性”x2。直观感觉是x1>x2,但是用 : correlation定义求出来相反。当然严格的说我可能用的correlation定义不对,因为这 : 个是时间序列。各位大侠有什么高见,先谢过了. : flow1-1 : 0.5 1 : 1 1
|
o****o 发帖数: 8077 | 29 If my understanding is correct, I tried the following:
SVD on the four series combined with data standardized with mean=0, std=1, obtain the right eigenvector matrix, and
the first eigenvector explains >61% variation, while the second eigenvector
explains 29% variation.
What we got is:
flow11 flow12 flow21 flow22
Prin1 0.4381 0.6096 0.2246 0.6213
Prin2 -0.5565 0.0353 0.8281 0.0585
Using Prin1 difference as similarity measurement, the smaller m
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 原始数据见下面(附件好像不能贴),flowi-k,总共四个原始数据(第一列是采样时间 : ,第二列是数据)。i分别为1,2,表示flow1(red)和flow2(blue)。k表示两个不同 : 的图(实际系统中分别表示输入输出),k=1表示输入(首帖中的figure1),k=2表示 : 输出(首帖中的figure2).我所求的是flow1-1和flow1-2之间“相关性、相似性”x1。 : 然后是flow2-1和flow2-2之间“相关性、相似性”x2。直观感觉是x1>x2,但是用 : correlation定义求出来相反。当然严格的说我可能用的correlation定义不对,因为这 : 个是时间序列。各位大侠有什么高见,先谢过了. : flow1-1 : 0.5 1 : 1 1
|
s********k 发帖数: 6180 | 30 simi(flow11, flow12)>simi(flow21, flow22)
这个就是说两个红色flow1之间的相似性大于两个蓝色flow2之间的相似性,这个和我
correlation算出来的结果一样的,但是和直观感觉以及我想得到的结果不一样啊
obtain the right eigenvector matrix, and
eigenvector
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : If my understanding is correct, I tried the following: : SVD on the four series combined with data standardized with mean=0, std=1, obtain the right eigenvector matrix, and : the first eigenvector explains >61% variation, while the second eigenvector : explains 29% variation. : What we got is: : flow11 flow12 flow21 flow22 : Prin1 0.4381 0.6096 0.2246 0.6213 : Prin2 -0.5565 0.0353 0.8281 0.0585 : Using Prin1 difference as similarity measurement, the smaller m
|
|
|
o****o 发帖数: 8077 | 31 in that case, don't standardize your data, using the original data for SVD,
the first eigenvector will be
series Prin1
flow11 0.0299
flow12 0.7391
flow21 0.0706
flow22 0.6692
what you find is that
simi(flow1-1, flow1-2)
closer than the red series
standarizing the data will dump the amplitude difference between red series
by a larger degree than to the difference between blue series.
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : simi(flow11, flow12)>simi(flow21, flow22) : 这个就是说两个红色flow1之间的相似性大于两个蓝色flow2之间的相似性,这个和我 : correlation算出来的结果一样的,但是和直观感觉以及我想得到的结果不一样啊 : : obtain the right eigenvector matrix, and : eigenvector
|
s********k 发帖数: 6180 | 32 thanks very much, that makes sense.
,
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : in that case, don't standardize your data, using the original data for SVD, : the first eigenvector will be : series Prin1 : flow11 0.0299 : flow12 0.7391 : flow21 0.0706 : flow22 0.6692 : what you find is that : simi(flow1-1, flow1-2): closer than the red series
|
o****o 发帖数: 8077 | 33 one Stat PhD told me that normalizing by time rather than by series will
provide better result, and indeed it is as you can see analytically and
visually:
flow11 flow12 flow21 flow22
Prin1 -0.531 0.556 -0.465 0.44
【在 s********k 的大作中提到】![](/moin_static193/solenoid/img/up.png) : thanks very much, that makes sense. : : ,
|
s********k 发帖数: 6180 | 34 你好,我想请问一下你的图是什么意思(是在principal component上的投影吗)?另
外normalizing by time rather than by series意思是不是每个序列自己做normalize
而不是4个序列一起做?对统计的东西不是很熟悉,谢谢
【在 o****o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : one Stat PhD told me that normalizing by time rather than by series will : provide better result, and indeed it is as you can see analytically and : visually: : flow11 flow12 flow21 flow22 : Prin1 -0.531 0.556 -0.465 0.44
|