實際工作中,從事數據挖掘/機器學習是怎樣的?至少要掌握哪些知識、意識或經驗?

本題已加入知乎圓桌 ?「機器學習 · 學以致用」,更多「機器學習」相關話題討論歡迎關注。

如果是側重於運用機器學習演算法到實際業務中,而不是偏向於研究和分析理論知識的工作,兩者的工作內容會有多大不同?在大公司和小公司有什麼差別?兩者的職業發展道路又會有多大不同?

所謂的「調參俠」就是類似於前者?


"應用和業務"與"理論研究": 兩者差異很大,工業界採用的方法在學術界往往10年前就已經有了,學術界更多是扮演探路者的角色,最新的理論研究不一定立即有實用價值,何況即使是學術界,水平也是參差不齊,有高水準又有效的方法而由於門檻太高工業界接觸不到,也有低水準卻看起來很牛逼的東西。工業界主要是面向業務選擇最合適的已經成熟的方法,真正有用的學術研究是解決理論難題。

"大公司小公司差別": 主要差別是大公司成熟的東西多,方便學習,而小公司機會大。

"調參俠": 面對業務的程序員都免不了要調參


CS出身,15年加入Facebook,官方職位是Machine Learning Engineer機器學習工程師。

本人非常喜歡這個職稱,不光因為喜歡機器學習,同時也因為縮略詞(MLE)也代表Maximum Likelihood Estimation(最大似然估計)。

機器學習工程師的工作是使用機器學習於解決實際問題。大多數這類背景的人集中在和幾個排名有關的核心組裡(廣告,新聞流和搜索)。本人在廣告組裡。

大部分日常工作:

開發新的ML演算法/模型,一般每一到兩年會從底層重構一次代碼庫。

優化現有模型的編譯和運行速度,用於更快的調節參數。核心的ML模型每天要跑幾萬次調參,速度非常重要。

清洗和轉換數據,去掉無用feature,尋找新feature。

開發以及優化分散式後端架構,資料庫,寫大量的hive和map reduce job。

一些前端開發,可視化A / B測試結果,主要用於給領導和PM看。

On Call,數據大量出錯或者模型指標明顯下降時周末也要修bug。


演算法工程師,不僅要懂模型本身,還要理解業務的特點,挑對模型,高效率調出好參數。

研究者,要提高模型的能力,能解決更複雜的問題,追求理論的提升和解釋性。

研究者是應用者的供應商,就是這樣的關係。

研究者需要研究的資源,資金、數據等等,往往是大公司才能提供這些資源,所以Hinton這幫人都跟企業混到一起了。研究者還需要一個好的人際環境,要一個圈子,交流分享、爭論競爭,不然很難進步。

應用者混在業務里,少不了什麼都要懂點,除了演算法精通,成為半個後端、半個前端、半個產品、半個運營也是很正常的。

大公司和小公司。這個時代,能把大公司做得像小公司一樣的公司才是好公司。總的來說,高成長的公司比較值得去咯。至於差別,大的小的都能很噁心,也能很開心。大公司的員工比較容易得到社會的廣泛認知和認可,對你換工作有好處。小公司成長快的話,你可能更容易財務自由。


要掌握的知識:

  1. 數理統計,數據挖掘或機器學習常用模型:如 SVM,隨機森林,GBM

  2. 對主流的應用模型有較好的理解和運用,如集成學習演算法等

  3. 至少掌握一門編程語言,包括但不局限:C/C++,JAVA,PYTHON,R等(matlab除外,記住!)
  4. 熟悉資料庫以及SQL語句,掌握常用的ETL技能
  5. 熟悉hadoop,SPARK等分散式工具!
  6. 掌握模型原理的而不僅僅是調參數!
  7. 不錯的英文閱讀能力,否則無法提高和培養
  8. 熟悉linux常用命令

大公司數據挖掘會體系化,有固定的流程,從項目確定開始就會安排計劃好整個項目的參與人數,參與時間,獲得收益,付出的成本。小公司不清楚,可能壓根就沒有數據挖掘。

理論研究是大學或者研究院的事情,工業上講究的是運用。我們公司有一個演算法組全是博士,職業reading paper, 到現在好像也沒發現有什麼能用的好演算法~~

所以,如果想工作,那麼要注重運用,注重運用不代表你不需要讀paper,看演算法。只是研究完理論之後你得想著怎麼用起來~

總不會天天沒事去寫個svm的推導吧,我們講究的是請用代碼實現並且部署上線,至於你怎麼寫那可能就是你的事情了~~


導數據、玩表


將演算法用到實際業務,就是偏向於工程應用,講究工具、方法有效,成本低風險小,能解決實際問題,通常需要掌握常用的演算法,具備編程基礎。

  • 理解業務,對數據敏感,能洞察數據價值。
  • 有數理統計基礎,了解分類、回歸、聚類、預測、關聯規則、序列模式、神經網路、強化學習等數據挖掘/機器學習相關理論和演算法,能根據業務特點選擇最合適的方法。有文本挖掘、自然語言處理的能力更好,現在互聯網上文本數據也很重要。
  • 具備良好的編程能力和代碼風格,熟練掌握Java、Python、Scala一門強類型語言,並至少掌握一門腳本語言。熟悉Hadoop/Spark更好,這是當前面向海量數據的演算法實現及數據分析的主流框架。

另外就是溝通能力了,因為要深刻理解業務需求,也要和隊友協作完成項目。

大公司通常分工比較細,業務多,數據豐富,可以在實操中學到很多。小公司要求更高的全棧能力,挑戰和機會都很大。

研究和分析理論知識,就是學術路線,更注重數學美感、標新立異,要發很多論文,成果往往無法在現階段應用。


推薦閱讀:

如何看待4月10日Google在中國棋院開發布會宣布柯潔將在烏鎮應戰AlphaGo?
根據佛經,末法時代,彌勒佛降世。這個彌勒佛會不會是AI?
人工智慧現在的發展前景如何?
人工智慧有沒有可能統治人類?
什麼時候使用PCA和LDA?

TAG:人工智慧 | 數據挖掘 | 數據分析 | 機器學習 | 大數據 |