共计 4335 个字符,预计需要花费 11 分钟才能阅读完成。
背景介绍
在证劵交易所畛域,已经产生用户证券账号被盗事件,导致客户资产损失,例如:黑客取得了用户 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.2 数据集筹备
在金融欺诈的场景中,大多数状况下理论产生的欺诈样本是大量的,因而要失去好的模型训练成果,咱们须要剖析用户行为的特色,在此基础上进行数据的模仿。
1.2.1 获取 K 线
执行 K 线生成脚本 generateKline.py,生成某日的 K 线数据,本案例从 alphavantage 获取美股最新的 Coinbase(股票代码 COIN) 80 条 5 分钟 k 线。收费 APIkey 请自行从 alphavantage 官网申请。
1.2.2 生成黑客用户交易记录
执行脚本 genRandomHackerTrades.py,生成模仿黑客交易记录表格。模仿逻辑为:
– 找到 Top 10 的 COIN 的 5 分钟 k 线数据中超过 5% 波幅的 k 线数据。
– 随机抉择 3 - 5 个 5 分钟 k 线,生成高价买入的成交价格。生成高价卖出的成交价格。
– 生成 csv 文件,别离寄存到 ./buy/ 和./sell/ 目录。生成文件样例
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.
生成效果图如下:
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. 业务流程设计参考:
在证券交易所,能够抉择适合的触发机会来触发用户是否有欺诈行为的推理过程。例如在每天用户出金时实时推理或者每天晚上批量推理的形式。咱们依照实时推理的形式实现如下的业务流程。
1、从业务测发送触发音讯到 Amazon SQS,音讯体接口中具备根本的用户 id 信息。
2、Lambda 接管到 SQS 音讯,从交易数据库获取用户的 24 小时交易信息,获取波及的交易对的 5 分钟 k 线数据,生成此用户的交易行为图像,图像的格局也采纳雷同的解决:去掉 k 线显示;去掉 x,y 轴刻度显示;图像尺寸放大到 5 英寸 *2.1 英寸,dpi=100。
3、生成的用户交易图像 调用实时推理接口,咱们就能够取得推理后果,此用户行为是否是欺诈行为,如果概率超过 90%,咱们写入风控表。
4. Amazon Lambda 如何反对 python 图形库
在此业务流程的实现中,lambda 函数援用了 matplotlib,numpy 等库,具备生成图片的能力,要实现此能力须要采纳如下几个步骤。
1、了解 Lambda 的运行时环境,抉择不同的 CPU 架构,在装置 Python 库是须要下载不同的 WHL 包
2、创立 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 包
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
本篇作者
Richard Lee
Amazon 解决方案架构师,负责基于 Amazon 云计算计划的架构征询和落地施行;有电信,金融行业教训。退出 Amazon 前曾在华为软件任职项目经理,技术架构师,在 cryptocurrency 畛域守业公司负责技术管理者。喜爱钻研跨畛域技术创新。