數據科學到底在做什麼?數據科學家又該做些什麼?

近日,在TalkingData騰雲大學(TDU)在中國人民大學

舉辦的「數據科學學習規劃」活動中,TalkingData數據科學家殷堯分享了數據科學項目的流程與個人學習成長的經歷。

不會寫代碼的數據科學家不是一個好大廚?

讓我們聽聽「過來人」的看法……

數據科學到底在做什麼

數據科學是一個包含很多技能的一個學科,以我自身的經驗來看,數據科學中最重要的技能是編程。坦白講大家做技術的本質還是程序員。

這聽起來可能和大家的想法有一點出入,大部分人之前接觸到數據科學課程也好,相關信息也好,聽到最多的應該是演算法模型這個詞,相應的也會有很多理論。

但我們在工業當中,在實際的操作當中,演算法模型到底佔了多少工作量呢?下面簡單的舉例說明一下。

假設建立模型是設計烹飪一道以龍蝦為原材料的菜。如果你是這個餐廳的大廚,由你來設計的話,你可能覺得餐廳會準備好你想要的食材、配料、廚具等,你只需要設計就可以了。

大部分求職者和數據科學家都是這麼想的。所以如果去網上搜索一下,你會發現國外80% - 90%的人都在抱怨說他不想在公司上班——為什麼什麼活都要我自己幹?

我們看一下到底他們要自己幹什麼活。

現在要做菜,但是我們沒有原材料——龍蝦,所以我們第一步要去抓龍蝦。對應到數據科學項目中,就是我們要自己去收集數據。

這一步大家不要覺得很簡單,在技術上確實是很簡單,但是這個過程很漫長。如果你編程能力不強的話,加上網速不好、網頁多等等外部原因,這一步是要做非常久的。但是如果技術到位的話,不到一天就可以完成。

捕完龍蝦之後我們要做清理。把撈回來龍蝦裡面的小魚,小石頭甚至垃圾都清理乾淨,因為我們只要龍蝦。反映在技術上就是當我們拿到網頁數據,裡面是有各種各樣亂七八糟的信息的,但我們只要有用的那部分。

接下來我們要做過濾。剔除龍蝦中有一些斷胳膊少腿或者死掉的,這些我們也都不要。

在收集數據的過程中這一步也是很關鍵的。大部分收到的數據質量都是參差不齊的,有亂碼或者是空值,這些我們都不要。

我們拿到處理好的龍蝦之後,接下來要剝殼把蝦肉取出來。對於我們的模型來說,這一步就是要把原始的數據進行一些處理,再下一步纔是大家聽到比較多的特徵工程。模型要求你給的是一個矩陣,那麼你只能給他一個矩陣,原始的數據它處理不來,所以我要把這些數據變成矩陣。

到這一步纔是你真正開始作為大廚,去做你所認為的你自己的工作。

你開始用你的數據訓練你的模型,也就是做菜,你覺得這一部分很有趣,是你真正的本職工作,但你會發現這一步其實基本上沒做什麼事情,因為你只是讓模型自己去學習。機器學習模型的本意就是不要任何人工幹預,只讓它跑就可以了。

跑完之後並沒有結束。其實很多數據科學家們都還是認為跑完演算法模型就結束了,實際上我們還有其他任務。也就是實施,要看模型效果怎麼樣。

大部分情況下,如果運氣好,跑的效果剛好符合產品經理的要求,符合工業上的要求就可以上線了。但是現實中,大部分的情況是不過關的,所以需要各種調試。

這一步是要花費非常多時間的。驗證之後要真正在工業上上線、服務化纔是最後一步。其實上線一個模型,跟上線一個網站或APP沒有太多的差別。都要符合工業的性能、開銷這些方面的要求。之前所有的過程,從收集、清理到特徵工程等都是代碼寫出來的,最後一步要把這些代碼串聯起來變成例行化的任務,而且還需要不停更新維護,這纔是完整的一個流程。

在整個過程中,大家可以猜一下演算法模型這一步花的工作量是多少?假設整個過程花了一週的話,我可以很明確的說演算法模型這一步不會超過兩個小時。80% - 90%甚至更多時間都是花在前面的。

其實這不是一個很理想的情況,也不是很科學,但是現實就是這樣。你希望有個團隊在支持你,配合你,但是大部分公司都是很很缺人的,大家任務都很緊。你要收集數據,去找工程團隊,排期要到兩個月之後了,如果我不會相關技能的話,我就只能等兩個月,我會做就可以自己來。後面的工作也是一樣。

當我們談論Python的時候,我們談論的是它的技術棧

這裡面不得不說到編程語言,數據科學中目前最流行的語言是Python。

Python語言本身非常簡單的,非常容易上手,但是有很多語言也很簡單,也很容易上手,為什麼Python的排名可以上升?因為Python有很多的第三方開源庫,是這些開源庫讓Python的社區像滾雪球那樣越來越強大。可是你知道嗎,這些開源庫大部分都是通過C/C++來完成的,都是在擁有豐富知識的同時,又有強大編程技能的那部分高手開發的。有時候我們在用Python的時候,如果用一般的編程思路,那麼很容易就會開發出跑的太慢的程序,千萬不要覺得這是正常的,這是不正常的,是因為你的水平不夠造成的,要學會善用這些開源庫和C/C++。

在此推薦三位非常卓越的人物,大家感興趣可以去詳細瞭解他們的經歷和作品,希望能在技術道路的方向上對大家有所啟發。

京東數字科技首席數據科學家鄭宇博士,是城市計算領域的先驅和奠基人,他曾說過,他讀博士的時候經常想使用非常高深複雜的方法,覺得這樣纔是好的,後來他工作之後才發現,方法要越簡單越好,越簡單的方法反而更有效。

上個月剛剛加入阿里任技術副總裁的賈揚清,非常重視開發效率,在博士期間就開源了深度學習框架Caffe,對整個深度學習領域起到了極大的推動作用。

KDDcup 2012的冠軍陳天奇,陸續開發了SVDFeature,XGBoost,cxxnet等著名機器學習工具,並聯合發起了最大開源分散式機器學習項目DMLC,推動著深度學習的發展,吸引更多人在社區中貢獻,從而在工業界進行應用落地。

小結

這個行業、這個技能其實沒有各位想像的這麼強大。並不是把東西丟給機器,機器就會自動給你非常好的結果,不好意思,目前還沒到這個階段。高手和一般人的差別就在於,一般人發現模型效果不好,能做的就是選擇模型,對數據做各種變換(特徵工程的一種),但是高手卻可以從模型的訓練結果做誤差分析,推斷出問題在哪裡;可以跳出問題本身,從問題的外部去尋找更合適的數據資源,甚至是改進演算法模型本身。學會機器學習技術演算法模型是很重要的,但是知道它們並不能讓你成神。

編程並不只是寫寫代碼,而是用這樣一種心智模式去解決商業問題。這正是數據科學的魅力。

參考資料:

鄭宇博士介紹

baike.baidu.com/item/%E

陳天奇個人介紹

homes.cs.washington.edu

賈揚清介紹

baike.baidu.com/item/%E

相關新聞

tech.163.com/17/1117/10

36kr.com/p/5181916

本文轉自: TalkingData數據學堂

推薦閱讀:

活動預告 | 這可能是今年最實在的數據科學分享

從數據分析師到數據科學家,到底要經歷什麼?

我有個大膽的想法,從Excel表哥轉行到Python數據科學家……


推薦閱讀:
相關文章