天天看點

在一個機器學習項目中,你需要做哪些工作?

機器學習是通過對已有資料進行模型訓練,再将訓練好的模型應用于未知資料的過程。從這句話中我們可以看到幾個關鍵要素:資料,模型,訓練,應用。對于一個通常的機器學習項目,這些确實是其中最核心的環節。那麼,對于其中每一個項目,我們具體要做哪些工作?這些工作之間有什麼聯系?在這些核心工作之外,還有哪些我們可能忽略的項目。本文我們來探讨這些問題。内容主要參考了

《Hands-On Machine Learning with Scikit-Learn and TensorFlow》一書。

在一個機器學習項目中,你需要做哪些工作?

總體架構

實際中,問題最初是從一個商業問題開始的,比如“如何預測某地區未來的房價是多少?”熟悉機器學習的同學可能會知道,這是一個典型的回歸問題。但此時我們更應該思考問題本身與現有業務的聯系,比如該項目的如何影響上下遊的業務,而不是項目本身的細節。可以參考下面的架構:

在一個機器學習項目中,你需要做哪些工作?

将問題架構化并且關注重點

問題定義好了之後,就需要着手準備資料了。這個過程也不是盲目進行的,也需要考慮與之相關的很多細節。如資料源,存儲空間,資料敏感性,擷取成本等。下面的架構可以給我們一些提示。

在一個機器學習項目中,你需要做哪些工作?

擷取資料

從擷取資料開始,就進入我們上文提到的核心環節。探究資料和可用性,分布,可視化等非常必要,也能幫助我們進一步思考資料與最終目标的聯系。這一環節通常被稱為探索性分析,具體可以參考下面的步驟。

在一個機器學習項目中,你需要做哪些工作?

探索資料

上一步驟中認識了資料,結合前面對于問題的定義,接下來就需要對資料進行預處理。通常包含兩部分工作:資料預處理和特征工程。預處理的部分包括異常值,缺失值,重複值等;特征工程則包括特征提取,特征建構,特征縮放,特征融合等環節。這一環節通常會特别耗時,甚至可能會占用絕大多數的時間,下面的步驟雖然不是面面俱到,但也能給我們一些參考。

在一個機器學習項目中,你需要做哪些工作?

準備資料

處理完資料,我們來看模型。機器學習有很多經典的模型,可以用于分類,回歸,聚類,關聯分析等方面,要根據我們的目标問題選擇合适的模型,還要選擇合理的評估名額對模型做合理的評價。模型與上一步的特征緊密相關。需要經過多次疊代之後才能找到更合适的模型。這一環節的訓練測試耗費的精力可能不亞于上一步驟的特征工程。模型中超參數的選擇可能有很多技巧,也是需要經驗知識來支撐,并且可能會用到很多優化技巧,如貝葉斯優化方法。

在一個機器學習項目中,你需要做哪些工作?
在一個機器學習項目中,你需要做哪些工作?

列出有用模型和微調系統

上面步驟完成後,整個項目最核心的部分可能就結束了,但接下來的工作也是非常重要的。首先需要回到最開始的商業問題,向老闆展示你的成果,包括你的方案和思路,最終可能的效果,中間有趣的發現等等。之後要将之前的成果部署和上線,在這一步将你的成果交給實際去檢驗,在這個過程中可能會産生很多意料之外的問題,需要不斷地對模型進行修正和監控。至此,一個完整的項目流程就走完了。

在一個機器學習項目中,你需要做哪些工作?

展示解決方案和啟動

需要說明的是,上面的架構隻是一個參考,實際中并不是每一個步驟都會用到,可以根據需要檢查和選擇。每一環節的重要性也都各不相同,但都非常重要。有些步驟可能并不十分具體,還需要實際中進一步檢視相關資料。不過這個架構從全局角度給我們帶來一個機器學習的項目全貌,便于從宏觀角度把握每一環節所處的位置,這是一種很重要的做事思路。