Traclus轨迹聚类算法

参考链接

轨迹聚类算法分为三步骤:

  1. 轨迹特征点提取,轨迹划分
  2. 轨迹聚类
  3. 分段轨迹聚合

1:原始轨迹划分

划分原则:采用MDL原则(最小描述原则),要求选择总描述长度最小的模型。

MDL原则包括两个部分:

  1. L(H):描述压缩模型(或编码方式)所需要的长度。
  2. L(D|H):描述利用压缩模型所编码的数据所需要的长度。

如图所示:


不同轨迹距离计算

轨迹划分MDL计算

轨迹划分算法描述


轨迹划分算法:

输入:轨迹TR_i = p_1p_2p_3...p_{len_i}
输出:CP_i集合代表轨迹的特征点
算法:

  1. p_1加入CP_i集合中;(初始点)
  2. startINdex := 1, length := 1;
  3. startIndex + length \leq len_i
  4.   currIndex := startIndex + length;
  5.   cost_{par} := MDL_{par}(P_{startINdex},p_{currIndex});
  6.   cost_{nopar} := MDL_{nopar}(p_{startIndex},p_{currIndex});
  7.   if(cost_{par} > cost_{nopar}) then
  8.     将p_{currIndex-1}加入CP_i集合;
  9.     startIndex := currINdex - 1,length := 1;
  10.   else
  11.     length := length + 1;
  12. p_{len_i}加入CP_i集合;

算法思想:

  我们近似划分轨迹的关键思想是将局部最优集合视为全局最优。当假设p_ip_j仅是特征点时,令MDL_{par}(p_i,p_j)表示p_ip_j(i < j)之间的轨迹的MDL成本(= L(H) + L(D|H))。当假设在p_ip_j之间没有特征点时,即当保留原始轨迹时,令MDL_{nopar}(p_i,p_j)表示MDL成本。我们注意到MDL_{nopar}(p_i,p_j)中的L(D|H)为零。然后,局部最优是最长轨迹分区p_ip_j,其满足每k的MDL_{par}(p_i,p_k)≤MDL_{nopar}(p_i,p_k),使得i < k ≤ j。如果前者小于后者,我们知道选择p_k作为特征点会使MDL成本小于不选择它。此外,为了简洁起见,我们尽可能地增加该轨迹分区的长度。我们为轨迹中的每个点计算MDL_{par}MDL_{nopar}(第5~6行)。如果MDL_{par}大于MDL_{nopar},我们将前一个点p_{currIndex-1}插入到特征点的集合CP_i中(第8行)。然后,我们从那一点开始重复相同的过程(第9行)。否则,我们增加候选轨迹分区的长度(第11行)。

2. 轨迹聚类算法

基于密度的聚类算法,思想同DBSCAN算法:


核心线段等示例

线段聚类算法:

输入:1. 线段集合:D = {L_1,L_2,...,L_{num_{l_n}}}
   2. 两个参数\epsilonMinLns
算法:

  1. 设置clusterId 为0; /* 初始化ID */
  2. 将D中所有线段标记为未分类;
  3. 对每个线段L(L ∈ D):
  4.   如果线段L为未定义线段,那么:
  5.     计算L的邻域N_ε (L)
  6.     如果$(|N_ε (L)| ≥ MinLns) ,那么:
  7.       分配clusterId∀X ∈ N_ε (L)
  8.       将N_ε (L) - {L} 插入队列 Q;
  9.       扩展,ExpandCluster(Q, clusterId, ε, MinLns);
  10.       clusterId +1; /* 新的id */
  11.     else
  12.       标记 L 为噪声点;
  13. 将线段∀L ∈ D 分配到自己的聚类C_{clusterId}中;
       /* 检查线段轨迹基数 */
  14. 对每个C(C ∈ O):   /* 当类中的线段基数大于MinLns时该类可用,否则删除掉该类 */
  15.    如果(|PTR(C)| < MinLns),那么:
  16.     从O集合中删除集合C;
       /* 函数ExpandCluster()计算密度相连集合 */
  17. ExpandCluster(Q, clusterId, ε, MinLns) {
  18.   当 (Q \neq \emptyset) 时:
  19.     M := Q中的第一条线段;
  20.     计算 N_ε (M)
  21.     如果(|N_ε (M)| ≥ MinLns) ,那么:
  22.       对于每个X,(X ∈ N_ε (M))
  23.         如果 X 未定义或者为噪声点,那么:
  24.            分配clusterId给X;
  25.         如果X未定义,那么:
  26.           将X插入队列Q;
  27.     从队列Q中移除M;
  28. }

3. 轨迹可视化即轨迹聚合

  基于密度分为多个簇,然而对于一个簇中所有轨迹的走向及其它特征并没有直观简洁地展示出来,因此有必要提取簇中的整体信息并用可视化的手段展示出来方便进一步分析。
  一种可行的方法是计算簇中的平均轨迹,用平均轨迹来代表整个簇中轨迹的整体信息。原文中将这条轨迹形象地称为“代表性轨迹(Representative Trajectory)”。
  用一条垂直于簇中线段的平均走向的直线扫描各条线段,每次经过一条线段的起点或终点时都要判断一下此时相交线段的个数是否不小于MinLns。若是,则计算一个所有交点的平均点并存储于列表中,否则不予理会。最终生成的列表即为平均轨迹的结点坐标信息。
  这里忽略了一个问题,簇中线段的平均走向如何计算?
  原文中是将簇中所有的线段用向量表示,向量的长度为线段的长度,将所有向量相加并单位化即可代表簇中线段的平均走向。
  除此之处,由于算法要反复计算扫描直线与簇中线段的交点,如果扫描直线与x轴所成角度不为90度的整数倍,则计算量稍大。因此算法对此进行了预处理,将坐标系旋转使X轴与平均走向平行,这样计算起来就方便许多。


簇轨迹hebing
轨迹可视化算法

输入:1. 一个C_i
   2. MinLns
   3.一个光滑的参数\gamma
输出: C_i簇的代表性轨迹PTR_i
算法:

  1. 计算线段的平均垂直向量\vec{V}
  2. 旋转坐标轴,使得X坐标轴平行于\vec{V}
  3. P为C_i簇中线段开始和结束点的集合;
      /* X‘的值代表了X’坐标轴*/
  4. 依据X'坐标轴的值将P中的点排序;
  5. 对每个p,(p ∈ P) :
  6.   num_p代表包含点p的线段数量
  7.   如果num_p \geq MinLns,那么:
  8.     diff := p和之前的点之间的距离;
  9.     如果diff \geq \gamma,那么:
  10.       计算平均坐标值avg'_p
  11.       撤销坐标轴的旋转并获得点avg_p
  12.       将avg_p加入到PTR_i的末尾;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容

  • 在保证视频图像质量的前提下,HEVC通过增加一定的计算复杂度,可以实现码流在H.264/AVC的基础上降低50%。...
    加刘景长阅读 7,791评论 0 6
  • 眼睛是心灵的窗户,口头禅是思维的门户。你有什么样的口头禅,就反应出你有什么样的思维模式。 很多人喜欢在谈话中讲“说...
    那未必阅读 1,154评论 0 2
  • 当了妈妈才知道,那种吃饱就睡,不哭不闹,还一觉睡到天亮的天使宝宝都是别人家的。 自己的仔,具体到多久拉一次粑粑都是...
    素语微文阅读 467评论 1 3
  • 今天是星期六,下了几场暴雨。 我在屋里把作业全部都写完了,然后,去找谷殿艳玩。我们俩本想去找朱桐...
    穆蕊蕊阅读 201评论 0 1