寫給初學者的數據科學 Pipeline 指南
9 人贊了文章
也許你並不會相信,你其實和數據並沒有什麼差異。不過,站在數據的角度設身處地去思考,你就會找到此中的緣由。
曾經有個男孩,他的名字叫做「數據」。終其一生,他都在努力去理解自己的目標。我有怎樣的價值?我能給世界帶來如何的影響?我又從何而來呢?你找到自己與「數據」的共性了么?這些問題一直縈繞在他的腦海中,幸運的是,有一天「數據」他終於找到了一個答案,並憑此完成了一次偉大的轉變。
這一切都要從「數據」流過一行又一行,然後偶然間遇到了那個看起來怪異卻又有趣的管道(Pipeline )時說起。這管子的一端是入口,另一端則是出口,管身上面標記著「O.S.E.M.N」五個顯眼的字母。出於好奇,「數據」決定鑽進其中,一探究竟。長話短說……流進去的是數據,而流出來的是見解。
提醒:
本文將向讀者們簡要介紹典型數據科學的應用流程pipeline。從搞清楚你的業務問題,到創造一些可以執行的見解、分析。別擔心,後文內容很輕鬆,並沒有閱讀門檻!
數據科學就是OSEMN
你很贊(awesome),我很贊,而數據科學也好贊(OSEMN)(譯者註:英文中 OSEMN 與 awesome 讀音相似)。你可能要問,為什麼說數據科學「很贊」?因為作為一個有理想有抱負的數據科學家,你能夠憑藉數據科學,獲得磨練自己身體中潛藏的巫師以及偵探天賦的機會。這裡我指的「巫師」技能,是你自動預測事物發展的技巧!而「偵探」技能,則是你能夠在數據中尋找出未知模式、找到趨勢蛛絲馬跡的能力!
了解數據科學pipeline的整個工作流程,是邁向業務理解、問題解答的關鍵一步。如果數據科學看似繁雜的生產線流程讓你望而卻步,那麼話不多說,這篇文章送給你恰到好處!我找到了數據科學家希拉里·梅森(Hilary Mason)和克里斯·威金斯(Chris Wiggins)總結出的一個很簡單的縮寫——O.S.E.M.N.,它適用於整個數據科學生產線。
OSEMN pipeline:
- O —— 獲取(Obtaining)數據。
- S —— 清洗(Scrubbing)數據。
- E —— 探索(Exploring)數據,通過數據可視化等方式,找到潛藏的模式和趨勢。
- M —— 建模(Modeling),對數據進行建模,會給我們帶來巫師般的預測能力。
- N —— 解釋(Interpreting)數據。
業務問題
所以,在開始整個osem pipeline之前,我們必須要考慮的最關鍵也最重要的一步,就是理解我們究竟想要解決什麼問題。再強調一次,在使用「數據科學」之前,我們必須提前考慮好自己究竟想解決什麼。如果你腦子裡想的是個小問題,那麼相應的,你就只會得到一個小的解決方案。而如果你有個很大的問題要解決,那麼也就很可能會找到很大的解決方案。
試問自己以下幾個問題:- 我們該怎樣把數據轉化成鈔票?
- 我想憑藉這些數據產生哪些影響?
- 我們的模型能帶來怎樣的商業價值?
- 它是否會幫我們節省很多的資金?
- 我們該採取哪些措施,來讓自己的業務能夠更有效地運轉?
Show me the money!(Show me the money,星際爭霸中,調錢的秘籍,是一個經典的遊戲 Meme。)
了解這一基本概念對你大有裨益,它會幫助你在走向成功、成為「數據科學家」的道路上邁開更大的步伐。無論如何,這都是你必須要做的重要一步!無論你的模型預測得有多準確,無論你獲得了多少的數據,甚至無論你的pipeline究竟有多麼 OSEMN(多麼棒),你提出的問題的好壞決定了解決方案、可行解的質量。
所謂優秀的數據科學,重要的是你針對數據所提出的問題,而不是該怎樣進行數據管理和分析。——萊利·紐曼(Riley Newman,Airbnb數據科學家)
第一步:獲取數據
正所謂巧婦難為無米之炊,對於一位數據科學家來說,沒有數據就意味著他什麼也做不了。
根據經驗,在獲取數據的時候,你必須要思考一些事情。你需要辨識出所有的可用數據集(它們可以來自互聯網,或是外部或內部的資料庫)。你還需要把數據提取為可用的格式(包括csv、json、xml 等)。
所需技能:
- 資料庫管理:MySQL、PostgressSQL、MongoDB。
- 查詢關係型資料庫。
- 檢索非結構化數據:如文本、視頻、音頻文件、文檔等。
- 分散式存儲:Hadoop、Apache Spark/Flink。
第二步:清洗數據
pipeline的這一階段,需要你投入最多的時間和精力。因為你的機器學習模型最終會得到的輸出結果,取決於你輸入的數據質量。因此,假如一開始裝進去的就是垃圾,那麼吐出來的照樣也是垃圾。
目標:
- 檢查數據:了解你所處理的每一個特徵、識別錯誤、缺失值、損壞記錄等。
- 清洗數據:丟棄、替換、補齊缺失值或錯誤記錄。
所需技能:
- 腳本語言:Python、R、SAS。
- 數據處理工具:Python Pandas、R。
- 分散式處理工具:Hadoop、Map Reduce / Spark。
那些做好準備的人,已經打贏了戰鬥的半場。—?米格爾·德·塞萬提斯(Miguel de Cervantes)
第三步:探索性數據分析
在探索階段,我們所要做的是去了解手中的數據有著怎樣的模式和價值。我們需要使用不同的數據可視化、統計測試方法,來支持自己得出的結果。這樣一來,就能夠通過各式的圖表、分析工具,來挖掘出數據背後那些隱藏的秘密。出門去探險吧!
「船停泊在港灣勢必安全,但這並不是造船的初衷。」——約翰·A·謝德(John A. Shedd)
目標:
- 通過可視化方法、圖表尋找數據中潛藏的模式。
- 通過統計學方法提取特徵,從而識別、測試重要的變數。
所需技能:
- Python 包:Numpy、Matplotlib、Pandas、Scipy。
- R 包:GGplot2、Dplyr。
- 推論統計。
- 實驗設計。
- 數據可視化。
提示:
在進行分析的時候,你是否發覺自己擁有了「蜘蛛感應」,有能力去發現一些奇怪的模式或趨勢,並且總想深入求索,尋找有趣的發現!
設計思考:
大多數時候,人們總是希望通過直觀的觀察圖表,便能有所發現。不過,關鍵在於誰才是要去對數據進行解讀的最終用戶。所以,你需要留意你的受眾。
第四步:建模(機器學習)
現在,我們來到了非常有趣的一步。所謂模型,就是統計學中的一般模型。你可以把機器學習模型,想像成躺在你的工具箱里的工具。你擁有很多可供選擇的演算法,能夠用它們來輔助實現不同的業務目標。選用的特徵越好,你的預測能力也會越高。在清理數據並提取出重要特徵後,我們就可以將模型用作預測工具,從而提升業務決策的效果。
預測分析(Predictive Analytics)已經成了改變遊戲規則的關鍵所在。預測分析要做的不是回顧從前去剖析「究竟發生了什麼」,而是幫助管理人員回答諸如「下一步會是什麼?」以及「我們該怎樣應對?」的問題(摘自《福布斯雜誌》)。
佐證預測能力強大的經典案例:
沃爾瑪的供應鏈中,就藏著一個很合適的例子。沃爾瑪曾經成功預測出,在颶風季期間某一門店的草莓夾心餅乾將會售罄。通過數據挖掘,他們發現,歷史數據顯示在颶風出現前,最受消費者歡迎的產品是夾心餅乾。這聽起來雖然很瘋狂,但卻的的確確是個真實的故事。它也讓人們真切意識到,絕不要低估預測分析的力量。
目標:
- 深度分析:創建預測模型/演算法。
- 評估並改進模型。
所需技能:
- 機器學習:監督學習/無監督學習演算法。
- 評估方法。
- 機器學習包:Python 的 Sci-kit Learn、R 的 CARET。
- 線性代數及多元積分。
模型是嵌入在數學之中的觀點——凱西·奧尼爾(Cathy ONeil,數據科學家)
第五步:解釋(用數據講故事)
終於到了講故事的時間!這是數據科學pipeline中最重要的一步,並且是了解該如何通過溝通來解釋自己的發現。講故事是關鍵所在,所以絕不要低估它的意義。這一過程涉及到如何與其他人建立聯繫、說服他們並提供幫助。了解自己的觀眾並與他們產生聯繫,這是一門藝術,也是用數據來講故事最奇妙的一部分。
我相信講故事的力量。故事會在我們每一個人的心中,開啟一片新的天地,它會打開我們的思維,並往往會導致最終的行動。——梅琳達·蓋茨(Melinda Gates,比爾·蓋茨夫人)
在用數據講故事的過程中,情感扮演了重要的角色。人們並不會突然就奇蹟般地理解了你的發現。最好的影響別人的方式,就是通過情感來講述你的故事。作為人類,我們總會自然而然地受到情感的感染。如果你能夠挖掘到聽眾的情緒,那麼我的朋友,你就掌握了控制權。在展示數據的時候,請在腦子裡默念心理學的力量,默念「了解自己的觀眾並與他們產生聯繫,這是一門藝術,也是用數據來講故事最奇妙的一部分」。
最佳練習法:
想要加強用數據講故事的能力,我強烈建議你反覆排練。如果你是一個父親或是母親,那麼下面的建議對你來說應該是個好消息。在孩子們睡覺前,你可以試試不要再去讀蘇斯博士那些經典讀物了(希奧多·蘇斯·蓋索,較常使用蘇斯博士為筆名。是美國著名的作家及漫畫家,以兒童繪本最出名。),下次你不妨用你的數據分析結論來哄他們入睡!如果一個孩子都能理解你的解釋,那麼任何人都可以,特別是你的老闆!
如果你無法向一個六歲大的孩子解釋清楚,那麼這意味著你自己其實也並沒有真正理解。——阿爾伯特·愛因斯坦(Albert.Einstein)
目標:
- 讓見解回歸業務問題。
- 研究成果可視化:保持簡潔、分清輕重緩急。
- 講述一個清晰的故事:高效地與非技術聽眾溝通。
所需技能:
- 業務領域知識。
- 數據可視化工具:Tablaeu、D3.js、Matplotlib、GGplot、Seaborn。
- 溝通:演講、報告、文章。
最後一步:更新模型
別著急,到這裡,你的故事還沒有結束。模型一旦被採用,你在日後還需要根據接收新數據的頻率,來定期更新模型。也就是說,收到的數據越多,模型更新也要相應地更頻繁。舉例來講,假如你現在搖身一變成了電商巨頭亞馬遜,你為顧客推出了一個「鞋類」的這一新的購買品類。但是舊模型中並沒有這一類型,因此你需要更新模型來包含更多新的特徵。如果不這樣做,隨著時間的推移,你的模型表現就會逐步衰減退化,業務也會因此受到影響。引入新的特徵將會改變原模型的性能,這有可能是因為特徵的改變導致的,或者也可能是因為新特徵與其他特徵的協同作用造成的。
小結
綜上所述,你要做的事情如下:
- 找到你的業務問題。
- 獲取數據。
獲取數據、清理數據、通過可視化方法來探索數據、採用不同的機器學習演算法對數據進行建模、通過評估來解讀數據、更新模型。
請記住,我們和數據並沒有什麼區別。我們都有屬於自己的價值、目標,以及存於世間的理由。
你所面對的大部分問題,實際上都屬於工程實踐問題的範疇。即便擁有強大的「機器學習之神」的全部資源,絕大部分的影響實際上還是來自於準確提取特徵,而非多麼強大的機器學習演算法。
所以我們整個流程中的基本方法是:
1. 首先確保你的整條pipeline從頭到尾都堅實可靠。
2. 從一個合理的目標展開。
3. 直觀地理解你的數據。4. 確保整個流程能夠保持堅實可靠。
採用這樣的方法,將很有可能幫你在很長一段時間裡都能賺得盆滿缽滿,並讓其他人感到滿意。所以……當下一次有人問你什麼是數據科學。請這樣回答:「數據科學是 OSEMN(數據科學很贊)」。
翻譯:雪曼
審校:Leo原文:https://www.kdnuggets.com/2018/05/beginners-guide-data-science-pipeline.html
推薦課程
http://campus.swarma.org/gcou=10135 (二維碼自動識別)
關注集智AI學園公眾號
獲取更多更有趣的AI教程吧!
搜索微信公眾號:swarmAI
集智AI學園QQ群:426390994
學園網站:http://campus.swarma.org
http://weixin.qq.com/r/FzpGXp3ElMDrrdk9928F (二維碼自動識別)
推薦閱讀:
※清明出遊大數據,盤點各類旅遊TOP10!
※【實戰應用】傳統調研與數據分析的結合方式
※Python爬蟲系列(二):requests基礎
※sqoop簡單介紹
※擔心平台跑路?讀懂這些運營數據完美避開大雷!