實際工作中,從事數據挖掘/機器學習是怎樣的?至少要掌握哪些知識、意識或經驗?
本題已加入知乎圓桌 ?「機器學習 · 學以致用」,更多「機器學習」相關話題討論歡迎關注。
如果是側重於運用機器學習演算法到實際業務中,而不是偏向於研究和分析理論知識的工作,兩者的工作內容會有多大不同?在大公司和小公司有什麼差別?兩者的職業發展道路又會有多大不同?
所謂的「調參俠」就是類似於前者?
"應用和業務"與"理論研究": 兩者差異很大,工業界採用的方法在學術界往往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這幫人都跟企業混到一起了。研究者還需要一個好的人際環境,要一個圈子,交流分享、爭論競爭,不然很難進步。
應用者混在業務里,少不了什麼都要懂點,除了演算法精通,成為半個後端、半個前端、半個產品、半個運營也是很正常的。
大公司和小公司。這個時代,能把大公司做得像小公司一樣的公司才是好公司。總的來說,高成長的公司比較值得去咯。至於差別,大的小的都能很噁心,也能很開心。大公司的員工比較容易得到社會的廣泛認知和認可,對你換工作有好處。小公司成長快的話,你可能更容易財務自由。要掌握的知識:
- 數理統計,數據挖掘或機器學習常用模型:如 SVM,隨機森林,GBM
- 對主流的應用模型有較好的理解和運用,如集成學習演算法等
- 至少掌握一門編程語言,包括但不局限:C/C++,JAVA,PYTHON,R等(matlab除外,記住!)
- 熟悉資料庫以及SQL語句,掌握常用的ETL技能
- 熟悉hadoop,SPARK等分散式工具!
- 掌握模型原理的而不僅僅是調參數!
- 不錯的英文閱讀能力,否則無法提高和培養
- 熟悉linux常用命令
導數據、玩表
將演算法用到實際業務,就是偏向於工程應用,講究工具、方法有效,成本低風險小,能解決實際問題,通常需要掌握常用的演算法,具備編程基礎。
- 理解業務,對數據敏感,能洞察數據價值。
- 有數理統計基礎,了解分類、回歸、聚類、預測、關聯規則、序列模式、神經網路、強化學習等數據挖掘/機器學習相關理論和演算法,能根據業務特點選擇最合適的方法。有文本挖掘、自然語言處理的能力更好,現在互聯網上文本數據也很重要。
- 具備良好的編程能力和代碼風格,熟練掌握Java、Python、Scala一門強類型語言,並至少掌握一門腳本語言。熟悉Hadoop/Spark更好,這是當前面向海量數據的演算法實現及數據分析的主流框架。
另外就是溝通能力了,因為要深刻理解業務需求,也要和隊友協作完成項目。
大公司通常分工比較細,業務多,數據豐富,可以在實操中學到很多。小公司要求更高的全棧能力,挑戰和機會都很大。
研究和分析理論知識,就是學術路線,更注重數學美感、標新立異,要發很多論文,成果往往無法在現階段應用。
推薦閱讀:
※如何看待4月10日Google在中國棋院開發布會宣布柯潔將在烏鎮應戰AlphaGo?
※根據佛經,末法時代,彌勒佛降世。這個彌勒佛會不會是AI?
※人工智慧現在的發展前景如何?
※人工智慧有沒有可能統治人類?
※什麼時候使用PCA和LDA?