本发明涉及计算机科学与技术领域,具体是一种基于稀疏表示和fréchet距离融合的轨迹相似度计算方法。
背景技术:
定位技术的发展以及智能移动终端的普及,催生了大量的轨迹数据。轨迹数据采集之后可直接发布供用户使用,但直接发布很可能导致移动对象的个人敏感信息被泄漏。大量数据挖掘工具的使用要求数据所有者在发布轨迹数据时保证数据中的敏感信息不被泄露,同时还要兼顾所发布轨迹数据的可用性。
大量研究表明,基于聚类的轨迹隐私保护方法在隐私保护程度上和数据可用性上取得了较好的平衡,是目前主流的轨迹隐私保护方法之一。基于聚类的轨迹隐私保护方法中聚类结果对匿名轨迹数据可用性的影响较大,而轨迹间相似性的度量方式是轨迹聚类的关键。目前大多数以欧式距离作为轨迹相似性度量标准,方法单一。考虑到轨迹多特性,需要融合多相似度计算。
技术实现要素:
本发明的目的是要提供一种基于稀疏表示和fréchet距离融合的轨迹相似度计算方法,该方法通过融合两种分别针对轨迹不同属性的相似度计算方法,充分考虑了轨迹的多特征对聚类效果的影响,最终推荐相似度最高的k条轨迹进行聚类。
实现本发明目的的技术方案是:
一种基于稀疏表示和fréchet距离融合的轨迹相似度计算方法,包括如下步骤:
(1)稀疏表示系数求解相似度sim1,将需要求解相似邻居的轨迹表示为测试样本,数据集中除测试样本之外其他的轨迹表示为训练样本,建立用户轨迹的矩阵形式:
其中每一行表示的是该轨迹上等时间间隔选取的m个轨迹点,每个轨迹点有v个属性,比如经度,纬度,速度,方向等,rm,v代表轨迹上第m个轨迹点的第v个属性值;
(2)对矩阵轨迹数据预先处理,稀疏表示形式如下:
β=a1α1 a2α2 … anαn
其中,β为测试样本,αi为训练样本(i=1,2...n),ai为需要求解的系数;
建立用户轨迹的矩阵数据时,轨迹上的取点数m多于它的属性个数v,;因此将原用户轨迹矩阵全部做转置处理:
y=a1x1 a2x2 …anxn
xi(i=1,2...n)为转置后的轨迹矩阵t的表示;
(3)对轨迹矩阵做归一化处理,每个矩阵有n个属性,每个属性的取值范围不同,归一化后可以加快梯度下降求最优解的速度,也可能提高精度,降低计算时间复杂度;
(4)轨迹间的稀疏表示:
y=a1x1 a2x2 … anxn
y为需要测试的轨迹样本,xi(i=1,2...n)为训练的轨迹样本,ai可理解为第i个训练样本对测试样本的贡献值,将以上公式改写为:
y=xa
其中a=[a1...an]t,x=[x1...xn],并且x1...xn和y都是n*m的矩阵(m>n);如果a是一个非奇异矩阵,可以这样得到a,
a=x-1y
否则,便这样得到a,
a=(xtx μi)-1xty
其中μ是一个很小的正数,i是一个单位矩阵;得到a之后,也即是求得了对应的a1...an各个系数的解,得到了第i个训练样本对测试样本的贡献值,这个值越大,也就间接说明了训练样本和测试样本相似度越高;
(5)fréchet距离求解轨迹直接相似度sim2
任选轨迹集中;两条轨迹p和q,p轨迹长度为m,q轨迹长度为n,将变量t约束到区间[0,1]内,α(t)和β(t)是运动位置描述函数;那么有α(0)=0,α(1)=n,β(0)=0,β(0)=m;用p(α(t))和q(β(t))分别表示t时刻p和q在各自轨迹上的空间位置:
采用合适的离散弗雷歇距离算法来刻画两条曲线之间的距离,并作为其弗雷歇距离;
(6)基于多相似度融合的轨迹聚类:
通过以上相似度计算方法,需要测试的每条轨迹都可以得到相应的前top-k条轨迹:
每次迭代从未聚类的轨迹集合(sunclu)中随机选择一条轨迹作为聚类中心轨迹tp,根据轨迹间的相似度从sunclu中选出与tp相似度较高的k-1条轨迹组成一个大小为k的轨迹集合snow,并将其添加到聚类集合sclu中,重复上述聚类操作直到sunclu中轨迹数(sunclu)不足k,即无法达到k聚类的条件为止。
步骤(5)所述采用合适的离散弗雷歇距离算法来刻画两条曲线之间的距离,并作为其弗雷歇距离,其实施过程如下:
1)待识别轨迹p可表示为
p={p(1),p(2),…,p(m)…,p(m)}
式中:p(m)=(xm,ym);m为轨迹p上的采样点的序号,m=1为起始采样点,m=m为末尾采样点;xm为第m个采样点的横坐标,ym为第m个采样点的纵坐标;横坐标表示的是轨迹采样点的经度,纵坐标表示的是轨迹点的纬度;
2)待识别轨迹q可表示为
q={q(1),q(2),…,q(n)…,q(n)}
式中:q(n)=(x′n,y′n);n为轨迹q上的采样点的序号,n=1为起始采样点,n=n为末尾采样点;x′n为第n个采样点的横坐标,y′n为第n个采样点的纵坐标,横坐标表示的是轨迹采样点的经度,纵坐标表示的是轨迹点的纬度;
3)计算轨迹p上各采样点到轨迹q上的各采样点之间的距离,得到距离矩阵d
式中:
4)找出距离矩阵d中的最大距离dmax=max(d)以及最小距离dmin=min(d),初始化目标距离f=dmin,并设置循环间隔
5)将距离矩阵d中小于或等于f的元素设置为1,大于f的元素设置为0,从而得到二值矩阵d′如下:
式中:
6)在二值矩阵d′中搜索一条满足以下条件的路径r:r的起点为d′11,终点为d′mn;路径在通过点d′mn后,其下一个通过点只能为d′(m 1)n、d′m(n 1)、d′(m 1)(n 1)中的一个;路径r中所有点的值都必须为1;用数学表达式的形式为,存在一条路径r={d'11,...,d′mn,...,d′mn},满足
d′11*...*d′mn*d'(m k)(n k)*...*d′mn=1
式中:1≤m≤m,1≤n≤n,1≤m k≤m,1≤n k≤n,k={0,1},k′={0,1}.
7)若在步骤6)中未找到满足条件的路径,则设置目标距离f=f r,之后重复步骤5)和6);若在步骤6)中找到满足条件的路径或者目标距离f=dmax,则进入下一步;
8)待识别轨迹p和待识别轨迹q之间的弗雷歇距离f=f;
9)通过弗雷歇距离可以得到两条轨迹点集之间的距离,距离越小,说明两条估计之间的相似度越高;距离越大,说明两条轨迹之间的相似程度越低,因此,对相似度s的定义如下:
式中:f为两条轨迹之间的弗雷歇距离。
本发明的有益效果:本发明充分考虑了应用稀疏表示的方法用于对轨迹数据的挖掘;同时有效地考虑了轨迹的时空特征并进行融合,获得一个最大限度地保留各个特征的有效判别信息,进而能更好地表示轨迹的内在特征,从而提高聚类效果。
附图说明
图1为本发明流程图。
图2为轨迹的弗雷歇距离示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作进一步说明。
(1)稀疏表示系数求解相似度sim1,把需要求解相似邻居的轨迹称之为为测试样本,数据集中除测试样本之外其他的轨迹表示为训练样本。基于稀疏表示下,得到训练样本对测试样本的表示能力;建立用户轨迹的矩阵形式如下:
其中每一行表示的是该轨迹上等时间间隔选取的m个轨迹点,每个轨迹点有v个属性,比如经度,纬度,速度,方向等,rm,v代表轨迹上第m个轨迹点的第v个属性值;
(2)矩阵轨迹数据做如下预先处理,稀疏表示形式如下:
β=a1α1 a2α2 … anαn
β为测试样本,αi为训练样本(i=1,2...n),ai为需要求解的系数。在稀疏表示中,最常见的是训练样本是过完备的,即一个k*n的样本,k与n的关系为:k>n,这种情况在稀疏表示里面最为常见。建立用户轨迹的矩阵数据时,轨迹上的取点数m是多于它的属性个数v的,所以首先要将原用户轨迹矩阵全部做转置处理
y=a1x1 a2x2 ...anxn
xi(i=1,2...n)即为转置后的轨迹矩阵t的表示;
其次,对轨迹矩阵做归一化处理,每个矩阵有n个属性,每个属性的取值范围不同,归一化后可以加快梯度下降求最优解的速度,也可能提高精度,降低计算时间复杂度。
(4)进行轨迹间的稀疏表示:
y=a1x1 a2x2 … anxn
y为需要测试的轨迹样本,xi(i=1,2...n)为训练的轨迹样本,ai可理解为第i个训练样本对测试样本的贡献值,我们可以将以上公式改写为:
y=xa
其中a=[a1...an]t,x=[x1...xn],并且x1...xn和y都是n*m的矩阵(m>n)。如果a是一个非奇异矩阵,我们可以这样得到a,
a=x-1y
否则,我们这样得到a,
a=(xtx μi)-1xty
其中μ是一个很小的正数,i是一个单位矩阵。得到a之后,也即是我们求得了对应的a1...an各个系数的解,得到了第i个训练样本对测试样本的贡献值,这个值越大,也就间接说明了训练样本和测试样本相似度越高。
(5)fréchet距离求解轨迹直接相似度sim2
任选轨迹集中;两条轨迹p和q,p轨迹长度为m,q轨迹长度为n,我们将变量t约束到区间[0,1]内,α(t)和β(t)是运动位置描述函数。那么有α(0)=0,α(1)=n,β(0)=0,β(0)=m。我们用p(α(t))和q(β(t))分别表示t时刻p和q在各自轨迹上的空间位置。
而fréchet距离实际是寻找一对这样的函数最小化p和q之间的最大距离。
基于以上弗雷歇的思想,本文采用合适的离散弗雷歇距离算法来刻画两条曲线之间的距离,并作为其弗雷歇距离,其具体实施过程如下:
1)待识别轨迹p可表示为
p={p(1),p(2),…,p(m)…,p(m)}
式中:p(m)=(xm,ym);m为轨迹p上的采样点的序号,m=1为起始采样点,m=m为末尾采样点;xm为第m个采样点的横坐标,ym为第m个采样点的纵坐标。横坐标表示的是轨迹采样点的经度,纵坐标表示的是轨迹点的纬度。
2)待识别轨迹q可表示为
q={q(1),q(2),…,q(n)…,q(n)}
式中:q(n)=(x′n,y′n);n为轨迹q上的采样点的序号,n=1为起始采样点,n=n为末尾采样点;x′n为第n个采样点的横坐标,y′n为第n个采样点的纵坐标。横坐标表示的是轨迹采样点的经度,纵坐标表示的是轨迹点的纬度。
3)计算轨迹p上各采样点到轨迹q上的各采样点之间的距离,得到距离矩阵d
式中:
4)找出距离矩阵d中的最大距离dmax=max(d)以及最小距离dmin=min(d),初始化目标距离f=dmin,并设置循环间隔
5)将距离矩阵d中小于或等于f的元素设置为1,大于f的元素设置为0,从而得到二值矩阵d′如下:
式中:
6)在二值矩阵d′中搜索一条满足以下条件的路径r:r的起点为d′11,终点为d′mn;路径在通过点d′mn后,其下一个通过点只能为d′(m 1)n、d′m(n 1)、d′(m 1)(n 1)中的一个;路径r中所有点的值都必须为1。
用数学表达式的形式为,存在一条路径r={d′11,...,d′mn,...,d′mn),满足
d′11*...*d′mn*d′(m k)(n k)*...*d′mn=1
式中:1≤m≤m,1≤n≤n,1≤m k≤m,1≤n k≤n,k={0,1},k′={0,1}.
7)若在步骤6)中未找到满足条件的路径,则设置目标距离f=f r,之后重复步骤5)和6);若在步骤6)中找到满足条件的路径或者目标距离f=dmax,则进入下一步;
8)待识别轨迹p和待识别轨迹q之间的弗雷歇距离f=f;
9)通过弗雷歇距离可以得到两条轨迹点集之间的距离,距离越小,说明两条估计之间的相似度越高;距离越大,说明两条轨迹之间的相似程度越低,因此,对相似度s的定义如下:
式中:f为两条轨迹之间的弗雷歇距离。
(6)基于多相似度融合的轨迹聚类:通过以上相似度计算方法,需要测试的每条轨迹都可以得到相应的前top-k条轨迹。具体过程如下:
每次迭代从未聚类的轨迹集合(sunclu)中随机选择一条轨迹作为聚类中心轨迹tp,根据轨迹间的相似度从sunclu中选出与tp相似度较高的k-1条轨迹组成一个大小为k的轨迹集合snow,并将其添加到聚类集合sclu中,重复上述聚类操作直到sunclu中轨迹数(sunclu)不足k,即无法达到k聚类的条件为止。
1.一种基于稀疏表示和fréchet距离融合的轨迹相似度计算方法,其特征是:包括如下步骤:
(1)稀疏表示系数求解相似度sim1,将需要求解相似邻居的轨迹表示为测试样本,数据集中除测试样本之外其他的轨迹表示为训练样本,建立用户轨迹的矩阵形式:
其中每一行表示的是该轨迹上等时间间隔选取的m个轨迹点,每个轨迹点有v个属性,rm.v′代表轨迹上第m个轨迹点的第v个属性值;
(2)对矩阵轨迹数据预先处理,稀疏表示形式如下:
β=a1α1 a2α2 … anαn
其中,β为测试样本,αi为训练样本(i=1,2…n),ai为需要求解的系数;
建立用户轨迹的矩阵数据时,轨迹上的取点数m多于它的属性个数v;因此将原用户轨迹矩阵全部做转置处理:
y=a1x1 a2x2 …anxn
xi(i=1,2…n)为转置后的轨迹矩阵t的表示;
(3)每个矩阵有n个属性,每个属性的取值范围不同,对轨迹矩阵做归一化处理;
(4)轨迹间的稀疏表示:
y=a1x1 a2x2 … anxn
y为需要测试的轨迹样本,xi(i=1,2…n)为训练的轨迹样本,ai可理解为第i个训练样本对测试样本的贡献值,将以上公式改写为:
y=xa
其中a=[a1…an]t,x=[x1…xn],并且x1…xn和y都是n*m的矩阵(m>n);如果a是一个非奇异矩阵,可以这样得到a,
a=x-1y
否则,便这样得到a,
a=(xtx μi)-1xty
其中μ是一个很小的正数,i是一个单位矩阵;得到a之后,也即是求得了对应的a1…an各个系数的解,得到了第i个训练样本对测试样本的贡献值,这个值越大,也就间接说明了训练样本和测试样本相似度越高;
(5)fréchet距离求解轨迹直接相似度sim2
任选轨迹集中;两条轨迹p和q,p轨迹长度为m,q轨迹长度为n,将变量t约束到区间[0,1]内,α(t)和β(t)是运动位置描述函数;那么有α(0)=0,α(1)=n,β(0)=0,β(0)=m;用p(α(t))和q(β(t))分别表示t时刻p和q在各自轨迹上的空间位置:
采用合适的离散弗雷歇距离算法来刻画两条曲线之间的距离,并作为其弗雷歇距离;
(6)基于多相似度融合的轨迹聚类:
通过以上相似度计算方法,需要测试的每条轨迹都可以得到相应的前top-k条轨迹:
每次迭代从未聚类的轨迹集合(sunclu)中随机选择一条轨迹作为聚类中心轨迹tp,根据轨迹间的相似度从sunclu中选出与tp相似度较高的k-1条轨迹组成一个大小为k的轨迹集合snow,并将其添加到聚类集合sclu中,重复上述聚类操作直到sunclu中轨迹数(sunclu)不足k,即无法达到k聚类的条件为止。
2.根据权利要求1所述的一种基于稀疏表示和fréchet距离融合的轨迹相似度计算方法,其特征是:步骤(5)所述采用合适的离散弗雷歇距离算法来刻画两条曲线之间的距离,并作为其弗雷歇距离,其实施过程如下:
1)待识别轨迹p可表示为
p={p(1),p(2),…,p(m)…,p(m)}
式中:p(m)=(xm,ym);m为轨迹p上的采样点的序号,m=1为起始采样点,m=m为末尾采样点;xm为第m个采样点的横坐标,ym为第m个采样点的纵坐标;横坐标表示的是轨迹采样点的经度,纵坐标表示的是轨迹点的纬度;
2)待识别轨迹q可表示为
q={q(1),q(2),…,q(n)…,q(n)}
式中:q(n)=(x′n,y′n);n为轨迹q上的采样点的序号,n=1为起始采样点,n=n为末尾采样点;x′n为第n个采样点的横坐标,y′n为第n个采样点的纵坐标‘横坐标表示的是轨迹采样点的经度,纵坐标表示的是轨迹点的纬度;
3)计算轨迹p上各采样点到轨迹q上的各采样点之间的距离,得到距离矩阵d
式中:
4)找出距离矩阵d中的最大距离dmax=max(d)以及最小距离dmin=min(d),初始化目标距离f=dmin,并设置循环间隔
5)将距离矩阵d中小于或等于f的元素设置为1,大于f的元素设置为0,从而得到二值矩阵d′如下:
式中:
6)在二值矩阵d′中搜索一条满足以下条件的路径r:r的起点为d′11,终点为d′mn;路径在通过点d′mn后,其下一个通过点只能为d′(m 1)n,d′m(n 1),d'(m 1)(n 1)中的一个;路径r中所有点的值都必须为1;用数学表达式的形式为,存在一条路径r={d′11,…,d′mn,…,d′mn},满足
d′11*…*d′mn*d′(m k)(n k)*…*d′mn=1
式中:1≤m≤m,1≤n≤n,1≤m k≤m,1≤n k≤n,k={0,1},k′={0,1}.
7)若在步骤6)中未找到满足条件的路径,则设置目标距离f=f r,之后重复步骤5)和6);若在步骤6)中找到满足条件的路径或者目标距离f=dmax,则进入下一步;
8)待识别轨迹p和待识别轨迹q之间的弗雷歇距离f=f;
9)通过弗雷歇距离可以得到两条轨迹点集之间的距离,距离越小,说明两条估计之间的相似度越高;距离越大,说明两条轨迹之间的相似程度越低,因此,对相似度s的定义如下:
式中:f为两条轨迹之间的弗雷歇距离。
技术总结