恭喜!您已部署 unicorn 模型。 您的模型應全天候執行,不會出現任何問題。為了確保工作順利執行 您必須監控機器學習 (ML) 管道
撰寫資料結構定義以驗證原始資料
如要監控資料,請持續檢查資料是否符合預期 編寫資料必須符合的規則,以便計算統計值。這個最愛 稱為「資料架構」定義資料結構定義的方法如下: 步驟如下:
瞭解功能的範圍和分佈情形。類別專用 屬性,瞭解可能的值集合。
將所學知識編碼成資料結構定義。以下是 規則:
- 確定使用者提交的評分一律介於 1 到 5 之間。
- 檢查 the 這個字詞是否出現頻率最高 (例如英文文字) 特徵)。
- 檢查每個類別特徵是否設為固定組合的值 可能的值
根據資料結構定義測試資料。結構定義應擷取資料 錯誤,例如:
- 異常狀況
- 類別變數的未預期值
- 未預期的資料分佈情形
撰寫單元測試以驗證特徵工程
雖然原始資料可能會通過資料結構定義,但模型並不會訓練 對原始資料的影響而是使用已輸入資料的特徵做為模型訓練 才有意義舉例來說,模型會透過正規化的數值特徵進行訓練 而非原始數值資料因為特徵工程資料 與原始輸入資料不同的是 您必須先檢查特徵工程資料 來獨立處理原始輸入資料的檢查。
依據您對特徵工程資料的理解撰寫單元測試。 舉例來說,您可以撰寫單元測試來檢查 包括:
- 所有數值特徵都會經過縮放,例如介於 0 和 1 之間。
- One-hot 編碼 向量只能包含一個 1 和 N-1 零
- 轉換後的資料分佈情形符合預期。 舉例來說,如果您已使用 Z 分數進行正規化, Z 分數應為 0。
- 離群值 處理速度和回應依據包括資源調度 或裁剪。
查看重要資料區塊的指標
成功的各個部分有時會阻礙失敗的子集。也就是 即使模型的整體指標表現優異, 或在特定情況下。例如:
您的獨角獸模型整體成效良好,但如果 為撒哈拉沙漠做出預測
如果您覺得工程師滿意整體的 AUC 也許你沒有在撒哈拉沙漠中發現模型的問題如果 對「所有」地區而言,良好的預測品質都很重要,您必須追蹤 確保效能資料子集,例如相對應的 撒哈拉沙漠,稱為「資料切片」。
找出感興趣的資料切片。 然後比較這些資料片段的模型指標 整個資料集確認模型在所有資料片段中都能正常運作 有助於消除偏誤詳情請見 公平性:評估偏誤 瞭解詳情
使用實際指標
模型指標不一定能評估模型的實際影響。 例如,變更超參數可能會增加模型的 AUC 這項異動是否會影響使用者體驗?如要評估實際影響,您需要 定義個別指標舉例來說,您可以對模型的使用者進行問卷調查 以確認模型預測他們確實有看到獨角獸 實際做法。
檢查訓練/應用偏差
訓練/應用偏差 代表訓練期間輸入的資料 所用的輸入資料下表說明 兩種重要的偏差類型
類型 | 定義 | 範例 | 解決方法 |
---|---|---|---|
結構定義偏差 | 訓練和提供服務的輸入資料不符合相同的結構定義。 | 放送資料的格式或分佈情形 持續使用舊資料訓練模型 | 使用相同的結構定義來驗證訓練和提供資料。 請務必另外檢查 例如遺漏值的比例 |
特徵偏差 | 訓練和提供方式的資料有所不同。 | 特徵工程程式碼在訓練和提供作業中有所不同 以產生不同的工程資料 | 與結構定義偏差類似,在所有訓練中套用相同的統計規則 並提供工程資料追蹤號碼 模型偵測到的偏差特徵,以及每個特徵的偏斜樣本比率。 |
訓練/應用偏差的原因可能很小。 進行預測時,請務必考量模型能使用哪些資料。 在訓練期間,請僅使用您在訓練期間可用的功能,
,瞭解如何調查及移除這項存取權。練習:隨堂測驗
假設您有一家網路商店 每一天能賺取的收益金額您的機器學習目標是每天 將客戶人數視為功能來衡量收益
答案:問題在於您不知道 預測時內的客戶人數 (早於當日銷售業績前) 完成。因此,即使這項功能 能有效預測您的每日收益還有,當您 訓練模型並取得亮眼的評估指標 (例如 0.99 AUC), 尋找可在標籤中釋放的特徵。
檢查標籤是否外洩
標籤外洩是指 要搭配的真值標籤 不小心輸入了訓練特徵唱片公司 洩漏事件有時非常難以偵測
練習:隨堂測驗
假設您建構了一個二元分類模型來預測 新醫院病患會患有癌症。模型所使用的特徵如下:
- 病患年齡
- 病患性別
- 之前的疾病
- 醫院名稱
- 生命徵象
- 測試結果
- 遺傳
標籤如下:
- Boolean:患者是否罹患癌症?
仔細分割資料,確保訓練集良好 獨立於您的驗證集和測試集。模型會執行 驗證集和測試集的良好。指標分別是 太棒了不幸的是,這個模型會對新病患進行地域 實際體驗
答案:模型的其中一項特徵是醫院。 部分醫院專門治療癌症。在訓練期間 模型很快就發現,病患受派到特定醫院 可能罹患癌症因此,醫院的名字因此成為了眾所皆知的功能。
在推論期間,大部分病患還未分派到醫院。 畢竟,模型的目的在於診斷 然後根據診斷結果指派患者 並轉至適當的醫院因此在推論期間 目前還無法使用醫院名字功能,因此系統已強制轉動模型 不必仰賴其他功能
在整個管道中監控模型存在時間
如果供應資料會隨時間進化,但模型未定期重新訓練 模型品質就會下降追蹤模型上次停用後經過的時間 重新訓練新資料,並設定快訊的門檻。除了監控 您應監控整個管道的運作時間 攔截管線的缺陷
測試模型權重和輸出內容是否達到數值穩定
在模型訓練期間,權重和圖層輸出內容不得為 NaN (非數字) 或 Inf (無限)。 編寫測試來檢查權重和圖層輸出的 NaN 和 Inf 值。 此外,也測試在圖層的輸出內容中,是否超過半數不是零。
監控模型效能
你的獨角獸外觀預測指標比平常更受歡迎!您 可取得大量預測要求和更多訓練資料你認為 這點非常好 還有時間訓練您決定按照下列方式監控模型成效: 步驟如下:
- 按版本、模型和資料追蹤模型成效。這類追蹤 可協助您找出效能降低的確切原因。
- 測試新模型版本的每秒訓練步數 上一個版本,並依據固定門檻進行比較
- 設定記憶體用量門檻,捕捉記憶體流失。
- 監控 API 回應時間並追蹤百分位數。雖然 API 回應 則回應速度緩慢可能會導致 成效不佳的實際指標
- 監控每秒回應的查詢數量。
根據放送的資料測試即時模型的品質
您已驗證模型。不過,如果是在現實生活中遇到的情況 (例如獨角獸) 行為,在記錄驗證資料後發生變化?接著 提供的模型則會降低不過,測試服務的服務品質並不容易 實際資料不一定都會加上標籤如果放送資料未加上標籤 請考慮以下測試:
調查預測出現統計偏誤的模型。詳情請見 分類:預測 偏誤:
追蹤模型的實際指標。例如,您要分類 垃圾訊息,比較預測查詢字串與使用者檢舉的垃圾郵件。
透過下列方式減少訓練和提供資料之間的潛在落差: 並在部分查詢中提供新的模型版本。驗證身分時 新的服務模型,逐步將所有查詢改為新版本。
使用這些測試時,請記得監控 Google 預測品質
隨機
讓資料產生管道能重現。假設您想要新增一項功能 看看對模型品質有何影響為了公平的實驗,您的資料集 除了這項新功能以外 基於這個原因,請務必確保資料產生作業能進行所有隨機處理 確定性:
- 種子隨機號碼產生器 (RNG)。播種可確保 RNG 每次執行時都會以相同的順序輸出相同的值,重新建立 資料集
- 使用不變體的雜湊鍵。 雜湊是分割資料的常見方式 或樣本資料您可以對每個範例進行雜湊處理,然後使用產生的整數來 並決定要將範例放在哪個分割中。雜湊函式的輸入內容 不應在每次執行資料生成程式時變更。請勿使用 目前時間或雜湊中的隨機數字;舉例來說,如果您想 視需要重新建立雜湊。
上述方法適用於取樣和分割資料。
雜湊的注意事項
假設您再次收集到搜尋查詢及使用雜湊功能 納入或排除查詢。如果雜湊鍵只使用查詢 再納入多天的資料,你一律會納入 或「一律」排除該查詢。一律包含或一律排除 查詢無效的原因如下:
- 您的訓練集看到的查詢組合會較不多元。
- 評估集會比較難處理,因為 與訓練資料重疊事實上,廣告放送時 看到訓練資料中的部分即時流量 會反映這一點
反之,您可以對查詢 + 日期進行雜湊處理,否則會產生不同的雜湊 。
![圖 7. 動畫示意圖,顯示純粹透過
查詢會導致資料每天都歸入同一個值區,但雜湊處理
查詢時間加上查詢時間會導致資料進入
值區。三個區間分別為「訓練」、「評估」和
已忽略。](https://developers.google.cn/static/machine-learning/crash-course/images/hashing_on_query.gif?authuser=6&hl=zh-tw)