金融交易行為監測方法——利用 CNN 模型實現行為識別

語言: CN / TW / HK

背景介紹

在證劵交易所領域,曾經發生用户證券賬號被盜事件,導致客户資產損失,例如:黑客獲得了用户A的證券賬號密碼,利用多次的低買高賣將資產轉移。本文中針對此類對敲欺詐的場景,採用將用户交易數據轉換為圖片,進而利用 Amazon SageMaker 圖像分類算法 ResNet 進行模型訓練和推理,在此類欺詐行為識別上得到了很好的效果。這種將交易數據轉換為圖像分類的方式簡化了通常的特徵提取的複雜度,可以作為防欺詐或者交易行為特徵識別的方式的新的嘗試。

亞馬遜雲科技開發者社區為開發者們提供全球的開發技術資源。這裏有技術文檔、開發案例、技術專欄、培訓視頻、活動與競賽等。幫助中國開發者對接世界最前沿技術,觀點,和項目,並將中國優秀開發者或技術推薦給全球雲社區。如果你還沒有關注/收藏,看到這裏請一定不要匆匆劃過,點這裏讓它成為你的技術寶庫!

1. 數據準備

整個數據準備過程包括用户特徵分析,樣本數據構造,樣本數據格式轉換幾個步驟。

項目包下載 Link

本機安裝 python3.9 版本環境。並且提前準備如下幾個依賴包的安裝

python -m pip install requests python -m pip install matplotlib python -m pip install numpy

1.1 數據行為分析

對敲欺詐的交易行為特徵比較突出,會出現集中的低買高賣的特點,此類特點也會與老鼠倉行為類似。根據用户的交易行為與股票當日的5分鐘 k 線圖合併表示如下圖:

1.png

紅色點表示買入,綠色點表示賣出。用户的行為呈現為多次的連續低賣高賣。

1.2 數據集準備

在金融欺詐的場景中,大多數情況下實際發生的欺詐樣本是少量的,因此要得到好的模型訓練效果,我們需要分析用户行為的特徵,在此基礎上進行數據的模擬。

1.2.1 獲取 K 線

執行K線生成腳本 generateKline.py ,生成某日的K線數據,本案例從 alphavantage 獲取美股最新的 Coinbase(股票代碼COIN) 80條5分鐘k線。免費 APIkey 請自行從 alphavantage 官網申請。

2.png

1.2.2 生成黑客用户交易記錄

執行腳本 genRandomHackerTrades.py ,生成模擬黑客交易記錄表格。模擬邏輯為:

– 找到 Top 10 的 COIN 的5分鐘 k 線數據中超過5%波幅的k線數據。

– 隨機選擇3-5個5分鐘 k 線,生成低價買入的成交價格。生成高價賣出的成交價格。

– 生成 csv 文件,分別存放到 ./buy/ 和./sell/目錄。生成文件樣例

3.png

1.2.3 生成用户交易記錄

執行腳本 genNormal.py,生成模擬正常用户交易記錄數據。在實際的證券交易所風控可獲取實際用户數據生成記錄。本案例中的模擬邏輯是:隨機獲取 COIN 的5分鐘k線,生成1-2個買賣記錄。

執行腳本 genRandomHackerTrades.py 生成模擬的黑客交易記錄數據。模擬邏輯是:獲取 COIN 日k線中的 top 10 價格振幅最大的k線單元,然後隨機從 top10 中選擇3個單元,模擬生成低買高賣的點位。

1.2.4 將交易記錄轉換為圖像

採用 matplotlib 庫,繪製k線圖像,把用户交易為圓點,綠色表示賣,紅色表示買。黑客行為生成圖像腳本為 generateHackerImg.py,獲取黑客交易記錄文件,繪製 K 線,如圖-1所示,黑客行為的特點是出現短時間內集中的低買高賣行為,經過多輪測試,我們需要對圖像進行處理,去掉與用户行為不想關的信息。

– 去掉 k 線展示

– 去掉 x,y 軸刻度顯示

– 將圖像尺寸縮小到2.5英寸*1.5英寸,dpi 調整為100.

生成效果圖如下:

4.png

2. 模型訓練與發佈

經過以上的步驟,在 traindata 目錄下,我們獲得了 hacker 和 normal 兩個類別的圖像訓練數據。下面就可以採用 Amazon Sagemaker 的內置算法 resNet 進行圖像分類模型訓練了。

2.1 數據集準備

使用 RecordIO tool(im2rec)創建兩個 .lst 文件。一個文件是用於訓練的數據集(75%)。另一個文件是用於驗證的數據集(25%) 將.lst 文件和 jpg 圖片文件上傳到一個S3 bucket。

2.2 數據訓練與模型發佈

1.在 sagemaker 中創建一台 Jupyter Notebook 實例,創建過程參考官方文檔:https://docs.aws.amazon.com/sagemaker/latest/dg/howitworks-create-ws.html

2.下載實驗所需訓練步驟腳本:/jupter/image-classify-jpg.ipynb,上傳至 Notebook 環境。

3.按照步驟執行 notebook,完成模型訓練,模型發佈。關於圖像分類訓練的詳細説明可參考 link

腳本運行完成後,會輸出模型的訓練結果,獲取更多的交易對來生成訓練樣本會得到更好的效果,在 2000 hacker 樣本和 2000 normal樣本的數據規模下,得到的模型效果:

train:accuracy = 0.9850000143051147 validation:accuracy = 0.9962120056152344 train:accuracy:epoch = 0.9850000143051147 validation:accuracy:epoch = 0.9962120056152344

模型部署為實時訪問端點:antiFraud-imageclassification-ep–2022-05-14-08-14-04。 可在後面的反欺詐業務流程中通過 Amazon SDK 實時調用,獲得推理結果。

3. 業務流程設計參考:

在證券交易所,可以選擇合適的觸發時機來觸發用户是否有欺詐行為的推理過程。例如在每天用户出金時實時推理或者每天晚上批量推理的方式。 我們按照實時推理的方式實現如下的業務流程。

5.png

  1. 從業務測發送觸發消息到 Amazon SQS,消息體接口中具備基本的用户 id 信息。
  2. Lambda 接收到 SQS 消息,從交易數據庫獲取用户的24小時交易信息,獲取涉及的交易對的5分鐘 k 線數據,生成此用户的交易行為圖像,圖像的格式也採用相同的處理:去掉 k 線顯示;去掉 x,y 軸刻度顯示;圖像尺寸縮小到5英寸*2.1英寸,dpi=100。
  3. 生成的用户交易圖像 調用實時推理接口,我們就可以獲得推理結果,此用户行為是否是欺詐行為,如果概率超過90%,我們寫入風控表。

6.png

4. Amazon Lambda 如何支持 python 圖形庫

在此業務流程的實現中,lambda 函數引用了 matplotlib,numpy 等庫,具備生成圖片的能力,要實現此能力需要採用如下幾個步驟。

  1. 理解 Lambda 的運行時環境,選擇不同的 CPU 架構,在安裝 Python 庫是需要下載不同的 WHL 包

7.png

  1. 創建 Lambda Layer,用於存放幾個公共類庫,創建 Layer 的指導參見 Link

因為 Python 的類庫是需要區分安裝的平台。windows,mac,linux 會有不同的安裝包,同時 CPU 的架構不同也有區分。ARM 架構與X86_64架構。從 https://pypi.org 搜索需要下載的包,跳轉到下載頁面。我們需要下載的是 https://pypi.org/project/matplotlib/#files, 因為我創建的 lambda 是使用了 python3.9 運行環境,在 X86_64 架構下。因此我會選擇下圖中紅線的 WHL 包

8.png

```` mkdir layer cd layer mkdir pylibs cd pylibs wget https://files.pythonhosted.org/packages/e1/81/0a73fe71098683a1f73243f18f419464ec109acae16811bf29c5d0dc173e/matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl wget https://files.pythonhosted.org/packages/8d/d6/cc2330e512936a904a4db1629b71d697fb309115f6d2ede94d183cdfe185/numpy-1.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

unzip '.whl' pip3 install -t . pyparsing==2.4.7 pip3 install -t . cycler==0.10.0 pip3 install -t . pytz pip3 install -t . packaging rm .whl rm -rf pycache cd .. zip -r lambdalayer.zip pylibs ````

以上完成 layer zip 包的製作,參照創建 Lambda Layer 的步驟,將zip包部署為 Lambda Layer 即可。

此解決方案中的 Lambda 函數請參見

https://github.com/aws-samples/amazon-sagemaker-antifraud-in-capitalmarket-imageclassify/blob/main/lambda/imageClassify.py

5. 總結

本文介紹了在證券領域,採用將用户時間序列類行為轉換為圖像,進而利用成熟的AI 圖像分類算法來實現用户異常行為識別的方法。並且在連續對敲獲利的場景中獲得較好的效果。在解決方案中採用了 AMAZON SageMaker ,AMAZON Lambda,AMAZON SQS 快速完成了模型的訓練,部署及業務流程的構建。期望能夠給大家帶來啟發。

6. 參考資料

[1][https://mxnet.apache.org/versions/1.6/api/r/docs/api/im2rec.html]
[2]https://matplotlib.org/stable/plot_types/index.html

[3]https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/imageclassification_caltech/Image-classification-lst-format-highlevel.html

本篇作者

9.png

Richard Lee

Amazon 解決方案架構師,負責基於 Amazon 雲計算方案的架構諮詢和落地實施;有電信,金融行業經驗。加入 Amazon 前曾在華為軟件任職項目經理,技術架構師,在 cryptocurrency 領域創業公司擔任技術管理者。喜歡鑽研跨領域技術創新。

文章來源:https://dev.amazoncloud.cn/column/article/6309d40de0f88a79bcfae802