# 第 9 章：模型管理

## 基本介紹

首先 SAS Model Manager 主要能夠讓我們透過網站管理介面針對分析模型註冊、修改、追蹤、評分、發布和產生報告，並且儲存模型至資料夾和專案中，以及開發和驗證候選模型，然後評估候選模型以進行冠軍模型的選擇，針對選擇冠軍模型進行發布和持續監控。因此所有模型開發和維護相關人員，包括資料建模人員，驗證測試人員，模型評分人員和模型分析人員，皆能夠在企業內部環境或公有雲環境使用 SAS Model Manager 進行自動化模型管理，更重要的是 SAS Model Manager 主要是以雲原生的 SAS Viya 平台為基礎架構，所以能夠支援 Kubernetes 和 Docker 等容器管理的方式，不僅達到高擴展性，更能夠達到高可用性。

接著 SAS Model Manager 主要有三大特點，分別為：

1. **自動化管理分析模型**：我們能夠為不同的模型類型定義工作流程 (Workflow)，並且提供 ETL 資料處理、主管覆核和稽核軌跡的內建功能，整合企業內部流程讓所有模型開發和維護相關人員能夠針對分析模型註冊、修改、追蹤、評分、發布和產生報告，以利達到模型治理的願景。
2. **持續監控和最佳化模型**：我們能夠針對 Python、R 和 SAS 所撰寫的模型透過網站管理介面輕鬆測試和比較不同類型的分析模型，並且產生成效能基準的評測報告或警報，以便於持續監控模型，隨著分析模型在不同部門之間透過網路服務 (REST API) 針對不同的應用程式應用最適合的冠軍模型，此時我們將會需要產成了大量的追蹤、驗證和稽核報告，以利確定何時需要重新訓練模型或讓模型淘汰，以利達到模型管理的策略。
3. **確保可被信任和合規性模型**：我們能夠透過集中式的模型儲存庫、生命週期範本和版本控制功能提供對於分析流程的可視性，確保完全可被追蹤和稽核，以符合企業內部治理和外部法規的要求，像是巴塞爾協議 II 的風險模型驗證報告透過評估內部信用風險評量系統的健全性，追蹤異常情況和回應監管機構的查詢需求。此外無論何時建立新的版本，皆會獲取模型屬性的快照，以利確保全面的版本控制，並且模型版本歷史記錄被鎖定和保留，無法隨意進行變更，以利達到模型應用的落實。

再來每個組織都有自己的模型管理生命週期，模型皆可以由一個人管理，或者由企業組織中不同部門進行覆核允許或拒絕，過程中我們可能會直接根據模型的類型手動進行修改，卻忽略了提供稽核軌跡的重要性，以及大多數模型管理的生命週期皆包含以下階段，分別為：

1. 建立註冊
2. 測試比較
3. 允許
4. 發佈
5. 監控
6. 重新訓練

此時模型管理生命週期要如何整合企業內部流程，以利達到模型管理自動化的流程，同時提供修改流程的稽核軌跡呢？此時我們就能夠搭配 SAS Viya 平台架構的核心工作流程服務 SAS Workflow Manager，其允許建立符合業務流程模型和標記法 (Business Process Model and Notation，BPMN) 標準的工作流程定義，並且將工作流程作為獨立服務進行執行，獨立執行的工作流程服務將能夠減少應用程式之間的關聯性，以利針對 SAS Model Manager 模型管理生命週期所有相關的工作流程進行全面性的管理，並且提供完整的稽核軌跡和版本控管，更重要的是我們更能夠整合資料準備的 ETL 工作流程這對於模型管理所需要的測試資料持續監控和重新訓練是非常重要的關鍵工作，因此若沒有工作流程的內建功能將無法達到自動化模型管理。

最後我們能夠將模型發佈至 CAS、SAS Micro Analytic Service、Hadoop 和 Teradata，以利企業客戶透過 SAS Viya 平台所提供的應用程式介面，像是 REST API、Java、Python、Android SDK、iOS SDK 、… 等整合企業內部的應用程式，同時自動化使用適當的分析模型進行更多有關機器學習、預測分析、優化分析、文件分析、影像分析、… 等的實務應用。

總結 SAS Viya 平台不僅能夠部署至企業內部雲原生環境達到高可擴展性和高可用性之外，更能夠整合企業內部流程達到自動化的模型管理生命週期，同時滿足資安政策和遵循法規規範，更重要的是 SAS Viya 是非常開放的平台能夠讓程式開發者和資料科學家以可被信任的分析模型管理為基礎協同合作，以利為企業提供更高價值的分析應用。

## 整合應用

首先在 SAS Viya 分析平台中我們能夠透過 SAS Model Manager 管理分析模型，至於 SAS Model Manager 則主要會透過 Model Repository 服務存取公用模型儲存庫，並且讓使用者能夠建立、匯入和匯出模型，並且我們能夠將建立的模型進行 ZIP 壓縮檔的匯入和匯出操作，在 ZIP 壓縮檔中除了上傳至模型中的檔案之外，還會包括與模型定義相關的檔案，分別為：

1. fileMetadata.json：用於定義檔案所對應的角色。
2. inputVar.json：用於定義模型輸入變數。
3. outputVar.json：用於定義模型輸出變數。
4. ModelProperties.json：用於定義模型相關屬性。

此外企業客戶更能夠透過 SAS Model Manager 針對不同專案設定標籤和使用者自定義的屬性，以及針對不同模型設定使用者自定義的屬性， 這將能夠用於客製化開發整合應用，當然 SAS Model Manager 也對針對專案和模型提供常見的預設屬性，像是模型函數、目前狀態、儲存位置、外部連結、… 等屬性。

接著已註冊的模型主要會儲存至模型儲存庫所對應的內容目錄中，同時在 SAS Model Manager 主要有一個專案有多個模型的基本觀念，並且每個專案能夠儲存至 SAS Viya 分析平台的不同內容目錄中，至於內容目錄能夠設定多層次目錄，在大企業中通常會有總部和不同區域，每個區域還會不同的單位，每個單位還會有不同的部門，此時我們要如何針對不同區域、不同單位和不同部門的大量模型進行有效管理呢？此時 SAS Viya 分析平台所提供的內容管理功能就能夠很直覺的設定和管理多層次的內容目錄，非常有助於企業客戶將模型按照不同區域、不同單位和不同部門進行儲存。

再來儲存至內容管理目錄的模型將會受到 SAS Viya 分析平台中認證和授權的安全控管，其中使用者主要會先進行身份驗證，當完成身份驗證之後，就能夠進行內容授權，當 SAS Viya 分析平台確認該使用者的身份有被授權存取已註冊至 SAS Model Manager 模型儲存庫的模型所對應的內容目錄時，才能夠讓使用者存取該模型，所以我們不僅能夠透過 SAS Viya 分析平台中的內容目錄將模型進行分類儲存之外，更進一步提供認證和授權的安全控管，非常有助於企業客戶針對不同區域、不同單位和不同部門的模型進行更全面的存取管理，以利符合企業中資訊安全的政策和規範。

最後我們更能夠撰寫 Python 程式透過 SAS Viya 分析平台所提供與模型管理相關的 REST API 將 SAS Model Manager 中按照不同區域、不同單位和不同部門所儲存的模型所對應的檔案資訊取出之後，再透過 SAS Viya 分析平台所提供與核心服務相關的 REST API 將檔案所對應的目錄和權限逐一匯出，並且將所有資訊匯整為 CSV 檔案之後，我們就能以 CSV 檔案為基礎透過 SAS Visual Analytics 製作摘要報表，當然摘要報表中更能夠以交叉資料表呈現不同區域、不同單位和不同部門模型的關鍵資訊，並且預設就有提供階層的互動操作，將能夠讓企業客戶對於 SAS Model Manager 儲存不同區域、不同單位和不同部門模型的模型現況在一張報表中一目潦然的呈現，若有發現異狀即能夠立即透過 SAS Workflow Manager 所設計符合企業流程的工作流程在最短時間內修正模型，並且部署模型至正式環境中。

總結我們將能透過 SAS Viya 分析平台中的 SAS Model Manager、SAS Visual Analytics 和 SAS Workflow Manager 等產品服務的整合應用，協助企業客戶更進一步針對模型進行有效的治理，至於什麼是模型治理呢？請參考 [SAS 官方部落格文章](https://blogs.sas.com/content/hiddeninsights/2017/11/16/model-governance-framework-mrm/)。

## 開始使用

* 前往[官方網站](http://support.sas.com/documentation/onlinedoc/modelmgr/)下載【[範例壓縮檔](http://support.sas.com/documentation/prod-p/mdlmgr/15.2/en/ZIP/QuickStartTutorial.zip)】。

![](/files/-Loo8wiYyqK3kLht5fz1)

* 解壓縮【QuickStartTutorial.zip】壓縮檔至資料夾中，以利後續使用，其中有三個主要子資料夾，分別為【Data】、【Models】和【Workflow Definition】。

![](/files/-LooAGs5ukKOquJltRC6)

* 登入至 SAS Viya 分析平台。

![](/files/-Loo69Z-UwVxFD1tVSUF)

* 在畫面左上方點選【顯示應用程式功能表】鈕。

![](/files/-Loo6Byt41R0l_zxpUNp)

* 選取【管理資料】。

![](/files/-LooIAjn6Jta-9xF_AuM)

* 選取【匯入】頁籤。

![](/files/-LooIFB40mmwN7prUYw2)

* 點選【本機檔案】。

![](/files/-LooIgkmD-AUQkEwqbGW)

* 選取剛解壓縮資料夾下【Data】資料夾中的下述 SAS 資料檔案，按下【開啟】鈕。
  * hmeqperf\_1\_q1.sas7bdat
  * hmeqperf\_2\_q1.sas7bdat
  * hmeqperf\_3\_q3.sas7bdat
  * hmeqperf\_4\_q4.sas7bdat
  * hmeq\_test.sas7bdat
  * hmeq\_train.sas7bdat

![](/files/-LooJ5wJnMgq5uQZ04FA)

* 按下【全部匯入】鈕。

![](/files/-LooJVYExSUgr1xHgEKj)

* SAS 資料檔案項目已經全部成功匯入。

![](/files/-LooJcIh4iEZyI32YzdK)

* 選取【管理模型】。

![](/files/-LooK0BLHGqRGISX_05_)

* 按下【新增專案】鈕。

![](/files/-LooEn_S40wsKp_L-KVO)

* 輸入名稱為【HMEQ】。

![](/files/-LooKXK6Z5BZvdJZww73)

* 選取【模型函數】為【分類】。

![](/files/-LooKo9XPixEhDw6rBPu)

* 按下【選擇位置】鈕。

![](/files/-LooL1P9vMjLmCMLSzL5)

* 按下【新增資料夾】鈕。

![](/files/-LooL6zkRGZsL-cRKMa3)

* 輸入【HMEQ】。

![](/files/-LooLCcfARFigmHmCijX)

* 點選【Model Repositories】->【Public】->【HMEQ】資料夾，按下【確定】鈕。

![](/files/-LooLJe1GNMKz7QFXjQE)

* 按下【儲存】鈕。

![](/files/-LooLaSpoRS1Z_irccx3)

* 按下【匯入】鈕，點選【匯入】。

![](/files/-LooM0BRIhAGvxGdV6Sg)

* 按下【選取檔案】。

![](/files/-LooM9YiEJpBgw94S92k)

* 選取剛解壓縮資料夾下【Models】資料夾中的【QS\_Reg1.zip】壓縮檔，按下【開啟】鈕。

![](/files/-LooMLlR0bMrPbLkMWnm)

* 按下【增加模型】鈕。

![](/files/-LooMhXb0Jp5M9JuGK7v)

* 按下【選取檔案】鈕。

![](/files/-LooMw7jUWHg0oOs2P85)

* 選取剛解壓縮資料夾下【Models】資料夾中的【QS\_Tree1.zip】壓縮檔，按下【開啟】鈕。

![](/files/-LooN02JAjvjxPle1eTR)

* 按下【匯入】鈕。

![](/files/-LooNIdikA6CwBoqwnnO)

* 按下【關閉】鈕。

![](/files/-LooNO9hvRry6GmbbPm_)

* 點選【QS\_Reg1】。

![](/files/-LooPsA2QovAKtK_Mekf)

* 選取【屬性】頁籤。

![](/files/-LooQ6kpvkbmMEvNGycI)

* 確認【一般】屬性資訊。
  * 演算法：羅吉斯迴歸
  * 計分程式碼類型：DATA 步驟
  * 目標變數：BAD
  * 目標事件值：1
  * 目標資訊：二進位
  * 輸出事件機率變數：EM\_EVENTPROBABILITY

![](/files/-LooQJASaTbGdvFJDTY3)

![](/files/-LooQcujWx_qq8GoOwN-)

* 按下【檢視所有項目】鈕。

![](/files/-LooR8cV64ac2OuShB3K)

* 點選【QS\_Tree1】。

![](/files/-LooRPXdBx6hjgK4s2dv)

* 選取【屬性】頁籤。

![](/files/-LooRUQBne_mH0wtAtza)

* 確認【一般】屬性資訊。
  * 演算法：決策樹
  * 計分程式碼類型：DATA 步驟
  * 目標變數：BAD
  * 目標事件值：1
  * 目標資訊：二進位
  * 輸出事件機率變數：EM\_EVENTPROBABILITY

![](/files/-LooRY3X7kzB2fJ2Uhri)

![](/files/-LooR_j9DEGT3yVMpQXN)

* 按下【檢視所有項目】鈕。

![](/files/-LooRwgxaKc25eaCATZ-)

* 勾選【QS\_Reg1】和【QS\_Tree1】模型

![](/files/-LooSXPMLbObIjm-qpTU)

* 按下【動作】鈕。

![](/files/-LooSex5Ct4YqIAZSBMQ)

* 點選【比較】。

![](/files/-LooSiwEzRYB6DfboW3j)

* 選取【顯示差異】。

![](/files/-LooSzUXtWHchk2hoH0l)

* 查看不同模型之間的差異，請確認以下資訊，按下【關閉】鈕。
  * 模型屬性
  * 使用者定義的屬性
  * 輸入變數
  * 輸出變數
  * 目標變數
  * 配適統計值
  * 提升圖
  * ROC 圖

![](/files/-LooT6xUGr-W_p1krejj)

![](/files/-LooTDn_LChUETUZ4kq9)

![](/files/-LooTHQed_Rf6jA69ElS)

![](/files/-LooTL4-EQg5qLT0ygI2)

![](/files/-LooTNEYBZTfqdeNrejI)

![](/files/-LooTP2wQvQP2QfIh3sH)

![](/files/-LooTRzlH0gxeJ1poY2F)

* 按下【展開瀏覽列】鈕。

![](/files/-LooUn3DdsIBWFJ-dpTV)

* 選取【專案】。

![](/files/-LooUxnDiGMi8xL1cLDY)

* 點選【HMEQ】專案。

![](/files/-LooVAC6hLfIPrKajT4D)

* 點選【計分】頁籤。

![](/files/-LooVJhOByvAPI7bIj61)

* 按下【新增測試】。

![](/files/-LooVPW7Rx3sllqkoUyU)

* 按下【選擇模型】。

![](/files/-LooVemD_vWy7Sk1jsh2)

* 點選【QS\_Reg1 (1.0)】。

![](/files/-LooVw0H1n8wvgkE5b-I)

* 按下【瀏覽】鈕。

![](/files/-LooW3sw15IMXec-DR0C)

* 點選【HMEQ\_TEST】資料，按下【確定】。

![](/files/-LooWAnF3UXVdRmK2nZW)

* 按下【變數】鈕。

![](/files/-LooWNQAFX6n0oBBlSo3)

* 確認【變數】對應資訊，按下【取消】鈕。

![](/files/-LooWWYjN5j26zpNgXDU)

![](/files/-LooWafP-AYRbe5x9MIe)

* 點選【進階】查看【輸出資料資料館】，按下【執行】。

![](/files/-LooX29F-2xDiKDqgpil)

* 按下【檢視結果】鈕。

![](/files/-LooXDcCde5iDh8Qu1TX)

* 查看【測試結果】相關資訊，分別為【輸出】、【程式碼】和【日誌】。

![](/files/-LooXLiDrM7HUlUkX1sx)

![](/files/-LooXSnXj_Kt7QNzWXrU)

![](/files/-LooXbw6VLaKqTNkWRPJ)

![](/files/-LooXeMT81wvzQQjRDEk)

* 按下【關閉】鈕。

![](/files/-LooXiwHECVoA6lI7Iik)

* 選取【模型】頁籤。

![](/files/-LooY1sUrKFQCrhRUrbO)

* 勾選【QS\_Tree1】。

![](/files/-LooYDbSFwt0hYP_EjQI)

* 按下【動作】鈕。

![](/files/-LooYKTx-PW8dIn_CEfJ)

* 點選【設為最佳模型】。

![](/files/-LooYSrfDraJAPBN-vfk)

* 按下【儲存】鈕。

![](/files/-LooY_PSHrDyA8icP44k)

* 按下【是】鈕。

![](/files/-LooYiI84zgviTGW4Q2B)

* 此時【QS\_Tree1】已經將【角色】設定為【最佳】。

![](/files/-LooYqYV505sRq1fv354)

* 勾選【QS\_Tree1】。

![](/files/-LooZHhDH8n6QIX294v9)

* 按下【動作】鈕。

![](/files/-LooZMkkzSkOZK9hmm6r)

* 點選【發行】。

![](/files/-LooZUIcZ52F0gbFl6W0)

* 勾選【取代】，按下【發行】鈕。

![](/files/-LooZdb-T-v85lvxkxg3)

* 查看發行結果，按下【關閉】。

![](/files/-LooZnO-zISHAmlM-AEH)

* 點取【績效】頁籤。

![](/files/-Loo_XdJbwtBIlcMOYl0)

* 按下【新增定義】鈕。

![](/files/-Loo_gln0FF2-UyREQb2)

* 選取【資料評分方法】為【系統評分資料】。

![](/files/-Loo_rc7of8AIL111ifv)

* 勾選【使用包含具特定前置詞表格的資料館】。

![](/files/-Looa2Zlq9uKa8l1tMkr)

* 按下【選取 CAS 資料館】鈕。

![](/files/-LooaMWFiSo1_hjibJei)

* 點選【cas-shared-default】。

![](/files/-LooahkWxGerSOCG6X1w)

* 點選【Public】，按下【確定】鈕。

![](/files/-LooafdJivXNLndx8TuP)

* 在【前置詞】輸入【hmeqperf】，按下【確定】鈕。

![](/files/-LooauygvO9y8WIG9IFl)

* 輸入【名稱】為【HMEQ 績效定義】。

![](/files/-LoobHqO2T-NVDES7siF)

* 點選【模型】。

![](/files/-LoobaLE6fCe_y1cARrG)

* 點選【使用參考模型】。

![](/files/-LoobmhoZTuUnKwfp_0A)

* 點選【報表設定】。

![](/files/-LoobytLSQYa9FboMMRq)

* 點選【專案屬性】。

![](/files/-LoocTcmyhj6cSblups-)

* 按下【儲存】鈕。

![](/files/-LoocarCECSHCkbZe3Pu)

* 選取【屬性】頁籤。

![](/files/-LoocjLPP8BTVxalW64B)

* 修改【一般】屬性。
  * 目標變數：BAD
  * 目標事件值：1
  * 目標資訊：二進位
  * 輸出事件機率變數：EM\_EVENTPROBABILITY

![](/files/-Lood-ATxNvpI-j6ZdJN)

* 按下【儲存】鈕。

![](/files/-LoodRaNiZ-ryuISGxt0)

* 點選【績效】頁籤。

![](/files/-LoodZ5D3eib7AFwS_Z-)

* 按下【編輯定義】鈕。

![](/files/-LoodePfKoQaTRhh0iBs)

* 點選【專案屬性】。

![](/files/-Loodm721FjIW47ANVjk)

* 點選【表格】。

![](/files/-LoodsVsP1OVLwwQ_am0)

* 點選【輸出設定】。

![](/files/-LoodyhsOCFk42jHeBos)

* 按下【關閉】鈕。

![](/files/-LooeBhqIUfMk8zBqfWS)

* 按下【執行】鈕。

![](/files/-LooeGnupW5I-duouU6N)

* 產生【績效報表】。

![](/files/-LooeOnURjyAFtkRzOdd)

![](/files/-Looedg6OVq3eeZkmwO1)

![](/files/-LooefRDPoj5Kmz2hKpQ)

![](/files/-Looehg4smwWyYstOTZI)

* 按下【檢視工作歷史記錄】鈕。

![](/files/-Looek5CFRTCSoko4BOi)

* 按下【檢視 SAS 日誌】鈕。

![](/files/-LooewK8jyEKSj1hME0f)

* 查看 SAS 日誌和下載日誌檔，按下【關閉】鈕。

![](/files/-Loof9XcMBrjlhXMfnw2)

* 按下【關閉】鈕。

![](/files/-LoofSHpXjLbMf-8zlzm)

* 選取【歷程記錄】頁籤。

![](/files/-LoofrJ0BDFi59lSVSkD)

* 選取【計分】頁籤，選取【發行驗證】頁籤。

![](/files/-LopWV1WhOJ1UvaFF_mQ)

* 點選【QS\_Tree1\_xxx】。

![](/files/-LopWdIAxEnFAkm-EtfE)

* 點選【瀏覽】鈕。

![](/files/-LopX-P2cL2MKei1HVZQ)

* 在【篩選框】中輸入【HMEQ\_TEST】。

![](/files/-LopX8xxXC3xhK-xsJNa)

* 選取【HMEQ\_TEST】，按下【確定】鈕。

![](/files/-LopXIuVX8u2sov2BBsm)

* 按下【執行】鈕。

![](/files/-LopXPg1giMVv131kvij)

* 按下【檢視結果】鈕。

![](/files/-LopXnbTA6SWIWIiE2GO)

* 點選【輸出】，查看輸出結果。

![](/files/-LopXxIySETFCK4qG6ox)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://leoyeh-me.gitbook.io/xue-xi-sas-ping-tai/di-shi-zhang-mo-xing-guan-li.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
