你的團隊幾個月來一直在收集數據、構建預測模型、創建用戶界面,并與一些早期的用戶一起部署新的機器學習產品。但你現在聽到的并不是大家一起慶祝項目勝利的聲音,而是聽到產品經理對那些早期用戶的抱怨,這些早期用戶對模型精度不滿意并開始認為“模型不起作用”。所以你現在應該做什么?
我們常常在很多模式識別實驗室里給相關組織應用機器學習算法到新產品見到這種情況。這不是一個容易迅速解決的問題。真實世界的機器學習模型的性能受到許多因素的影響,其中一些因素可能在控制之下,而另一些因素則可能不在控制之下。最重要的是,當試圖對真實世界的現象建模時,每個建模問題都有一個固有的噪聲或隨機性被混合在信號中,這使得很難理解我們使用一個預測模型真正能夠達到的準確度。再加上用戶對你的模型準確性的期望,你的數據科學團隊就突然陷入了一個棘手的境地,并試圖找出從哪里開始解決問題。
1. 了解要解決的問題
首先要確保團隊對他們試圖用模型解決的用戶問題有很好的理解。令人驚訝的是,數據科學團隊對成功的定義的理解與用戶的標準經常不同。最近,我們與一家公司合作,試圖預測惡劣天氣對公用事業公司運營的影響。技術團隊絞盡腦汁想要提高他們模型的MAPE分數。當我們深入研究時,我們發現MAPE根本不是正確的度量標準,他們所追求的目標是他們自己設定的(而不是傾聽用戶的意見)。用戶實際上最關心的是,我們能夠始終如一地將風暴的影響嚴重程度劃分為1-5級的能力,這個劃分是為他們的操作程序定義的。
要確保數據科學團隊對這個問題有一個全面的理解,并且這個理解最好直接來自用戶,這對于一個新計劃的成功是至關重要的。如果你的團隊陷入了上面描述的模型“不能工作”的情況,那么第一步就是回去,確保你已經正確地定義了問題,并理解你的用戶如何定義成功。
2. 數據是否正確、完整?
下一步是回頭查看你的團隊收集的輸入數據。通常,在處理復雜的實際模型時,模型性能不好的主要原因是由于輸入數據集和特征的問題,而不是模型本身。特別是當你運行多種類型的模型(我們建議你盡可能這樣做)并得到類似的結果時,這通常是輸入數據集的問題。
這一步的一個關鍵部分是確保你已經收集了盡可能多的相關數據。通常,現實世界的模式中有一些因素并不總是直觀或者明顯的,因此你可以收集的數據和特征越多越好。你可以使用許多技術來降低特征的選擇,以便在最相關的特征上構建模型,我們將在下一個步驟中討論這些特征。但是對于這一步,重點是重新檢查你的假設,哪些輸入的特征影響了你試圖建模的輸出,如果需要,還可以返回以獲取額外的數據。例如,當試圖為現實世界的現象建模時,通常需要考慮一些不明顯的因素,因為這些不明顯的因素會造成影響,特別是異常情況——例如季節性、天氣、日歷事件,甚至地緣政治事件。
其次,應該進行一些簡單的QA檢查,以確保輸入數據得到正確映射和處理。最近,我們與一個想改善模型性能的客戶進行了合作,但最終發現問題根本不是與模型有關——客戶錯誤地處理了一些地理位置的特征數據,這使得他們運行的模型無法識別正確的模式。
CRISP-DM流程是許多數據科學團隊用于管理項目的最常見框架之一。我們喜歡它的重點在于它確保在深入建模之前就能理解業務和數據。CRISP-DM過程中的兩個關鍵步驟是“數據理解”和“數據準備”。正確地遵循這些步驟需要深入研究輸入數據以真正地理解它,通常需要可視化數據中的分布、趨勢和關系。“數據準備”通常包括預處理、數據擴充與標準化,以便為建模做準備。如果處理得當,這兩個步驟可以幫助數據科學家確保輸入數據中的錯誤不會導致他以后遇到的任何模型性能問題。
3. 調整模型提升性能
既然你已經盡可能正確和完整地驗證了輸入數據,現在是時候關注有趣的東西了——建模本身。這一步中影響最大的部分之一是特征選擇——從上到下選擇最影響輸出的關鍵特征,并對這些特征進行訓練,消除冗余或高度相關的特征,以提高模型的速度和準確度。關于特征選擇技術有一些很好的博客文章,包括單變量選擇、遞歸特征消除和隨機森林特征重要性。這里有一個可供參考:https://machinelearningmastery.com/feature-selection-machine-learning-python/。無論你使用的是哪種技術,或者它們的組合,都要確保在這一步上花費時間,為你的模型獲得特征的最佳組合。
此步驟的另一個重要部分是重新考慮模型的選擇,或者考慮添加額外的模型類型或組合多個模型。同樣的,也有許多比較不同模型優缺點的好文章,但是我們建議盡可能運行至少兩種模型類型(理想情況下,一種是神經網絡)來比較結果。
最后,一旦你的特征和選擇的模型確定了后,重新調參,并且確保你正確地定義訓練集,驗證集和測試集,這代表你在調參時并沒有選擇欺詐,所以它在新數據上可以泛化的很好,而不是在訓練集上表現良好甚至過擬合導致在新數據上模型沒有良好的工作。
4. 最后,也是最重要的,管理客戶的期望
這是許多數據科學家忽視的另一個關鍵步驟,因為他們認為這“不是他們的工作”。當推出一個面向世界的新機器學習產品時,模型在真實世界的性能存在相當大的不確定性。此外,如上所述,盡管你盡了最大的努力使準確度最大化,但是在你正在解決的問題在真實世界中會出現的大量噪聲,這可能會限制模型的性能。所以這個步驟是數據科學團隊的責任,需要數據科學團隊去與產品經理,銷售人員,客戶正確定義客戶期待在模型中看到的性能,并且在時間的推移擁有額外的數據的情況下,指導他們如何去訓練改善模型。
所以下次你的團隊在模型放入真實世界里遇到性能問題時,不要玩指責游戲或直接一頭扎進調參工作進行優化與擬合,后退一步,跟著這個簡單的,結構化的過程一步一步來解決這個問題,在你的新模型上最大化性能。
-
模型
+關注
關注
1文章
3172瀏覽量
48714 -
數據集
+關注
關注
4文章
1205瀏覽量
24644
發布評論請先 登錄
相關推薦
評論