基于Google Cloud Platform的时间序列预测实战:BQML与AutoML应用指南

基于Google Cloud Platform的时间序列预测实战:BQML与AutoML应用指南

training-data-analyst Labs and demos for courses for GCP Training (http://cloud.google.com/training). training-data-analyst 项目地址: https://gitcode.com/gh_mirrors/tr/training-data-analyst

概述

时间序列预测是机器学习领域的重要应用场景之一,在金融、零售、物联网等行业有着广泛的应用。本文将基于Google Cloud Platform的training-data-analyst项目,详细介绍如何使用BigQuery ML (BQML)和AutoML Tables构建时间序列预测模型,实现股票市场趋势预测。

环境准备

在开始建模前,我们需要完成以下准备工作:

  1. 设置项目参数:指定GCP项目名称和区域
PROJECT = "your-gcp-project-here"  # 替换为您的GCP项目名称
REGION = "us-central1"  # 替换为您的存储桶区域
  1. 创建数据集和表:使用BigQuery Python客户端创建数据集和特征表
from google.cloud import bigquery

bq = bigquery.Client(project=PROJECT)

def create_dataset():
    dataset = bigquery.Dataset(bq.dataset("stock_market"))
    try:
        bq.create_dataset(dataset)
        print("数据集创建成功")
    except:
        print("数据集已存在")

def create_features_table():
    try:
        bq.query('''
        CREATE TABLE stock_market.eps_percent_change_sp500
        AS
        SELECT *
        FROM `stock_market.eps_percent_change_sp500`
        ''').to_dataframe()
        print('表创建成功')
    except Exception as e:
        if 'Already Exists' in str(e):
            print('表已存在')
        else:
            raise Exception('表创建失败')

create_dataset()
create_features_table()

数据探索

在建模前,我们需要先了解数据的基本情况:

SELECT *
FROM stock_market.eps_percent_change_sp500
LIMIT 10

数据包含以下关键特征:

  • 股票代码(symbol)和日期(Date)
  • 开盘价(Open)
  • 过去5/20/260天的最低价、最高价、平均价和标准差
  • 目标变量:股票方向(direction)和标准化变化(normalized_change)

使用BQML构建分类模型

模型创建

我们将首先构建一个分类模型来预测股票走势方向(上涨/下跌/持平):

CREATE OR REPLACE MODEL stock_market.direction_model
OPTIONS(model_type='logistic_reg') AS
SELECT
  symbol, Date, Open,
  close_MIN_prior_5_days, close_MIN_prior_20_days, close_MIN_prior_260_days,
  close_MAX_prior_5_days, close_MAX_prior_20_days, close_MAX_prior_260_days,
  close_AVG_prior_5_days, close_AVG_prior_20_days, close_AVG_prior_260_days,
  close_STDDEV_prior_5_days, close_STDDEV_prior_20_days, close_STDDEV_prior_260_days,
  direction
FROM `stock_market.eps_percent_change_sp500`
WHERE ABS(MOD(FARM_FINGERPRINT(symbol), 15)) = 1

关键点说明:

  • 使用CREATE OR REPLACE MODEL语句创建模型
  • OPTIONS指定模型类型为逻辑回归(logistic_reg)
  • 使用FARM_FINGERPRINT函数实现数据随机抽样

模型评估

训练完成后,我们可以评估模型性能:

SELECT *
FROM ML.EVALUATE(MODEL `stock_market.direction_model`)

评估指标包括:

  • 准确率(accuracy)
  • 精确率(precision)
  • 召回率(recall)
  • F1分数
  • AUC值

训练过程分析

查看训练过程的详细信息:

SELECT *
FROM ML.TRAINING_INFO(MODEL `stock_market.direction_model`)
ORDER BY iteration

输出包含每次迭代的损失值、学习率等训练指标。

使用BQML构建回归模型

除了分类问题,我们还可以构建回归模型预测股票价格变化幅度:

CREATE OR REPLACE MODEL stock_market.price_model
OPTIONS(model_type='linear_reg') AS
SELECT
  symbol, Date, Open,
  close_MIN_prior_5_days, close_MIN_prior_20_days, close_MIN_prior_260_days,
  close_MAX_prior_5_days, close_MAX_prior_20_days, close_MAX_prior_260_days,
  close_AVG_prior_5_days, close_AVG_prior_20_days, close_AVG_prior_260_days,
  close_STDDEV_prior_5_days, close_STDDEV_prior_20_days, close_STDDEV_prior_260_days,
  normalized_change
FROM `stock_market.eps_percent_change_sp500`
WHERE ABS(MOD(FARM_FINGERPRINT(symbol), 15)) = 1

回归模型的评估指标包括:

  • 均方误差(MSE)
  • 平均绝对误差(MAE)
  • R平方值(R2_score)

使用AutoML Tables构建模型

对于更复杂的预测需求,我们可以使用AutoML Tables:

1. 创建AutoML数据集

  • 在GCP控制台导航至AutoML Tables
  • 创建新数据集并命名为"stock_market"
  • 从BigQuery表导入数据(选择stock_market.eps_percent_change_sp500)

2. 训练模型

  • 选择"Train"标签页
  • 设置目标列为"direction"(分类)或"normalized_change"(回归)
  • 选择与BQML相同的特征集
  • 开始训练(可能需要45-50分钟)

3. 模型评估

训练完成后可以查看:

  • 分类指标(准确率、精确率、召回率等)
  • 特征重要性排序
  • 混淆矩阵

4. 模型部署

  • 部署模型以进行在线预测
  • 支持批量预测(BigQuery表或CSV文件)和单实例预测

模型选择建议

  1. BQML优势

    • 快速原型开发
    • 直接集成在BigQuery中
    • 适合结构化数据和简单模型
  2. AutoML优势

    • 自动特征工程
    • 支持更复杂的模型架构
    • 提供更详细的模型解释

总结

本文详细介绍了在GCP平台上使用BQML和AutoML Tables构建时间序列预测模型的完整流程。通过实际股票市场数据,我们展示了从数据准备、模型训练到评估部署的全过程。读者可以根据具体业务需求选择合适的建模方法,实现高效的时间序列预测。

training-data-analyst Labs and demos for courses for GCP Training (http://cloud.google.com/training). training-data-analyst 项目地址: https://gitcode.com/gh_mirrors/tr/training-data-analyst

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卢迁铎Renee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值