70%求職者因此被拒,你還不避開這些“雷區”?!
很多想要在數據科學行業尋找一席之地的人正在慢慢意識到這個問題:在數據科學這個領域應聘,想得到求職或者面試反饋是基本不可能的。
圖片來源:unsplash.com/@kentreloar
互聯網公司對這些信息守口如瓶有很多原因。其一,公司給出的每一條拒絕理由都可能招致法律訴訟。其二,很多人并不能很好地消化負面消息,有些人甚至會變得十分偏激。其三,如果要這么做的話,想想面試官要花多長時間寫一篇構思精良的反饋給幾十個甚至上百個應聘的人。除此之外,公司并沒有從中得到任何好處。
于是,就出現了一大批困惑、迷茫又想要有所成就的數據科學家。但好消息是:在這個行業,求職被拒的原因其實也就那么幾個,針對這些不足還有很多方法來進行彌補。
不管是技術性還是非技術性的技能,應聘者所不具備的也正是這些公司迫切需求的,本文旨在對這些問題進行探討。
原因1:使用Python語言處理數據科學的技能
大部分數據科學模型都基于Python環境。在使用Python語言處理數據結構時,僅有少數工具能將新手和經驗豐富的老手區分開來。如果你指望通過創建特別出眾的項目來吸引雇主的注意,這些工具能迅速拉開你和其他人的差距。
要想促使自己擴充數據科學理論方面的知識,提高實踐能力,可以在項目中嘗試以下幾個方法:
數據挖掘。你應該熟練掌握pandas函數,比如.corr(),scatter_matrix(),.hist() 和.bar()這些語句的使用。你應該時刻注意,利用主成分分析(PCA)原理或者t-SNE的方法將數據可視化,在Python語言中可以使用sklearn的PCA和TSNE。
特征選擇。在90%的情況下,數據集會有很多并不需要的特征,這些特征會耗費不必要的調試時間,還很可能會出現過擬合的現象。這就要求數據科學家們熟練掌握基本的篩選方法(如scikit-learn庫的VarianceThreshold函數和SelectKBest函數)和稍顯復雜的基于模型的特征篩選方法(如SelectFromModel)。
使用超參數搜索的方法來尋找***模型。數據科學家一定得知道GridSearchCV函數是什么、怎么用。RandomSearchCV函數同理。要想出類拔萃,你可以用skopt庫中的BayesSearchCV這個函數來實驗一下,看看怎么將貝葉斯優化法運用到超參數搜索中。
管道機制。sklearn中的pipeline庫可以幫助你一站式完成數據預處理、特征選擇和建模這些步驟。如果你對pipeline不熟悉的話,那就說明你應該加強對建模工具包的學習。
原因2: 概率論和統計學知識
圖片來源:unsplash.com/@johnmoeses
概率論和統計學方面的知識并不會在數據科學的工作中單獨應用,但它們是所有數據科學工作的基礎。所以,如果你還沒仔細研究過下面這些知識的話,那你就很容易把面試搞砸了。
貝葉斯法則。這是概率論的基礎,在面試中經常出現。你可以練習一些基礎的貝葉斯“白板”問題,并且閱讀下面這本著作來深刻理解這個法則的含義和來由。
傳送門:http://www.med.mcgill.ca/epidemiology/hanley/bios601/GaussianModel/JaynesProbabilityTheory.pdf
基本的概率論知識。你應該知道怎么回答下文這些問題。
問題傳送門:https://github.com/kojino/120-Data-Science-Interview-Questions/blob/master/probability.md
模型評估。在分類問題中,很多新手習慣以模型的精確度作為衡量標準,這樣做通常不是一個很好的選擇。你應該習慣使用sklearn的precision_score,recall_score,fl_score,和roc_auc_score等函數并了解其背后的理論知識。對于回歸問題,知道為什么用均方誤差(mean_squared_error)而不用平均絕對誤差(mean_absolute_error)也同樣重要,反之亦然。花時間去弄清列在sklearn官方文件中的所有模型評估標準是很值得的。
官方文件傳送門:https://scikit-learn.org/stable/modules/model_evaluation.html
原因3: 軟件工程小竅門
數據科學家被要求做軟件工程工作的情況越來越多。很多雇主都要求應聘者管理好自己的代碼,在筆記本和草稿上留下清晰的注釋。尤其是以下幾個方面:
版本控制。你應該知道怎么使用git系統,并且能用命令行和自己的GitHub庫遠程互動。如果你還不能做到的話,建議你從下面這個教程開始。
教程傳送門:https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners
網頁開發。有些公司更傾向于將數據儲存到自己的網絡應用程序(WebApp)中,或者通過API的形式來訪問數據。因此,熟悉網頁開發的基本知識也很重要,***的辦法就是學習一些Flask框架的知識。
傳送門:https://www.freecodecamp.org/news/how-to-build-a-web-application-using-flask-and-deploy-it-to-the-cloud-3551c985e492/
網頁抓取。這有點類似與網頁開發:有時候你需要通過從網頁直接抓取數據,將數據采集自動化。BeautifulSoup和scrapy是兩個非常不錯的網頁抓取工具。
清晰簡潔的代碼。學會字符串的使用。不要濫用行間注釋。將長函數拆成短函數,越短越好。10行以上的函數都不應該出現在你的代碼中。每個函數都應該清晰地命名,function_1不是一個好名字。在給變量命名時遵循Python語言的規則,要像這樣like_this,不能像LikeThis或者這樣likeThis。一個Python模塊(.py格式的文件)中的代碼不要超過400行代碼。每個模塊都要有一個明確的目的,比如data_processing.py,predict.py)。學習if name == ‘_main_’語句是什么,為什么重要。使用列表解析(list comprehension)。不要濫用for循環。***要記得給你的項目附上一個README文件。
原因4:商業嗅覺
圖片來源:unsplash.com/@emmamatthews
似乎有很多人認為只要自己技術夠硬,就能被心儀的公司錄取。其實不然。事實上,公司更青睞能更快帶來效益的員工。
這就意味著求職者不僅技術要過關,還要掌握一些其他的技能。
想別人之所想,并付諸行動。大多數人在沉浸于“數據科學學習模式”時,都會遵循一系列步驟:導入數據、分析數據、清理數據、數據可視化、建模、模型評估。
如果你是在學習一個新的庫或者一項新的技能的話,這些步驟沒什么不好。但在商業環境中,這種類似于“無人駕駛”的工作模式是一個不好的習慣,因為上班時間的每一分、每一秒,你做的每一件事情都是公司在為你買單。你得培養自己的商業思維,思考怎么妥善安排好自己的時間,為團隊和公司做出有意義的貢獻。
這里介紹一個方法,在開始一項數據科學項目之前,先思考一下你要用它達到一個什么樣的目的,先給自己提幾個問題,這樣你就不會中途被一些所謂的DS工作流(workflow)等無關的工作打亂思路。把這些問題想得越實用越好,當你完成整個項目之后,再回過頭想想這個項目有沒有幫你認真回答這些問題。
問對問題。公司希望雇用的員工在調整工作模式時能夠顧全大局,并思考清楚一些問題。比如,“我現在負責的工作是因為它真的對團隊和公司有實際幫助,還是因為我能在里面使用我自己喜歡的算法?”或者“我應該優化哪些重要的商業指標呢?有沒有更好的方法來改善?
將你的成果解釋清楚。管理層需要你來告訴他們哪些商品賣得好,哪些用戶轉而使用了競爭者的產品,你得說出個所以然來。但他們不懂(也不屑于去了解)什么是查準率/查全率曲線,也不知道你為了防止模型過擬合做出了多大的努力。所以,用淺顯易懂的方式來讓你的聽眾明白你做出了什么成果,有什么影響,這也是數據科學家必須具備的一項技能。
你可以找一個從高中開始就再也沒上過數學課的朋友,試著一邊做項目,一邊向這位朋友解釋你做的項目是干什么用的。友情提示:解釋的時候不能提到任何算法的名字,有關調試超參數的術語也不能提,你使用的語言應該越簡單越好。
除了上面的原因,還有……
關于求職被拒的原因,沒有比上述理由更詳盡的了,從筆者目睹的百余個新手數據科學家求職和面試指導案例,以及與面試官的溝通結果看來,70%的人是因為上述理由被拒。
但記著,像性格這種定義比較靈活的東西也可能會被算作考量的標準之一。如果你和面試官不是很合得來,談話進行地不是很順利或者很尷尬,就很有可能你的硬實力是夠的,但是面試官覺得你的氣場和公司文化不是很符合。很多技術大牛也會因這種理由被拒,所以別太放在心上!