基于Google Cloud Platform构建生产级ML系统:使用实时交通特征训练出租车费用预测模型...

基于Google Cloud Platform构建生产级ML系统:使用实时交通特征训练出租车费用预测模型

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的机器学习训练环境中,为出租车费用预测模型添加实时交通特征traffic_last_5min,从而构建更精准的预测系统。

环境准备与数据加载

首先需要设置项目环境变量,包括项目ID、存储桶名称和区域信息。这些配置对于后续使用Google Cloud服务至关重要。

PROJECT = 'cloud-training-demos'  # 替换为您的项目ID
BUCKET = 'cloud-training-demos'   # 替换为您的存储桶名称
REGION = 'us-central1'           # 替换为您的区域

数据加载部分,我们使用tf.data模块高效读取CSV格式的训练数据。这种方法特别适合处理大规模数据集,因为它支持流式处理和并行读取。

特征工程与模型构建

本项目的特征集合包括:

  • 时间特征:星期几(dayofweek)、小时(hourofday)
  • 位置特征:上车/下车点的经纬度
  • 新增的实时交通特征:过去5分钟交通状况(traffic_last_5min)
CSV_COLUMNS = [
    'fare_amount',
    'dayofweek',
    'hourofday',
    'pickup_longitude',
    'pickup_latitude',
    'dropoff_longitude',
    'dropoff_latitude',
    'traffic_last_5min'
]

模型采用Keras Sequential API构建,包含以下组件:

  1. 输入层:将特征列转换为模型可处理的格式
  2. 隐藏层:两个全连接层(32和8个神经元),使用ReLU激活函数
  3. 输出层:单个神经元,线性激活,直接预测费用金额
def build_model(dnn_hidden_units):
    model = Sequential(DenseFeatures(feature_columns=feature_columns.values()))
    
    for num_nodes in dnn_hidden_units:
        model.add(Dense(units=num_nodes, activation="relu"))
    
    model.add(Dense(units=1, activation="linear"))    
    
    def rmse(y_true, y_pred):
        return tf.sqrt(tf.reduce_mean(tf.square(y_pred - y_true)))

    model.compile(optimizer="adam", loss="mse", metrics=[rmse, "mse"])
    
    return model

模型训练与评估

训练配置参数:

  • 批量大小:1000
  • 训练样本数:60,000
  • 评估次数:60
  • 评估样本数:10,000
BATCH_SIZE = 1000
NUM_TRAIN_EXAMPLES = 10000 * 6
NUM_EVALS = 60
NUM_EVAL_EXAMPLES = 10000

trainds = create_dataset(
    pattern='../data/taxi-traffic-train*',
    batch_size=BATCH_SIZE,
    mode=tf.estimator.ModeKeys.TRAIN)

evalds = create_dataset(
    pattern='../data/taxi-traffic-valid*',
    batch_size=BATCH_SIZE,
    mode=tf.estimator.ModeKeys.EVAL).take(NUM_EVAL_EXAMPLES//1000)

训练过程中使用TensorBoard记录指标,便于可视化分析训练过程:

LOGDIR = "./taxi_trained"
history = model.fit(x=trainds,
                    steps_per_epoch=steps_per_epoch,
                    epochs=NUM_EVALS,
                    validation_data=evalds,
                    callbacks=[TensorBoard(LOGDIR)])

模型部署

训练完成后,将模型导出为SavedModel格式,便于在生产环境中部署:

OUTPUT_DIR = "./export/savedmodel"
shutil.rmtree(OUTPUT_DIR, ignore_errors=True)
EXPORT_PATH = os.path.join(OUTPUT_DIR,
                           datetime.datetime.now().strftime("%Y%m%d%H%M%S"))
tf.saved_model.save(model, EXPORT_PATH)

使用Google Cloud AI Platform部署模型:

gcloud ai-platform versions create --model=$MODEL_NAME $VERSION_NAME --async \
       --framework=tensorflow --python-version=3.5 --runtime-version=1.14 \
       --origin=${EXPORT_PATH} --staging-bucket=gs://$BUCKET --region=$REGION

结论

通过添加实时交通特征traffic_last_5min,我们构建了更精准的出租车费用预测模型。这种方法展示了如何将实时数据流整合到机器学习系统中,为生产环境中的预测服务提供更动态、更准确的决策支持。Google Cloud Platform提供的工具链使得从数据准备、模型训练到生产部署的整个流程变得高效且可扩展。

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
发出的红包

打赏作者

蒋荔卿Lorelei

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

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

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

打赏作者

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

抵扣说明:

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

余额充值