概要:大數據挖掘中最重要的是決定挖掘什么樣的知識,這是在數據的收集、處理、挖掘的整個過程中都需要認真考慮的問題。本文首先提出大數據挖掘的幾項策略,即盡量設想挖掘的場景,盡量多方面收集數據,盡量將數據整合,悉心觀察數據特征。之后結合自己在互聯網搜索中的大數據挖掘工作經驗,分享對這些策略的體會。最后介紹一個互聯網搜索中大規模日志數據挖掘的工作,展示大數據挖掘的威力,呈現大數據挖掘的挑戰。
1. “挖什么”與“怎么挖”
大數據技術涉及存儲、搜索、傳輸、計算、挖掘等多方面,本文只考慮大數據的挖掘。大數據挖掘旨在從大數據中挖掘出未知且有用的知識。通過挖掘,大數據的價值才得以體現,所以挖掘對大數據有著舉足輕重的意義。
大數據挖掘有兩個基本問題,即“挖什么(what to mine)”與“怎么挖(how to mine)”。前者決定從數據中抽取什么樣的信息,統計什么樣的規律,后者決定怎樣具體進行抽取與統計。前者是在數據的收集、處理、挖掘中都要考慮的問題,后者往往僅限于挖掘。“怎么挖”通常是數據挖掘研究的核心,但是“挖什么”在數據挖掘的應用中往往更為重要,因為它決定了挖掘結果的價值。在實際問題中,決定是挖金銀,還是挖銅鐵,比決定是用鋤頭挖,還是用鏟子挖更為關鍵。
2. 大數據挖掘的策略
本文總結了大數據挖掘中判斷“挖什么”的四項策略,即盡量設想挖掘的場景,盡量多方面收集數據,盡量將數據整合,以及悉心觀察數據特征。下面,結合自己在互聯網搜索中的大數據挖掘工作經驗,介紹對這些策略的體會。
盡量設想挖掘的場景
收集數據是數據挖掘的第一步,需要判斷記錄、采集哪些數據,這直接影響了能從數據中挖掘什么樣的知識。巧婦難為無米之炊,沒有某一方面的數據,也就無法從中進行相關的挖掘。但是,存儲、處理數據是有代價的,提高數據挖掘效率的關鍵也在于只記錄、采集有用的數據。所以,需要對收集數據的內容進行合理的判斷,這時,應該盡量設想挖掘的場景,在此基礎上將可能有用的數據全部記錄、采集下來。
某公司的工程師們開發了一個互聯網瀏覽器中的工具欄(toolbar)。用戶安裝了工具欄后,在瀏覽器中的操作,如點擊網頁鏈接,拖動鼠標等,都會被記錄下來。在得到用戶允許的條件下,這些數據會被傳送到該公司的云端服務器。工具欄記錄的用戶瀏覽器使用行為數據,可以用于互聯網搜索引擎等諸多方面。工程師們對工具欄記錄數據內容進行了精心的設計,考慮了各種可能的情況,希望收集的數據能支持多種挖掘任務。用戶的IP地址,網頁鏈接的點擊時間等都被記錄下來。然而,他們忘記記錄了一個重要的信息,使得到的數據不利于挖掘使用。原來,用戶關閉瀏覽器的時間沒有被記錄下來,從數據中無法判斷用戶何時結束了搜索或瀏覽行為。由于工程師們沒有很好的想象如何使用數據,給之后的挖掘帶來了一定的困難。
判斷收集什么樣的數據牽涉到如何認識世界這一哲學問題。哲學家康德的一個核心觀點是:我們所認識的世界是我們用自己擁有的理論對自己觀察的現象做出的解釋。紙上的一條墨跡,數學家把它看成是平面上的直線,中國人把它看成漢字的“一”。其實,我們想怎樣看世界決定了我們看到的世界是什么樣的。只有當對數據挖掘的內容有比較清晰的想法的時候,才能對數據的收集范圍有比較明確的界定。所以,盡量設想挖掘場景是必不可少的。
盡量多方面收集數據
事實上,我們很難事先窮盡所有可能的挖掘場景,所以也就很難完全準確地判斷應該收集哪些數據,不應該收集哪些數據。作為彌補措施,可以考慮在存儲、處理能力允許的條件下,盡量多方面收集數據。這是另一項策略。多收集數據總有可能對數據挖掘產生某些幫助。
回到工具欄的例子。工具欄記錄的用戶互聯網訪問的行為數據,能大大幫助搜索引擎提高對用戶的理解,提高搜索結果的相關性。研究發現,從用戶在瀏覽器中的簡單操作中都可以發現許多有用的信息,幫助推斷用戶的興趣、意圖等[1]。比如,從用戶在瀏覽器中的鼠標移動軌跡中可以估計出他對網頁的關注范圍,從用戶對網頁鏈接的點擊可以猜測出他的信息需求,從用戶對窗口的關閉動作可以推測出他的興趣轉移。
盡量將數據整合
讓數據發揮更大作用的辦法是將相關數據整合在一起,用于挖掘。數據整合有助于幫助了解事物的全貌,發現未知的關系,提升預測的準確率。局部數據只是“羅之一目”,而整體數據才是“彌天大網”。
圖1所示為互聯網搜索中的用戶行為模型。該模型雖簡單,但屬于基本模型,互聯網搜索中用戶的行為數據都可以納入其中,可以對用戶的行為進行描述。現實中,該模型的數據需要從多個數據源中獲取,并通過整合處理而得到。
互聯網搜索中首先有許多用戶。每個用戶會多次使用搜索引擎,每次使用完成一個查詢任務,構成一個會話(session),每個會話又由多個查詢組成。每個查詢中,用戶提交查詢語句,搜索引擎返回結果,用戶根據其內容判斷網頁的相關性,點擊相關網頁的鏈接,瀏覽網頁。瀏覽過程中,用戶可能按照網頁的鏈接,瀏覽多個網頁,之后返回搜索結果,也可能直接離開。用戶在瀏覽器中的動作,可以通過工具欄記錄下來,傳送給搜索引擎,但是,基于效率等考慮,搜索引擎返回的結果往往不會被工具欄記錄。相反,搜索的結果會被搜索引擎記錄下來。所以,將客戶端與搜索引擎端的數據進行整合變成互聯網搜索數據挖掘工作中的一項重要任務。瀏覽器記錄的用戶ID與搜索引擎記錄的用戶ID往往不一致,將同一用戶的不同ID聯系起來并非易事。
圖 1. 用戶搜索行為的模型
悉心觀察數據特征
決定從數據中挖掘什么,首先需要對數據有深入的了解,需要對數據進行認真細致地觀察。只有對數據有深刻的認識,才有可能從中挖掘出深層的知識。AOL隱私泄露事件是一個著名的“人肉數據挖掘”成功事例,說明只要細致觀察與推理,我們可以從數據中發現許多事情。
2006年AOL公司,為了促進研究,發布了搜索查詢數據集,包括65萬用戶三個月中在AOL搜索提交的2千多萬查詢。為了保護用戶隱私,AOL將用戶的個人信息刪除,對每個用戶賦予了一個ID。紐約時報的一個記者對AOL數據進行了觀察、分析,利用電話號碼簿,很快確定出ID為4417749的用戶是居住在佐治亞州的60歲的單身婦女Thelma Arnold[3]。具體地,這位用戶提交了“landscapers in Lilburn, Ga”的查詢,從此可以推斷此人大概住在佐治亞州Lilburn。該用戶又提交了多個含有Arnold的人名查詢,可以揣測此人大概姓Arnold。該用戶又搜了“60 single men”,可以猜想此人可能是60歲左右的婦女,等等。
AOL事件說明了數據挖掘中保護用戶隱私問題的重要性(本文不討論隱私保護問題),同時也說明了認真觀察數據,可以挖掘到許多深層的信息。
3. 大數據挖掘事例
互聯網搜索引擎,索引幾十億以上的網頁,每天有幾十億次查詢,收集幾十TB的日志數據。這些數據是典型的大數據。
下面介紹一個互聯網搜索日志數據挖掘例子:查詢副主題挖掘。這是與微軟前同事等的工作[4]。互聯網搜索中的查詢,或者表示多個語義,或者表示事物的多個側面,統稱為副主題(subtopic)。前者的例子,如圖2所示, 查詢“harry shum”意味著用戶可能要搜索微軟的副總裁,也可能是搜索美國的演員。后者的例子,如查詢“xbox”意味著用戶可能想找游戲攻略,也可能想購買游戲機。如果能判斷查詢的副主題,那么可以將該搜索結果進行聚類,把同一個副主題的網頁放在一起,幫助用戶迅速找到想要找的所有信息。根據副主題對搜索結果聚類是一個熱門研究課題。傳統的方法根據搜索結果中網頁摘要的相似度對網頁進行聚類,效果并不理想。我們提出的方法事先從搜索日志數據中挖掘出查詢的副主題,用戶搜索時,根據挖掘好的副主題,對查詢結果進行聚類,效果提升顯著。副主題挖掘利用了用戶搜索的兩個現象。
圖2. 查詢“harry shum”有兩個副主題(subtopic)
我們觀察到的第一個現象是“同一查詢同一副主題(one subtopic per search)”。用戶每次進行查詢時,往往只考慮一個副主題,要搜副總裁的Harry Shum,就不會搜演員的Harry Shum,反之亦然。這一點會反映在用戶的日志點擊數據上。在同一次搜索中,用戶點擊的多個網頁鏈接往往集中在同一個副主題上。將某一查詢的大量的點擊數據匯集起來,根據鏈接是否常在同一次搜索中被共同點擊,可以將它們聚類,就可以挖掘到該查詢的副主題,這時,鏈接的每個類對應一個副主題。
第二個現象是“加關鍵詞明確副主題(Subtopic Clarification by Additional Keyword)”,也可以用于副主題挖掘。用戶在查詢時,會主動明確副主題,在主查詢詞的后面(或前面)加上關鍵詞,如“harry shum microsoft”,“harry shum jr”。屬于同一副主題的網頁鏈接往往在被加同樣關鍵詞的查詢中點擊,根據鏈接是否在加同樣關鍵詞查詢中被點擊,可以將它們聚類,得到的類也對應于副主題。
我們的方法能夠根據以上兩個現象挖掘出查詢的每個副主題,副主題由網頁鏈接、以及附加關鍵詞表示。利用特殊的數據結構,可以將Bing的三個月日志數據在一天內進行一次高效的挖掘。對于高頻查詢,可以得到非常精準的挖掘結果(詳見[4])。可以看出,大數據確實能夠發揮巨大作用。
另一方面,我們的方法對低頻查詢無法適用,因為沒有足夠的點擊數據,也就是說會遇到長尾挑戰[5]。用戶的行為數據大多遵循冪率分布(power law distribution),現在基于統計的數據挖掘方法對尾部數據依然是束手無策。
4. 總結
大數據挖掘關鍵是決定挖什么,這比決定怎么挖更為重要。收集數據時,應該盡量設想挖掘的場景,盡量多方面地記錄、采集數據;收集數據后,應該盡量將數據整合在一起;數據挖掘前,應該悉心觀察數據,以幫助判斷挖掘什么樣的知識。只有這樣,大數據挖掘的價值才能得以體現。
大數據挖掘極具威力,但也有局限性,會遇到長尾挑戰。結合事先給定的知識進行挖掘,或許是解決長尾挑戰的一條出路。紐約時報記者能從搜索查詢數據中挖掘出用戶的身份,也是因為用了基于常識的推理。機器要變得具有同樣的智能,需要采用相同的手段。
大數據時代剛剛開始,相信今后在各個領域,各種應用中,大數據挖掘都會推動創新,對技術發展帶來巨大影響。這一點確實令人振奮。
大家都想一想從自己擁有的數據中可以挖掘出什么樣的金子吧!