實戰 | 如何上線一個機器學習專案?
Canvas是用於設計和記錄機器學習系統的模板。它比簡單的文字文件具有優勢,因為Canvas用簡單的部件通過部件之間的相關性來尋找機器學習系統的關鍵元件。這個工具已經很流行,因為它對複雜專案進行了視覺化操作。 在本文中,我們通過列舉資料科學家遇到的實際問題和實用的技巧來描述Canvas的每個部分。
價值主張
機器學習應該以滿足使用者需求為目的進行設計
• 誰是預測系統的終端使用者?
• 我們需要他們做些什麼?
• 服務的目標是什麼?目標的意義又是什麼?
只有在回答這3W問題之後,你才能開始思考一些關於資料收集、特徵工程、建模、評估和監測系統的問題。
從資料中學習
讓我們繼續看看專門用於從資料中學習的Canvas的流程,它是由資料來源、收集資料、特徵工程、建模等幾部分組成的。
資料來源
這一部分提出了一個關於我們可以使用哪些原始資料來源的問題。這一步不需要具體計劃收集哪些資料,但會迫使你開始思考要使用的資料來源。你需要考慮的一些資料來源示例包括內部資料庫、開放資料、域中的研究論文、API、網頁抓取以及其他機器學習系統的輸出等。
收集資料
這一部分主要解決收集和準備資料的問題。如果沒有訓練資料集,機器學習專案就不可能存在。並且,訓練集最好包含大量已標記資料。這意味著你的學習系統將需要示例輸入和他們期望的輸出。只有從標有正確答案的資料中學習之後,機器學習模型才能用於對新資料進行預測。
通常,資料最初並不是以標註形式提供的,制定資料集的計劃非常重要,該資料集將特徵過程用作預測的實際資料。只有輸入的資料正確,所開發的學習演算法才具有良好的效能。
例如,如果你想建立一個演算法來預測一個Instagram帳戶是假的還是真的,首先你需要人類將帳戶標記為真或假。對於一個人來說這不是一項複雜的任務,但是根據你需要的資料量,這可能會變得很昂貴。
但是,你可以通過更具成本效益的方式獲取資料。例如,Instagram允許其使用者將其訊息中的影象和配置檔案報告為垃圾郵件。使用者免費為Instagram演算法標記資料,給喜歡的帖子點贊並將不當內容報告為垃圾郵件。然後,Instagram使用這些使用者反饋來打擊欺詐和垃圾郵件帳戶,併為每位客戶提供個性化的訊息。
需要指出的是,迄今為止最準確的機器學習系統都採用了“人為介入”方法。這種方法利用了機器和人的智慧。當機器不確定它做出的預測是否正確時,它會依賴於人,然後將人的答案新增到其模型中。“人為介入”這一方法有助於獲得高質量的新資料,並隨著時間的推移提高模型的準確性。
還有一些專案可以在沒有標註資料集的情況下啟動,。這些是關於無監督機器學習任務的專案,例如異常檢測或觀眾分類。
特徵工程
一旦擁有已標註的資料,你需要將其轉換為演算法可接受的格式。在機器學習中,這個過程被稱為特徵工程。最初的一組原始特徵可能是冗餘、海量而無法管理。因此,資料科學家需要選擇最重要的資訊特徵來促進學習。特徵工程需要大量的實驗,並將自動化技術與直覺和領域專業知識相結合。
InDataLabs的資料科學家Eugeny表示:
我們使用簡單的機器學習技術,如梯度提升或線性迴歸來選擇和解釋特徵。迴歸模型的係數自動提供對特徵重要性的評估估計。我們使用不同的超引數配置多次訓練模型,以確保特徵的排序是可靠的,並且從實驗到實驗並沒有顯著變化。
如果你是領域專家(不是資料科學家),你應該從自己的角度指定哪些特徵是最重要的,這對未來的資料工程師非常有用。如果發現自己列出了太多功能,請嘗試將它們組合到特徵系列中。
許多機器學習專家認為,正確選擇的特徵是有效構建模型的關鍵。
建立和更新模型
該部分解決了何時使用新資料建立/更新模型的問題。主要有兩個原因不斷使得你的模型不斷更新。首先,新資料可以改善模型。其次,它允許捕捉模型執行中的任何變化。模型需要用更新的頻率取決於預測內容。
如果模型預測了短語的情感,就不需要每天或每週更新它。文字的結構變化非常緩慢甚至沒有改變。如果你獲得了更多的訓練資料,這是你需要大規模的更新模型。
另一方面,有一些模型在快速變化的情況中工作。例如,如果對客戶行為做出預測,則應經常檢查這一模型是否適用於新使用者。受眾規模和受眾結構的重大變化可能使得我們需要使用新資料更新模型。
有時更新需要更多的時間和更多的處理能力。在這種情況下,我們需要在成本、時間和模型質量之間取捨。
這個部分的關鍵之處在於,你的模型不是一次性構建的,它應該隨著時間而改變,就像世界上的所有事物一樣。
進行預測
Canvas主要致力於進行預測,並由機器學習任務、決策、預測、離線評估等部件組成。
機器學習任務
該部分旨在根據輸入、輸出和問題型別定義機器學習任務。最常見的機器學習任務是分類、排名和迴歸。
如果你預測某些物體是什麼,要預測的輸出的是類標籤。在二進位制分類中,有兩種可能的輸出類別。在多類分類中,有兩個以上的可能類。我們前面討論過的偽造Instagram賬戶的預測問題是二元分類的一個例子。輸入資料可能包括個人資料名稱、個人資料描述、帖子數量、關注者數量、輸出標籤可能是“真的”或“假的“。
如果你試圖預測數值,那麼你正在處理迴歸任務。例如,當我們試圖根據價格歷史和有關建築和市場的其他資訊來預測未來幾天的房地產價格時,我們可以將其視為迴歸任務。
決策
如何使用預測來向終端使用者的決策提供建議?
在收集培訓資料並建立模型之前,你和團隊不得不闡述如何使用這些預測來做出為終端使用者提供價值的決策。對於每個專案來說,這是一個非常重要的問題,因為它與專案的盈利能力密切相關。如前文所述,一個成功的機器學習系統應該為其使用者創造額外的價值。
機器學習系統必須以真正有意義的方式影響決策過程,預測必須按時交付。許多公司犯的一個常見錯誤是建立一個機器學習模型,該模型應該可以線上進行預測,然後發現他們無法獲得實時資料。所以,在計劃您的機器學習專案時要注意時間,並確保在正確的時間提供正確的資料以提供您可以採取行動的預測。
機器學習系統的輸出並不總是使用者正在尋找的結果。例如,流失預測模型有助於預測一個月內誰可能流失,但終端使用者需要的是流失預防(以具有成本效益的方式阻止客戶流失)。從流失預測到流失預防需要做很多步驟,機器學習專案的擁有者必須能夠事先描述這些步驟。如果你不能解釋如何使用預測來做出為終端使用者提供價值的決策,那麼在這裡停下來,不要向前走,除非你找到答案。
進行預測
該部分解決了以下問題:“我們什麼時候對新投入做出預測?”以及“我們需要多長時間來設計新的投入並進行預測?”
有些模型允許分別更新每個使用者的預測。在這種情況下,你可以考慮幾種模型更新方法:
每次使用者開啟您的應用程式時都會進行新的預測
新的預測是根據請求做出的,使用者可以通過點選應用程式中的特殊按鈕來請求更新
預測更新由某個事件觸發,例如使用者提交新的重要資訊
對所有使用者按計劃進行新的預測,例如每週一次
還有一些系統,其中對不同使用者的預測是相互關聯的,並且在不更新整個系統的情況下無法為一個使用者進行更新。這種通用更新需要更多時間和更多處理能力,因此需要更多計劃。預測更新所需的時間必須符合所需的更新頻率。
例如,如果您要構建影片推薦系統,請首先考慮建議應該多久更新一次新輸入,以便與使用者相關且有價值。那麼你應該檢查這是否可能,因為你的機器學習系統的速度有限。如果您想每天更新並且更新需要兩個小時,這對您來說是個好訊息。如果您認為您的建議只有每小時更新一次才有價值,而更新需要兩個小時,則您需要再次在成本,時間和模型質量之間妥協。
離線評估
該模組在投入生產之前解決模型效能評估的問題。規劃方法和指標以在部署之前評估系統非常重要。如果沒有驗證指標,您將無法選擇能夠做出最佳預測並回答的模型,模型是否足夠好以及何時可以投入生產。因此,請確保您具有代表您正在努力實現的指標。
要評估一個有監督的機器學習演算法,我們通常使用k-fold交叉驗證。該方法意味著對可用訓練資料的(k-1)個子集上的幾個機器學習模型進行訓練,並對保留用於評估的補充子集進行評估。這個過程重複k次,每次都有不同的驗證資料。這種技術有助於避免過度擬合,同時使用所有可用的資料進行訓練
InDataLabs的資料科學家Eugeny如是說。
離線評估的另一種方法是對實時資料進行離線評估。例如,如果您正在建立預測房地產價格的模型,則只需等待實際銷售資料可用,並將您的預測與實時資料進行比較。
實時評估和監測
Canvas 的最後部分涵蓋了模型的線上評估和監測。在這裡,您將指定度量標準來監控部署後的系統效能(跟蹤度量標準),並衡量價值建立(業務度量標準)。調整這兩種指標將使公司中的每個人都更快樂。理想情況下,模型的質量與業務結果之間應有直接關係。
線上階段有其自己的測試程式。A/B測試是最常用的線上測試形式。這種方法相當簡單,但它有一些棘手的規則和原則,您需要遵循才能正確設定並解釋結果。
A/B測試的一個有希望的替代方法是稱為多臂博弈的演算法。如果您有多個競爭型號,並且您的目標是最大限度地提高使用者的整體滿意度,那麼您可以嘗試執行多臂博弈演算法。
當模型投入生產時,它與真實使用者進行互動,他們也可以提供關於模型準確性資訊。您可以收集這種現場反饋,進行客戶訪談或分析評論和支援請求。
您還應該繼續跟蹤模型在實時資料驗證度量上的效能,並在模型質量對終端使用者不滿意之前進行模型更新。
BAT + Google的一線技術大咖授課
親自上手工業實戰專案
答疑、考試一對一批改
畢業前面試輔導、推薦就業
掃碼下方二維碼或者“閱讀原文”免費試聽
相關文章
- 【機器學習】超詳細!上線一個機器學習專案你需要哪些準備?機器學習
- 機器學習入門系列(2)--如何構建一個完整的機器學習專案(一)機器學習
- 機器學習實戰(一)—— 線性迴歸機器學習
- Spark機器學習實戰 (十一) - 文字情感分類專案實戰Spark機器學習
- 機器學習專案實戰----信用卡欺詐檢測(一)機器學習
- 開源一個機器學習文字分析專案機器學習
- JavaScript玩轉機器學習-Tensorflow.js專案實戰JavaScript機器學習JS
- 機器學習實戰專案-預測數值型迴歸機器學習
- 2018年最實用的6個機器學習專案機器學習
- 10個專案實戰,30天學會爬蟲,這個學習路線絕了爬蟲
- Flutter上線專案實戰——路由篇Flutter路由
- 機器學習專案實戰----信用卡欺詐檢測(二)機器學習
- 《機器學習實戰》第一章 機器學習基礎機器學習
- 一份 Python 機器學習線上指南Python機器學習
- 如何建立複雜的機器學習專案?機器學習
- 一個完整的機器學習專案在Python中演練(四)機器學習Python
- 一個完整的機器學習專案在Python中演練(三)機器學習Python
- 《機器學習實戰》學習大綱機器學習
- 機器學習專案實戰----泰坦尼克號獲救預測(二)機器學習
- Python爬蟲入門學習實戰專案(一)Python爬蟲
- 10個豐富自我的機器學習專案機器學習
- 一個完整的機器學習專案在Python中的演練(一)機器學習Python
- 舉兩個栗子:如何正確建立個人的機器學習專案集機器學習
- 鴻蒙系統學習路線和專案實戰分享!鴻蒙
- web專案部署上線(無虛擬主機,待學習)Web
- 經驗&教訓分享:我的第一個機器學習專案機器學習
- 【Python機器學習實戰】決策樹和整合學習(一)Python機器學習
- python機器學習實戰(二)Python機器學習
- 吳恩達《構建機器學習專案》課程筆記(1)– 機器學習策略(上)吳恩達機器學習筆記
- 機器學習專案---預測心臟病(一)機器學習
- 機器學習專案是如何開發和部署的?機器學習
- 一個完整的機器學習專案在Python中的演練(三)機器學習Python
- 一個完整的機器學習專案在Python中的演練(二)機器學習Python
- 做機器學習專案的checklist機器學習
- [譯] 機器學習專案清單機器學習
- 回顧·機器學習/深度學習工程實戰機器學習深度學習
- Flutter上線專案實戰——Vap視訊動畫Flutter動畫
- 你不應該忽略的五個機器學習專案機器學習