當模型不起作用的時候應該怎麼做?
你的團隊幾個月來一直在收集資料、構建預測模型、建立使用者介面,並與一些早期的使用者一起部署新的機器學習產品。但你現在聽到的並不是大家一起慶祝專案勝利的聲音,而是聽到產品經理對那些早期使用者的抱怨,這些早期使用者對模型精度不滿意並開始認為“模型不起作用”。所以你現在應該做什麼?
我們常常在很多模式識別實驗室裡給相關組織應用機器學習演算法到新產品見到這種情況。這不是一個容易迅速解決的問題。真實世界的機器學習模型的效能受到許多因素的影響,其中一些因素可能在控制之下,而另一些因素則可能不在控制之下。最重要的是,當試圖對真實世界的現象建模時,每個建模問題都有一個固有的噪聲或隨機性被混合在訊號中,這使得很難理解我們使用一個預測模型真正能夠達到的準確度。再加上使用者對你的模型準確性的期望,你的資料科學團隊就突然陷入了一個棘手的境地,並試圖找出從哪裡開始解決問題。
1. 瞭解要解決的問題
首先要確保團隊對他們試圖用模型解決的使用者問題有很好的理解。令人驚訝的是,資料科學團隊對成功的定義的理解與使用者的標準經常不同。最近,我們與一家公司合作,試圖預測惡劣天氣對公用事業公司運營的影響。技術團隊絞盡腦汁想要提高他們模型的MAPE分數。當我們深入研究時,我們發現MAPE根本不是正確的度量標準,他們所追求的目標是他們自己設定的(而不是傾聽使用者的意見)。使用者實際上最關心的是,我們能夠始終如一地將風暴的影響嚴重程度劃分為1-5級的能力,這個劃分是為他們的操作程式定義的。
要確保資料科學團隊對這個問題有一個全面的理解,並且這個理解最好直接來自使用者,這對於一個新計劃的成功是至關重要的。如果你的團隊陷入了上面描述的模型“不能工作”的情況,那麼第一步就是回去,確保你已經正確地定義了問題,並理解你的使用者如何定義成功。
2. 資料是否正確、完整?
下一步是回頭檢視你的團隊收集的輸入資料。通常,在處理複雜的實際模型時,模型效能不好的主要原因是由於輸入資料集和特徵的問題,而不是模型本身。特別是當你執行多種型別的模型(我們建議你儘可能這樣做)並得到類似的結果時,這通常是輸入資料集的問題。
這一步的一個關鍵部分是確保你已經收集了儘可能多的相關資料。通常,現實世界的模式中有一些因素並不總是直觀或者明顯的,因此你可以收集的資料和特徵越多越好。你可以使用許多技術來降低特徵的選擇,以便在最相關的特徵上構建模型,我們將在下一個步驟中討論這些特徵。但是對於這一步,重點是重新檢查你的假設,哪些輸入的特徵影響了你試圖建模的輸出,如果需要,還可以返回以獲取額外的資料。例如,當試圖為現實世界的現象建模時,通常需要考慮一些不明顯的因素,因為這些不明顯的因素會造成影響,特別是異常情況——例如季節性、天氣、日曆事件,甚至地緣政治事件。
其次,應該進行一些簡單的QA檢查,以確保輸入資料得到正確對映和處理。最近,我們與一個想改善模型效能的客戶進行了合作,但最終發現問題根本不是與模型有關——客戶錯誤地處理了一些地理位置的特徵資料,這使得他們執行的模型無法識別正確的模式。
CRISP-DM流程是許多資料科學團隊用於管理專案的最常見框架之一。我們喜歡它的重點在於它確保在深入建模之前就能理解業務和資料。CRISP-DM過程中的兩個關鍵步驟是“資料理解”和“資料準備”。正確地遵循這些步驟需要深入研究輸入資料以真正地理解它,通常需要視覺化資料中的分佈、趨勢和關係。“資料準備”通常包括預處理、資料擴充與標準化,以便為建模做準備。如果處理得當,這兩個步驟可以幫助資料科學家確保輸入資料中的錯誤不會導致他以後遇到的任何模型效能問題。
3. 調整模型提升效能
既然你已經儘可能正確和完整地驗證了輸入資料,現在是時候關注有趣的東西了——建模本身。這一步中影響最大的部分之一是特徵選擇——從上到下選擇最影響輸出的關鍵特徵,並對這些特徵進行訓練,消除冗餘或高度相關的特徵,以提高模型的速度和準確度。關於特徵選擇技術有一些很好的部落格文章,包括單變數選擇、遞迴特徵消除和隨機森林特徵重要性。這裡有一個可供參考:。無論你使用的是哪種技術,或者它們的組合,都要確保在這一步上花費時間,為你的模型獲得特徵的最佳組合。
此步驟的另一個重要部分是重新考慮模型的選擇,或者考慮新增額外的模型型別或組合多個模型。同樣的,也有許多比較不同模型優缺點的好文章,但是我們建議儘可能執行至少兩種模型型別(理想情況下,一種是神經網路)來比較結果。
最後,一旦你的特徵和選擇的模型確定了後,重新調參,並且確保你正確地定義訓練集,驗證集和測試集,這代表你在調參時並沒有選擇欺詐,所以它在新資料上可以泛化的很好,而不是在訓練集上表現良好甚至過擬合導致在新資料上模型沒有良好的工作。
4. 最後,也是最重要的,管理客戶的期望
這是許多資料科學家忽視的另一個關鍵步驟,因為他們認為這“不是他們的工作”。當推出一個面向世界的新機器學習產品時,模型在真實世界的效能存在相當大的不確定性。此外,如上所述,儘管你盡了最大的努力使準確度最大化,但是在你正在解決的問題在真實世界中會出現的大量噪聲,這可能會限制模型的效能。所以這個步驟是資料科學團隊的責任,需要資料科學團隊去與產品經理,銷售人員,客戶正確定義客戶期待在模型中看到的效能,並且在時間的推移擁有額外的資料的情況下,指導他們如何去訓練改善模型。
所以下次你的團隊在模型放入真實世界裡遇到效能問題時,不要玩指責遊戲或直接一頭扎進調參工作進行最佳化與擬合,後退一步,跟著這個簡單的,結構化的過程一步一步來解決這個問題,在你的新模型上最大化效能。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946223/viewspace-2655243/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS企業簽名掉籤的時候應該怎麼做?iOS
- Mac檔案共享不起作用時該怎麼辦Mac
- 企業應該在什麼時候做MSA(測量系統分析)?
- 小公司的前端應該怎麼做?前端
- 什麼時候你不應該使用微服務微服務
- 什麼時候應該避免註釋程式碼?
- 面試的時候被問“擅長前端還是後臺”應該怎麼回答?面試前端
- 網站設計的時候應該注意些什麼網站
- 安全密碼儲存,該怎麼做,不該怎麼做?密碼
- Octopus智慧手錶:讓兒童瞭解什麼時候該做什麼
- 什麼時候該用vuex?Vue
- 什麼時候該用MongoDB?MongoDB
- 面試的時候應該想的問題面試
- 當資料檔案表空間丟失的時候怎麼恢復該資料檔案
- 當談到 GitLab CI 的時候,我們該聊些什麼(上篇)Gitlab
- Haskell程式設計精華:什麼時候該註釋,什麼時候不該註釋Haskell程式設計
- [轉載]技術面試的時候該怎麼樣介紹自己?面試
- 專案註定延期時,應該做什麼?
- 極限程式設計應該在什麼時候使用?程式設計
- 當談到 GitLab CI 的時候,我們都該聊些什麼(下篇)Gitlab
- Android當記憶體監控到閾值時應該怎麼辦?Android記憶體
- 當代前端應該怎麼寫這個hello world?前端
- 牆面互動投影應用到展館應該怎麼做
- cqrs架構在對軟體功能劃分模組開發的時候應該怎麼進行架構
- 當oracle的資料量達到幾百TB的時候,rman怎麼處理?Oracle
- 我什麼時候應該使用TreeMap 而不是 PriorityQueue?反之亦然?
- 作為遊戲策劃,提美術需求的時候應該注意什麼?遊戲
- 應該怎麼做才能實現Python快速入門?Python
- 電話機器人效果好的話應該怎麼做呢?機器人
- 自然語言不等於英語,為什麼NLPer應當認識到這個問題,以及該怎麼做?
- 秒殺系統流量削峰這事應該怎麼做?
- 育碧設計師:“開放世界”遊戲到底應該怎麼做?遊戲
- 99%的人都不會的使用者流失分析,到底應該怎麼做?
- 應該做技術還是應該做管理?
- [提問交流]當程式不在根目錄的時候怎麼設定偽靜態
- T-SQL什麼時候該使用分號SQL
- 傢俱行業erp下載訂單的時候跳出提示該怎麼辦?行業
- 收益最大化的微商模式該怎麼做?模式