良好的資料分析

作者:Patrick Riley

特別感謝:Diane Tang、Rehan Khan、Elizabeth Tucker、Amir Najmi、Hilary Hutchinson、Joel Darnauer、Dale Neal、Aner Ben-Artzi、Sanders Kleinfeld、David Westbrook 和 Barry Rosenberg。

記錄

總覽

從一堆資料中取得真相和深入分析資訊是強大的功能,而且容易出錯。最優秀的資料分析師和資料注重數據的工程師必須培養信譽,讓資料發揮可信的發光發熱。但他們採取了哪些做法來提升可信度?我常聽到像是謹慎有理等形容詞,但最謹慎且理性分析人員實際上做些什麼?

這個問題並不容易,尤其是關於 Google 會定期收集的資料類型。我們通常使用非常龐大的資料集,而這些資料集的資訊非常豐富。換句話說,每一列的資料通常都有許多。將這些資料與特定使用者事件的時間序列結合後,您就能透過大量的方式查看資料。這與一般的學術心理實驗不同,研究人員要查看每個資料點是很實用的做法。大型的高維度資料集與大多數科學工作經歷的問題大不相同。

本文概述了謹慎且理論分析人員對大型、高維度資料集使用的想法和技術。雖然本文件著重於記錄和實驗分析的資料,但其中許多技術比較適用。

文件其餘部分包含三個部分,涵蓋各種資料分析層面:

  • 技術:操作及檢查資料的想法和技巧。
  • 程序:提供有關資料處理方式的建議、要問哪些問題,以及要檢查哪些事項。
  • 思維:如何與他人合作及傳達深入分析資訊。

技術

讓我們來看看一些檢查資料的技巧。

查看分佈情形

多數從業人員都會使用摘要指標 (例如平均值、中位數、標準差等) 傳達分佈情形。不過,通常您應該產生直方圖、累積分佈函式 (CDF)、分位數-四分位數 (Q-Q) 圖表等,藉此檢視更豐富多樣的分佈表示法。這些更豐富的表示法可讓您偵測資料的重要特徵,例如多模組行為或重要的離群值類別。

考量成效突出的影片

仔細檢視離群值,因為這些離群值可能是煤礦中的造成破壞,而會反映分析的其他根本問題。您可以排除資料中的離群值,或將這些離群值合併為「異常」類別,但請務必瞭解該類別中為什麼會有相關資料。

舉例來說,查看點擊次數最低的查詢,可能顯示無法計算的元素點擊次數。查看點擊次數最高的查詢,或許就能找出不應計算的點擊次數。另一方面,您可能無法解釋某些離群值,因此必須謹慎對這項工作的投入時間。

考慮雜訊

隨機性參數已經存在,我們相信萬無一失。還有些人認為「Google 擁有這麼多資料, 卻難以掌握全局。」您產生的每個資料數量或摘要,都應隨附您在這項估算作業中的信心值 (透過信賴區間和 p-values等測量指標)。

查看範例

每次建立新的分析程式碼時,您都需要查看基礎資料中的範例,以及您的程式碼如何解讀這些範例。如果不執行這個步驟,幾乎無法產生任何複雜度的工作程式碼。分析作業會擷取基礎資料的許多細節,藉此產生實用的摘要。檢視個別範例的完整複雜度,即可確保摘要合理。

這些範例的取樣方式非常重要:

  • 如要將基礎資料分類,請查看各類別的範例。
  • 如果是較大的類別,請查看更多範例。
  • 如果您要計算的是數字 (例如網頁載入時間),請務必查看極端範例 (可能最快速且最慢 5%;您知道您的分佈情形,是正確的嗎?),以及整個測量空間的點。

切割資料

Slic 是指將資料分為多個子群組,並分別查看每個子群組的指標值。我們通常會細分瀏覽器、語言代碼、網域和裝置類型等維度的資料。如果基礎現象在各個子群組中的運作方式可能不同,您必須分割資料以確認情況是否確實存在。即使您不會預期的切割作業會產生不同的結果,只要查看幾項內部一致性的配量,就能更有信心評估正確性。在某些情況下,特定資料片段可能有錯誤資料、使用者互動中斷,或某種方式上的差異。

當您分割資料以比較兩個群組 (例如實驗、控制組,甚至是「時間 A」與「時間 B」),就必須瞭解混合轉變。「混合偏移」是指每個群組的各個配量資料量不同。 辛普森的視線 和其他可能造成混淆的情況。一般而言,如果兩個群組內的相對資料量相同,您就可以放心進行比較。

考量實際重要性

隨著資料量龐大,您可能會想著重在統計顯著程度,或只顧及每項資料的詳細資料。不過,您必須思考一個問題:「即使 X 值是否確實是 Y 值的 0.1%,還是很重要嗎?」如果無法瞭解/分類部分資料,這個做法就格外重要。如果您無法瞭解記錄中的部分使用者代理程式字串,無論資料代表的比例是 0.1% 或 10%,是否都會帶來顯著差異來調查這些情況。

此外,有時也有少量資料。許多變更看似不具統計顯著性,跟聲稱這些變更可以「普通」。您必須自問:「仍然存在「實際發生重大」異動的可能性有多高?」

檢查一段時間內的一致性

您應一律嘗試按時間單位區隔資料,因為隨著我們的系統不斷演進,也會出現許多對基礎資料的干擾。(我們通常會使用日,但其他時間單位或許也有幫助)。 在功能或新資料收集的初始推出期間,從業人員通常會仔細檢查一切是否正常運作。然而,隨著時間推移,許多破壞性或非預期行為可能會不斷增加。

僅憑某一天或某組日期離群值,並不代表您應捨棄對應的資料。使用資料做為掛鉤,在捨棄日期或日期前,找出導致差異的原因。

查看逐日資料也能讓您大致瞭解資料的變化,這些變化最終會使信賴區間或統計顯著程度的聲明。這通常不會取代嚴謹的信賴區間計算方法,但如果變化幅度較大,就只看從每日圖表取得的統計顯著程度更高。

確認並計算篩選結果

幾乎所有大型資料分析的第一步都是篩選不同階段的資料。也許您只想考慮美國使用者、網頁搜尋,或是含廣告的搜尋。無論如何,您都必須:

  • 充分瞭解並清楚指明您正在執行的過濾作業。
  • 計算每個步驟篩選出的資料量。

若是後者,最佳做法通常是計算「所有」指標,即使是排除的母體也沒問題。接著,您就可以查看這些資料來解答問題,例如「垃圾內容篩選作業移除的查詢比例為何?」(視篩選原因而定,這種分析類型不一定每次都能執行)。

比率應明確標示分子和分母

最有趣的指標是基本度量的比率。通常,分子和分母的精確定義中會隱藏有趣的篩選或其他資料選項。例如,以下何者實際上是指「查詢 / 使用者」?

  • 查詢數量 / 具有查詢的使用者數量
  • 查詢數量 / 今天造訪過 Google 的使用者
  • 查詢數量 / 擁有有效帳戶的使用者數 (是,我必須定義「有效」)

內容清楚明瞭,可以避免與自己或他人混淆。

另一個特殊情況是只能針對部分資料計算的指標。舉例來說,「點擊時間」通常代表「發生點擊時間」查看這類指標時,您必須確認篩選作業,並在比較的群組之間找出篩選變動。

處理

本節提供資料處理方式建議、資料相關問題,以及應檢查內容。

個別驗證、說明和評估

資料分析就像是具有三個相互關聯的階段:

  1. 驗證1我認為資料是否具有自我一致性、收集正確與否,以及資料的意義為何?
  2. 說明:這項資料的目標解釋為何? 例如:「使用者減少了歸類為 X 的查詢」、「在實驗群組中,X 到 Y 之間的間隔時間比 1% 大 1%」和「較少使用者前往下一頁結果」。
  3. 評估:根據說明,資料是否告訴我們這對使用者、Google 或整個平台有益處?

區隔這些階段,您就能更輕鬆地達成協議。說明內容應可讓每個人都對資料產生共識。 評估能夠提出更多辯論。如果您並未區隔「說明」和「評估」,就很有可能只看到您想查看的資料解讀結果。此外,評估作業困難重重,因為建立指標的正規值,通常會與其他功能和指標進行嚴謹的比較,但需要投入大量資金。

這些階段不會以線性方式進展。探索資料時,您可能會在各階段之間來回切換,但無論何時都應瞭解目前所處階段。

確認實驗和資料收集設定

查看任何資料之前,請務必瞭解收集資料的情境。如果資料來自實驗,請查看實驗設定。如果來源是新客戶的檢測,請確保您至少對於資料的收集方式有一定程度的瞭解。您可能會發現異常/不良的設定或人口限制 (例如僅適用於 Chrome 的有效資料)。這裡值得注意的事項都可協助您日後建構及驗證理論。請考量以下事項:

  • 如果實驗正在執行,請自行測試。如果不能,請至少詳細查看行為的螢幕截圖/說明。
  • 查看實驗的執行期間 (節慶、重大發布等) 是否有什麼異常。
  • 判斷哪些使用者人口將納入實驗。

確認哪些部分不應更動

在「驗證」階段中,請在實際回答您有興趣的問題之前 (例如「是否新增臉部增加或減少點擊次數?」),排除可能影響實驗的資料中其他變異值。例如:

  • 使用者人數是否有變動?
  • 受影響的查詢數量是否顯示在所有子群組中?
  • 錯誤率是否有變動?

這兩類問題在實驗/控制組比較中,以及檢視長期趨勢時都很合理。

標準優先、自訂第二個

查看新功能和新資料時,您特別想直接查看這項新功能的全新或特殊指標。不過,請務必先查看標準指標,即使預期指標會變更也一樣。舉例來說,在網頁中新增通用區塊時,請務必先瞭解「點擊網頁結果」等標準指標會受到的影響,再深入查看這項新結果的自訂指標。

與自訂指標相比,標準指標的驗證成效較佳,且正確度可能也較高。如果您的自訂指標對標準指標的影響不大,表示自訂指標的原因可能有誤。

至少評估兩次

尤其是在您嘗試擷取新現象時,請嘗試透過多種方式測量同一個基礎項目。然後判斷這些多項測量結果是否一致。使用多種測量方法,您可以找出測量或記錄程式碼中的錯誤、非預期的基礎資料特徵,或是篩選重要的步驟。如果您可以使用不同的資料來源進行評估,會更棒。

檢查可重現性

隨著時間的切片和一致性是檢查可複製性的特定例子。如果特定現象具有意義且具意義,您應該將在不同使用者族群和時間看到。然而,驗證可複製性不只是執行這兩項檢查。建構資料模型時,您會希望這些模型在基礎資料中的少量操作中保持穩定。使用不同的時間範圍或隨機子樣本,也可以讓您瞭解這個模型的穩定/可重現程度。

如果模型無法重現,您可能就無法擷取與產生資料的基礎程序相關的基本知識。

檢查與過去測量資料是否一致

您通常會計算的指標與過去計算的指標類似。您應該將指標與過去回報的指標進行比較,即使這些測量數據是出現在不同的使用者人口中也一樣。

舉例來說,如果您查看特殊客群的查詢流量,並評估平均網頁載入時間是 5 秒,但過去針對所有使用者進行的平均網頁載入時間為 2 秒,就必須調查情況。你的數字可能適用於這個人口,但你現在必須執行更多工作才能驗證這項資訊。

您不需要取得確切的協議,但您應該位於相同的概括性參數。如果不是的話,請假設自己不對勁,直到您可以完全說服自己為止。大部分令人驚訝的資料都會導致錯誤發生,而非全新的深入分析資訊。

新的指標應先套用至舊資料/功能

如果您建立新指標 (可能是透過收集新的資料來源) 並嘗試學習新指標,則無從得知新指標是否正確。使用新指標時,請先將其套用至已知功能或資料。舉例來說,如果您提供新的使用者滿意度指標,就應確保該指標能顯示您最佳的功能是否有助於提升滿意度。如果您推出新指標,以便使用者將注意力導向該網頁,請務必根據我們從眼中追蹤或評估者研究瞭解圖片對頁面注意力的影響後找出這個指標。並在您開始學習新內容時進行驗證。

提出假設並尋找證據

對複雜的問題而言,資料分析通常是反覆執行2。您將探索資料的異常狀況、趨勢或其他特徵。您自然會制定理論來說明這項資料。不要只是發表理論 並聲稱這是真的尋找資料內部或外部的證據,確認/拒絕這個理論。例如:

  • 如果您看到的內容看起來像學習趨勢,請看看此內容是否能在高頻率使用者身上展現最強烈的感受。
  • 如果您認為有異常是由於部分功能推出而產生,請確保該功能的母體是唯一受到異常影響的項目。此外,請確認變更的規模與推出預期一致。
  • 如果您看到某語言代碼的使用者成長率變化,請試著找出可以驗證使用者人口變化率的外部來源。

良好的資料分析應該要說故事。若要確認報導是否正確,您必須告訴自己,然後尋找錯誤的證據。其中一種做法是去問問自己:「我能進行哪些實驗,才能驗證/撤銷我分享的故事?」即使無法/不能進行這類實驗,還是可以思考該如何利用手邊的資料進行驗證。

好消息是,這些理論和可能的實驗可能會帶來新的問題,跨越嘗試瞭解特定功能或資料。接下來,您不僅會進入對這些資料的理解,也為各種未來分析尋求新指標和技巧。

探索分析可透過端對端疊代的方式獲益

進行探索分析時,請盡可能執行整個分析的疊代作業。一般來說,會有多個信號收集、處理、模擬等步驟。如果您花費太多時間取得最完善的初始信號,就會錯失在相同時間範圍內執行更多疊代的機會。此外,最後查看資料時,可能會發現改變方向。因此,一開始的焦點應該不是完美,而是要一直得到合理的努力。請自行記下,並瞭解篩選步驟、無法剖析或異常要求等項目,但在探索分析開始時,不要浪費時間嘗試全部移除。

留意意見回饋

我們通常會針對使用者成效定義各種指標。例如,使用者是否點選搜尋結果?接著,如果將這些資料饋送回系統 (實際上我們在多個地點執行),就會產生許多機會評估混淆。

您不能使用傳回至系統的指標做為評估變更的基礎。如果你放送的廣告越多,點擊次數越多,就無法使用「更多點擊次數」做為判斷使用者滿意度的依據,即便「點擊次數更多」通常代表「滿意度」。此外,您甚至不應該將往返的變數分開,因為這樣會導致混合轉變難以或難以理解的。

心態

本節說明如何與他人合作及提供深入分析資訊。

資料分析始於問題,而非資料或技巧

分析資料總是的動力來自於。請將需求視為問題或假設來制定需求,有助於確保收集應收集的資料,並考量資料中可能的落差。當然,當您檢視資料時,應詢問的問題也應不斷演變。然而,不包含問題的分析無法實現。

省去尋找喜愛的技巧的麻煩,然後只找出這項技術在處理的問題部分。同樣地,建立清楚的問題也能避免這個陷阱。

提供言語感和擁護者

您必須先處理資料,才能充分發揮洞察資料的影響力,並掌握這些深入分析結果。希望您能在查看的資料中,發現一些有趣的現象。當您偵測到有趣的現象時,請思考以下問題:

  • 我還可以收集哪些其他資料,用來證明這有多精彩?
  • 要我發現什麼內容就會失效?」

特別是當您要對非常想特定答案的使用者進行分析時 (例如,「我的功能非常棒!」),您一定要玩這句點,以免發生錯誤。

關聯性 != 因果

提出資料的理論時,我們通常會想聲明「X 促成 Y」,例如「網頁速度較慢,導致點擊次數減少」。即使是 xkcd 也知道你不能只因為相關性而建立因果關係。透過思考如何驗證因果理論,通常可以提升因果理論的可信度。

有時候,人們會試圖斷定 A 和 B 之間沒有因果關係,即使沒有因果關係,一個信號還是可做為另一個信號的良好指標或代理。對多個假設測試問題來說,這個領域會很危險;隨著 xkcd 也知道,一旦獲得足夠的實驗和足夠的維度,其中某些信號可與特定實驗相符。然而,這並不表示相同的信號日後會對齊,因此您有相同義務考量到因果理論 (例如「存在的隱藏效果 C 會同時造成 A 和 B」),以便嘗試驗證可行性。

資料分析師通常會為想要取用資料的人員說明這些因果問題。您必須向消費者清楚說明您能夠或不能針對因果關係發言。

先與同業 (外部消費者) 分享

先前的點建議了一些方法,讓自己執行正確的聲音檢查和驗證方式。但是,與對等點共用是強制自己完成所有上述作業的最佳方式之一。相較於資料使用者,熟練的同儕可以提供和使用者之間的定性意見,特別是因為消費者通常有議程。透過分析,同業可在多個時間點派上用場。儘早取得同儕所學的收穫、建議評估項目,以及在這個領域的過往研究。接近尾聲時,同儕會充分指出異常性、不一致或其他令人困惑的情況。

理想情況下,您應該從對所查看資料的同儕提出意見回饋,但即便是缺乏一般資料分析體驗的同儕,也是如此。

預期並接受無理和錯誤

從資料中學習的內容有很多限制,Nate Silver 致力於在信號及噪音中成為出色的案例。唯有透過承認信心程度限制,我們才能做出更好的預測。承認無助的力量通常不會立即獲得報酬。目前感覺不好,但長期來說,這對您和您的團隊而言是一大益處。在犯錯後甚至發現 (甚至太晚) 時更糟的是,反而會主動追擊,以尋求尊重的權益。這樣的尊重對可信度和影響力加深

總結

大部分執行良好的資料分析工作,無法立即讓分析人員察覺。請仔細查看人口大小,並驗證了不同瀏覽器間的影響程度,對於嘗試根據這項資料做出決策的使用者來說,可能無法達到說服力。這也說明瞭為什麼優質資料分析作業需要比大多數人花費的時間更長 (尤其是只看到最終輸出結果時)。做為分析師的一環,我們的工作之一是逐步讓消費者瞭解以資料為基礎的深入分析,這些步驟是什麼以及其重要性。

對資料的這類操控和探索而言,也需要符合良好的資料分析語言和環境需求。我們提供多種檢查資料的工具。不同的工具和語言更適合上述各種技巧;對分析人員來說,選擇適當的工具是相當重要的技能。建議您不要使用自己最熟悉的工具功能;您的工作是要提供真正的深入分析,而非套用特定工具。

 


  1. 這有時也稱為「初始資料分析」。請參閱 維基百科資料分析文章 

  2. 嚴格說來,只有進行探索性分析時才需要疊代,不能進行確認性分析。