計算機背景較弱的數學博士,適不適合做數據挖掘方面的演算法工程師?

我有一個朋友數學博士,

1.博士做的是非線性優化方向(這方面我也懂的大概)

2.平時做優化主要使用matlab進行編程

3.參加過一家公司的實習,主要使用matlab進行演算法設計,由其他人員做C++的實現。同時學了一些C++編程,但要獨立完成演算法實現還有困難

4.目前正在惡補數據結構等計算機知識

就以上的情況,希望大家給點意見,適不適合做數據挖掘方面的演算法工程師?想往這個方向發展需要做哪些努力,哪些知識是必須的?想1年內找這個方向的工作,哪些公司可能會要?


轉行數據挖掘和機器學習

半年前從數學專業轉行到了互聯網行業做數據挖掘和推薦系統,在做具體的業務的時候遇到了一些知識點,於是自己整理出來。如果有後來人需要轉行的話,可以用這份資料來參考一下。大牛請忽視以下的內容,小白可以參考下。

從數學專業轉行到工業界做數據挖掘需要的知識儲備:
1. Hadoop,HIVE,SQL資料庫操作。
Hive用於提取數據,做基本的數據分析。hive的基本函數,比如聚合函數,數學函數,字元串的函數,連接表格函數等。hive的各種語句,比如if else,case等語句。

EXCEL的基本操作需要掌握,可以進行各種數據的處理、統計分析和輔助決策操作,用熟悉了其實挺方便的。

2. 編程語言

最好會python,c/c++,或者java,至少一種。做機器學習的話感覺用python會多一些。

3. 操作系統

Linux系統,腳本語言Shell。

4. 數據挖掘和機器學習的基礎知識和演算法
邏輯回歸演算法 Logistic Regression(LR),

支持向量機演算法 Support Vector Machine(SVM),

物質擴散和熱傳導演算法(Heat Spreading),

Gradient Boosting Decision Tree(GBDT),

聚類演算法,神經網路演算法,決策樹,隨機森林,異常值檢測等常用演算法需要掌握。

特徵工程的基礎知識:根據相應的產品進行必要的特徵構造,物品特徵,交叉特徵等。

其中LR使用廣泛:由於LR是使用線性方法來處理非線性的問題,導致特徵工程十分複雜,交叉項多(二維或者三維的交叉)。

工程上的最優化論文推薦:
Ad Click Prediction a View from the Trenches
需要了解的是相關論文的背景SGD演算法,Truncated Gradient演算法,RDA演算法,FOBOS演算法,FTRL演算法等。
5. 統計學

時間序列模型,變數的相關係數,ROC和AUC,交叉驗證,主成分分析。

6. 業務背景

大數據,推薦系統,計算廣告學的科普書籍。

以上就是筆者在公司工作半年了的一些簡單的總結,如果有啥不正確的地方,還希望大家賜教。

-----------------------------------------------------------------------

工作了一年半之後重新更新了一下帖子:以後有時間會持續更新~

轉行數據挖掘和機器學習 - 知乎專欄


看到其他的答案補充兩句:從從業的情況來看,計算機專業出身顯然更受歡迎,不知道其他人答案里的論點依據是什麼。實際上,我呆過的幾個數據挖掘團隊,出身的比例一般是這樣:6成左右是計算機的碩士研究生,兩成左右是計算機博士,還有兩成包括:能力突出的計算機本科,其他不相關專業出身但是早年間就轉行到演算法的其他碩士博士,數學碩博士等。

另外從招聘面試情況來看,代碼能力的考核權重非常高。理想的情況下當然是招到懂演算法能編程的(專業對口的計算機碩博士相對更合適);在兩者缺一的情況下,就要看你在擅長的那一方面有多大的優勢了。相對而言,不懂演算法會編程的還可以放到其他工程團隊去;但是懂演算法不會寫程序,有點難。

---------------------------

個人感覺:基本可以勝任,但是沒有大家覺得的那麼合適。

團隊就有數學出身的,博士碩士都有。互聯網公司裡面的演算法,跟科研崗位上的不一樣,更不用說數學建模這種toy model了。除了極少數純偏研究的崗位,大部分演算法崗位還是為業務服務的,絕大多數情況下,是沒機會也不需要自己去研發新的演算法。因此,一個數學功底很好,但是不會編程不會SQL不會Hadoop的同學,跟一個編程能力很好,但是數學功底很一般的人相比,在演算法崗位上適應的難度要大一點,需要補的課更多一點。當然這不是說不能勝任,而是你需要做更多的功課。當你具備了獨立的演算法實現能力後,數學好的優勢才能顯現出來

我所知道的BAT演算法崗位的校招面試中,編程題目一定是有的,而且權重很高。

個人經驗,一年之內你需要補充的內容:

1. 計算機的數據結構一定要滾瓜爛熟;

2. matlab這種工具盡量淡化,如果可能的話多自己做演算法實現,幾乎沒有公司會用matlab,再怎麼說也得是R吧;

3.C++ / Java總得會一個,Python/Perl/Ruby總得會一個吧, Hadoop/Spark/Storm總得懂一點;

4. 如果可能,就去相關崗位實習;如果不可能,做點數據挖掘的項目,比如什麼天池比賽什麼的。


了解細基本知識(ng的ml課,課本prml,課本esl 等等)之後就直接刷kaggle的競賽好了。


首先,非線性優化是個很好的方向,也是答主朋友的優勢。機器學習領域的很多模型,說到底都是個優化問題,而且非線性優化居多

所以,答主的朋友對自己的定位,不應該是 業界常見的 數據挖掘工程師,而應該是去企業里,研究前沿的演算法模型並進行改進,類似技術顧問,這樣才能發揮優勢

所以,不用過於在乎coding方面的知識(當然,會coding是錦上添花),努力發揮好自己的優勢就行 :-) 建議去數據挖掘相關的公司實習一段時間,將優化理論與工業實際結合

信息來源:本人在阿里等公司實習的見聞。阿里去年挖過去的金榕教授,曾做過一次內部分享,說他研究阿里媽媽某個演算法模型的優化問題,研究了三個月,業務提升很明顯。阿里媽媽的蓋坤博士,創新性地提出MLR模型並工程實現,業務提升也非常驚人。


市面上可都是一幫不懂數學不懂統計只會亂調包卻又調不對的人在干數據挖掘哦,你確定能混出頭嘛。。。


個人覺得他應該僅次於 專門研究數據挖掘的數學博士 ,高於 專門研究數據挖掘的本科讀數學系的計算機博士。如果是統計方面的博士就更好了。

而且很多問題歸根就是優化的問題,當然遇到線性優化的可能性略低啊~非線性優化正好....

另外,數學都能學下去,還有什麼學不下去的?


個人覺得可以勝任,其實在演算法建模這一塊的話。更應該關心如何通過數學的方式實現演算法,至於通過什麼方式實現,並不是很關鍵。以上純屬個人觀點。如有不妥,還望大神指點!!!


我的觀點是適合。

反過來,數學較弱的計算機博士,才不適合做數據挖掘方面的演算法工程師。

個人觀點如果有誤請指正。


推薦閱讀:

機器學習中的數據預處理有哪些常見/重要的工具?
為什麼機器學習的分類器用logistic模型?
信息熵是什麼?
微博數據分析,已經有了JSON格式的爬蟲數據,如何做數據分析呢?
醫療大數據的分析和挖掘發展現狀如何?未來會有什麼樣的應用前景?

TAG:求職 | 數據挖掘 | 數學 | 機器學習 | 演算法工程師 |