我覺得從事數據挖掘工作,尤其是在互聯網行業,主要需要三個方面的能力,即機器學習和數據挖掘的理論知識、編程開發與數據結構算法的基礎和業務理解與溝通表達的能力。
上面的圖里列出了這個行業不同類型的從業者機器特點。
A. 主要是負責做最頂尖機器學習相關學術研究。比如發明一些新的算法,想早期的SVM,LDA最近的一些deeplearning模型。但是處在塔尖的的他們對于這些算法在業務場景的應用或者算法的實現興趣并不大,主要精力都花在了理論研究上,比如證明個bounds什么的。寫出來的東西大部分發表在NIPS或者ICML上,一般人也看不懂。他們主要存在于一些研究機構中,如國外高校或者企業研究院。一般企業如果需要這樣的人,也是挖過來當震廠之寶吉祥物,不屬于我們討論的范圍。
B. 他們既對算法有比較深入的了解,又有高超的編程技術。他們的數學可能達不到爐火純青的地步,他們的興趣也不在于各種繁瑣的理論推導。他們對已有算法進行改進,并且給出最好的實現,造福廣大人民群眾,比如libsvm,svdfeature,paramater server這樣的工具。當然,這樣的人才也是可遇不可求,而且他們也需要一個比較大的平臺來施展自己的能力。他們的工作應該能夠成為一個企業數據挖掘的大殺器。
C.他們對算法有一定的了解,但是不夠深入。他們開發的經驗有限,對于數據挖掘的應用了解也不夠深入。比如很多理論方向的研究生博士生可能就處于這個狀態,即使能夠發表一些看起來不錯的文章,但離真正做出好的實際的數據挖掘工作還有很長的一段距離,需要一步一個腳印的踏實前進。
D.他們是算法界的大神,碼農中的翹楚,橫掃各路ACM ICPC比賽的英雄。因為各種機緣巧合,他們沒有選擇數據挖掘作為自己以后的方向。雖然他們對于機器學習理論和數據挖掘的應用場景不是很了解,但憑借他們的天賦,假以時日,也一定能在這個行業有所作為。不過,其他領域也需要他們,也有他們大展拳腳的空間。
E.他們屬于一般的碼農,能寫的一手好代碼。但是對機器學習知之甚少,而且如果思維不夠靈活,可能也會在業務的理解上有一些障礙。另外,溝通交流的能力通常也是碼農們所欠缺的。對于應屆生,如果確實有這個天賦,不妨一試;對于工作多年的碼農想轉行,也需要付出比較大的努力。
F.他們的工作貼近業務,對數據也有一定敏感性,可能是excel和sql的高手。但是這和數據挖掘的工作還有一定差別。最適合他們的崗位可能是BI或者數據產品經理。在這些崗位上,他們同樣可以發光發熱,做出卓越的貢獻。
G.他們有一定的算法基礎,同時對數據挖掘的業務落地也有豐富的經驗。他們的瓶頸主要在于編程開發能力,這在大數據的場景下尤為明顯。畢竟最好的方式是自己想idea,自己實現,至少實現一個原型。那么R或者python是一個這種的選擇。沒有coding,再好的算法也出不來。
H.對機器學習算法有一定的了解,熟悉各種業務,也有一定的開發能力。在數據挖掘的具體工作中,可以從業務出發,設計算法,也能對算法進行基本的實現。實際上這樣的工程師還是很多的,特別是有一定工作經驗的。他們的工作經驗會對數據挖掘的工作起到很大的幫助。他們在算法以及編程的上的能力可能不是很高,但是足以豐富他們的思維方式,也方便與人溝通。
I.對機器學習算法有一定了解,也有較強的開發能力。適合做偏向開發的數據挖掘崗位。他們和I類的工程師密切配合,應該能有比較好的產出。他們很可能是學校的應屆畢業生,學習了一些理論知識,也鍛煉了開發的能力,但還缺乏實際的工作經驗。互聯網的數據挖掘崗位正是他們大展拳腳的好地方。
J.看起來是最好的,各項技能都很全面,也很適合做leader。但是這樣的人畢竟可遇不可求。另外,每一項都好其實也就是每一項都不好,人的精力總是有限的。我覺得在一到兩個方面做的比較突出,同時另外的方面也不要太弱以至于成為短板,這樣就挺好的了。
根據上面說的,招聘主要根據H和I兩類模版挑選人才。覺得考察的話,除了基本的開發算法,還有以下幾個:
1.機器學習算法的理解,比如常見的算法的基本思想原理、應用場景、特點和求解方法。可以從兩個分支考察,一個是使用經驗,比如實際的一些參數設置啊,使用技巧什么的,面向H類。還有就是一些算法的實現方法,面向I類。
2.實際的項目經驗,特別是數據挖掘工作。一方面考察他之前的工作情況,另外也看他的歸納總結能力與解決問題的能力。針對項目的一些細節提問,也可以看出他的做事方式和對一些知識的掌握情況。
3.對于業務的理解能力和敏感性,可以結合實際工作中的一些問題來考察。即使沒有實際工作經驗,也是可以看出他們在這個方面的潛力。同時也考察出理論和實際結合的能力。
4.溝通表達能力。相對于程序員,數據挖掘崗位對這個能力的要求高出不少。在整個面試的過程中,其實都有對這個能力的考察。