91精品国产综合久久四虎久久_国产成人午夜高潮毛片_99er视频精品免费观看_2020亚洲熟女在线观看_日本女优人体写真_国内黄色毛片_年轻的老师中文版在线_丰满女邻居做爰_久久久久久精品成人免费图片

數(shù)據(jù)科學(xué)中“專業(yè)化”意味著什么
作為一個專業(yè)的數(shù)據(jù)科學(xué)程序員需要具備些什么?

我作為一個數(shù)據(jù)科學(xué)家的經(jīng)歷跟我在書本和博客上所讀到的根本不一樣。我曾讀到過為數(shù)字超級新星公司工作的數(shù)據(jù)科學(xué)家,他們聽上去像是英雄,可以寫出自動化(近乎有感知能力的)算法并不斷地大量獲取認(rèn)知結(jié)果。我也讀到過像百戰(zhàn)天龍那樣的數(shù)據(jù)科學(xué)家黑客,他們可以通過將他們周圍有的任意原始材料拼湊出數(shù)據(jù)產(chǎn)品來拯救世界。

我的團(tuán)隊創(chuàng)建的數(shù)據(jù)產(chǎn)品并沒有重要到可以評價大型的企業(yè)級基礎(chǔ)設(shè)施。只是我覺得,投資超高效的自動化以及產(chǎn)品控制是不值得的。另一方面,我們的數(shù)據(jù)產(chǎn)品影響了企業(yè)中的重要決策,并且我們的努力是可測量,這一點(diǎn)十分重要。我們負(fù)擔(dān)不起總是將所有的事情人為來做,但我們也需要高效的方法來為成千上萬的人們共享結(jié)果。

現(xiàn)實(shí)中大部分還是 “常規(guī)”的數(shù)據(jù)科學(xué)家。我們比黑客們更有組織但是并不需要一個超級英雄般的數(shù)據(jù)科學(xué)老巢。我們一組人聚在一起進(jìn)行思維碰撞,我們在此對于寫出穩(wěn)定的代碼的最佳實(shí)踐進(jìn)行頭腦風(fēng)暴。這篇文章是對這次對話的一個總結(jié),并且試圖將我們的知識收集起來,取其精華至于一處。

如何變得專業(yè)化

數(shù)據(jù)科學(xué)家需要具備一些軟件工程的技能,只不過并不是一個專業(yè)的軟件工程師所需要的所有技能。我將具備必要的數(shù)據(jù)產(chǎn)品工程技能的數(shù)據(jù)科學(xué)家稱為專業(yè)的數(shù)據(jù)科學(xué)程序員。專業(yè)并不是指類似一個證書或者多少小時的經(jīng)驗(yàn),我所指的是方法上的專業(yè)性。專業(yè)的數(shù)據(jù)科學(xué)程序員在他們建立數(shù)據(jù)產(chǎn)品的過程中是可以自我改正的。他們有著常見的策略來識別工作中的問題并糾正錯誤。

專業(yè)的數(shù)據(jù)科學(xué)程序員不得不將一個假說用一個可以測試的程序來表達(dá)出來。數(shù)據(jù)科學(xué)編程在軟件工程中是獨(dú)特的,這是因?yàn)閿?shù)據(jù)科學(xué)家所處理的那些問題類型。巨大的挑戰(zhàn)在于數(shù)據(jù)科學(xué)本質(zhì)就是實(shí)驗(yàn)性的。這些挑戰(zhàn)經(jīng)常是困難的,數(shù)據(jù)是混亂的。對于很多這類問題,并沒有已知的解決方案和策略,通往解決方案的路是前所未有的,可能的解決方案都是步步為營取最優(yōu)來得出的。在下面的內(nèi)容中,我會介紹一個規(guī)范的、有生產(chǎn)力的試錯的常見策略:將問題分成多個小步驟,分別嘗試解決方案,在過程中一直做出糾正和改進(jìn)。

像專業(yè)人士一樣思考

為了成為一個專業(yè)的數(shù)據(jù)科學(xué)程序員,你必須了解比系統(tǒng)是如何構(gòu)造的更多。你必須知道如何設(shè)計一個解決方案,在你有一個解決方案時你必須能夠識別出來,你也必須在你沒有完全理解你的方案時有所察覺。最后一點(diǎn)是你必須能夠自我糾錯。當(dāng)你識別出你方法中的概念差異的時候,你能夠自己將其完善。為了以一個你可以自我糾錯的方式來設(shè)計數(shù)據(jù)科學(xué)解決方案,我發(fā)現(xiàn)依照以下基本步驟是很有用的:觀察、理解、想象以及展示。

第一步:觀察。從掃描環(huán)境開始。做背景研究并對所有可能與你試圖解決的問題有關(guān)的細(xì)枝末節(jié)有所了解。以盡量寬廣的視野來看待你的問題。盡量多的發(fā)現(xiàn)場景并且收集各類不同的信息。

第二步:理解。將你發(fā)現(xiàn)的各種信息碎片抽象成符合黑板模式的元素。在這個階段,你正在將問題中的元素轉(zhuǎn)化為有意義的技術(shù)性的概念。理解問題是為可行的設(shè)計奠定基礎(chǔ)的關(guān)鍵步驟。

第三步:想象。根據(jù)你理解的技術(shù)概念,想象一些可以使你往目標(biāo)更近一步的實(shí)現(xiàn)。如果你不能想象出一個實(shí)現(xiàn),那么你可能在你觀察問題的時候錯過了什么。

第四步:展示。首先將你的解決方案解釋給自己聽,然后是你的伙伴,然后是你的老板,最后是你的目標(biāo)客戶。每一次解釋只需要以傳達(dá)到你的觀點(diǎn)的正式程度即可:一次飲水機(jī)旁的短暫談話,一封電子郵件、一次15分鐘的散步。這是在成為一個自我糾錯的專業(yè)數(shù)據(jù)程序員的過程中最重要的常規(guī)實(shí)踐。如果你的方案有任何漏洞,那么他們將會在你嘗試解釋的時候發(fā)現(xiàn)它?;c(diǎn)時間來填充這些溝通代溝,并且確保你可以恰當(dāng)?shù)亟忉寙栴}和針對它的解決方案。

像專業(yè)人士一樣設(shè)計

創(chuàng)建和發(fā)布一個數(shù)據(jù)產(chǎn)品的活動是多樣且復(fù)雜的,但是,一般來說,你將要做的會在阿利斯泰爾克羅爾(Alistair Croll?)描述的大數(shù)據(jù)供應(yīng)鏈中所包含。

 

big-data-supply-chain-db64a51ee8a3c650b65532d5e037e074

圖片由Jerry Overton提供

由于數(shù)據(jù)產(chǎn)品依照一個范式(實(shí)時、批量或者兩者的混合)來執(zhí)行,你很有可能發(fā)現(xiàn)你自己正在一個數(shù)據(jù)供應(yīng)鏈活動和一個數(shù)據(jù)范式的整合之中:注入和清理批量更新的數(shù)據(jù),建立一個算法來分析實(shí)時數(shù)據(jù),將批處理的結(jié)果進(jìn)行共享等。幸運(yùn)的是,黑板架構(gòu)模式給予了我們一個基礎(chǔ)的藍(lán)圖來應(yīng)用良好的軟件工程應(yīng)對這些場景。

黑板模式

blackboard-pattern-f9060016f0aa09932deb83696161ce81

圖片由Jerry Overton提供

黑板模式告訴我們通過將整個任務(wù)進(jìn)行劃分來找到一系列更小的自包含的子任務(wù)的方式來解決問題。每一個子任務(wù)將你的假說轉(zhuǎn)化為一個更容易解決或是解法已知的假說。每一個任務(wù)逐漸改進(jìn)解決方案,并且理想的情況下通向一個可行的解決方案。

數(shù)據(jù)科學(xué)被工具所淹沒,每一個都有其獨(dú)特的優(yōu)點(diǎn)。生產(chǎn)力是很重要的,我喜歡讓我的團(tuán)隊選擇任何他們最熟悉的工具。使用黑板模式使得從一系列不同的技術(shù)來構(gòu)建數(shù)據(jù)產(chǎn)品變得可行。算法之間的協(xié)作通過共享數(shù)據(jù)倉庫來發(fā)生。每一個算法可以獲取數(shù)據(jù),將它們作為輸入并且將結(jié)果返回給數(shù)據(jù)倉庫為其他的算法作為輸入。

最后,所有的算法都通過使用單個代表用來解決問題的啟發(fā)者的控制組件來互相協(xié)作??刂破魇悄阋呀?jīng)選擇的解決問題的策略的實(shí)現(xiàn)。這是最高層面的對問題的抽象和理解,這是由可以交互的并且決定所有算法順序的技術(shù)所實(shí)現(xiàn)的。控制器可以是像一個cron的定時任務(wù)或者腳本一樣的自動化組件?;蛘呖梢允侨斯さ?,按照順序執(zhí)行不同步驟。但總體來說,這是解決問題的根本策略。這是一個你可以從頭到尾了解問題解決方案的地方。
elements-of-the-blackboard-pattern-8f53565530715d8f041190f0781bb18d

圖片由Jerry Overton提供

這一基本的方法已被證明在構(gòu)建必須通過不完全數(shù)據(jù)解決不確定的、假設(shè)的問題的軟件系統(tǒng)時是有用的。最棒的一部分是它使得我們通過確定的部分在不確定的問題上獲得進(jìn)展。不幸的是,我們并不保證你的努力真的一定會解決問題。你最好盡早知道如果你走的路是不起作用的。你需要通過你實(shí)現(xiàn)系統(tǒng)的順序來完成。

像專業(yè)人士一樣構(gòu)建

你不一定非要以固定的順序來構(gòu)筑數(shù)據(jù)產(chǎn)品的元素(例如,先建立數(shù)據(jù)倉庫,然后是算法,然后是控制器)。專業(yè)的方法是按照最高的技術(shù)風(fēng)險來構(gòu)建。從最高風(fēng)險的元素先開始。一個元素會因?yàn)楹芏嘣虺蔀榧夹g(shù)風(fēng)險。最有風(fēng)險的部分可能是那個有著最高工作負(fù)載的或者是你最不了解的部分。

你可以通過專注于單個元素然后解決其他的方式以任意順序構(gòu)建組件。例如,如果你決定從構(gòu)建算法開始,無視數(shù)據(jù)輸入并且定義一個臨時點(diǎn)來寫入算法輸出。

implementing-the-blackboard-pattern-a8b64a73f354daa644d07fc4e1a41d0c

圖片由Jerry Overton提供

然后,以技術(shù)風(fēng)險高低的順序?qū)崿F(xiàn)數(shù)據(jù)產(chǎn)品:風(fēng)險最高的元素最先開始。專注于一個特定的元素,無視其他的,稍后再替換它們。

這里的關(guān)鍵是以小塊的方式構(gòu)建并執(zhí)行:以你理解的小步驟來寫算法,一個數(shù)據(jù)源一次的方式構(gòu)建數(shù)據(jù)倉庫,以及一個算法執(zhí)行步驟一次的方式構(gòu)建你的控制器。目標(biāo)是總是有一個可以工作的數(shù)據(jù)產(chǎn)品,只不過它只有到最后才是功能完備的。

專業(yè)人士的工具

每一個專業(yè)人員需要有質(zhì)量的工具。有太多的選擇可以使用。下面列出了一些公認(rèn)最常用的工具,我附上了鏈接使得你們可以了解更多信息:

數(shù)據(jù)可視化:

  • D3.js: D3.js (或者D3, 數(shù)據(jù)驅(qū)動文檔) 是一個JavaScript 庫,旨在在瀏覽器中建立動態(tài)的可交互的數(shù)據(jù)可視化。它利用了廣泛被實(shí)現(xiàn)的SVG, HTML5以及 CSS 標(biāo)準(zhǔn)。

版本控制:

  • GitHub:?GitHub 是一個基于網(wǎng)絡(luò)的Git倉庫服務(wù),它提供了所有的Git的分布式修訂控制和源代碼管理功能,也添加了它自己的功能特性。GitHub提供了一個基于網(wǎng)絡(luò)的圖形化界面和移動端的桌面應(yīng)用。

編程語言:

  • R:?R 是一個針對統(tǒng)計計算和圖形化的編程語言及軟件環(huán)境。R語言在統(tǒng)計學(xué)家和開發(fā)統(tǒng)計軟件和數(shù)據(jù)分析的數(shù)據(jù)挖掘者中被廣泛使用。
  • Python: Python 是一種被廣泛使用的通用的高層次的編程語言。它的設(shè)計理念強(qiáng)調(diào)代碼的可讀性,它的語法允許編程人員用比C++和Java更少的代碼來表達(dá)概念。
  • Scala:?Scala 是一種針對通用軟件應(yīng)用的對象函數(shù)式編程語言。Scala有著對函數(shù)式編程的全面支持,以及一個非常健壯的靜態(tài)類型系統(tǒng)。這使得用Scala寫的程序非常簡潔因而比其他通用編程語言尺寸更小。
  • Java:?Java 是一種通用的計算機(jī)編程語言,它是并發(fā)的、基于類的、面向?qū)ο蟮?、特別為了減少實(shí)現(xiàn)依賴而設(shè)計的。它旨在讓應(yīng)用“一次編寫,隨處執(zhí)行”

Hadoop生態(tài)系統(tǒng):

  • Hadoop:?Hadoop 是一個用Java開發(fā)的開源的軟件框架,為了在基于商業(yè)硬件的計算機(jī)集群上進(jìn)行分布式存儲和分布式處理海量數(shù)據(jù)集。
  • Pig:?Pig 是一個為了創(chuàng)建Hadoop之上MapReduce程序的高層平臺
  • Hive:?Hive 是一個在Hadoop之上構(gòu)建的數(shù)據(jù)倉庫基礎(chǔ)結(jié)構(gòu),旨在提供數(shù)據(jù)匯總、查詢和分析。
  • Spark:?Spark的內(nèi)存原語操作為某些應(yīng)用提供了高達(dá)100倍的性能提升

結(jié)束語:本文來自哪里

這篇文章起始于一次偶然的關(guān)于我的團(tuán)隊中正面臨的生產(chǎn)力問題的討論。我們最終將問題追溯到技術(shù)平臺和我們的軟件工程知識。我們需要在我們的軟件工程實(shí)踐中補(bǔ)上漏洞,但是每次的經(jīng)驗(yàn)都太抽象或是太細(xì)節(jié)(對于專業(yè)的軟件開發(fā)者來說)。我是一個由外至內(nèi)數(shù)據(jù)科學(xué)方法的擁護(hù)者,我決定主辦一個開放的群聊來討論這些事。

我們獲得了相當(dāng)大的參與度:30分鐘之內(nèi)有179條發(fā)布;600個觀點(diǎn),以及28000多個訪問。我主持了討論并基于最有影響力的答案總結(jié)了我們的發(fā)現(xiàn),然后我將那個總結(jié)作為本文的基礎(chǔ)。我想要感謝所有那些參加了這一過程的人們,并花一些時間來認(rèn)可他們的貢獻(xiàn)。

 

 

Jerry Overton

Jerry Overton是一名英聯(lián)邦科學(xué)委員會的數(shù)據(jù)科學(xué)家以及杰出工程師,下一代IT解決方案的全球領(lǐng)軍人物。Jerry是高級分析研究的帶頭人以及英聯(lián)邦科學(xué)委員會高級分析實(shí)驗(yàn)室的創(chuàng)始人。在他的博客“做數(shù)據(jù)科學(xué)”(Doing Data Science)中,Jerry分享了他在領(lǐng)導(dǎo)數(shù)據(jù)科學(xué)的公開研究中的經(jīng)驗(yàn)。

Noah's Ark - Nuremburg Chronicle 15th century (source: Noah's Ark - Nuremburg Chronicle 15th century).