Algorithm 为一组时间序列信号生成相似性排序

Algorithm 为一组时间序列信号生成相似性排序,algorithm,time-series,signal-processing,data-analysis,Algorithm,Time Series,Signal Processing,Data Analysis,给定一组24小时信号,每小时数据点代表能源消耗模式,是否为每个信号提供相似性分数?峰值在信号中的高度、宽度和位置各不相同。其目的是对这些信号进行排序,以便得分更接近的人比得分更高的人更相似(比如年龄或收入如何工作)。也就是说,这两者之间应该有一个较低的差距 比 找到每个信号与基本情况之间的相关性是不够的,因为如果一个信号在上午有一个高峰,下午有一个低谷,则峰值相反的信号将被归类为与第一个信号类似的信号。收益相关性也不合适。在信号和基本情况之间使用RMSE时也会产生相同的问题 经过一番思考,我试图

给定一组24小时信号,每小时数据点代表能源消耗模式,是否为每个信号提供相似性分数?峰值在信号中的高度、宽度和位置各不相同。其目的是对这些信号进行排序,以便得分更接近的人比得分更高的人更相似(比如年龄或收入如何工作)。也就是说,这两者之间应该有一个较低的差距 比

找到每个信号与基本情况之间的相关性是不够的,因为如果一个信号在上午有一个高峰,下午有一个低谷,则峰值相反的信号将被归类为与第一个信号类似的信号。收益相关性也不合适。在信号和基本情况之间使用RMSE时也会产生相同的问题

经过一番思考,我试图找到信号的峰值,然后按照以下方式对峰值进行评分:

  public double score(){
            int b1 = max-start;
            int b2 = end - max;
            double h1 = maxHeight-startHeight;
            double h2 = maxHeight - endHeight;

            double a1 = 0.5*h1*b1;
            double a2 = 0.5*h2*b2;

            return Math.sqrt(Math.pow(h1,2)+ Math.pow(h2,2));
  }
其中start、max和end分别表示峰值的开始时间、最大时间和结束时间

我认为这可能是一种工作方法;然而,我很难找到峰本身。我尝试过的所有方法都有一些缺陷

我在这篇文章中尝试过这种方法: 一些峰值被定义为开始太早。由于某些峰值可能持续数小时,我尝试延长滞后时间。但是,如果滞后时间过长,则会错过时间=滞后时间之前开始的峰值

我还尝试使用梯度的标准偏差作为峰值开始的信号。即,如果给定点的梯度为因子*stdev(所有梯度),则峰值开始*因子为0.6

当某些信号在晚上有一个非常陡峭的峰值,而在早上有一个较浅的峰值时(反之亦然),这就失败了。梯度的stdev太高,算法错过了较浅的峰值。如果我将因子设置得足够低,以拾取浅峰,则会检测到假峰


受上面帖子中方法的启发,我尝试使用渐变的移动stdev。但是,该算法仍然漏掉了一些峰值。

简单的
(vow)/(|V |*| W |)有什么问题?
?这个值是什么?像某种投影?我对问题进行了编辑以使其更清晰,但我的目标是对分数进行排序,以便分数越接近的信号比分数越高的信号(如年龄或收入)更相似。如果我通过保持V为一个信号并改变W来计算你的建议值,这能做到吗?这个值是
sum(V[I]*W[I])/sqrt(sum(V[I]^2))/sqrt(sum(W[I]^2))
。在N维欧几里德空间中,它的几何表示为两个向量之间夹角的余弦。(没有人能想象出24个维度,但从数学上来说仍然是如此。)当一个维度与另一个维度相同但比例不同时,它将是1。当一个是另一个的负数时,它将是-1。你的意思是
sum(V[i]*W[i])/sqrt(sum(V[i]^2))*sqrt(sum(W[i]^2))
?你有这个想法,但要确保你得到了正确的操作顺序。我不是指
(sum(V[I]*W[I])/sqrt(sum(V[I]^2))*sqrt(sum(W[I]^2))
。我的意思是
sum(V[I]*W[I])/(sqrt(sum(V[I]^2))*sqrt(sum(W[I]^2))
,它与
(sum(V[I]*W[I])/sqrt(sum(V[I]^2))/sqrt(sum(W[I]^2))相同。(仔细注意括号的位置。)简单的
(vow)/(|V |*| W |)
有什么问题?这个值是多少?像某种投影?我对问题进行了编辑以使其更清晰,但我的目标是对分数进行排序,以便分数越接近的信号比分数越高的信号(如年龄或收入)更相似。如果我通过保持V为一个信号并改变W来计算你的建议值,这能做到吗?这个值是
sum(V[I]*W[I])/sqrt(sum(V[I]^2))/sqrt(sum(W[I]^2))
。在N维欧几里德空间中,它的几何表示为两个向量之间夹角的余弦。(没有人能想象出24个维度,但从数学上来说仍然是如此。)当一个维度与另一个维度相同但比例不同时,它将是1。当一个是另一个的负数时,它将是-1。你的意思是
sum(V[i]*W[i])/sqrt(sum(V[i]^2))*sqrt(sum(W[i]^2))
?你有这个想法,但要确保你得到了正确的操作顺序。我不是指
(sum(V[I]*W[I])/sqrt(sum(V[I]^2))*sqrt(sum(W[I]^2))
。我的意思是
sum(V[I]*W[I])/(sqrt(sum(V[I]^2))*sqrt(sum(W[I]^2))
,它与
(sum(V[I]*W[I])/sqrt(sum(V[I]^2))/sqrt(sum(W[I]^2))相同。(注意括号的位置。)