5

我正在从事用户行为项目。根据用户交互,我得到了一些数据。有一个很好的序列,随着时间的推移平滑地增加和减少。但是有一点差异,这是非常糟糕的。请参考下图:

绘制的序列

您还可以在此处找到数据:

2.0789 2.09604 2.11472 2.13414 2.15609 2.17776 2.2021 2.22722 2.25019 2.27304 2.29724 2.31991 2.34285 2.36569 2.38682 2.40634 2.42068 2.43947 2.45099 2.46564 2.48385 2.49747 2.49031 2.51458 2.5149 2.52632 2.54689 2.56077 2.57821 2.57877 2.59104 2.57625 2.55987 2.5694 2.56244 2.56599 2.54696 2.52479 2.50345 2.48306 2.50934 2.4512 2.43586 2.40664 2.38721 2.3816 2.36415 2.33408 2.31225 2.28801 2.26583 2.24054 2.2135 2.19678 2.16366 2.13945 2.11102 2.08389 2.05533 2.02899 2.00373 1.9752 1.94862 1.91982 1.89125 1.86307 1.83539 1.80641 1.77946 1.75333 1.72765 1.70417 1.68106 1.65971 1.64032 1.62386 1.6034 1.5829 1.56022 1.54167 1.53141 1.52329 1.51128 1.52125 1.51127 1.50753 1.51494 1.51777 1.55563 1.56948 1.57866 1.60095 1.61939 1.64399 1.67643 1.70784 1.74259 1.7815 1.81939 1.84942 1.87731 1.89895 1.91676 1.92987

我想平滑这个序列。该技术应该能够消除具有X和Y特征的数字,即单增或单减的误差。

如果没有消除,技术应该能够改变它们,这样系列就不会受到错误的影响。

我尝试过但失败了:

  1. 我试图测试值之间的差异。在某些特殊情况下它可以工作,但是对于本文中呈现的序列,数字之间的距离不是我可以消除错误的程度

  2. 我尝试应用一个计数器,它是一些 X,然后只接受更改,否则点仅映射到前一个点。在这里我很难确定 X 的值,因为这是基于用户交互的,我并不是它的真正控制者。如果用户交互是这样的,它的情节将是一个锯齿形图案,我最终会出现“根本没有检测到用户移动数据”的情况。

请分享您知道的技术。

PS:本例中提供的数据是一个特例。没有典型的数字将出现的模式,但我们希望某个范围与所有示例都是连续的。我正在寻找的解决方案是通用的。

4

2 回答 2

2

我不知道你想在这个问题上付出多少努力,但如果你想要理论上的保证,拓扑持久性似乎很适合你的问题恕我直言。基本上使用这种方法,您可以通过固定比例来过滤局部最大值/最小值,并且有理论证明表明,如果您的采样与您的函数接近,那么您可以通过持久性提取正确数量的最大值。您可以查看这些幻灯片(主要是第 7-9 页以了解想法)以了解该方法。

基本上,如果您将您的点作为景观并想象一个从最大高度开始并逐渐减小的分水岭,那么您有一些选择。每个选秀权都有它诞生的时间,即它出现的时间,以及它死亡的时间,即它与更高选秀权合并的时间。现在,持久性图描绘了每个选择的一个点,其中它的 x/y 坐标是它的出生/死亡时间(假设第一个选择没有死亡并且没有显示)。如果选择是全局最大值,那么它将比局部最大值选择更远离持久图中的对角线。要删除局部最大值,您必须删除靠近对角线的选择。 你的函数的持久性图

如果您像这样对数据进行噪声处理: 在此处输入图像描述

您仍然会得到一个非常不错的持久性图,允许您根据需要过滤局部最大值:

在此处输入图像描述

请询问您是否需要更多详细信息或参考资料。

于 2014-12-11T09:54:06.747 回答
1

由于您无法决定截止频率,甚至无法决定要使用的滤波器,我会实施几个,并让用户设置参数。

我首先想到的是running average,你可以看到有很多东西要设置,以获得不同的输出。

于 2014-12-11T09:49:06.243 回答