從整批資料集訓練及部署模型:詐騙偵測使用案例
架構
下圖說明此參考架構。

cc-fraud-detection-arch Architecture.png 圖解的描述
cc-fraud-detection-arch Architecture-oracle.zip
架構具有下列元件:
- 收集
收集階段具有下列元件:
- 產生資料的裝置、感測器及輸入。在詐騙偵測使用案例中,資料源自銷售點 (POS) 系統
- 即時擷取會在產生資料點時收到資料點,可以使用「串流服務」(連線至「模型部署」) 的串流排入佇列,或者應用程式可以透過 API 直接呼叫推論伺服器。即時和歷史資料都會在資料存放區 (雲端儲存或資料庫) 中進行調節。
- 透過上述方式取得的歷史資料通常會儲存在資料庫或物件儲存中。
- 雲端儲存可作為探索及塑造訓練模型的資料集。
- 擷取服務 (例如 Oracle Cloud Infrastructure 資料整合服務或 Oracle GoldenGate) 也可以連結及傳輸外部資料,例如位於企業內部部署或第三方資料集。
- 分析
- 探索、分析及設計模型
在探索階段中,資料科學家擷取資料集的代表子集,這些資料集可以容納在記憶體中,並向對手邊任務有意義的工程師功能進行學習。或者,資料科學家可以從 Oracle Cloud Infrastructure Data Science 執行 Oracle Cloud Infrastructure Data Flow 應用系統,以擷取代表資料集。若為詐騙偵測,資料通常會包括客戶的相關資訊 (例如帳號、地址、性別、出生日期) 與可衍生其他功能的交易 (日期、時間、商家、商家地點),例如當日時間、年齡、與特約商店距離、客戶城市人口等等。
設計有意義的功能後,您可以測試各種模型,找出最精準的候選人。這意味著使用範例資料集來訓練和評估記憶體中的模型規模。如果無法達成上述目標,資料分析師可以從 Oracle Cloud Infrastructure Data Science 建立及執行資料流程應用系統,以訓練較大的規模模型。
- 模型訓練
您可以使用 Apache Spark 分散式處理引擎,為 Oracle Cloud Infrastructure Data Flow 服務提供支援,以大規模方式訓練選取的模型,此模型無法放到記憶體中 (位元組或甚至是 PB)。
資料流程會處理選取資源配置的佈建驅動程式和執行程式節點,以處理訓練資料量,並可視需要自動調整規模。
- 儲存模型使用者自建物件
這個訓練的模型是以序列化和匯出到物件儲存體。您可以載入批次推論的使用者自建物件,或使用它部署模型以進行即時推論。
- 模型目錄
Oracle Cloud Infrastructure Model Catalog 會儲存模型程式碼和使用者自建物件,而且可新增與證明和分類相關的描述資料、提供自我檢查功能,以及定義輸入和輸出綱要。「模型目錄」是「模型部署」的來源。
- 探索、分析及設計模型
- 行動
- 批次推論
您可以使用「批次推論」,根據排程評估過去事件,或定期稽核模型績效與提升。批次推論是使用 Oracle Cloud Infrastructure Data Flow 服務大規模執行。您可以使用儲存在物件儲存上的程式碼和模型使用者自建物件,直接從 Oracle Cloud Infrastructure Data Science 記事本建立評分或推論資料流程應用程式。
- 即時推論
使用模型部署,對可納入記憶體的單一或小型事件批次執行推論。就像資料流程應用程式一樣,您可以從資料科學記事本直接在模型目錄中建立及儲存模型。接著推論會發生在即時資料串流上,或透過應用程式直接 API 呼叫同步。
- 協調和排程
使用批次時,通常在排程或觸發器上執行工作會很有用。您可以使用 Oracle Cloud Infrastructure Data Integration 服務執行此類型的協調流程。此服務可以觸發並控制擷取工作、轉換及觸發訓練、評分或推論工作。
- 批次推論
您可以使用類似的模式,搭配需要非常大型資料集的其他使用案例,例如:
- 預測性維護
預測性維護的重點在於避免成本,並將可增加費用的作業中斷降到最低,例如排定額外的班次、支付加班費、運費加速以及其他成本。
- 能源生產輸出
從替代能源農場 (例如風力或太陽能) 預測傳輸量需要大量資料,包括當地天氣模式和過去的輸出。
- 智慧製造與 Internet of Things (IoT)
智慧製造業包含尋找如何提升作業效率以增加營收和獲利的方法。這通常需要從數百個到數百萬個感測器擷取資料,以預測產量、瓶頸或追蹤產品來分析影響,進而提高傳輸量和輸出。
- 健康保險索賠處理
欺詐也是醫療保險索賠中普遍存在的問題。自動判斷提交完成度是提升處理效率的重要環節。
- 處方藥分析和物流
預測某個地點需要哪些類型的處方藥是複雜問題,只有大量資料才有助於解決。
- 健康診斷
健康診斷通常採用 X 光或 MRI 等成像技術進行。機器學習證明非常有幫助,有時也比人類更優於預測疾病。此類型的應用程式需要非常大量的影像資料集,因為它們的多維度性質而異。
建議
- 閘道
閘道可以是專為特定資料收集而設計的自訂中樞。也可能是一個資料庫,例如 Oracle Autonomous Data Warehouse、Oracle NoSQL Database Cloud Service 或其他資料庫。
- 傳輸
使用 Oracle Cloud Infrastructure Data Integration 將所有歷史資料離線移轉至 Oracle Cloud Infrastructure Object Storage。將資料傳輸到物件儲存之後,所有 Oracle Cloud Infrastructure (OCI) 服務都可以存取資料。您也可以使用 Oracle GoldenGate 從企業內部部署資料庫移動資料。
- 串流處理
使用 Oracle Cloud Infrastructure 串流處理可即時擷取在 Oracle Cloud Infrastructure Object Storage 中使用的事件和資料。
- 資料儲存體
- 物件儲存
Oracle Cloud Infrastructure Object Storage 是此架構中的預設儲存體。將所有結構化、半結構化及非結構化資料儲存在物件儲存中,是最符合成本效益的解決方案。
- 資料庫
使用 Oracle Autonomous Data Warehouse、Oracle MySQL Database Service 或其他 SQL 和 NoSQL 資料庫來儲存必須存取以進行分析和報告的資料。一般而言,只有已設定策劃和處理的資料在資料庫內,但在原始資料較不常被存取的資料較有效地儲存在物件儲存中。
- HDFS 資料存放區
Oracle Big Data Cloud Service 提供一種在 HDFS (Hadoop 分散式檔案系統) 上儲存大量資料的方式。如果您的組織已經使用或移轉其他以 Hadoop 為基礎的應用程式,此選項就很有用。Oracle 提供 HDFS 連接器給 Oracle Cloud Infrastructure Object Storage,這是建議的儲存平台。
- 物件儲存
- 資料科學
Oracle Cloud Infrastructure 資料科學提供一個熟悉的開發環境,供資料分析師使用,形式為代管的 Jupyter Lab 和多個 Conda 環境進行選擇。
資料科學服務支援 Oracle Advanced Data Science (ADS) 程式庫,可讓您輕鬆建立機器學習模型,以及透過模型部署來部署模型。
結合 Jupyter Lab 介面和提供的預先封裝 Apache Spark conda 環境,可讓您在記憶體內資料集探索與設計 Spark 型模型,然後將它們部署為 Oracle Cloud Infrastructure Data Flow 應用程式,以執行訓練或批次推論,或作為即時或記憶體內推論的模型部署。
- 分散式資料處理
Oracle Cloud Infrastructure Data Flow 以服務方式提供 Apache Spark 分散式處理引擎,能夠在數 TB 或甚至數 PB 的資料上執行處理工作。
資料科學服務中開發的 Spark 應用程式會依據 Oracle ADS 程式庫公用程式輕鬆傳輸至資料流程應用程式,並且可以設定為在任何資源配置上執行。
注意事項
在大型資料集建置和訓練模型時,請考量下列各點。某些特定於詐騙偵測使用案例,但您可將大部分內容插入任何模型設計流程。
- 資料收集
建立任何機器學習模型時,資料至關重要:數量充足的品質資料至關重要。在詐騙偵測範例程式碼中,我們透過使用最佳猜測的使用者設定檔,使用含有標籤的合成交易資料。在實際情況中,交易通常不會標記為詐騙個案,也可能無法偵測或甚至未知,請單獨標記以便建立正確資料集是第一個解決問題的挑戰。
- 資料數量
需要多少資料才能解決問題。依照指標的規則顯示更多的功能,需要更多的資料。在某些情況下,減少功能數有助於提升模型效能和避免過度適合度;但是,在許多情況下,需要更多的資料來改善模型效能。
如果資料可以放進記憶體中,那麼選取具有足夠記憶體的運算資源配置以便在單一節點上進行訓練,這通常比搭配分散式處理架構 (例如 Apache Spark) 一起運作 (或 Oracle Cloud Infrastructure Data Flow (其管理等同項目) 更有效率。
- 資料儲存體
原始資料通常是動態資料,不適用於分析。請務必保留原始資料,但絕大多數用於訓練或重新訓練模型,以便更好地儲存在符合成本效益的解決方案,例如 Oracle Cloud Infrastructure Object Storage。
用於分析和報告的聚總資料、預測或更多一般資料,必須上線並更好地儲存在資料庫中。像 HDFS 和 Oracle Big Data Cloud Service 等分散式儲存解決方案中提供動態分析所需的資料。
- 功能工程與資料擴增
擷取的原始資料通常不夠資訊或以格式錯誤,而且必須從其中設計人員功能。例如,我們可能會想要使用客戶的年齡,而不是用出生日期。大多數機器學習模型無法輕易理解的分類文字,可能會以
StringIndexer或更頻繁的 1-hot 編碼方式編碼。這在類別資料不大可能會有所改變時就很有用,例如編碼性別。不過,如果可隨時間變更,使用這些技術將需要在新值出現時重新訓練模型,這就相當於理想。在此情況下,可能需要尋找更好的方式來編碼此資料。在詐騙偵測程式碼範例中,我們已經從合成資料集產生經度和緯度,作為客戶地址的代理。可能無法從裝置來源取得此資訊,且需要資料擴增。呼叫外部地理編碼服務,將地址轉譯成地理座標 (在資料擷取期間或作為前處理步驟),會提供必要的資訊。
- 資料探索
資料探索通常是在符合記憶體中之代表範例資料集上執行。如果沒有簡單的方法判斷範例資料集是完整資料集真正代表,而且完整資料集太大而無法放入記憶體,則使用 Oracle Cloud Infrastructure Data Flow 來建立資料集的相關聚總統計資料,並擷取有意義的子範例資料集以代表完整資料集。範例資料集上的工程設計特徵,並非完整資料集代表,然後在完整資料集上訓練,將會導致效能不佳的模型。
- 模型訓練
調整 Spark 以實現最佳效率是一項挑戰。請參閱調整資料流程應用程式的大小,並依照建議來預估執行者數目,以及執行特定工作所需的運算資源配置。
探索更多
深入瞭解 Oracle Cloud Infrastructure Data Flow。
複查下列額外資源:
- Oracle Cloud Infrastructure Data Flow 文件。
首頁包含 API 文件、SDK、社群論壇以及 Oracle Support 的連結。
- 調整資料流程應用程式大小
- Oracle Cloud Infrastructure 的最佳實務架構