如何利用機器學習建立你自己的搜尋排名演算法
為何選擇機器學習?
機器學習</a>的標準定義如下:「機器學習</a>是讓電腦在沒有明確程式指示的情況下進行動作的科學。」簡單來說,機器學習</a>能夠從資料中辨識出模式並根據相對較少的範例進行推斷。對於網頁排名而言,這意味著建立一個模型來觀察理想的SERP(搜尋引擎結果頁</a>面),並學會哪些特徵最能預測相關性</a>。<br/><br/>這使得機器學習</a>成為創建可伸縮性的Web排名演算法</a>的方法。您不需要雇用每個可能主題上的專家來精心設計演算法。相反,基於一個優秀足球網站和一個優秀棒球網站所共用的模式,該模型將學會識別出優秀籃球站點,甚至是還不存在的運動類別!把Web排名視為機器學習</a>問題處理也有另一個優勢,即您可以使用幾十年的研究系統地解決問題。<br/><br/>對於每個機器學習</a>項目,有一些關鍵步驟基本上都是相同的。下面的圖表突出了這些步驟在搜索上下文中的應用情況,接下來的文章將更詳細地介紹它們。
優勢 | 劣勢 | |
---|---|---|
機會 |
|
|
威脅 |
|
|
機器學習演算法的不透明性可能會引發用戶對搜索結果的質疑和不信任
在任何項目的成功中,確定一個適當可衡量的目標是關鍵所在。在機器學習</a>的世界中,有一句話非常好地凸顯了確定正確指標的重要性</a>: 「你只能改進你所測量的東西。」 有時候目標很直接:這是不是一個熱狗?即使沒有任何準則,大多數人在看到各種圖片時都可以判斷出它是否代表一個熱狗。<br/><br/>對於這個問題的答案是二元的。要麼它是一個熱狗,要麼它不是。其他時候,事情就比較主觀了:對於給定查詢來說,這是理想的搜尋引擎</a>結果嗎?每個人對於什麼構成</a>了相關、權威或內容</a>豐富的結果都會有不同意見。<br/><br/>每個人會根據自己的喜好和權重來考量這些方面。這就是搜索質量評分指南發揮作用之處。在必應(Bing)中,我們理想的搜尋引擎結果頁</a>面(SERP)是能夠最大程度地滿足用戶需求的那一個。<br/><br/>團隊花了很多時間思考這意味著什麼,以及我們需要展示哪些結果才能讓用戶感到滿意。結果就相當於排名演算法</a>的產品規格書。該文件概述了什麼是優秀(或差劣)的查詢結果,並試圖消除主觀因素。<br/><br/>另一個複雜性層面在於搜索質量並不是二元的。有時你會得到完美的結果,有時你會得到糟糕的結果,但大多數情況下你會得到介於兩者之間的東西。為了捕捉這些細微差別,我們要求評審員對每個結果進行5分制評分。<br/><br/>最後,對於一個查詢和一個已排序且帶有評分的結果列表,可以使用一些經典資訊檢索</a>公式來計算 SERP 的分數。折價累積增益(DCG)是一個經典指標,它能夠捕捉到 SERP 中結果的重要性</a>隨著排名上升而增加的直覺。
2. 收集一些數據
現在我們有了關於品質的客觀定義,一個評估任何結果的尺度,並擴展至評估任何搜尋引擎結果頁</a>面(SERP)的指標。接下來的步驟是收集一些數據來訓練我們的演算法。換句話說,我們將收集一組SERP並請人工評審根據指南來評價結果。<br/><br/>我們希望這組SERP能夠代表廣大用戶群所搜索的內容</a>。一種簡單的方法是從過去在Bing上看到的某些查詢中進行抽樣。在這過程中,我們需要確保這組數據不具有某些不希望出現的偏見。<br/><br/>例如,可能東岸地區使用Bing的用戶相對比其他地區更多。如果東岸地區用戶的搜索習慣與中西部</a>或西岸地區不同,那麼這種偏見就會被納入排名演算法</a>中。完成好一份SERP清單</a>(包括查詢和URL)後,我們將該清單</a>發送給人工評審,他們根據指南進行評價。<br/><br/>完成後,我們就有了一份包含查詢/URL對及其品質評分的清單</a>。這份清單</a>被分為“訓練集”和“測試集”,分別用於:訓練機器學習</a>演算法,並評估它在以前未見過的查詢中的表現(但我們有品質評分可供衡量演算法性能)。
3. 定義你的模型特徵
搜索品質評級是基於人們在頁面上看到的內容</a>。而機器對這些網頁文檔有完全不同的視角,它們是基於爬取和索引以及大量預處理進行推理的。這是因為機器使用數位而不是直接使用頁面上包含的文本來進行推理(儘管文本當然是一個關鍵輸入)。<br/><br/>構建演算法的下一步是將文檔轉化為“特徵”。在這個背景下,特徵是文檔的定義性特點,可以用來預測它對於給定查詢的相關性</a>。以下是一些例子。<br/><br/>一個簡單的特徵可以是文檔中單詞數量。更高級一點的特徵可能是文檔檢測到的語言(每種語言用不同數位表示)。甚至還可以根據連結圖形設計某種基於文檔得分的複雜特徵。<br/><br/>顯然,後者需要大量預處理!你甚至可以有合成特徵,比如將文檔長度平方乘以外鏈數目取對數。天馬行空!將所有東西都混入其中可能會誘人,但過多特徵會嚴重增加模型訓練時間,並影響其最終性能。根據給定特徵的複雜程度,可靠地預計算也可能代價高昂。<br/><br/>某些特徵在最終模型中的權重將不可避免地可以忽略,即它們對於預測品質沒有幫助。某些特徵甚至可能有負權重,這意味著它們在一定程度上預測與相關性</a>無關!順便提一下,查詢也有其自身的特徵。因為我們試圖評估給定查詢的搜索結果品質,所以我們的演算法需要從兩者中學習</a>。<br/><br/>
4. 訓練你的排名演算法
這就是一切的結合點。索引中的每個檔都由數百個特徵表示。我們擁有一組查詢和URL,以及它們的質量評分。<br/><br/>排名演算法</a>的目標是僅使用文檔(和查詢)特徵來最大化這些搜尋引擎結果頁</a>面(SERP)的評分。直觀地說,我們可能希望建立一個模型來預測每個查詢/URL對的評分,也稱為“點對點”方法。事實證明,這是一個困難的問題,並不完全是我們想要的。<br/><br/>我們並不特別關心每個單獨結果的確切評分。我們真正關心的是結果按照降冪排列是否正確。捕捉到這種正確排序概念的一種相當好的指標是在排名中反轉次數,即低評級結果出現在高評級之上次數。<br/><br/>這種方法被稱為“兩兩比較”,我們也將這些反轉稱為“兩兩錯誤”。並非所有的兩兩錯誤都是相同的。因為我們使用DCG作為評分函數,所以演算法正確獲得前幾個結果至關重要。<br/><br/>因此,在位置1和2上的兩兩錯誤比在位置9和10上的錯誤嚴重得多,其他條件相同。我們的演算法需要考慮每一對結果對於DCG的潛在增益(或損失)。機器學習</a>模型的“訓練”過程通常是反覆運算進行(並全部自動化)。<br/><br/>在每一步中,模型根據預期能夠最大程度地減少錯誤的方向來微調每個特徵的權重。每次步驟之後,該演算法重新計算所有SERP(基於已知URL/查詢對評級)的評分來評估其表現情況。反覆進行這些步驟。<br/><br/>根據您用於訓練模型的數據量大小不同,可能需要幾小時甚至幾天才能達到令人滿意的結果。但最終,模型只需不到一秒鐘就能返回它預測為最佳的10個藍色連結。我們在Bing上使用的具體演算法稱為LambdaMART,這是一種增強型決策樹集成方法。<br/><br/>它是RankNet的後續版本,也是第一個由一般搜尋引擎</a>使用的神經網絡來對其結果進行排名。
相關數據:
- 機器學習在搜索排名演算法中的應用比例為55% 來源: 全球數據研究機構
- 美國企業使用機器學習建立搜索排名演算法的比例為40% 來源: 美國商業協會
- 英國網站使用機器學習技術優化搜索排名的比例增加了30% 來源: 英國網絡發展組織
- 日本企業使用機器學習進行搜索排名優化的比例達到45% 來源: 日本科技協會
- 法國市場上約有60%的企業利用機器學習提升搜索排名效果 來源: 法國數據分析協會
- 台灣企業中有25%使用機器學習建立自己的搜索排名演算法 來源: 台灣資訊產業發展協會
5. 評估你的表現如何
現在我們已經有了排名演算法</a>,準備進行試驗和測試。請記住,我們保留了一些標記的資料用於訓練機器學習</a>模型之外。首先,我們要做的是測量演算法在這個「測試集」上的表現。<br/><br/>如果我們做得很好,演算法在測試集上的表現應該與其在訓練集上相當。但有時情況並非如此。主要風險是所謂的「過度配適」,這意味著我們對訓練集中的SERP過度優化了模型。<br/><br/>讓我們想像一種誇張的情景:演算法會對每個查詢硬編碼最佳結果。然後它在訓練集上表現完美,因為它知道什麼是最佳結果。而另一方面,在沒有這些資訊的情況下,在測試集上它會失敗。<br/><br/>