算法面临的问题
以往的算法,都是单纯的去匹配,总是顾此失彼。CATS算法是CACT框架的一环。CACT框架是 Clustering and Aggregating Clues of Trajectories。包括负责度量相似度的clue-aware trajectory similarity(CATS)和clue-aware trajectory clustering(CATC)。最后,是clue-aware trajectory aggregation(CATA)。
CACT框架的思路是:以CATS算法为衡量相似度的基础,以CATC算法去对轨迹进行聚类。最后,线索感知轨迹聚合算法来聚合同一组中的轨迹,以得出相应的轨迹模式和路线。
自我感觉:CACT最出彩的地方就是对每一个cluster都提取出一个代表性的轨迹作为模板。对于查询轨迹,不再去匹配所有的轨迹,而是去匹配各个cluster得到的模版轨迹。这样是是科学的。因为假如查询轨迹去匹配数据库里的所有轨迹,由于查询轨迹和所有的轨迹都不是理想的,都会收到各种因素的干扰,那么很难有一种完美的且可以实际实现的算法去达到理想的效果。模板必须都是理想的。
针对的问题
时间和空间上的偏移(误差)
采样的传感器本身就会存在误差,在空间上可能出现滞后,在空间上可能出现偏移。
local time shifting
速度不一、用户的延迟不一、采样率不一、环境问题都会导致同一轨迹都对不上。
噪声
Silent duration
可能由于设备坏了,或者没有信号,导致轨迹的某一段是沉默的(没有采样点)
CATS算法简介
CATS想要同时使用时间和空间的co-located点来判断相似性。
clue的概念也并没有多么的高级,只是评估两条轨迹中满足co-located的点的数目。
显然,对于大于阈值的数值,被判断成了0。在阈值范围内的,也没有像EDR或者LCSS一样,直接判为一个固定的数值,而是用了[0, 1]之间的连续的数值。像EDR、LCSS这样的,直接判定为0、1,会丢失掉很多的信息。显然,两个点越近,数值越大。
而后使用了时间上的限制,把一个数据点对齐到目标轨迹的最可能相似的点上(按照文章的话说就是包含最强的线索的点)。为了衡量“相似”的概念,提出了score函数。顾名思义就是一个点到另一条轨迹的相似性得分。其公式如下:
e,t分别是空间上的阈值和时间上的边界。即对于一个点p,在另一条轨迹上,满足时间边界的所有点中,空间衰减函数最大的点就是该点的对齐点。
根据点到轨迹的对齐方法score,提出了轨迹之间相似度的度量CATS:
e、t、Ti、Tj和上文中符号的含义都一样。
显然,对于CATS来说,它能够处理local time shifting。因为对于不匹配的点,会之间判断为0,且对采样点数是否相同没有要求。这一点与LCSS相同:只关注了相似的点,没有关注不相似的点,没有对不相似的点进行惩罚。
算法伪代码如下:
在最差的情况下,算法复杂度是O(|Ti||Tj|)。
CATS依靠e和t来克服(更准确的说是容忍)空间和时间上的偏差(对正常误差的抑制比较好)。对于大于时间偏差的,可以判断为噪声点。并且不计入影响。对于没有对应点的,很大可能上(因为这种点一般空间时间偏差都很大)也会被判断为噪声点。
综合而言,CATS只关注了两个轨迹中时间、空间相似度比较高、匹配度比较好的部分。显然,这样做的误差会很大。为了消除这个误差,使用聚类结果生成(实际并不存在的)模版轨迹供给匹配,就能大大减少这个问题。(LCSS中是不是也是这么用的?)
算法的问题
对于CATS的高还是低没有一个绝对的概念。可能这个数值需要根据实际的应用去自行总结出。
网友评论