个人怎么做网站排名优化,杭州汇咖网站建设有限公司怎么样,wordpress 收费 主题,有没有可以做游戏的网站吗摘要 本文介绍了如何利用TensorFlow决策森林和Temporian库进行时间序列数据的预测分析。Temporian是一款专为机器学习应用设计的时间序列预处理Python库#xff0c;能够高效处理多元多索引时间序列数据。文章以虚拟线上商店的销售记录为例#xff0c;演示了数据加载、可视化、…摘要本文介绍了如何利用TensorFlow决策森林和Temporian库进行时间序列数据的预测分析。Temporian是一款专为机器学习应用设计的时间序列预处理Python库能够高效处理多元多索引时间序列数据。文章以虚拟线上商店的销售记录为例演示了数据加载、可视化、移动求和计算等预处理步骤以及如何将交易数据聚合为时间序列。最后展示了使用TensorFlow决策森林训练销售预测模型的过程包括特征工程、模型训练和特征重要性分析。结果表明28天移动求和特征对预测结果影响最大验证了时间序列特征在预测模型中的重要性。这套方法可广泛应用于零售、金融、医疗等领域的时间序列预测任务。目录摘要借助 TensorFlow 决策森林与 Temporian 实现预测分析 —— 时间序列数据预处理更轻松时间序列数据的应用场景简单示例按商品统计销售额将交易数据聚合为时间序列基于 TensorFlow 模型训练预测模型借助 TensorFlow 决策森林与 Temporian 实现预测分析 —— 时间序列数据预处理更轻松在实际的机器学习应用中时间序列数据无处不在。数据往往会随时间变化或仅在特定时间点具备可用性与价值例如市场价格、气象条件始终处于动态变化中。同时时间序列数据在决策类任务中通常具有高度的判别性比如两次连续心跳的变化速率和间隔能为人体健康状况提供重要参考网络日志的时间模式可用于检测配置故障与网络入侵。因此在机器学习应用中融入时间序列数据及相关时间信息至关重要。说明Temporian 是一款全新的开源 Python 库专为机器学习应用中的时间序列数据预处理与特征工程打造由谷歌与 Tryolabs 联合开发。更多细节可查阅姊妹篇博客。本文将演示如何基于交易数据训练预测模型具体为通过单个销售记录预测每周的总销售额。建模环节将采用 TensorFlow 决策森林该工具十分适合处理时间序列数据而为了将交易数据输入模型并计算时间专属特征我们会使用全新发布的 Temporian 库 —— 它专为处理和聚合来自多个非同步数据源的交易数据设计。时间序列是时间序列数据最常用的表示形式由等间隔采样的数值构成适用于表示聚合信号。但有时单纯的时间序列不足以展现数据的丰富性。多元时间序列可同时表示多个信号而时间序列序列或事件集则能呈现非等间隔的测量数据多索引时间序列还可刻画不同时间序列间的关联。本文中将使用多元多索引时间序列也称作事件集无需担心其实际理解难度远没有名称听起来那么大。时间序列数据的应用场景气象及其他环境数据用于气象预报、土壤剖面预测、作物产量优化、温度监测与气候变化特征分析。传感数据用于质量监控与预测性维护。健康数据用于早期治疗、个性化医疗与流行病检测。零售客户数据用于销售预测、销售优化与精准广告投放。银行客户数据用于欺诈检测与贷款风险分析。经济金融数据用于风险分析、预算分析、股票市场分析与收益预测。简单示例我们以一个虚拟线上商店的销售记录为例展开说明。每当客户完成一次购买我们会记录以下信息购买时间、客户编号、所购商品、商品价格。该数据集存储在单个 CSV 文件中每行对应一笔交易记录plaintext$ head -n 5 sales.csv 时间戳,客户,商品,价格 2010-10-05 11:09:56,c64,p35,405.35 2010-09-27 15:00:49,c87,p29,605.35 2010-09-09 12:58:33,c97,p10,108.99 2010-09-06 12:43:45,c60,p85,443.35观察数据是理解数据、发现潜在问题的关键。我们的第一步是将销售数据加载至 ** 事件集EventSet** 并进行可视化。说明Temporian 中的EventSet是用于存储时间序列数据的通用容器可表示多元时间序列、时间序列序列和带索引的数据。# 导入Temporian库 import temporian as tp # 加载CSV数据集 sales tp.from_csv(/tmp/sales.csv) # 打印事件集的详细信息 sales上述代码片段可实现数据的加载与信息打印。我们也可以将数据可视化# 绘制事件集中的“价格”特征 sales[price].plot()以上仅用几行代码就实现了时间序列数据的加载与可视化但生成的图表会显得十分杂乱因为它将所有客户的所有交易记录展示在同一视图中。对时间序列数据的一项常见操作是计算移动求和。接下来我们计算并绘制每笔交易在过去 7 天内的销售总额可通过moving_sum算子实现该计算weekly_sales sales[price].moving_sum(tp.duration.days(7)) weekly_sales.plot()小技巧若要生成交互式图表可在plot函数中添加interactiveTrue参数。按商品统计销售额前文我们计算了整个商店的整体销售移动总和但若想分别按商品或客户计算销售额的滚动总和该如何操作这一需求可通过索引实现# 按“商品”为数据建立索引 sales_per_product sales.add_index(product) # 为每个商品计算移动总和 weekly_sales_per_product sales_per_product[price].moving_sum( tp.duration.days(7) ) # 绘制结果 weekly_sales_per_product.plot()注意moving_sum等多数算子会对每个索引独立执行计算。将交易数据聚合为时间序列我们的数据集包含单个客户的交易记录为了将其用于机器学习模型通常需要将其聚合为时间序列即使数据按固定时间间隔采样。例如我们可以按周聚合销售额或按日计算每个商品过去一周的总销售额。但需要注意的是将交易数据聚合为时间序列可能会造成部分数据丢失比如单笔交易的时间戳和具体数值会被覆盖因为聚合后的时间序列仅能体现每个时间段的销售总额。接下来我们按日计算每个商品在过去一周的总销售额# 按日对数据进行采样 daily_sampling sales_per_product.tick(tp.duration.days(1)) weekly_sales_daily sales_per_product[price].moving_sum( tp.duration.days(7), samplingdaily_sampling, # 新增的关键参数 ) weekly_sales_daily.plot()注意本次生成的图表为连续折线而此前的图表为散点标记样式。这是因为 Temporian 默认对等间隔采样的数据绘制连续折线对非等间隔采样的数据则绘制散点标记。数据预处理完成后最后一步可将数据导出为 Pandas 数据帧tp.to_pandas(weekly_sales_daily)基于 TensorFlow 模型训练预测模型Temporian 的核心应用之一是为机器学习模型做数据清洗和特征工程它非常适用于预测分析、异常检测、欺诈检测等数据持续流入的任务。本示例中我们将演示如何训练一个 TensorFlow 模型通过单个商品的历史销售额预测其次日销售额。我们会向模型输入不同聚合维度的销售额数据以及日历相关信息。首先我们对数据集进行扩充并将其转换为适用于表格型机器学习模型的格式sales_per_product sales.add_index(product) # 按日生成样本 daily_sampling sales_per_product.tick(tp.duration.days(1)) # 计算不同窗口长度的移动总和 # 机器学习模型会自主筛选出关键特征 features [] for w in [3, 7, 14, 28]: features.append(sales_per_product[price] .moving_sum( tp.duration.days(w), samplingdaily_sampling) .rename(fmoving_sum_{w})) # 星期几等日历信息能很好地反映人类的行为规律 features.append(daily_sampling.calendar_day_of_week()) # 标签为向前偏移1天的日销售额提前泄露 label (sales_per_product[price] .leak(tp.duration.days(1)) .moving_sum( tp.duration.days(1), samplingdaily_sampling, ) .rename(label)) # 整合特征与标签 dataset tp.glue(*features, label) dataset随后我们将事件集格式的数据集转换为 TensorFlow 数据集格式并训练随机森林模型import tensorflow_decision_forests as tfdf def extract_label(example): example.pop(timestamp) # 不将时间戳作为特征 label example.pop(label) return example, label tf_dataset tp.to_tensorflow_dataset(dataset).map(extract_label).batch(100) model tfdf.keras.RandomForestModel(tasktfdf.keras.Task.REGRESSION,verbose2) model.fit(tf_dataset)至此我们就完成了销售预测模型的训练。接下来可查看模型的特征重要性了解哪些特征对模型的影响最大model.summary()在模型摘要中能找到基于 ** 平均最小深度倒数INV_MEAN_MIN_DEPTH** 的特征重要性排序plaintext模型类型随机森林 任务类型回归 ... 特征重要性平均最小深度倒数 1. moving_sum_28 0.342231 ################ 2. product 0.294546 ############ 3. calendar_day_of_week 0.254641 ########## 4. moving_sum_14 0.197038 ###### 5. moving_sum_7 0.124693 # 6. moving_sum_3 0.098542从结果可以看出moving_sum_28是重要性最高的特征0.342231这表明过去 28 天的销售总额对模型预测结果影响显著。若要进一步优化模型我们或许可以增加更多的时间聚合特征同时product特征的重要性也较高。此外我们还可以绘制随机森林中某一棵树的结构直观了解模型的决策逻辑tfdf.model_plotter.plot_model_in_colab(model, tree_idx0, max_depth2)保存图片编辑图片移除物体提取文字图片翻译隐藏至下次访问此域名禁用全局禁用