来源:DeepHub IMBA本文约1300字,建议阅读5分钟 本文带你利用一维随机游走为时间序列算法生成数据。

随机游走是随机过程。它们由数学空间中的许多步骤组成。最常见的随机游走从值 0 开始,然后每一步都以相等的概率加或减 1。

随机游走可用于为不同的机器学习应用程序生成合成数据。例如当没有可用信息或没有实时数据可用时,具有随机游走的合成数据可以近似实际数据。

这篇文章利用一维随机游走为时间序列算法生成数据。

生成数据

在创建和测试时间序列模型时,以随机数据为基准测试模型是有益的。随机游走可以模拟库存、产能利用率甚至粒子运动的趋势。

通过每一步概率的调整,行为被添加到随机游走中。此外,这些游走被修改为具有不同的步长,以产生更大或更小的波动。

在 Pandas 中使用“date_range”函数快速生成时间序列数据。下面是一个示例,它为 2019 年每天生成一个具有一个随机值的df。

 import pandas as pd import numpy as np import matplotlib.pyplot as plt import random DATE_START = '2019-01-01' DATE_END = '2019-12-31' dates = pd.date_range(DATE_START, DATE_END) df = pd.DataFrame({    'date': dates,    'value': np.random.normal(0,1,dates.size) }) df.set_index('date', inplace=True) plt.plot(df['value']) plt.ylabel('Value') plt.xlabel('Date') plt.title('Random Values') plt.show()

随机游走

虽然此处的数据可用于时间序列模型,但看不到任何模式。由于实际数据包含与先前点的紧急模式关系,因此需要改进合成数据。随机游走是生成一些逼真行为的可行解决方案。在 Pandas 中创建随机游走需要遍历df的每一行。步行中的每一步都取决于上一步。

下面是生成随机游走的代码。第一个“previous_value”作为步行的起点。接下来,步长设置为 1。最后,“阈值”将正向或负向行走的概率设置为 50%。

此外,随机游走受到最小值和最大值的限制。对于许多数据集,例如股票价值,这些值都是严格的正数。

随机游走的图是用‘matplotlib’生成的。

 def random_walk(    df, start_value=0, threshold=0.5,    step_size=1, min_value=-np.inf, max_value=np.inf ):    previous_value = start_value    for index, row in df.iterrows():        if previous_value < min_value:            previous_value = min_value        if previous_value > max_value:            previous_value = max_value        probability = random.random()        if probability >= threshold:            df.loc[index, 'value'] = previous_value + step_size        else:            df.loc[index, 'value'] = previous_value - step_size        previous_value = df.loc[index, 'value']    return df


修改随机游走

这些随机游走被调整以显示所需的行为。例如,添加对随机游走的最小值和最大值的限制来模拟容量利用率。

随机游走的行为通过改变其他初始条件进一步改变,例如,强加整体积极趋势。正趋势是通过调整概率阈值来实现的。通过增加正向步骤的概率,随机游走会产生正向趋势。对于这个代码,它是通过降低阈值来实现的。

以这种方式设置随机游走可以更接近股票趋势。如果总体趋势是积极的还是消极的,则可以将详细信息纳入合成数据中。

有几个选项可以进一步调整随机游走。例如,在每一步都包含高斯噪声或将步长增加到更大的值会导致不同的步行跨越更大的空间。但是,还有一些其他调整会导致非常不同的行为。

  • 随着时间的推移增加波动性是通过在每个步骤后增加少量步长来实现的。因此,随着时间的推移,步长会慢慢变大。

  • 平滑行走也可以通过修改步长来实现,但也可以通过在正步之后增加大小并在负步之后将大小减小一个小值来实现。

总结

随机游走是一个有趣的随机过程。在很少的起始条件下,生成了许多不同的模式。因此,随机游走可以用作合成时间序列数据并针对您的特定问题实例进行调整。

编辑:黄继彦

用随机游动生成时间序列的合成数据相关推荐

  1. 【干货书】深度学习合成数据

    来源:专知 本文为书籍,建议阅读8分钟 这是关于深度学习的合成数据的第一本书. 这是关于深度学习的合成数据的第一本书,其覆盖的广度可能使这本书成为未来几年合成数据的默认参考.这本书也可以作为介绍机器学 ...

  2. 什么是合成数据 (Synthetic Data)?

    企业在部署人工智能时,往往会遇到数据获取困难.成本高昂,或采集的数据根本不可用等挑战.研究人员在2018年曾发现,顶尖的面部识别软件在识别肤色较深的人时,错误率高达34%.原因就在于用于训练这些模型的 ...

  3. GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分——利用GAN生成时间序列数据)

    GAN(生成对抗网络)在合成时间序列数据中的应用(第二部分–TimeGAN 与合成金融输入) (本文基本是对Jasen 的<Machine Learning for Algorithmic Tr ...

  4. labelme数据增强_NO. 21 标注工具 amp; 合成数据生成工具

    [VGG Image Annotator ( VIA )] 简介:快速.轻便.设计精良,但功能有限 网址:http://www.robots.ox.ac.uk/~vgg/software/via/ [ ...

  5. Python学习笔记:使用PIL批量合成jpg+png图片,用于水印、合并图片,生成YOLO数据集+标注数据等等

    [Python学习笔记] 使用PIL,批量合成jpg+png图片,用于水印.合并图片,生成YOLO数据集+标注数据等等 起因:在了解很多关于YOLOv5的相关内容,于是尝试着去训练自己的游戏目标检测模 ...

  6. 无需用户输入,Adobe提出自动生成高质量合成图像新方法

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 没有用户输入,也能生成高质量的合成图像吗? 编辑:迈威AI研习社 ...

  7. 独家|一文解读合成数据在机器学习技术下的表现

    作者:Eric Le Fort 翻译:蒋雨畅 校对:卢苗苗 本文约3200字,建议阅读12分钟. 本文将通过介绍两个分布模型,并运用它们到合成数据过程中,来分析合成数据在不同机器学习技术下的表现. 想 ...

  8. 无需用户输入!Adobe提出自动生成高质量合成图像新方法

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文转载自:机器之心  |  作者:He Zhang等 编辑:小舟.杜伟 没有用户输入,也能生 ...

  9. 科技最前沿!Adobe提出自动生成高质量合成图像新方法

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习> ...

最新文章

  1. POJ-1837 Balance
  2. mysql语句_Mysql语句
  3. 诡异的select *语句报错事件
  4. Java 8 CompletableFuture 教程 1
  5. 学Android的学习规划
  6. P2619 [国家集训队2]Tree I
  7. SSD: ReLU6
  8. 新年计划书...2012-01-01
  9. Centos6.4安装jdk
  10. python是什么软件-零基础入门Python怎么学习?老男孩python用什么软件
  11. html2json文档,插件 jQuery.json2html 中文 API 文档
  12. dm7达梦7Linux安装包,【达梦】DM7安装部署 2 安装达梦7数据库软件
  13. 数据库连接超时和go away、如何检测数据库的最大连接数
  14. ventoy集成微PE+优启通;vmware虚拟机如何进入PE系统,ventoy启动盘制作。
  15. HDU 5234 DP背包
  16. 百度坐标转WGS84
  17. 3 在浏览器中查看请求报文和响应报文
  18. Metasploit技术(四)——进程迁移
  19. 什么是工程建设的BLT模式
  20. html单元格分割,html – 拆分td在两个

热门文章

  1. python3的各个版本有什么区别_python不同版本的_new_不同点总结
  2. LeetCode 799 JavaScript
  3. VBA编程常用语句(转载)
  4. Python SQLAlchemy
  5. Spring核心AOP(面向切面编程)
  6. Day13 目录结构自定义Yum仓库源码包编译安装(Service02)
  7. 跟我做CVS版本管理试验
  8. 使用Mahout搭建推荐系统之入门篇3-Mahout源码初探
  9. postmessage and sendmessage
  10. Json的list、map、对象对应格式