探討SEO技術,如何用機器學習預測谷歌搜索排名?
在 2015 年末,JR Oakes 和他的同事利用機器學習做了一個實驗,試圖預測某個特定網頁的谷歌搜索排名。下面這篇文章是他們的發現,他們希望這些成果能夠幫助到 SEO 從業者。
機器學習正在越來越快地成為很多大公司的一個不可獲取的工具。相信每個人都聽說過谷歌的人工智慧演算法打敗了前世界圍棋冠軍,以及谷歌的搜索結果排名演算法 RankBrain。機器學習早就不是數學研究者們的神秘課題了。在有大量數據的行業里,技術總會有很多方法變得有用。
機器學習也有能力改變傳統的網站推廣和 SEO(搜索引擎優化)。去年晚些時候,我和我的同事開始了一項實驗,我們將一個流行的機器學習演算法應用到了預測谷歌對特定網頁的排名中。最終我們得到了一個 41% 正確肯定和 41% 正確否定的數據集。
在接下來的幾段里,我將會帶你過一遍我們的實驗,我還會討論一些對 SEO 很重要的技術問題。
我們的實驗
在 2015 年年末的時候,我們開始越來越多地聽說機器學習以及它在處理大量數據上的能力。我們越認真工作,它就變得越專業,而且很快它就會幫助我們運轉這個世界。
那個時候,我們遇到了才華橫溢的巴西數據科學家 Alejandro Simkievich。最有趣的事情是他正在研究搜索領域的相關性和轉化率優化(CRO)等問題,並且正在準備參加 Kaggle 競賽。(Kaggle 是一個針對科學家和機器學習愛好者舉辦機器學習競賽的網站)
Simkievich 是數據科學和機器學習諮詢公司 Statec 的創始人,該公司在消費品、汽車、營銷和互聯網行業擁有很多客戶。Statec 的很多工作都集中在評估電子商務搜索引擎的相關性上。我們和他的合作似乎是一種自然結合,因為我們也痴迷於利用數據來幫助人們做出 SEO 決策。
我們決定試試能否使用抓取工具、排名追蹤、鏈接工具和其他一些工具的可用數據來預測網頁排名。我們知道完全預測正確的可能性非常低,但我們仍能在利用機器學習上獲得一個了不起的成功。
數據
機器學習基本上是使用計算機程序採集數據,並轉化這些數據,生成有價值的信息。「轉化」是用得非常泛的詞語,它不能很公正地指代它涉及的所有那些事物,但是它有助於我們理解。此處的關鍵是,所有機器學習都是從某類輸入數據開始的。(註:有許多講解機器學習基礎知識的教學講座和課程可免費獲得,所以我們在這裡不做深入介紹。如果你有興趣了解更多,可去 Coursera 上參加吳恩達的免費課程。)
我們的基本論點是我們必須發現用於訓練機器學習模型的數據。就這點而言,我們並不十分清楚什麼是有用的,所以我們採用一種生活化的方法,並抓住我們能想到的儘可能多的特徵。 GetStat 和 Majestic 提供了許多極其重要的數據集,而且我們構建了一個網路爬蟲去捕獲其它所有東西。
機器學習正快速成為許多大公司不可或缺的工具。確切地說,每個人都聽說過谷歌的人工智慧演算法打敗了前世界圍棋冠軍,還聽說過像 RankBrain 這樣的技術,但是機器學習無需故作神秘,只在數學研究領域內閉門造車。有許多可以利用的文獻資料和技術,它們對於有諸多可以操作的數據的行業都是有用的,給這些行業帶來了希望。
在下文中,我將帶你了解我們的實驗,而且我還將討論一些重要的文獻和技術,它們對初步理解 SEO 是重要的。
我們的目標是最終取得足夠數據成功地訓練一個模型,而且這意味著我們需要很多數據。對於第一個模型,我們有大約 20 萬觀測值(行)和 54 個屬性(列)。
背景知識
就像我之前說的,我不會講很多關於機器學習的細節,但重要的是掌握下面這幾點。總的來說,現在的大部分機器學習工作都是在處理回歸、分類和聚類演算法。我將在這裡定義前面兩個,因為它們與我們的這個項目有關。
回歸演算法通常用於預測一個數字。如果你需要創建一個基於股票特徵預測股票走勢的演算法,你就得選擇這個模型。它們被稱作連續變數。
分類演算法用於預測諸多可能答案中的一個類別的成員。這可以是簡單的「是或否」分類,或者「紅、綠或藍」的分類。如果你需要基於特徵預測一個不認識的人是男還是女,你就得選擇選擇這個模型。它們被稱作離散變數。
搞定谷歌排名
既然我們有了數據,我們嘗試了幾種方式預測每個網頁的谷歌排名。起初,我們使用回歸演算法(regression algorithm)。即,我們追求預測在搜索給定的詞語時網站的精確排名(比如,搜索詞語 Y,預測某網站的排名為 X),但是,在幾周之後,我們意識到這項任務太困難了。首先,排名指的是一個網站與其它網站的相對關係,而不是指網站的內在屬性。既然我們不可能拿在給定搜索詞條件下所有的網站排名去訓練我們的演算法,我們重新表述了問題。
我們認識到,就谷歌排名而言,最緊要的是在給定搜索詞時一個給定的網站是否最終能排在第一頁。因而,我們重新剖析了問題:如果我們預測在搜索某個詞時一個網站的谷歌排名是否能進前十,又會怎樣呢?
從那點來看,問題轉變成二進位(是或否)分類問題,我們只有兩個分類:1)網站是排在前十的,2)網站不是排在前十的。此外,我們決定預測一個給定網站屬於這兩類的概率,而不是做出是或否的預測。
隨後,為了迫使我們自己做出更明確的決策,我們設定用來衡量一個網站是否能排進前十的閾值。例如,如果我們預測閾值是 0.85 ,然後如果我們預測網站排進前十的概率高於 0.85 ,我們就認為這個網站將進入前十。
為了衡量這個演算法的性能,我們決定使用混合矩陣。
下面這個圖表概述了整個過程:
理清數據
我們使用了一個有 20 萬條記錄的數據,包括大約 2000 個不同的關鍵詞/搜索詞。總體上,我們可以把這些關鍵詞依據屬性分為以下幾類:
數字屬性
類別變數
文字屬性
數字屬性指的是該關鍵詞可以表示無限或有限區間內的任意數字。
類別變數是指一個可以表示有限數量的值,每個值代表一個不同的群體或類別。
文字屬性顯然指文本,包括搜索關鍵詞,網站內容、標題、元數據描述(meta description),錨文本、標題(H1 H2,H3)等。
特徵工程
我們設計了與排名有關的額外屬性。
大多數屬性是布爾邏輯體系的(真或假),但是一些是數值的。例如,布爾邏輯屬性是網站文本中的精確搜索詞是什麼,而數值屬性是網站文本中有多少被標記的搜索詞。
下面是我們設計的一些屬性。
運行 TF-IDF演算法
為了預處理文本特徵,我們使用了 TF-IDF 演算法(檢索詞頻率,反轉文檔頻率)。此演算法將每個實例視為文件,並將所有實例集合視為一個語料庫。然後,它為每個詞賦予分數,辭彙在文件中出現的頻率越高,在語料庫中出現的頻率越低,那麼其分數就越高。
我們試過兩種 TF-IDF 方式,只得到依賴於模型的略微不同的結果。第一種方式由首先連接所有的文本特徵構成,然後應用 TF-IDF 演算法(也就是說,單個實例的所有文本列連接而成文件,一系列這樣的實例構成語料庫)。第二種方式是指對每個特徵分開應用 TF-IDF 演算法(也就是說,每個單獨的文本列是一個語料庫),然後連接由此得出的數組。
用 TF-IDF 演算法得出的數組是非常稀疏的(對於給定的實例大多數行列的數據是零),所以我們應用降維手段(奇異值分解)減少屬性/行列的數量。
最後一步是連接所有從特徵類別中得出的行列形成一個數組。這是我們做完以上所有步驟(理清特徵,將分類特徵轉變為標籤並在標籤上運行獨熱碼,應用 TF-IDF 演算法於文本特徵並將所有特徵按比例排列到平均值兩端)後再去做的。
模型和集合
在獲得和連接所有屬性後,我們對它們運行了許多不同的演算法。結果顯示最有前途的演算法是漸進增長分類器( gradient boosting classifier),脊分類器( ridge classifier)和一個兩層的神經網路。
最終,我們使用簡單的平均值將模型結果集中在一起處理,因此我們得到了一些額外收穫,因為不同模型傾向於有不同的偏差。
優化閾值
最後一步是設定閾值將概率估算轉變為二進位預測(「是的,我們預測此網站位於谷歌排名前十」或「不是的,我們預測此網站不會進谷歌排名前十。」)為了做到這點,我們優化了交叉確認集(cross-validation set ),然後使用了在測試集上得到的閾值。
結果
我們認為對於測量模型有效性的最有代表性的度量是混淆矩陣。混淆矩陣是一種可視化的表格,主要用於比較分類結果和實際測得值。混淆矩陣的每一列代表了預測類別,每一列的總數表示預測為該類別的數據的數目;每一行代表了數據的真實歸屬類別,每一行的數據總數表示該類別的數據實例的數目。
我確信你聽說過「一個壞掉的鐘每天有兩次能正確指示時間」這句格言。輸入每個關鍵詞得到 100 種結果,隨意瞎猜總能以 90% 的正確率預測「不能排在前十」的情況。混淆矩陣確保肯定的和否定的答案都是正確的。在我們最好的模型中,我們獲得大約 41% 的正確肯定和 41% 的正確否定。
將模型效果可視化的另一途徑是使用特徵曲線(ROC curve)。特徵曲線是「用圖示法說明二進位分類器系統隨著鑒別力閾(discrimination threshold)而變化的效能。」在這整個系統中使用的非線性模型是 XGBoost 和一個神經網路,而線性模型是邏輯回歸。整個系統的布局則是線性與非線性模型的結合。
XGBoost 是「極端漸進增長(Extreme Gradient Boosting)」的簡稱,漸進增長是「一種針對回歸和分類問題的機器學習技術,它生成弱預測模型集成形式的預測模型,典型的是決策樹。」
下面的圖表揭示了特徵類別對此模型最終預測的準確率做出的相對貢獻。與神經網路不同, 伴有其它模型的 XGBoost 允許你輕易地窺視模型內部,從而判斷特定特徵持有的相對預測權重。
我們能建立從我們給定的特徵中表示預測力的模型,對此我們非常驚訝。我們感到焦慮的是,特徵的局限會導致此項目無果而終。理想情況是,我們有一種方法抓取所有網站,從而獲知它們的整體相關性。也許,我們可以在公司擁有的谷歌評論數量上收集數據。我們也明白谷歌擁有關於鏈接和引用量的大量數據,而這些數據比我們希望收集到的數據好得多。
結論
機器學習是一個即使你不知道它是如何工作的你也能使用的強大工具 。我讀了很多關於 RankBrain 和工程師無法理解它是如何工作的文章。這是機器學習神奇和美麗的原因。類似於生命在進化過程中會獲得不同的特徵一樣,機器學習在過程中找到了答案,而不是給出既定的方法。
當我們對第一個模型的結果感到滿意的時候,我們更需要知道,相比於這種小規模的樣本,互聯網的規模更加巨大。我們的一個關鍵目標是建立一個能夠處理互聯網上的海量數據和信息的機器學習工具,我們也正在改進當前的這個模型。
對於我自己來說,這個項目最大的意義是我開始了解機器學習對我們這個行業的巨大價值。在我看來,機器學習對 SEO 有著以下幾點影響:
文本生成、總結和歸類。
永遠不要寫另一個 ALT 參數
觀察用戶行為和對訪客歸類/打分的新方法
通過語音和智能Q&A問答的文本、產品、推薦系統來進行導航的新方法。
挖掘分析並深入了解訪客、會話、趨勢和潛在可行性的新方法
更加智能地為相關用戶推薦廣告的方法
2016 年人工智慧如何影響企業運行?
歐洲建立類腦人工神經網路,認知模型實現重大突破
谷歌的TPU 將會怎樣影響人工智慧發展和安全性
一些物理學不能預測的事,學習演算法卻能辦到?
盤點8個最具啟發意義的深度學習應用
TAG:機器之心 |
※如何用 MOOC 組合掌握機器學習?
※我是如何用機器學習技術幫助 HR 省時間的
※用機器學習玩轉惡意URL檢測
※如何利用機器學習預測房價?
※「深度學習4大技術方向」Keras之父、谷歌研究員拆解機器自主學習
※NASA人形機器人展示行走技巧:將用於火星探索
※詳解蘋果Core ML:如何為iOS創建機器學習應用?
※SAS首席科學家:如何選擇機器學習演算法?
※PHPer如何快速入門機器學習?
※機器人技術將如何發展?IDC發布十條經典預測!
※不用再獃等!MIT 研究用機器學習減少影片緩衝時間
※CMU與谷歌新研究到MetaMind:如何讓機器學習跳讀
※機器學習,AI進階之匙
※NASA加速應用機器學習探測太空,英特爾攜Nervana參與其中
※翻轉人類未來的 AI 科技:機器學習與深度學習
※NASA測試摺疊機器人 未來或許會用來探索火星
※IBM用機器學習尋找外星人
※蘋果Swift語言之父跳槽谷歌 致力於人工智慧和機器學習項目
※「AI解放排隊」使用GPU機器學習的快速ID識別技術,效率提升50%