最近在公司分享了Google的大數據背景下的一系列論文所誕生的強大技術好設計思路
GPS/MapReduce和BigTable作爲第一代的技術背景
隨着社交網絡的發展,2010年,Google發佈代號爲Caffeine的新一代搜索引擎技術,來支持增量索引更新(幫組Google更好的收集信息(索引)而不是給信息排序。Google Caffeine給網絡開發與SEO帶來相當大的衝擊),以及Pregel這種圖形數據庫模型的計算思路
而最近發佈的蜂鳥(Hummingbird)再一次更新了技術到另外一個層次高度。
最新的一代,相比之前有哪些差異,有哪些突出優點呢:
1:解決的問題
隨着搜索查詢變得更加複雜,傳統的Boolean算法(一種基於關鍵字的搜索算法)開始惡化,因爲現在搜索結果不僅要與字詞匹配,還要與概念和意義相匹配
默認:搜索時還要考慮上下文,搜索人的時間、年齡、性別、地域、性格、愛好,顯然複雜多了。
2:搜索算法的意義
給每一次搜索請求從數十億網頁和信息進行排序,以獲取最佳答案。簡單來說,搜索引擎算法就是搜索網絡中的資源,然後在服務器中建立索引,供快速查詢的算法
起始:就是針對海量的數據提供一種快速的獲取相應的預期數據的一種處理思路
3:是否傳統的PageRank算法已經OutDate了
PageRank,網頁排名,是一種由搜索引擎根據網頁之間相互的超鏈接計算的技術,而作爲網頁排名的要素之一,以Google公司創辦人拉里·佩奇(Larry Page)之姓來命名。Google把從A頁面到B頁面的鏈接解釋爲A頁面給B頁面投票,Google根據投票來源(甚至來源的來源,即鏈接到A頁面的頁面)和投票目標的等級來決定新的等級。
起始應該來說:PageRank應該是其中的一個引子
Google的搜索算法目前有多達200多個主要“要素”之一,現已融入到Hummingbird算法中。
PageRank,這是一個極其重要的頁面鏈接,隨着一些複雜的因素,Google開始注重頁面的質量問題,
基於此,所用的語句以及其他信息都被重新優化(元素週期表的SEO就是個成功的案例)。本次算法改進是基於頁面排名與指數的重新思考。
補充:PageRank算法思路:
3.1思路源頭
利用網頁的入鏈數量來進行分析計算,【假定的前提是:假設一個網頁的入鏈越多,該網頁越重要】該種規則可以作爲一項基礎引子來考慮,但是不能夠作爲唯一策略。
PageRank:除了考慮入鏈數量,還會考慮網頁質量因素【入鏈網頁的質量,該網頁本身的質量】
a:數量權重:當一個網頁的入鏈越多,則該網頁越重要
b:質量權重:指向網頁的入鏈的質量不同,如果高質量的網頁作爲入鏈網頁,則該網頁質量權重會增加
3.2算法思路:
假定有50個網頁需要計算權重rank,而這50個鏈接之間可能存在相互的入鏈和出鏈調用
首先將50個網頁初步排序,根據入鏈個數排序
然後:按排序從排序高的開始計算,針對每一個網頁,如果有一個入鏈,則權重增加0.01*入鏈質量,對應的出鏈所指的網頁單獨計算一次入鏈權重值
計算完畢後:將每個網頁的權重值累加,再次進行排序
然後:根據權重值順序,從低到高,逐個針對每一個網頁,再次進行入鏈+出鏈的權重分析計算;
類似的計算迭代多次以後,評估每次權重的值變化基本平穩以後,即可結束。
3.3:由於入鏈和出鏈作爲權重的一個核心因素,需要避免Link Sink,比如一個網頁A鏈入到網頁A1,而A1指向A2,A2指向A3,A3又指向A1
即形成了一個鏈接黑洞,如果處理算法不評估該問題,則會導致個別鏈接陷阱的網頁獲取高的鏈接分值;
解決思路:保留網頁的入鏈的父節點的會朔性,如果一個網頁的入鏈的入鏈,經過多次的計算如果形成閉環,則跳出該迭代區域,清除或者降低對應的計算權重值。
4:搜索引擎算法的核心
精準與快速,解決了這個問題,就是王者
Google發佈Hummingbird算法,這就好比汽車放棄舊引擎,更換新引擎。它的動作如此之快,以致無人注意到Google此次部署。
5:比較以前的算法更新
Google在2011年2月上線的“Panda”算法,目標是打擊各種充滿低質量信息的“內容農場”網站,
而後來更新的“Penguin”算法,其目標直指通過SEO手段來提高網站排名。
Panda、Penguin以及其他版本的更新只是作爲舊算法的一些升級更新,而並非像這次整體替換。
以引擎爲例,這就好比該引擎獲收穫了新的機油過濾器或者改進了泵轉速 。
然Hummingbird是一種全新的引擎,但它仍然使用了一些舊算法特性,包括Penguin和Panda
可以說:當大多數人都依賴某個渠道來獲取一些公共資源時,這個獲取渠道就成了一個充滿機遇和調整的地方。
前面瞭解了PageRank的網頁的鏈接分析算法,接下來進一步瞭解其它算法:
6:HITS算法(Hypertext Induced Topic Selection)
該算法的一個核心基礎:
Hub頁面:包含指向大量高質量網頁鏈接的網頁,類似現在的網站導航頁,比如hao123.com,tao123.com
Authority頁面:在某些領域或者某個話題相關的高質量網頁,比如google,baidu.com,或者apache.org等
算法目的:
通過一定的手段,在海量網頁中找到與用戶查詢主題相關的高質量Authority頁面和Hub頁面,尤其是Authority頁面
反思:對於一個好的搜索引擎,應該把用戶針對特定領域的專業網站作爲最高級別的搜索結果
算法假設:
一個好的Authority頁面會被很多好的Hub頁面鏈入
一個好的Hub頁面會指向很多好的Authority頁面
從兩個假設開始,好的Authority頁面,應該會被很多好的Hub頁面鏈入
一個Authority頁面被大量的Hub鏈入,另外一個角度,Hub頁面鏈入的Authority頁面的質量非常的高
算法思路:
用戶輸入查詢之後,將查詢提交給某個現有的搜索引擎,或者內置的構造系統,並在返回的搜索結果中,提取排名靠前的網頁,得到一組與用戶查詢高度相關
的初始網頁集合,該集合稱之爲(Root Set)
在根集合的基礎上,HITS算法對網頁集合進行擴充:凡是與根集合網頁有直接鏈接指向關係的網頁都會被擴充進來,無論是有鏈接指向根集內頁面也好,或者是根集頁面有鏈接指向的頁面也好,都被擴充進擴展網頁集合。
HITS算法在這個擴展網頁集合內尋找好的Hub頁面和好的Authority頁面。
對於擴展的網頁的集合,從某些層面上看,無法辨別具體是好的Hub或者Authority
對此針對任何一個網頁,都給定兩個初始化的權值(hub權值,authority權值)
然後利用上面提到的兩個基本假設,以及相互增強關係等原則進行多次迭代計算,每輪迭代計算更新每個頁面的兩個權值,至到權值穩定不再發生明顯的變化位置。
該思路的計算模型,類似PageRank,都需要迭代計算每一個網頁的入鏈數和出鏈數。
迴歸HITS算法的迭代運算:
當一輪迭代運算結束時,評估上一輪迭代計算中的權值和本輪迭代之後的權值的差異,如果差異不大,沒有明顯變化,說明系統已經進入穩定狀態。
如果差異比較大,繼續進行下一輪迭代運算,等到穩定後,對迭代權值的結果進行Authority權值的排序,從高到低進行排序,取權值最高的若干網頁作爲響應用戶查詢的結果輸出。
當然HITS算法還存在如下問題待優化:
計算效率較低:需要在用戶輸入後,實時的進行計算和分析,實時性的要求針對HITS的要求很高
主題漂移問題:如果擴展網頁集合裏包含部分與查詢主題無關的頁面,而且這些頁面之間有較多的相互鏈接指向,則導致HITS算法可能給這些無關網頁很高的排名,發生搜索結果主題漂移。更多可以研究【緊密鏈接社區現象Tightly-Knit Community Effect】
被作弊者操作結果:比如一個作弊者,首先創造一個很好的Hub頁面,Hub頁面指向高質量的Authority頁面,打造一個好的Hub後,會進一步在Hub中加入一個鏈接連入一個作弊網頁,從而提升作弊網頁的Authority得分
算法結構不穩定:如果網頁內容發生變化後,對應的擴展網頁集合內刪除個別或者改變少數鏈接關係,則HITS算法的排名結果就會有非常大的改變。
7:對比PageRank和HITS算法
7.1: HITS算法與用戶輸入的查詢密切相關,而PageRank與查詢請求無關
7.2:HITS算法的計算效率較低,滿足實時分析的需求,PageRank在可以利用爬蟲抓取完成後,離線計算,計算效率較高
7.3:HITS算法處理的量不大,只關注擴展集合內網頁之間的鏈接關係,而PageRank是全局性算法,對所有互聯網頁面節點進行處理
7.4:HITS算法存在出題泛華問題,更適合處理具體的用戶查詢,而PageRank算法在處理寬泛的用戶查詢時更有優勢
7.5:PageRank的反作弊能力強於HITS
7.6:HITS算法的結構穩定性不高,對擴展網頁集合內鏈接關係做出很小的改動,就影響最終的結果
接下來進一步分析HITS和PageRank兩個的組合算法SALSA算法