如何无需编写代码构建股价预测模型

如何无需编写代码构建股价预测模型。在本文中,您将了解如何使用 Amazon SageMaker Canvas 无需编写代码即可生成预测。
发布时间:2023 年 5 月 19 日
人工智能-机器学习
SageMaker
低代码-无代码
预测
S3
QuickSight
教程
亚马逊云科技

在过去,人工智能曾是只有数据科学家和计算机程序员才能涉足的专业领域。如今,无代码/低代码 (NCLC) 打破了这一壁垒。现在,任何人都可以使用人工智能,而无需编写任何计算机代码。NCLC 平台采用可视化的拖放式界面,省去了编程的必要。

在这篇博文中,我将逐步介绍如何无需编写代码构建股价预测。

我们将使用 Amazon SageMaker Canvas 实施无代码方案。本示例并非用于投资目的,而是为了展示生成预测的简易性。基于股价历史记录的机器学习模型不足以预测未来的股价,因为这些模型无法纳入政策变化和经济波动等关键因素,而这些因素会对股市行为产生重大影响,并带来历史数据无法捕获的不可预测性。请无根据本示例中的预测结果作出任何财务决策。

我将引导您完成以下步骤:

  • 第 1 部分 - 配置前提条件和获取数据集
  • 第 2 部分 - 使用 SageMaker Canvas 构建预测
  • 第 3 部分 - 使用模型生成预测
  • 第 4 部分 - 使用 QuickSight 创建可视化控制面板

解决方案概述

在 Amazon SageMaker Canvas 中,您可以使用可视化界面构建机器学习模型,而无需编写代码。该服务包含用于各种使用场景的预构建机器学习模型,包括情感分析、图像对象检测、文档分析等。您可以导入和联接来自不同外部资源(Amazon S3、Snowflake、Google Analytics 等)的数据。

在本例中,我们将使用时间序列预测创建一个自定义模型,并导入存储在 Amazon S3 中的数据集。

时间序列预测是指根据在一段时间内收集的一系列数据点预测未来数值或模式的过程。包括分析历史数据中的模式、趋势和季节性,来对未来数值作出预测,从而有助于制定决策、进行规划和了解未来趋势。

以下是架构图和概要步骤:

  1. 从 Nasdaq 获取历史数据集
  2. 修改数据集并上传至 Amazon S3 存储桶
  3. 使用 SageMaker Canvas 构建模型
  4. 使用 Amazon QuickSight 可视化预测的数据集

让我们开始吧!

图 1 - 用于构建和可视化机器学习预测的无代码解决方案架构。

第 1 部分 - 配置前提条件和获取数据集

要开始使用 Amazon SageMaker Canvas,首先需要创建一个域。您可以将域视为一个中央存储,在其中存储配置、笔记本和其他构件,并在用户之间共享。

要创建域,请打开亚马逊云科技管理控制台,然后搜索 SageMaker。选择要使用的区域。点击 Get Started(开始使用)。

在新窗口中,点击 Setup SageMaker Domain(设置 SageMaker 域),并提供名称,例如 Predictions。我们需要创建一个新的 IAM 角色,以允许访问您的亚马逊云科技账户。点击 Create a new role(创建新角色),然后选择 Any S3 bucket(任意 S3 存储桶),并点击 Create New Role(创建新角色)。完成后,点击页面底部的 Submit(提交)。

请注意,您可以将 IAM 策略中的权限限制为特定的存储桶或文件夹,并为不同的用户提供更精细的访问权限。

创建新域需要几分钟才能完成。在此期间,我们可以下载历史数据。

前往 Nasdaq,搜索一支您有兴趣进行预测的股票。为获得更准确的结果,请挑选一支有几年历史数据的股票,然后点击 MAX。在本例中,我们将选用 Apple Inc. Common Stock (AAPL) 并下载所有历史数据。Nasdaq 仅提供过去 10 年的历史数据。

接下来,我们需要对历史数据集进行一些小改动,为使用 Sagemaker 进行处理做好准备。

打开 CSV 文件并进行以下修改:

  • 添加值为 AAPL 的列 Ticker
  • Close/Last 重命名为 MarketClose
  • Open 重命名为 MarketOpen
  • 对于以下字段,点击“设置单元格格式”,设置为小数位数为 2 位的数值:MarketClose、MarketOpen、High、Low

保存所有更改。将文件重命名为 AAPL_<今天的日期>,例如 AAPL_20230421.csv

下一步,将数据集上传至 Amazon S3 存储桶。

Amazon S3 存储桶是亚马逊云科技提供的存储容器,允许用户在云中存储和检索数据。其功能类似于文件夹或目录,您可以在其中上传和组织文档、图像或视频等文件。它提供了一种可扩展且可靠的存储解决方案,可随时随地通过互联网访问,还可与各种应用程序和服务集成,用于进行数据存储和备份。

您可以创建一个新存储桶,也可以使用任何现有的存储桶。

要创建新的 S3 存储桶,请前往亚马逊云科技管理控制台,然后搜索 S3。点击 Create bucket(创建存储桶)。为存储桶指定唯一的名称,所有其他参数保留默认值。

存储桶创建好后,进入该存储桶,然后将数据集文件放入其中。保留所有默认选项,然后点击 Upload(上传)。

接下来,我们将该文件作为数据集添加到 SageMaker Canvas。返回 SageMaker 控制台,检查您的域是否准备就绪。在导航栏中点击 Domains(域),您将看到 Status(状态)。等待状态变为 In Service,然后点击对应的域名链接。

在 Domain details(域详细信息)页面上,点击 Launch(启动)下拉列表,然后选择 Canvas。首次启动 Canvas 创建应用程序需要几分钟的时间。首次登录 SageMaker Canvas 时,会显示一条欢迎消息,其中包含快速入门教程,您可以按照这些教程演练 SageMaker Canvas 应用程序。您可以先浏览这些教程,也可以点击 Skip for now(暂时跳过)。

在左侧菜单上,点击 Datasets(数据集),然后点击 Import(导入)。从下拉列表中,选择 Amazon S3 作为数据源。如果您有许多存储桶,可以使用搜索功能筛选您账户上的存储桶。选择您的 CSV 文件,然后点击底部的 Import data(导入数据)。此处将显示一个选项,可用于预览前 100 行并导入数据。

现在我们就可以使用数据集并构建预测了!

第 2 部分 - 使用 SageMaker Canvas 构建预测

在左侧菜单上,点击 My Models(我的模型),然后点击 New Model(新建模型)。输入名称,例如 AAPL Predictions,然后点击 Create(创建)。在下一个页面上,选择您的数据集,然后点击底部的 Select dataset(选择数据集)。

在下一个页面上,我们将配置模型以进行训练。有两种类型的训练:

  • 快速构建 – 与标准构建相比,在很短的时间内就能构建好模型。速度很快,但准确度不高。大约需要 15-20 分钟即可完成快速构建。
  • 标准构建 – 通过由 AutoML 驱动的优化流程构建最佳模型。需要更长的时间,但准确度更高。使用我们的数据集构建模型可能大约需要 4-5 小时。

如果您要从实验入手,采用以下流程会更快:快速构建、验证预测,然后再使用标准构建。SageMaker Canvas 使用量开始超出免费套餐限额时,此方式可以节省费用。

 
注意:
Amazon SageMaker Canvas 为期两个月的免费套餐包括使用 SageMaker Canvas 应用程序时产生的工作空间实例(会话小时数)使用量,每月最多 750 小时。
 

训练机器学习模型过程的第一步是选择 Target column(目标列)。我们选择 MarketClose 变量,因为可以查看历史市场收盘值,进而评估未来模型的准确性。

SageMaker Canvas 会基于导入的数据集自动检测到我们将使用时间序列模型。选中所有字段,将其包括在模型训练中,如以下截图所示。

点击 Configure time series model(配置时间序列模型),然后在弹出的窗口中完成如下配置:

  • 唯一标识数据集中项目的列:Ticker
  • 包含时间戳的列:Date
  • 指定预测的天数:30
  • 使用节假日时间表:启用并选择 United States(美国)。因为纳斯达克股票市场在美国节假日休市。

点击底部的 Save(保存)。

可以看到,各个字段的状态将更新,如下图所示。点击 Quick build(快速构建)。

此处可能会弹出一个窗口,要求验证您的数据。您可以跳过,然后点击 Start Quick build(开始快速构建)进行验证。验证数据只需几秒即可完成,构建机器学习模型大约需要 15-20 分钟。

第 3 部分 - 使用模型生成预测

模型训练完成后,将进入 Analyze(分析)选项卡。可以在其中看到平均预测准确度,以及不同列对预测结果的影响。请注意,由于机器学习过程具有随机性,实际数字可能与以下截图上显示的数字不同。(“随机性”一词是指机器学习算法中固有的不确定性和随机因素。)

Canvas 将数据集分为训练集和测试集。训练数据集是 Canvas 用于构建模型的数据。测试集用于查看模型在使用新数据时是否性能良好。以下截图显示了模型基于测试集的性能。要了解更多信息,请参阅在 Amazon SageMaker Canvas 中评估模型的性能

根据模型状态指标,我们的模型看起来相当准确。

接下来就是大展拳脚的环节了,我们点击 Predict(预测)来构建预测。您将进入 Predict(预测)选项卡。

为了创建预测,我们提供一个最大值:为期 30 天的窗口。我们的数据集只包括一个股票代码,因此选择 Single item(单个项目)预测类型,然后从 Item(项目)下拉列表中选择 AAPL。查看预测结果。

Canvas 生成三个默认分位数的概率预测:10% (p10)、50% (p50) 和 90% (p90)。“P”表示百分位数。您可以选择适合您需求的预测。对于 p10 预测,预计真实值在 10% 的情况下低于预测值。对于 p90 预测,预计真实值在 90% 的情况下低于预测值。如果无法满足客户需求将导致大量收入损失或客户体验不佳,p90 预测会更有帮助。对于我们的使用场景,p50 预测将更适合进行评估。如果我们想确定买入股票的好时机,将使用 p10。如果我们想确定卖出股票的好时机,将使用 p90。

您会发现预测在周末降到零。下面我们在 QuickSight 中构建一个控制面板,筛选掉周末,这样我们就可以更好地了解预测趋势。点击底部的 Download prediction(下载预测)。

重要说明!在 Canvas 中完成操作后,点击底部左侧菜单上的 Log out(退出登录)。退出登录将释放资源并停止会话收费。您的数据集和模型不会受到影响。不使用 SageMaker Canvas 时,别忘了退出登录!

第 4 部分 - 使用 QuickSight 创建可视化控制面板

从亚马逊云科技管理控制台打开 Amazon QuickSight。在左侧菜单上,选择 Datasets(数据集),然后点击 New dataset(新数据集)。

选择 Upload file(上传文件)。选择从 SageMaker Canvas 下载的文件。点击 Next(下一步),然后点击 Visualize(可视化)。

Amazon Quicksight 允许构建可视化控制面板,并支持各种不同的可视化类型。可以添加计算字段、应用筛选器以及更改字段和数据类型。下面我们添加一个筛选器,删除下降到零的情况。

在左侧窗格中,选择 Edit Filter(编辑筛选器),并进行如下设置:

  • Aggregation(聚合): No aggregation(无聚合)
  • Filter condition(筛选条件): Greater than(大于)
  • Minimum value(最小值): 1

点击底部的 Apply(应用)。

最后,配置控制面板。选择 *Line chart(折线图)可视化并进行如下配置:

X axis(X 轴):Date,Value(值):Forecast upper bound(预测上限)、Forecast expected(预测预期值)、Forecast lower bound(预测下限)

结果应如以下截图所示:

总结

我们完成了从数据准备、模型构建、预测分析到构建可视化控制面板这整个过程 - 所有这些都不需要编写任何代码。恭喜您!

希望您在亲自体验构建无代码机器学习模型的过程中乐趣多多、收获满满。请记住,预测股票价值非常困难:这篇博文只是展示创建时间序列预测的过程,而非实际的股票预测操作。请勿参考此类预测结果进行投资!

如果您有兴趣体验其他 SageMaker Canvas 机器学习模型和使用场景,请查看 SageMaker Canvas 沉浸日

关于作者

Viktoria 是一名资深开发者布道师,热衷于帮助开发者使用新技术进行构建和创新。她也是一名内容创作者,经常在 LinkedIn 上分享内容。Viktoria 被评为顶级云博主 (Top Cloud Influencers) 之一,同时位列 LinkedIn 全球女性内容创作者排行榜第 9 名