利用序列模式挖掘鎖定黑幫據點
11月漫步在香港夜晚的街頭,一絲晚秋的涼意,悄悄從領口沁入印著章魚貓logo的衛衣。
乘搭末班車回到自己的小窩,不知已經是多少次。邵爾摩斯背著電腦包,疲倦地又懊惱地埋怨自己為什麼又一次忘記把那本厚重的 Distributed Algorithms 從包里拿出來再回家了。
「年輕人,請問旺角警署怎麼走?」(自動將粵語解碼為普通話,後同)
邵爾摩斯一驚,差點撞到這個一秒鐘前還不在視野中的問路人身上。定睛一看,是個打扮入時的50代老婦人。旺角警署,不就在街對面嗎?
「我帶你去吧,順路的。」邵爾摩斯看著婦人手裡拖著的行李箱,忽然起了善心。事實上話剛出口他立刻就開始後悔多此一舉浪費自己的時間。嘛,人總是會偶爾做出一些試圖感動自己虛偽的善良心的舉動,只是這個時間太匪夷所思了。
警署。
「阿良啊,媽媽給你送被子和換洗衣服。」不知道什麼時候,原本是自己在帶路,結果突然發現自己出現在警署里了。局促的辦公室里,幾個刑警模樣的人忙碌焦灼的樣子,而剛才的婦人則拉著一個年輕警官的手。哦,眼前是一對母子之間的感人橋段:看來是忙著辦案無法回家的阿sir的媽媽給兒子送溫暖來了。邵爾摩斯突然覺得喉嚨有點緊繃,於是轉身想走。
「同學,先坐一會兒吧,時間晚了不安全,等會兒我出去巡邏送你回家。」名為「阿良」的警官叫住了我們的邵同學。
在等待的這段時間,邵同學發動特技瞬間get到了這裡忙碌的原因。(請原諒導演決定生硬地切入到主題,畢竟讀到這裡你們也都感覺到了寫小說不是我的強項:)
原因就是這張圖:
在地圖旁邊的白板上,還有一張這樣的記錄:
「字好醜」是邵爾摩斯的第一感想,第二感想就是,為什麼線人可以跟蹤那兩個都不知道名字的混子那麼久。對,就是腩爺和光棍狗中間那兩個問號哥。為了方便,暫時稱他們為二哥和三哥。
線人的情報指出,這是一個非常狡猾的犯罪團伙,主要經營的業務是走私某種國家保護的兩棲類動物,據說其基因中存在某種跨越時間維度方式的信息編碼,會對周圍空間造成大約1秒鐘的時空波動,坊間俗稱「+1s」。出於眾所周知的原因,市場價格很高。目前來看,這種珍稀動物慘遭不法分子的毒手,如今已經幾近滅絕。為了掩人耳目,這群走私團伙可謂狡兔三窟,地圖中標示出來的地點都是線人們用鮮血換來的情報。白板上的記錄則是線人們最近一段時間一直跟蹤團伙目標人物的行蹤。
據可靠情報,今晚會有一大筆交易,而且交易會在1小時內結束,目前的警力不足以搜查所有的可疑地點,而請求支援來不及了,最多只能去兩個點。
「陳sir,警司話全權交俾你決斷,兄弟們點做?」(翻譯機好像快沒電了)
「......」
邵爾摩斯突然很困,為了讓阿良可以儘快收工送自己回家,他默默地看著地圖和白板,拿出草稿紙和筆演算了起來。嗯,這其實不就是個典型的Sequential Pattern Mining問題嗎?主要的思路是發現最高頻出現的移動模式,但是想要定位最終的窩藏地點還需要一些額外的信息...不過事不宜遲,先動手算起來再說。
首先,在移動序列中出現次數太少的地點絕無可能是窩藏地點。因為如果真的是窩藏地點,那麼至少需要去兩次:一次去確認情況,第二次才夾帶貨物到存放地點。這也是卧底冒著生命危險套的的情報。邵爾摩斯把白板上的記錄稍微整理了一下:
排除掉所有包含出現頻次小於2次的地點的序列之後,範圍縮小了:
邵爾摩斯拿起一隻馬克筆,「刷刷刷」三筆劃掉了三個地點,同時變綠的還有警長的臉。
「你搞什麼鬼?」警長咆哮。(翻譯機恢復正常)
(在此略過邵同學向警長解釋他在幹什麼,警長在同僚的勸阻下沒有毆打邵同學,以及最終警署里所有人明白了目前的狀況的若干分鐘)
「然後呢?」警長兩眼放光。
「接著,我們需要生成頻次大於等於2的所有可疑地點組成的2地點序列組合,對這些組合再進行一次篩選,帥選標準依然定位頻次大於等於2。」邵爾摩斯心中默默鄙視了一下這個前倨後恭的警長。
這樣,以此類推,就在前一步的基礎上得到了所有滿足最小頻次條件的2地點序列:
「這個序列在地圖上的反映是什麼呢?」阿良安頓好母親,向邵爾摩斯問道。
「你看——」邵爾摩斯又在地圖上畫了幾筆:
「橙色圈起來的就是嫌疑相對比較大的點。」邵爾摩斯推了推眼鏡,同時伴隨著清脆的聲音蓋上了筆蓋——想不到文具還是挺新的。
「這麼說,還真有可能在我們轄區?」警長盯著那個被圈起來的「6」苦惱地揪著自己的頭髮,喉嚨里發出窒息般的咕嚕聲,「有沒有可能再縮小一點範圍?這樣我也好跟港島那邊的同事溝通啊。」
「喏,你過來看。」邵爾摩斯一邊為警力的匱乏感到無奈,一邊叫警長過來看進一步的計算結果。
「咦,這是什麼?」阿良的媽媽不知道什麼時候湊了過來。
「這個是包含三個可疑地點的序列」邵爾摩斯撓了撓頭,順手又劃掉了5和13這兩個沒有被包含進來的點。為了便于思考,邵爾摩斯重新畫了一張圖,並把寫有序列的便利貼貼在了圖上。
對了,這個時候需要看一下這些序列能得出什麼樣的「因果關係」?邵爾摩斯沉思片刻,列出一張表格,其中閾值設定為50%的confidence:
「這是什麼意思啊?」警長一臉便秘的表情。
「你看,從前面發現的高頻3地點序列,可以提取一些類似『因果』關係的假設。譬如我們假設,去了1地點之後一定會去11的。通過數據發現,符合這個假設的只有2條,佔5條包含1的序列的2/5」邵同學耐心地解釋,戳了戳白板:
「所以,」邵爾摩斯總結道,「我們可以得到以下規律:」
- 去過地點1的嫌疑人,最後一定會再回到地點1。
- 去過地點11的嫌疑人,一定會去地點1.
- 去過地點3的嫌疑人,最後一定會回到地點4,反過來也成立。
- 去過地點6的嫌疑人,有57%的把握認為他會去地點7;反過來,這個把握是60%。
- 去過地點7的嫌疑人,有60%的把握認為他會去地點8,也有同樣的把握認為他會最終再回到7.
「接下來就是你的工作了,警長」邵爾摩斯看了看自己的草稿紙,不知不覺間已將變成了這樣:
「報告警長,你看!」阿良不知道什麼時候依照那幾條結論,在地圖上做了相應的標記:
「What the h...」警長一臉懵逼。
「阿良做的好。」邵爾摩斯拍了拍他的肩膀,開始了自己的最終陳述。
「我判斷,貨物的準備主要在6,7,8三個地點進行,同時為了掩人耳目,準備了三個倉庫,真可謂是狡兔三窟。同時,這伙撲街對最終的交易地點選擇非常謹慎,派了兩批人馬分別進行確認。不過,這反而給了我們機會。看,最後的交易地點一定就在十字的交叉處。警長,你可以開始行動了。」
「呵呵呵,想不到啊想不到,」警長突然變了一副面孔,一改剛才的懵逼之相,凶神惡煞起來,「這都被你發現了,那麼說明我是黑幫的卧底這件事你也該知道咯?」說罷,掏出手槍,指著邵爾摩斯。毫無通常反派的長篇大論,直接開槍了。
「砰砰砰!」
三顆子彈在空中飛行著,突然,每一顆子彈變成了一個字,形成了一個站名:「旺角東」。接著,以三個字為中心,周邊的地鐵車廂開始逐漸浮現,最終響起到站提示音。
邵爾摩斯,啊不,工常邵同學發現自己又在末班地鐵上做了個白日夢。搖了搖頭,忍不住吐槽自己是現實版的Walter Mitty...
走出地鐵站,等紅燈。
一個老婦人走過來,停下,轉向我。
「年輕人,請問旺角警署怎麼走?」
(全文完)
推薦閱讀: