資料科學家為什麼不想工作
3月23日,TDU在中國人民大學舉辦了“資料科學學習規劃”活動,人大副教授郭紹俊老師、TDU執行校長楊慧女士以及TalkingData資料科學家殷堯為大家帶來了精彩分享。
今天為大家分享的是 TalkingData資料科學家殷堯 的分享,介紹了資料科學專案的流程以及一些個人學習成長的經歷。
資料科學到底在做什麼
資料科學是一個包含很多技能的一個學科,以我自身的經驗來看,資料科學中最重要的技能是程式設計。坦白講大家做技術的本質還是程式設計師。
這聽起來可能和大家的想法有一點出入,大部分人之前接觸到資料科學課程也好,相關資訊也好,聽到最多的應該是演算法模型這個詞,相應的也會有很多理論。
但我們在工業當中,在實際的操作當中,演算法模型到底佔了多少工作量呢?下面簡單的舉例說明一下。
假設建立模型是設計烹飪一道以龍蝦為原材料的菜。如果你是這個餐廳的大廚,由你來設計的話,你可能覺得餐廳會準備好你想要的食材、配料、廚具等,你只需要設計就可以了。
大部分求職者和資料科學家都是這麼想的。所以如果去網上搜索一下,你會發現國外80%-90%的人都在抱怨說他不想在公司上班---為什麼什麼活都要我自己幹?
我們看一下到底他們要自己幹什麼活。
現在要做菜,但是我們沒有原材料--龍蝦,所以我們第一步要去抓龍蝦。對應到資料科學專案中,就是我們要自己去爬取資料。
這一步大家不要覺得很簡單,在技術上確實是很簡單,但是這個過程很漫長。如果你程式設計能力不強的話,加上網速不好、網頁多等等外部原因,這一步是要做非常久的。但是如果技術到位的話,不到一天就可以完成。
捕完龍蝦之後我們要做清理。把撈回來龍蝦裡面的小魚,小石頭甚至垃圾都清理乾淨,因為我們只要龍蝦。反映在技術上就是當我們拿到網頁資料,裡面是有各種各樣亂七八糟的資訊的,但我們只要有用的那部分。
接下來我們要做過濾。剔除龍蝦中有一些斷胳膊少腿或者死掉的,這些我們也都不要。
在收集資料的過程中這一步也是很關鍵的。大部分收到的資料質量都是參差不齊的,有亂碼或者是空值,這些我們都不要。
我們拿到處理好的龍蝦之後,接下來要剝殼把蝦肉取出來。對於我們的模型來說,這一步就是要把原始的資料進行一些處理,再下一步才是大家聽到比較多的特徵工程。模型要求你給的是一個矩陣,那麼你只能給他一個矩陣,原始的資料它處理不來,所以我要把這些資料變成矩陣。
到這一步才是你真正開始作為大廚,去做你所認為的你自己的工作。
你開始用你的資料訓練你的模型,也就是做菜,你覺得這一部分很有趣,是你真正的本職工作,但你會發現這一步其實基本上沒做什麼事情,因為你只是讓模型自己去學習。機器學習模型的本意就是不要任何人工干預,只讓它跑就可以了。
跑完之後並沒有結束。其實很多資料科學家們都還是認為跑完演算法模型就結束了,實際上我們還有其他任務。也就是實施,要看模型效果怎麼樣。
大部分情況下,如果運氣好,跑的效果剛好符合產品經理的要求,符合工業上的要求就可以上線了。但是現實中,大部分的情況是不過關的,所以需要各種除錯。
這一步是要花費非常多時間的。驗證之後要真正在工業上上線、服務化才是最後一步。其實上線一個模型,跟上線一個網站或APP沒有太多的差別。都要符合工業的效能、開銷這些方面的要求。之前所有的過程,從爬取、清理到特徵工程等都是程式碼寫出來的,最後一步要把這些程式碼串聯起來變成例行化的任務,而且還需要不停更新維護,這才是完整的一個流程。
在整個過程中,大家可以猜一下演算法模型這一步花的工作量是多少?假設整個過程花了一週的話,我可以很明確的說演算法模型這一步不會超過兩個小時。80%-90%甚至更多時間都是花在前面的。
其實這不是一個很理想的情況,也不是很科學,但是現實就是這樣。你希望有個團隊在支援你,配合你,但是大部分公司都是很很缺人的,大家任務都很緊。你要爬資料,去找工程團隊,排期要到兩個月之後了,如果我不會爬蟲技能的話,我就只能等兩個月,我會做就可以自己來。後面的工作也是一樣。
當我們談論Python的時候,我們談論的是它的技術棧
這裡面不得不說到程式語言,資料科學中目前最流行的語言是Python。
Python語言本身非常簡單的,非常容易上手,但是有很多語言也很簡單,也很容易上手,為什麼python的排名可以上升?因為python有很多的第三方開源庫,是這些開源庫讓python的社群像滾雪球那樣越來越強大。可是你知道嗎,這些開源庫大部分都是通過C/C++來完成的,都是在擁有豐富知識的同時,又有強大程式設計技能的那部分高手開發的。
有時候我們在用python的時候,如果用一般的程式設計思路,那麼很容易就會開發出跑的太慢的程式,千萬不要覺得這是正常的,這是不正常的,是因為你的水平不夠造成的,要學會善用這些開源庫和C/C++。
在此推薦三位非常卓越的人物,大家感興趣可以去詳細瞭解他們的經歷和作品,希望能在技術道路的方向上對大家有所啟發。
京東數字科技首席資料科學家鄭宇博士,是城市計算領域的先驅和奠基人,他曾說過,他讀博士的時候經常想使用非常高深複雜的方法,覺得這樣才是好的,後來他工作之後才發現,方法要越簡單越好,越簡單的方法反而更有效。
上個月剛剛加入阿里任技術副總裁的賈揚清,非常重視開發效率,在博士期間就開源了深度學習框架Caffe,對整個深度學習領域起到了極大的推動作用。
KDDcup 2012的冠軍陳天奇,陸續開發了SVDFeature,XGBoost,cxxnet等著名機器學習工具,並聯合發起了最大開源分散式機器學習專案DMLC,推動著深度學習的發展,吸引更多人在社群中貢獻,從而在工業界進行應用落地。
小結
這個行業、這個技能其實沒有各位想象的這麼強大。並不是把東西丟給機器,機器就會自動給你非常好的結果,不好意思,目前還沒到這個階段。高手和一般人的差別就在於,一般人發現模型效果不好,能做的就是選擇模型,對資料做各種變換(特徵工程的一種),但是高手卻可以從模型的訓練結果做誤差分析,推斷出問題在哪裡;可以跳出問題本身,從問題的外部去尋找更合適的資料資源,甚至是改進演算法模型本身。學會機器學習技術演算法模型是很重要的,但是知道它們並不能讓你成神。
程式設計並不只是寫寫程式碼,而是用這樣一種心智模式去解決商業問題。這正是資料科學的魅力。
參考資料:
鄭宇博士介紹
https://baike.baidu.com/item/%E9%83%91%E5%AE%87/1315622
陳天奇個人介紹
https://homes.cs.washington.edu/~tqchen/
賈揚清介紹
https://baike.baidu.com/item/%E8%B4%BE%E6%89%AC%E6%B8%85/23360837?fr=aladdin
相關新聞
http://tech.163.com/17/1117/10/D3EH6LS40009987P.html
https://36kr.com/p/5181916