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