熱線電話:13121318867

登錄
首頁大數據時代從軟件到機器學習工程師的旅程
從軟件到機器學習工程師的旅程
2022-03-14
收藏


我已經在iZettle工作了大約四年了。我在這家公司的旅程并不是以機器學習工程師的身份開始的,而是隨著我在公司的成長而過渡到機器學習工程師。

我的正規教育是計算機科學/軟件工程,事實上我已經做了大約8年的軟件開發人員。作為一名軟件工程師,這些年給了我一些技能,這些技能使我走向ML工程的道路變得相當特別。我想和大家分享我希望在準備這個角色時能更多地關注什么,以及我認為我的背景如何幫助我完成這個轉變。

怎么開始的


首先-為什么?我對我的軟件工程師工作不滿意嗎?我認為做一名ML工程師比做一名軟件工程師更好嗎?絕不是!這只是我喜歡花什么時間的問題,那就是數據。我從15歲就開始編碼了,我一直很喜歡它。但我最喜歡的是用我的作品去了解世界。作為許多人,我有許多“寵物項目”想法永遠不會出現,但當我閱讀這份想法清單時,我發現了這樣的事情:構建工具來使用推特數據來檢測自然災害,分析我的社交媒體賬戶數據來理解我自己的行為,檢測朋友聊天中的情緒,等等。你看到模式了嗎?所有這些項目想法都尋求對某些情況的理解,并且都以數據為中心。那時我一直對數據很感興趣,大約兩年前我決定把它作為我的主要工作。我想認為機器學習是我個人的選擇,但本著數據驅動的精神,我可以將我的決定與近年來機器學習領域的炒作聯系起來,當時你讀到的每一篇科技文章都是關于ML創新的,所以我想我永遠不會知道。

不管怎樣,我做出了這個決定,對我來說幸運的是,iZettle正在運行一個機器學習指導項目,我很高興地加入了這個項目。

學習過程


在這個指導程序中,我們學習了bookPython機器學習的所有章節。每周,我們會討論一章,編寫一些練習來實驗所學的概念。我發現它非常令人興奮,它確實奠定了我對機器學習如何工作的基本理解。

除此之外,我利用空閑時間參加了一些在線課程,比如Udacity中的aDeep Learning Specialisation,參加inKagglecompetitions(我不得不承認,沒有太大成功),并試圖實施我之前提到的一些項目。

我告訴你們所有這些不是為了吹牛,而是為了讓你們明白我正在盡可能多地吸收關于這個主題的知識,當我準備更換標題時,我覺得我對機器學習有非常扎實的理解。

經過6個多月的緊張學習,我加入了iZettle的機器學習團隊。

什么課程和書本沒有教給你


我充滿活力地加入了這個團隊,渴望開始我的第一個項目。從第一個項目開始,我開始注意到學習機器學習和實際機器學習是多么的不同。第一個項目是試圖為我們的商人預測破產,這樣我們就可以伸出援手,幫助他們做生意。

當你做一個來自一門課程或一本書的項目時,該項目最重要的部分已經為你完成了。也就是說:您到底想做什么?在課程中,您會得到一個數據集和一個目標度量,您所要做的就是“按摩”您的數據和訓練模型,以便在您的目標度量上獲得良好的性能。

在這種情況下,有幾件事你沒有學到,甚至從來沒有質疑過:

問題定義:如何將問題公式化,以便從機器學習的角度來看它是有意義的?對于破產問題,我感到震驚的是,我的腦海中突然冒出了多少問題,幾乎是不知從哪里冒出來的:預測破產意味著什么?是不是意味著一個商人明天就要破產了?一周后?一個月后?我怎么知道我們哪一個商戶已經破產了?是缺乏活動嗎?那么季節性呢?是一些外部信息嗎?我如何將它映射到一個標簽,讓我的算法可以從中學習?…我太習慣于被賦予一個有標簽的數據集,以至于我從未考慮過僅僅創建這個標簽需要大量的思考、領域知識和業務考慮。這取決于您如何定義標簽,您可以使用的問題和功能完全改變。

data:我已經暗示了接下來會發生什么,而且眾所周知,獲取正確的數據是ML問題的一個困難部分。然而,當你第一次偶然發現這個問題時,它仍然會打擊你。數據很難得到,而且很雜亂,不應該盲目相信。構建標簽實際上是在獲得數據源之后。在我的第一個任務中,我有兩個來自不同來源的數據集,我必須合并并映射到每個商家自己的特性集。對于您引入的每一個新的信息源,您不僅需要確保數據質量是可接受的,而且要確保您沒有引入任何偏見,或者至少您對此做出了解釋。

在某些情況下,你甚至沒有你想要解決的問題的數據,機器學習在任何一行代碼之前幾個月就開始了,建立數據收集策略和與其他團隊的關系。

評估:我們有數據集和標簽。我們開始建?!覀內绾魏饬啃阅??這不僅是使用哪種度量的問題,而且是它是否有業務意義的問題。權衡在這里起著很大的作用。我以前從來沒有考慮過用什么指標來衡量我的模型的性能,這是給定的。我真的在等別人告訴我:使用精確度/ROC-AUC/等。當這種情況沒有發生時,我不得不考慮一個指標及其含義,我意識到花很多時間思考這個問題有多重要,我對我所學的任何一本書或課程都很少關注這個話題感到失望。只要想一想:根據當它實際上是假的(即假陽性)或任何類似的變化時預測真的“糟糕”程度,您可能希望保持最低的精確度或召回率,而不管您的一般度量(如ROC-AUC)如何上升或下降。這只是一個例子,還有很多。

這些是我意識到在我所學的任何課程或閱讀的任何書籍中都沒有學到的要點。這些都是我在工作中日復一日學到的東西,感謝真正有經驗和耐心的同事。

在我的旅程中是什么幫助了我


當然,也有一些意想不到的好的部分,在這些部分中,我可以利用我作為一名軟件工程師多年來獲得的技能。列舉一些:

  • 通用軟件開發實踐:在許多課程中,大量的時間用于解釋常見的軟件開發實踐:版本控制、基本編程、專注于單一編程語言(90%的時間該語言是Python)等。在與軟件工作多年后,這不僅是我已經有過的實踐,而且是我“內心深處”的東西。這使得我更容易開始測試和實現想法,并希望傳播這些實踐,激勵我最近加入的團隊。
  • 閱讀和理解他人的代碼:因為這是我一直在做的事情,所以我非常樂意閱讀其他同事的代碼,并希望能給出建設性的反饋。
  • 靈活性當涉及到“工作的正確工具”時。機器學習工程師往往會陷入他們所使用的工具中,無論他們喜歡什么。雖然我沒有數據來支持這一說法,但我注意到了這一點。因為我使用過許多語言和框架,所以我發現它相對容易(而且令人興奮?。﹪L試新的工具和庫,希望這給了我一個更廣泛的視圖和工具集。

所以...怎么辦?


如果您的情況與我類似,我有以下附加練習,用于您正在閱讀的書或您正在學習的課程中的下一個練習。嘗試回答以下問題:

  • 您試圖解決/預測什么?您理解問題的所有部分嗎?
  • 提供的數據對您試圖解決的問題有意義嗎?
  • 數據是如何收集的?如果您不能肯定地回答這個問題,您將如何收集數據?需要多長時間?誰需要參與數據收集?是web開發人員(可能點擊事件),還是應用程序開發人員(應用程序使用數據),等等
  • 如果這是一個要在公司內部解決的問題,那么除了您的預測之外,該項目還需要什么?一些基礎結構?有什么商業決定嗎?應用程序中的新功能?將涉及誰?
  • 您使用的評估指標是什么?您了解嗎?對這個問題合適嗎?對于這個問題,有沒有其他更有意義的度量方法?遺漏樣本分類的成本是多少?
  • 不管目標性能是什么:何時如果這是一個真正的項目,您會感到高興嗎?為什么是這個數字?為什么不調低/調高?

我相信,如果你真的試圖回答所有這些問題,你在學習過程中遇到的每一個練習,你會在“現實生活中”發展出一個更廣泛和現實的機器學習觀點。

我希望這個帖子對很多人的學習之旅有所幫助!如果你有任何問題,請聯系我們,或者想與我們分享你的故事,我們很樂意聽到它!



數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢