作為數據科學家應該知道的11件事
背景
在我們舉辦的聚會期間,我們見到了很多朋友。從數據科學領域完全的菜鳥到專家,在同一個屋檐下,每個人都發出自己的疑惑。然而,當我們面對這群朋友——很大比例的這部分人(包括一些專家),一件事情顯得尤為突出,他們沒有自己的機器,也沒有將自己的身份調整過來。他們中的很多人從未抽出時間開啟他們作為數據科學家的旅程。結果他們只是得到了一個能夠涉及多個產業資源的機會。
沒有人告訴他們該關注哪些博客,該訂閱哪些時事新聞,去哪里閱讀行業最新的訊息。他們從不調整他們的機器,也沒有必要的硬件或者軟件。這導致了極低的生產率,在某些情況下甚至遭遇挫折,在這樣的時候他們應該喜歡上這樣的經歷。
還是沒有聯想起什么?試想下在瀏覽一個網頁的時候,載入就耗費了10秒中。在這個時候你很可能會很不耐煩,然后打開一個新站點的網頁避免浪費時間。同樣的事情也會發生在數據科學身上。代碼運行的時間越長,從工作中避開的機會也越多。
這就是我們怎樣發現行業里的人們不曾說過的問題,因此我們想給這些朋友準備成為數據科學家的一些指引。
誰適合本指引?
如上所述,這個指引是寫給那些還沒調好機器的數據科學行業的工作者。我想這更多的是給新手們寫的,但是我同樣也希望資深工作者也能從中受益。
讓我們從設置機器開始
1.硬件-機器的選擇
首先應該確認的是你有適合數據科學的硬件配置。如果你的硬件已經足夠好的話,那也沒什么可以做的了。既然筆記本電腦已經成為現在的主流,以下是我對筆記本的配置建議。如果你用臺式機或者iMac,你可以有更好的硬件配置。
當然最終的選擇將由你可以付出多少錢來決定,我建議一臺四核心,英特爾i7處理器的機子就可以了。確保你選的機子是四核處理器而不是雙核的。在現在,選用好的四核芯片還是比較困難的。你可以在cpuboss這類網站上查看各種芯片的benchmark性能表現,再根據自己的預算來選擇。
我們總是建議你配置盡量大的內存,很多工具在計算的時候都會消耗大量內存,你也不想讓內存溢出吧。
如果你的預算充裕,將機械硬盤升級為固態硬盤可以為數據的讀寫提升很大的性能。對那些真想深入學習機器學習的人來說,建議配置一塊英偉達的GPU,這樣的話對于那些需要強烈計算的時候可以用上CUDA技術。
這里有一些比較好的建議配置:
- 15吋的Mac Book Pro.
- 3年前我購置了一臺聯想Z510,i7(3632QM)處理器,16GB內存,英偉達的GPU的電腦,我覺得還不錯。性能方面,它仍然是現在市場上一臺比較不錯的設備。
- 如果你在美國,需要更好的設備,可以試下Malibal 9000,它很漂亮,只是有點重。
一些其他的說明:
- 6代的英特爾Skylake處理器最近才發布,基于這款處理器的設備才剛剛興起。我相信他們將再次掀起一場革命。你可以在聯想Thinkpad P50和P70的配置上得到檢驗。 所以,如果你現在有一臺中等配置的機器,我建議你再等2-3個月購置一臺基于6代處理器的設備。
- 如果現在你不得不買一臺設備的話,四代四核i7處理器是一個不錯的選擇。在寫這篇文章的時候,5代的處理器還沒有什么好的選擇。
人們可能會說沒有必要在怎么高配的設備上做投資。你可能在一些中等機器的云上更好的工作。我個人很喜歡個人電腦提供的方便的可訪問性,我可以在沒有網絡的情況下隨時隨地的工作。
2.操作系統
一旦你已經選定了你的機器,下一步重要的選擇就是操作系統了。
- 如果你有一臺mac機,那么你的操作系統就已經定了。一些軟件比如QlikView在MAC下沒有兼容版本,你可以在虛擬機里運行它們。
- 如果你用的是PC電腦,我建議安裝雙系統。Linux在高級計算上有更好的表現,Windows系統對于像微軟Office等一起其他的軟件只能在Windows系統運行。所以兩個系統最好都要有。
- 另一個選擇是我看到很多人在Windows機上跑一臺Linux虛擬機,這樣的話在內存和性能上將受到一些限制。
- 也可以在Linux上使用微軟的Office 360.我本人沒怎么干過,所以我就不評論了,但是看起來也是個選擇。再次重申,可能有很多軟件沒法再Linux上運行。
一旦選定了操作系統確保你的操作系統發揮了最大的性能。比如,在Windows上,你可以關掉一些透明等界面的效果。去到高級選項卡->性能->設置,將視覺效果禁用,取消一些沒必要自啟動的程序,然后將電源調成性能模式。
3.常用軟件
除了一些數據分析工具,這里有一些你需要用到的軟件。
- 微軟Office比如Excel,用來展現結果,編寫文檔等。
- FileZilla用FTP傳送文件。
- Git & GitHub用來控制版本.
- VMWare / Oracle Virtual Box / Vagrant用來運行虛擬機。
- Cygwin / Putty(for windows)
- 我使用Evernote 來整理筆記.如果在Linux里,我使用瀏覽器。
- Terminator (for Linux)在單個視圖下運行多個終端的工具,很不錯的。
- Sublime Text用來編寫代碼.你需要安裝額外的你所使用的語言插件。
4.分析數據的軟件
這部分將非常依賴于你所選用的數據挖掘的工具。如果你仍然選用主要的工具,看下這里的比較 – SAS vs. R vs. Python.如果你 已經有一個選用的工具,選一個適合你的:
- SAS– 基于SAS的企業級指引、企業級數據挖掘模塊將依賴于你的許可證.它也提供了TextMiner / JMP和一些行業應用的模塊。
- R– R語言提供了一些關鍵的庫.RStudio是一個不錯的開發環境。
- Python– iPython notebooks, Dato (Graphlab), vowpal-wabbit, import.io 是另外很有意思的相互獨立的科學庫.
其他可供選擇的有MATLAB / Octave / RapidMiner.
5.數據可視化軟件
除了以上提到的軟件,有一個專門用來做數據可視化的工具是很重要的。他們通常會在每一個項目的末尾,當你將數據呈現在客戶面前時顯現出重要性。有很多可供選擇的軟件。關于這些軟件的更多信息,請參考他們自己的文檔。我推薦 QlikView – 它很易用,有一個個人免費版本可以下載,對于大的數據量它真的可以很好的處理.Tableau 是另外一個很不錯的選擇,使用起來同樣非常直觀,但是據我的經驗,對于大數據量的處理并不是很出色。
如果你了解JavaScript,你可以使用基于它的庫比如D3.js
6.數據庫/文件存儲
很多時候,當數據集很龐大或者你給你的用戶編譯程序時,你將需要使用數據庫 –SQL 是最常使用的.你也可以使用MySQL或者PostgreSQL.SQLite捆綁在Python的包里時對于一些小的應用是非常高效的。如果你經常跟大數據量打交道,建立一個Hadoop集群是不可避免的。如果你要處理實時的數據流,你也將需要用到Spark.
除了這些數據庫,你需要了解下NoSQL,以防日后用到它.我建議使用 MongoDB 和 Neo4j .
其他資源
6.云服務
假如你要處理400GB的數據量,你要怎么辦呢?即使我上面建議的機器配置用R語言來處理,也無法一次將他們裝載到內存里。對于這樣的場景,有一個云賬號是很方便的。你可以使用兩家云服務提供商——亞馬遜網絡服務(人們常說的AWS)或者微軟公司的Azure.他們都提供了高度伸縮性的解決方案。Azure平臺界面可能會更加友好些,但是亞馬遜才是云服務的霸主。你可以在兩個公司都申請個賬號體驗一下。
7.行業博客和時事新聞
我假設你已經訂閱了Analytics Vidhya的文章。如果沒有,請到這里 訂閱.除了Analytics Vidhya, 你也可以關注 KDNuggets 和 DataScienceCentral.
在時事新聞方面, 我推薦O’Reilly, DataScienceWeekly和 Data Elixir 的時訊.
8.移動app
我經常使用手機閱讀很多內容。不論我是在乘坐地鐵或者只有5分鐘瀏覽最新的出版物,我都使用移動端。我用Prismatic和Flipboard這些聚合軟件去發現新的東西。兩者都給我提供了行業最新的發展動態。
另外,我也使用Termux,它是一個功能完善的Linux終端,以防我需要ssh連接服務器的時候使用。我也偶爾使用它在Python腳本里編寫原型程序。
9.聚會
你可以找到很多聚會在你周圍.它給需要相互交流的人們提供了很好的機會。Analytics Vidhya在印度很多城市主辦了編程馬拉松活動。DataKind也有很多聚會.
10.可用來實踐的數據集
對于新手, 你可以看看這在Analytics Vidhya上的討論 .除了這個, KDNuggets維護了一些開源的數據集。 UCI也提供了一些可用于機器學習的數據.
你也可以訪問data.gov來尋找一些開源的數據。
11.社區和社交媒體
如果你還沒有完成, 注冊我們的討論門戶.你不能只是跟其他的數據科學家在社區上交流,也可以參加各種我們主辦的編程馬拉松.除此之外, 你可以看看 Kaggle競賽和DataTau這是黑客行業的一些動態.
另外,你也可以在Twitter, LinkedIn, GitHub, Facebook和Reddit找到數據科學的社區.你同樣可以訂閱YouTube的頻道。