(1)移動使用者原始軌跡資料->抽取位置序列->對映為具有時間和地理位置資訊的序列。
解決移動使用者軌跡資料的稀疏性導致相似度演算法效率低下的問題。
(2)fp-tree頻繁模式樹的加權頻繁模式挖掘移動使用者軌跡的頻繁序列。
解決由於使用者軌跡隨機性和繁雜性而導致的演算法效率低下的問題。
(3)通過改進lcss演算法
結合時間和地理因素衡量使用者軌跡的相似性。
\[dist(p_^, p_^) = \sqrt^ - p_^)^ + (p_^ - p_^)^}
\]其中\(dist(p_^, p_^)\)表示使用者a和b在某時間段內的距離,\(p_^, p_^\)表示a和b在k時刻的位置,\(p_^ - p_^\)表示使用者a和使用者b在x維度的位置,同理,\(p_^ - p_^\)表示使用者a和b在y維度上的位置。因此歐式距離為:
\[eu = \sum\limits_^ dist(p_^, p_^)
\]\[d(i, j) = ||p_, q_|| + \min \, d, d\}
\]其中\(||.||\)為兩點座標的二範數,也就是兩點之間的歐式距離。\(d(i,j)\)一般也採用歐氏距離,或者其他路徑函式也行。因此兩條軌跡之間的相似度為:
\[dtw(p,q) = f(m,n)
\]原理:假設現在有兩個長度分別為n何m的時間序列資料a和b,那麼最長公共子串行的長度為:
\[lcss(a,b) = \left\
0 & \textrm\\
1+lcss(a_, b_) & \textrm, b_) < \gamma$}\\
\max(lcss(a_, b_), lcss(a_, b_)) & \textrm
\end \right.
\]其中,\(\gamma\)為乙個成員相似閾值,\(t=1,2,...,n\);\(i=1,2,...,m\)。基於上述公式,最長公共子串行的相似度公式為:
\[d_ = 1 - (lcss(a,b)) / min(len_, len_)
\]4.1 抽取位置序列
\[tr_ = \, t_), (l_, t_), ..., (l_, t_), ..., (l_, t_)\}
\]其中\((l_, t_)\)表示使用者出現在某個基站的位置\(l_\)對應的時間\(t_\)。
\[tr_ = \, l_, t_, t_), (l_, l_, t_, t_), ..., (l_, l_, t_, t_), ..., (l_, l_, t_, t_)\}
\]其中序列\((l_, l_, t_, t_)\)表示移動使用者在時刻\(t_\)出現在基站\(l_\),然後在時刻\(t_\)離開基站\(l_\)前往基站\(l_\)。
4.2 採用fp-growth演算法挖掘移動使用者軌跡的頻繁序列
4.3 基於改進lcss的移動使用者軌跡相似性查詢演算法
\[col = \frac^ \sum\limits_^ (\delta t - |t_(u) - t_(v)|) \delta (l_(u), l_(v))}^ \sum\limits_^ (\delta t - |t_(u) - t_(v)|)}
\]
其中,$\delta t$為精度(一般設為1個小時),$t_(u)$表示移動使用者u在某乙個時間精度內到達某乙個基站$l_(u)$的時刻,$t_(v)$表示移動使用者v在某乙個時間精度內到達某乙個基站$l_(v)$的時刻,$\delta (l_(u), l_(v))$是乙個重合性公式,當兩個使用者的基站重合時,值為1,否則為0。
\[使用者重合度 = a \cap b / a \cup b *100%
\]\[d_ = \frac, len_)} \times col\]即
\[d_ = \frac, len_)} \times \frac^ \sum\limits_^ (\delta t - |t_(u) - t_(v)|) \delta (l_(u), l_(v))}^ \sum\limits_^ (\delta t - |t_(u) - t_(v)|)}
\]其中,公式的第一部分表示使用者u和使用者v一天的最長公共子串行,第二部分表示在每乙個時間精度下,兩位使用者在鄰近時間相同的地理位置的比例。
4.4 改進lcss演算法與lcss演算法的優缺點
參考:
1、lcss**:
2、基於改進lcss的移動使用者軌跡相似性查詢演算法研究:
4、部落格之使用者重合度:
演算法 最長公共子串行
好久沒做演算法題了,現在發現自己的演算法能力非常薄弱,所以特意練練,順便做個筆記方便以後檢視。今天整理一下最長公共子串行,最長公共子串行的問題常用於解決字串的相似度,是乙個非常實用的演算法,作為碼農,此演算法是我們的必備基本功。最長公共子串行,是指兩個字串可具有的長度最大的公共的子串行。聽著好像有點...
演算法 最長公共子串行
題目 給定兩個字串 text1 和 text2,返回這兩個字串的最長公共子串行的長度。乙個字串的 子串行 是指這樣乙個新的字串 它是由原字串在不改變字元的相對順序的情況下刪除某些字元 也可以不刪除任何字元 後組成的新字串。例如,ace 是 abcde 的子串行,但 aec 不是 abcde 的子串行...
最長公共子串行 最長公共子串
1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...