這是我作爲數據科學家的第一個項目的故事:與數據庫,Excel文件,API和雲存儲進行鬥爭。 如果您必須構建類似這樣的東西,那麽您就會知道我在說什麽。
"爲什麽要在同一句話中使用數據和管道?"
對于那些不知道的人來說,數據管道是一組從各種來源提取數據(或直接進行分析和可視化)的動作。
這是一個自動化的過程:從該數據庫中獲取這些列,將其與該API中的這些列合並,根據一個值來子集行,用中位數替換NA,然後將其加載到該其他數據庫中。 這被稱爲"作業",管道由許多作業組成。
您說爲什麽我們需要自動化管道?
- 首先,我們將把我們關心的大多數數據集中在一個位置,並且格式相同
- 其次,我們不必每次都要自己做
- 第三,它是可重現的(稍後將詳細介紹重現性)。
業務需求!=研究問題
大數據,機器學習,人工智能和數據科學只是流行語,對嗎? 嗯 可能不會。 或更好:是的。 要旨是,只要企業將對這些"事物"進行投資,人們就會對其進行工作。 句號
事實是,這些流行語經常被濫用,尤其是在商業環境中。 我們可以擁有小的大數據(僅使用HBase來存儲不到TB的數據),我們可以擁有"人爲的愚蠢"(將相同的算法應用于所有業務問題),並且我們可以擁有數據無知(不良的溝通足以使人蒙昧無知,作爲疾病傳播)。
我認爲重要的是不要失去專注:工具是達到目的的手段,而不是相反。 Hadoop本身既不好也不壞,它只是存儲和檢索半非結構化數據的一種方式。 相反,這就像說電鋸不好,因爲有人用電鋸殺死人。
我們已經到了重點。 問題是重要的事情,而工具是獲得這些問題答案的手段。
企業正面臨艱難時期,這不僅是因爲人才匮乏,還因爲他們需要采用學術界特有的流程和實踐。 這對他們來說是破壞性的。 幾十年來,商人一直在嘲笑學術界:它運行緩慢,官僚作風,成本效益不高等。
現在他們正在嘲笑他們,或者至少應該嘲笑他們。 企業開始認識到,不僅有一個問題:"我們如何賺更多的錢?",但有很多問題與後者相關,這是一個目標。
"與留住流失客戶相關的成本是什麽?""我們可以在流失客戶之前減少針對客戶的成本嗎?""哪些客戶將流失?"。 這些是可以用數據回答的問題,但是許多人不習慣以這種方式陳述問題。
因此,構建數據管道時的第一個問題是您需要一個翻譯器。 該翻譯將嘗試了解與業務需求相關的真正問題是什麽。 這可能是一個緩慢而漫長的過程,尤其是從頭開始時。
基礎架構:如何學會停止擔心和熱愛SQL
在互聯網上,您會發現無數有關管道和倉庫基礎設施可能性的資源。 在要遵循的流程或最佳做法上找不到足夠的資源。 這是不好的。
這是第二個風險:許多風險將集中在工具和技術上,而不是目的。 這也是不好的。
某些人沒有考慮將哪種最簡單,最快和最有效的解決方案來回答業務問題,而是將精力集中在原始電量和大量存儲上。
有趣的事實:處理大數據相對容易(一旦完成所有設置),處理小數據就非常困難。 或更糟糕的是不存在數據。
通常,您會坐在桌子旁,談論可擴展性以及某些工具的無限可能性。 很容易被拖到討論中,而沒有想到要擁有大數據,一個人必須擁有很多數據。
可能會發生一些信息丟失的情況,因爲這些信息根本沒有收集或不一致。 當您發現要分析的某些數據未得到一致收集時,您將遇到一個小數據問題(或更糟糕的是零數據問題)。
當然,您可以設想一個新的數據收集過程,但是一段時間後,您將無法獲得或只有很少的數據。 在這種情況下,工具將無法爲您提供幫助。 您可以執行可靠的(字面上可靠的,而不是方法的)統計分析,或者您必須等待。
關鍵是基礎架構必須簡單高效:人們甚至可以考慮通過直接在管道內的新收集流程來整合丟失的信息。
過程—投影每個微小的細節
該過程是最重要的步驟。 您將定義什麽,在哪裏以及如何收集,轉換和加載數據。 盡管我們每天都聽到關于AI及其無限可能性的聲音,但它們至少還沒有做一件事:決定管道流程。
這意味著您將需要手動選擇每個字段,表,數據源,轉換,聯接等。好消息是,如果操作正確,則只需要執行一次即可。 之後,一切將自動進行。
爲什麽自動化如此重要? 好吧,當然,因爲您不必一遍又一遍地做同一件事,從而節省了大量時間。 但是,最重要的原因可能是要擁有自動化功能,您需要在整個過程中以某種語言來思考,規劃和寫下某種地方。
這使其具有可複制性,這意味著幾乎任何人和幾乎任何地方都可以複制它(當然,只有在他們有權訪問數據的情況下)。 安全性和備份過程的可能性是重要的關鍵,但是主要功能是可以對其進行調試。
在這種情況下,調試不僅涉及代碼,而且涉及整個過程。 如果您將分類變量從0–1轉換爲Male-Female,但是後來發現不是0 = Male,而是0 = Female,該怎麽辦?
如果您的管道結構良好且結構合理,則可以檢查錯誤的轉換位置,然後進行更改,僅此而已。 如果您沒有管道,則可以在每次分析,轉換,合並,任何數據中更改編碼,或者假裝之前進行的每次分析都被視爲無效。
兩種"無管道無黨"解決方案都存在明顯的問題。 企業必須了解,與在以後建立錯誤決策而冒著損失數月時間,甚至是金錢的風險相比,在建立管道之前浪費更多的時間要好得多。
數據驅動決策:文化問題
首先是:基于證據的決策或數據文化?
這是常見的雞和雞蛋問題,解決起來可能很棘手。 通常的答案是數據文化必須來自某個地方。 在許多企業中找到從未接觸過結構化數據,且從未必須根據證據做出決定的人是很常見的。
對于這些人來說,甚至談論平均值,中位數,分布和其他簡單的描述性統計信息也可能是壓倒性的。 在啓動階段,不要使數據過載,這很重要:將數據庫下載到文件中的原因稱爲"轉儲"。
您必須仔細決定哪些指標對每個業務領域真正重要,哪個指標最有可能在人們的腦海中點擊。 要找出唯一的方法,就是與經理和員工與他們交談,以防意外,尤其是當您從零開始執行此過程時。
幾乎可以肯定,您會發現數據重複以及缺少潛在的重要信息。 在此階段,您還可以開始提出您的目標,讓人們開始進入新的思維方式。
這很重要,因爲最好的解決方案是使員工實際上獨立地訪問,可視化和分析數據的解決方案。 獨立是一個目標,要實現這一目標,您就必須指導和幫助人們。 至于管道,一開始將花費更多時間,但從長遠來看,這將是有回報的。
剛開始時,不要使用任何花哨的建模,簡單的洞察力和描述性統計數據將足以發現許多主要模式。
我發現,向人們仔細解釋均值和中位數之間的差異,以及爲什麽他們幾乎應該始終使用中位數已經是第一步。 對于某些人來說,這已經很難理解了,因爲我們在推理中已經深深紮根了。
爲刺激起見,必須緩慢而堅定地培養數據文化:首先要讓人們信任數據。 准確度總是比精確度好,不要害怕給出範圍和置信區間並仔細解釋它們。
最後! 最終進行一些分析
必須根據您要執行和呈現的分析功能來考慮整個管道過程。 可視化也是一個重要的目標,我永遠無法過分強調以良好的方式呈現數據的重要性。
您可以使用最先進的模型,最新的卷積神經網絡並獲得最佳結果,但是如果您無法有效地傳達它們,您將很難說服人們他們的價值。
此外,大多數業務可以通過非常簡單的指標高效地運行,通常將更高級的模型留給生産或一次分析。 它們中只有極少數會進入管道,這是一個很好的實踐,將它們盡可能靠近最後一步。 原因是您將對其進行多次更改和調整,並且它們在管道中根深蒂固的程度越低越好。
經過分析,該過程將重新啓動,這是一個循環。 您會發現一些有趣的東西,並且希望對其進行深入研究。 在發現新趨勢或相關性之後,您將需要對其進行持續監控,從而催生出新的流程。
當您完成此步驟時,您將祝賀自己在構建管道上花費的所有辛苦工作!
(本文翻譯自Alan Marazzi的文章《Building a Data Pipeline from Scratch》,參考:https://medium.com/the-data-experience/building-a-data-pipeline-from-scratch-32b712cfb1db)