演算法工程師的日常工作內容?你想知道的可能都在這裡
- 2019 年 10 月 4 日
- 筆記
作者:Rebecca Vickery 編譯:AI演算法與影像處理

導讀
有很多小夥伴可能都對未來的工作內容有所好奇,不知道所謂的演算法工程師到底日常在做什麼,而我以後能不能勝任?
繼續看下來,或許能解開你的疑惑~>_<

你有沒有參加過Kaggle比賽?如果你正在學習,或者已經學過機器學習,那麼很可能在某些時候你會參加一次。這絕對是將構建模型的技能應用於實踐中的好方法,我在學習時花了很多時間在Kaggle比賽上。 如果您以前參加過機器學習競賽,那麼您的工作流程(步驟)可能看起來像我的一樣:
- 下載一些數據(可能是一個或幾個CSV文件)。
- 也許做一點數據清理,或者數據集可能已經足夠乾淨了。
- 執行一些預處理,例如將分類數據轉換為數字數據。
- 通過各種合適的模型運行數據,直到找到最佳模型。
- 花費很長時間在超參數調整,特徵工程和模型選擇上,因為一個非常小的改進可能意味著你在排行榜上升幾個位置。
- 結束
但是,如果您正在為實際業務應用程式開發機器學習模型,則該過程將看起來完全不同。我第一次在業務場景中部署模型時,這些差異非常令人驚訝,特別是在工作中的某些階段花了很多時間。在下面的文章中,我想描述在業務環境中開發模型的過程,並詳細討論這些差異和解釋它們存在的原因。在商業案例中,工作流程將有更多的步驟,可能看起來像這樣。
- 將業務問題翻譯成數據問題。
- 考慮機器學習模型如何連接到現有的技術棧中。
- 花費大量時間提取,轉換和清理數據。
- 花費大量時間進行探索性分析,預處理和特徵提取。
- 建立模型。
- 選擇能夠以最少的工程量集成到現有技術棧中的最佳模型。
- 考慮到業務價值,優化模型直到「足夠好」。
- 部署模型。
- 在生產中監控模型。
- 必要時重新訓練。
- 構建版本2。
- 繼續,直到模型不再有業務用途。
在本文的其餘部分,我將詳細介紹每個步驟。
您需要將業務問題翻譯成數據問題
在Kaggle比賽中,要解決的問題將在前面明確定義。例如,在最近一項名為「Severstal:鋼鐵缺陷檢測」的競賽中,您將獲得一些準備好的數據,並以數據問題的形式明確說明問題。
今天,Severstal使用來自高速攝像機獲取的影像推進缺陷檢測演算法的改善。在本次競賽中,您將通過對鋼板上的表面缺陷進行定位和分類來幫助工程師改進演算法。
在實際業務問題中,您不一定會被要求構建特定類型的模型。團隊或產品經理更有可能遇到業務問題。這可能看起來像這樣,有時甚至可能沒有明確定義問題。
客戶服務團隊希望減少業務回復客戶電子郵件,實時聊天和電話所需的時間,以便為客戶創造更好的體驗並提高客戶滿意度指標。
根據此業務要求,您需要與團隊合作,在開始構建實際模型之前,計劃並設計此問題的最佳解決方案。
發數據並未「清洗」(不幹凈的數據)
您使用的數據幾乎肯定不會被「清洗」。通常會有缺失的值。日期可能格式錯誤。值,錯誤數據和異常值可能存在拼寫錯誤。在你真正建立模型的任何地方之前,很可能花費大量時間來刪除錯誤數據,異常值和處理缺失值。
您可能必須從不同來源中獲取數據
同樣,您需要的所有數據可能不是來自一個簡單的來源。對於數據科學項目,您可能需要從以下任意組合中獲取數據:SQL查詢(有時跨多個資料庫),第三方系統,Web抓取,API或來自合作夥伴的數據。與數據清理類似,這部分通常是項目中非常耗時的部分。
特徵選擇非常重要
在機器學習競賽中,您通常會有一個給定的數據集,其中包含可在模型中使用的有限數量的變數。功能選擇和工程仍然是必要的,但您首先要選擇的變數數量有限。在處理現實問題時,您很可能會訪問大量變數。作為數據科學家,您必須選擇可能產生良好模型的數據點來解決問題。因此,您需要結合使用探索性數據分析,直覺和領域知識來選擇正確的數據來構建模型。
發構建模型占流程中的最小的比重
與花費在選擇,提取和清理數據的所有這些時間相比,實際構建模型所花費的時間將非常少。對於特別是模型的版本1,您可能希望將模型用作基準線測試,那麼您可能在第一個實例中僅花費少量時間進行模型選擇和調整。一旦業務價值得到證實,您就可以投入更多時間來優化模型。
調整模型比您想像中要花費更少的時間
在Kaggle比賽中,花費數周時間調整模型以獲得模型得分的小幅提升並不罕見。由於這個小小的改進可能會提升你在排行榜上的幾個名次。例如,在當前的Severstal 競賽中,排行榜上位置1和2之間的得分差異目前僅為0.002。絕對值得花時間來提高你的分數,因為它可能會給你帶來最高獎金。

來源:Kaggle.com
在商業中,您花在調整模型上的時間是成本(燒錢的)。公司必須按照您在此任務上花費的天數或周數支付工資。與所有事物一樣,需要以商業價值的形式回報這種投資。模型的業務用例不太可能提供足夠的價值來證明花費數天的時間來提高模型的準確性,增量為0.002。實際上,您將調整模型直到它「足夠好」而不是「最佳」。
您不一定會使用最好的模型
這引出了我的下一點,即你不會總是使用最好的模型或最新的深度學習方法。通常,您可以使用更簡單的模型(如線性回歸)來提供更多業務價值。這花費的時間更少(因此搭建模型的成本更低)並且更易於解釋。
您的模型必須連接到某個終端(endpoint),例如網站。此終端的現有技術堆棧將對您將部署的模型類型產生很大影響。數據科學家和軟體工程師經常會在最小化兩端的工程工作方面做出妥協。如果您有一個新模型,這意味著要對現有部署流程或大量工程工作進行更改,那麼您必須擁有一個非常好的業務案例來部署它。
工作並不止於此
一旦投入生產,就需要對模型進行監控,以確保其在訓練和驗證過程中的性能和檢查模型降級情況。由於多種原因,模型的性能通常會隨著時間的推移而降低。這是因為數據會隨著時間的推移而變化,例如客戶行為發生變化,因此您的模型可能會開始在這些新數據上表現不佳。因此,模型還需要定期重新訓練以保持業務性能。
此外,大多數企業將擁有用於部署機器學習模型的測試和學習周期。因此,您的第一個模型通常是版本1,以形成性能基準。之後,您將對模型進行改進,可能會更改功能或調整模型,部署更好的版本並針對原始模型進行測試。
在此模型不再存在業務案例之前,這兩個過程都可能正在進行。
結論
這篇文章的部分靈感來自Chip Huyen的推文。

招聘機器學習從業者很困難的部分原因是,我在這裡討論的許多在商業中部署機器學習的現實都沒有在這些課程中講授。這就是為什麼我喜歡實用的第一種學習方法,以及為什麼我認為工業實習,實習和初級數據科學角色如此重要。
然而,隧道盡頭有光,因為這個領域的技術正在迅速發展,有助於實現數據清理和模型部署等流程的自動化。但是,我們還有很長的路要走,因此對於數據科學家來說,開發軟體工程技能,提高溝通技巧,以及擁有彈性和持久的思維模式,以及典型的數據科學家技能組合仍然至關重要。
謝謝閱讀
原文鏈接:https://towardsdatascience.com/machine-learning-in-real-life-eebcb08f099c?source=user_profile---------0-----------------------
end
