SDTW Formal Xuehan Ye 2016.04.20
Background
Point Radio-map pos signal feature (x1,y1) AP1:r1 (mean RSS strength of [point1,AP1] in 2 mins) AP2:r2 ... APn:rn (x2,y2) (xm,ym) pos signal feature (x1,y1) AP1:r1 (mean RSS strength of [point1,AP1] in 2 mins) AP2:r2 ... APn:rn (x2,y2) pos signal feature (x1,y1) AP1:r1 (mean RSS strength of [point1,AP1] in 2 mins) AP2:r2 ... APn:rn wait about 2 mins collect RSS signals
Point Radio-map pos signal feature (x1,y1) AP1:r1 (mean RSS strength of [point1,AP1] in 2 mins) AP2:r2 ... APn:rn (x2,y2) (xm,ym) predicted pos ground truth The difference between the online vector and this offline vector is smallest.
Point Radio-map Disadvantages: 1) laborious efforts to calibrate a fine-grained radio-map 2) the locating result inaccuracy and not robust problems due to random signal strength (RSS) noises. collect RSS signatures along indoor paths utilize sequence matching to enhance the location robustness
Sequence Radio-map Problems: 1) indoor path combinational explosion 2) random RSS loss during movement 3) moving speed and direction disparity during online and offline phases An undirected graph model (Trace-graph) for efficiently calibrating and storing sequence-type radio-map. Collaborative filter for data clean An efficient sub-sequence dynamic time warping (SDTW) algorithm.
Offline Train
RSS Sequence Collection pos signal feature [x1,x2; y1,y2] AP1:[r11,r12,r13,r14,r15] (r11 is not the mean value) AP2:[r21,r22,r23,r24,r25] ... APn:[rn1,rn2,rn3,rn4,rn5] pos:[x1+(x2-x1)/5*0,...,x1+(x2-x1)/5*4; y1+(y2-y1)/5*0,...,y1+(y2-y1)/5*4] [x3,x4; y3,y4] AP1:[r11,r12,r13,r14,r15,r16] AP2:[r21,r22,r23,r24,r25,r26] APn:[rn1,rn2,rn3,rn4,rn5,rn6] pos:[x1+(x2-x1)/6*0,...,x1+(x2-x1)/6*5; y1+(y2-y1)/6*0,...,y1+(y2-y1)/6*5] pos signal feature [x1,x2; y1,y2] AP1:[r11,r12,r13,r14,r15] (r11 is not the mean value) AP2:[r21,r22,r23,r24,r25] ... APn:[rn1,rn2,rn3,rn4,rn5] pos:[x1+(x2-x1)/5*0,...,x1+(x2-x1)/5*4; y1+(y2-y1)/5*0,...,y1+(y2-y1)/5*4]
Collaborative Filtering 1st fill fixed time's fill 2nd fill T1 T2 T3 T4 T5 AP1 -85 -82 -83 -81 AP2 -70 -72 -74 -77 -78 ... APn -50 -48 -49 pos signal feature [x1,x2; y1,y2] AP1:[r11,r12,r13,r14,r15] (r11 is not the mean value) AP2:[r21,r22,r23,r24,r25] ... APn:[rn1,rn2,rn3,rn4,rn5] pos:[x1+(x2-x1)/5*0,...,x1+(x2-x1)/5*4; y1+(y2-y1)/5*0,...,y1+(y2-y1)/5*4] [x3,x4; y3,y4] AP1:[r11,r12,r13,r14,r15,r16] AP2:[r21,r22,r23,r24,r25,r26] APn:[rn1,rn2,rn3,rn4,rn5,rn6] pos:[x1+(x2-x1)/6*0,...,x1+(x2-x1)/6*5; y1+(y2-y1)/6*0,...,y1+(y2-y1)/6*5] T1 T2 T3 T4 T5 AP1 -85 -82 -83 -81 AP2 -70 -72 -74 empty -78 ... APn -50 -48 -49 T1 T2 T3 T4 T5 AP1 -85 -83 -82 -81 AP2 -70 -72 -74 -78 ... APn -50 -49 if |-84-(-80)|>=T empty if |-84-(-80)|<T Avg -82 T1 T2 T3 T4 T5 AP1 -85,[ ],-83,-82,-81 AP2 -70,-72,-74,[ ],-78 ... APn -50 -50,[ ],-49,-50 -80? -84? polynomial fitting in row a weighted interpolation based on the APs' similarity in column
Collaborative Filtering a weighted interpolation based on the APs' similarity in column T1 T2 T3 T4 T5 AP1 -85 wait to be filled -83 -82 -81 AP2 -70 -72 -74 -78 ... APn -50 -49 T1 T2 T3 T4 T5 AP1 -85 -83 -82 -81 AP2 -70 -72 -74 -78 ... APn -50 -49 -80 top-K most similar APs AP1(2)=(S(AP1,AP2)*(-72)+S(AP1,APn)*(-50)+...) /(S(AP1,AP2)+S(AP1,APn)+...) S(AP1,APn)=(AP1*APn)/(||AP1||*||APn||) S(AP1,AP2)=(AP1*AP2)/(||AP1||*||AP2||) top-K most similar rows of AP1
Construct Trace-graph 3 path segment 1 2 split point 4
Construct Trace-graph vertex signal feature connected vertex 1 AP1:[r11,...,r1m1] (r11 is not the mean value) AP2:[r21,...,r2m1] ... APn:[rn1,...,rnm1] pos:[x1+(x2-x1)/m1*0,...,x1+(x2-x1)/m1*(m1-1); y1+(y2-y1)/m1*0,...,y1+(y2-y1)/m1*(m1-1)] {2,3,4} e1 represents adjacency of path segment 3 v2 path segment 1 2 4
Online Locating
Online RSS Sequence Collection moving window length T1 T2 T3 T4 T5 AP1 -88 -86 -87 AP2 -61 -62 -68 -64 -65 ... APn -70 -73 -69 -72 T1 T2 T3 T4 T5 T6 AP1 -88 -86 -87 AP2 -61 -62 -68 -64 -65 -66 ... APn -70 -73 -69 -72 maintain moving window e.g. l=5 (time points)
Candidate Vertex Set Extraction AP1 -88 -86 -87 AP2 -61 -62 -68 -64 -65 ... APn -70 -73 -69 -72 vertex signal feature connected vertex 1 AP1:[r11,...,r1m1] (r11 is not the mean value) AP2:[r21,...,r2m1] ... APn:[rn1,...,rnm1] pos:[x1+(x2-x1)/m1*0,...,x1+(x2-x1)/m1*(m1-1); y1+(y2-y1)/m1*0,...,y1+(y2-y1)/m1*(m1-1)] {2,3,4} 2 3 4 vertex signal feature connected vertex efficient AP list 1 AP1:[r11,...,r1m1] (r11 is not the mean value) AP2:[r21,...,r2m1] ... APn:[rn1,...,rnm1] pos:[x1+(x2-x1)/m1*0,...,x1+(x2-x1)/m1*(m1-1); y1+(y2-y1)/m1*0,...,y1+(y2-y1)/m1*(m1-1)] {2,3,4} EAL1 2 3 EAL2 4 EAL3 e.g.efficient AP list(EAL0):{AP1,AP2,AP4,AP8...} if J>T, vertex is added into cadidate vertex set(CVS). To evaluate AP list similarity, Jaccard similarity score is used. J(EAL0,EAL1)=||EAL0∩EAL1||/|||EAL0| If APi can be detected, it is a efficient AP.
Candidate Vertex Set Extraction signal feature connected vertex 2 AP1:[r11,...,r1m2] (r11 is not the mean value) AP2:[r21,...,r2m2] ... APn:[rn1,...,rnm2] pos:[x1+(x2-x1)/m2*0,...,x1+(x2-x1)/m2*(m2-1); y1+(y2-y1)/m2*0,...,y1+(y2-y1)/m2*(m2-1)] {3,4} 3 SF3 {2,4} 4 SF4 {2,3} 3 3 1 2 2 4 4
Candidate Sequence Set Generation vertex set signal feature [2,3] AP1:[r11,...,r1m2,r11',...,r1m3'] (r11 is not the mean value) AP2:[r21,...,r2m2,r21',...,r2m3'] ... APn:[rn1,...,rnm2,rn1',...,rnm3'] pos:[x1+(x2-x1)/m2*0,...,x1+(x2-x1)/m2*(m2-1), x1'+(x2'-x1')/m3*0,...,x1'+(x2'-x1')/m3*(m3-1); y1+(y2-y1)/m2*0,...,y1+(y2-y1)/m2*(m2-1), y1'+(y2'-y1')/m3*0,...,y1'+(y2'-y1')/m3*(m3-1)] [2,4] [SF2,SF4] [3,4] [SF3,SF4] 3 3 2 2 4 4
A complicated example In implement, length = 3 or 4. 1) often is longer than moving window 2) reduce computational complexity Get trace-graph WarpMap. Green vertexes have AP list similar with that in the moving window are added to candidate vertex set (CVS). Candidate paths of length 3 are generated from CVS to form candidate sequence set (CSS).
Subsequence Dynamic Time Warping X:=(x1,x2...xN) NA*N-matrix Y:=(y1,y2...yM) NA*M-matrix NA is the length of predefinited AP set size d(n,m):=d(xn,ym)=norm(xn-yn) xn is a vector, whose length is NA. Other functions can also be used for cost calculation, such as cos delta=1-[dot(xn,ym)/(||xn||*||ym||)].
Subsequence Dynamic Time Warping Accumulated cost matrix Xt: one sequence in collected online moving window Ys: one sequence in CSS The matched end point between Xt and Ys is determined by Ds: Set the boundary conditions of warping distance matrix:: Then the warping distance matrix is produced as:
Subsequence Dynamic Time Warping Forward SDTW Reverse SDTW if D1<=D1' pos=forward pos else pos=reverse pos vertex set reverse signal featur reverse SDTW distance rb* ra* [3,2] AP1:[r1m3',...,r11',r1m2,...,r11] AP2:[r2m3',...,r21',r2m2,...,r21] ... APn:[rnm3',...,rn1',rnm2,...,rn1'] pos:[x1+(x2-x1)/m3*(m3-1),...,x1+(x2-x1)/m3*0, x1'+(x2'-x1')/m2*(m2-1),...,x1'+(x2'-x1')/m2*0; y1+(y2-y1)/m3*(m3-1),...,y1+(y2-y1)/m3*0, y1'+(y2'-y1')/m2*(m2-1),...,y1'+(y2'-y1')/m2*0] D1' b1' a1' [4,2] [SF2,SF4]' D2' b2' a2' [4,3] [SF3,SF4]' D3' b3' a3' vertex set signal feature SDTW distance b* a* [2,3] AP1:[r11,...,r1m2,r11',...,r1m3'] (r11 is not the mean value) AP2:[r21,...,r2m2,r21',...,r2m3'] ... APn:[rn1,...,rnm2,rn1',...,rnm3'] pos:[x1+(x2-x1)/m2*0,...,x1+(x2-x1)/m2*(m2-1), x1'+(x2'-x1')/m3*0,...,x1'+(x2'-x1')/m3*(m3-1); y1+(y2-y1)/m2*0,...,y1+(y2-y1)/m2*(m2-1), y1'+(y2'-y1')/m3*0,...,y1'+(y2'-y1')/m3*(m3-1)] D1 b1 a1 [2,4] [SF2,SF4] D2 b2 a2 [3,4] [SF3,SF4] D3 b3 a3 CSS [a1...b1] D1=min{D1,D2,D3} forward pos(1:2,b1) reverse pos(1:2,b1')
Online RSS Sequence Collection reverse predicted path predicted pos forward predicted path
Experiment
Experiment
Experiment The number of AP is very important. 1) delete similar AP by MAC address, such as Hulu, DIVI 2) remain a part of APs whose RSS strength is relatively strong
Experiment
Thank you! Xuehan Ye 2016.04.12