基于Google Cloud Platform的时间序列预测实战:BQML与AutoML应用指南
概述
时间序列预测是机器学习领域的重要应用场景之一,在金融、零售、物联网等行业有着广泛的应用。本文将基于Google Cloud Platform的training-data-analyst项目,详细介绍如何使用BigQuery ML (BQML)和AutoML Tables构建时间序列预测模型,实现股票市场趋势预测。
环境准备
在开始建模前,我们需要完成以下准备工作:
- 设置项目参数:指定GCP项目名称和区域
PROJECT = "your-gcp-project-here" # 替换为您的GCP项目名称
REGION = "us-central1" # 替换为您的存储桶区域
- 创建数据集和表:使用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文件)和单实例预测
模型选择建议
-
BQML优势:
- 快速原型开发
- 直接集成在BigQuery中
- 适合结构化数据和简单模型
-
AutoML优势:
- 自动特征工程
- 支持更复杂的模型架构
- 提供更详细的模型解释
总结
本文详细介绍了在GCP平台上使用BQML和AutoML Tables构建时间序列预测模型的完整流程。通过实际股票市场数据,我们展示了从数据准备、模型训练到评估部署的全过程。读者可以根据具体业务需求选择合适的建模方法,实现高效的时间序列预测。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考