Sequential Synthetic Data

  • 一. 前言
  • 二. 程序实现

一. 前言

在MoSE论文中,作者人工生成了具有时序关系的多任务学习数据集,用于比较不同模型在时序多任务学习中的性能,如下所示:


作者提到这组数据集的生成参考了MMoE论文中的人工数据集:MMoE论文中Synthetic Data生成代码(控制多任务学习中任务之间的相关性)

文中作者给出了数据集生成的数学表达和符号解释:
但是作者并没有提及函数内的参数是如何得到的,同时也没有控制任务之间的相关性,于是我参考这篇文章和MMoE中数据集的生成方法,得到可以控制任务相关性的时间序列多任务学习数据集

二. 程序实现

1.生成正交单位向量

d = 10 #维度'''生成两个单位向量'''
np.random.seed(10)
u1 = np.random.randn(d)
u1 = u1 / np.linalg.norm(u1)np.random.seed(22)
u2 = np.random.randn(d)
u2 = u2 / np.linalg.norm(u2)u = np.vstack((u1,u2)).T #(d,2)'''向量正交化'''
o = orth(u)
u1 = o[:,0]
u2 = o[:,1]
print(np.linalg.norm(u1))
print(np.linalg.norm(u2))
print(np.matmul(u1.T,u2))
'u1,u2为一组正交单位向量'

2.生成权重系数矩阵

c = 1 #常数
p = 0.2 #相关系数 [-1,1]w1 = c*u1
w2 = c*(p*u1 + np.sqrt(1-p*p)*u2)

3.生成自变量x

length = 30000 #数据长度
t = np.array([i for i in range(1,length+1,1)]).reshape(-1,1)o = 3 #合成自变量x的正弦函数数量
x = 0
for i in range(o):np.random.seed(30+i)w = np.random.randn(d)x = x+np.sin(t*w)+np.random.normal(0,0.01,1)
print(x.shape) #(length,d)

4.随机生成生成m组正弦函数的参数

m = 10 #组合正弦的数量np.random.seed(42)
ab = np.random.randn(2,m)
a = ab[0,:] #(m,)
b = ab[1,:] #(m,)

5. 生成因变量y1和y2

y1 = np.matmul(x,w1.T)
y2 = np.matmul(x,w2.T)
for j in range(m):y1 = y1+np.sin(a[j]*np.matmul(x,w1.T)+b[j])+np.random.normal(0,0.01,1)y2 = y2+np.sin(a[j]*np.matmul(x,w2.T)+b[j])+np.random.normal(0,0.01,1)
y = np.hstack((y1.reshape(-1,1),y2.reshape(-1,1))) #(length,2)

6.保存数据集

'''保存数据集'''
X_column_names = ["X"+str(i) for i in range(1,d+1,1)]
X_f = pd.DataFrame(x,columns=X_column_names)
Y_column_names = ["Y"+str(i) for i in range(1,2+1,1)]
Y_f = pd.DataFrame(y,columns=Y_column_names)
data = pd.concat([X_f,Y_f], axis=1)
data.to_csv('{}_{}_TimeSeriesSyntheticData({}_{}).csv'.format(length,d,m,p),index=False)
data.head()

7. 查看y1和y2的曲线及其相关系数

outputlen = 100
plt.plot(t[:outputlen],y1[:outputlen],y2[:outputlen])

'计算w1和w2的余弦相似度'
cos_sim = w1.dot(w2) / (np.linalg.norm(w1)*np.linalg.norm(w2))
print("cos(w1,w2)=",cos_sim)'计算label之间的皮尔逊相关系数'
corr = np.corrcoef(y[:,0],y[:,1])
print("person(y1,y2)=",corr[0,1])输出:
cos(w1,w2)= 0.2000000000000001
person(y1,y2)= 0.13585686308456674

至此可以控制任务相关性的时间序列多任务学习数据集就构建完成了,设置不同的参数p、o、m或随机种子即可生成截然不同的数据集。

MoSE论文中Sequential Synthetic Dataset生成代码(时间序列多任务学习数据集)相关推荐

  1. MMoE论文中Synthetic Data生成代码(控制多任务学习中任务之间的相关性)

    Synthetic Data 一. 前言 二. 程序实现 2.1 生成一条数据 2.2 生成一组相关系数为p的数据集 2.3 权重系数的余弦相似度与标签相关系数之间的关系 一. 前言 在MMoE论文中 ...

  2. 【阅读笔记】多任务学习之PLE(含代码实现)

    本文作为自己阅读论文后的总结和思考,不涉及论文翻译和模型解读,适合大家阅读完论文后交流想法. PLE 一. 全文总结 二. 研究方法 三. 结论 四. 创新点 五. 思考 六. 参考文献 七. Pyt ...

  3. 深度学习 -- TensorFlow(项目)验证码生成与识别(多任务学习)

    目录 基础理论 一.生成验证码数据集 1.生成验证码训练集 1-0.判断文件夹是否为空 1-1.创建字符集(数字.大小写英文字母) 1-2.随机生成验证码(1000个,长度为4) 2.生成验证码测试集 ...

  4. 这个插件竟打通了Python和Excel,还能自动生成代码!

    作者 | 云朵君 来源丨数据STUDIO 加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码? 没错,只需要加载这个名为Mito的小工具包,用Python做数据分析,变得和用E ...

  5. 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]

    在<上篇>中我们通过T4模板为我们指定的数据表成功生成了我们需要的用于添加.修改和删除操作的存储过程.但是这是一种基于单个文件的解决方案,即我们必须为每一个生成的存储过程建立一个模板.如果 ...

  6. sql自动生成工具_可自动生成代码,5款基于AI的开发工具

    如今,对机器学习潜力感兴趣的程序员都在讨论,如何使用人工智能和基于人工智能的软件开发工具构建应用程序.例如PyTorch和TensorFlow之类的解决方案. 除此之外,机器学习技术正以另一种有趣的方 ...

  7. 【Python】这个插件竟打通了Python和Excel,还能自动生成代码!

    加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码? 没错,只需要加载这个名为Mito的小工具包,用Python做数据分析,变得和用Excel一样简单: 介绍 以 Excel ...

  8. 在 C# 中生成代码的四种方式——包括.NET 5中的Source Generators

    Microsoft在最新的C#版本中引入了Source Generator.这是一项新功能,可以让我们在代码编译时生成源代码.在本文中,我将介绍四种C#中的代码生成方式,以简化我们的日常工作.然后,您 ...

  9. 第七十七期:可自动生成代码,5款基于AI的开发工具

    如今,对机器学习潜力感兴趣的程序员都在讨论,如何使用人工智能和基于人工智能的软件开发工具构建应用程序.例如PyTorch和TensorFlow之类的解决方案. 作者:Sandra Parker 如今, ...

  10. 在Visual Studio中使用T4 Templates 生成代码

    在没有看过Hilton Giesenow(How Do I: Create and Use T4 Templates.)的视频之前,我还没意识到在Visual Studio 2008 中使用T4是何等 ...

最新文章

  1. hexo+markdown添加本地图片无法显示
  2. 【bzoj2844 albus就是要第一个出场】
  3. cura-engine学习(1)
  4. 基础算法 —— 高精度计算 —— 高精度乘法
  5. 令人深思的联系-this关键字(隐藏属性static)
  6. ios程序后台运行设置(不是太懂)
  7. fopen()和fgetl()打开问件,读取内容
  8. NanoHTTPD介绍
  9. OpenCV的Mat格式和IplImage格式的使用
  10. html引用百度中图片不显示,百度图片不显示怎么办 百度图片不显示解决方法
  11. mysql join 从库_Mysql实现跨库join查询
  12. HDU - 1546 Idiomatic Phrases Game
  13. 骑行318、 2016.7.21
  14. winedit使用教程_BCDEdit命令怎么使用?Win10下BCDEdit使用教程(包含常用参数命令)...
  15. win11 任务栏角溢出里的程序图标记录如何删除(WIN 缓存图标清理)
  16. 为快乐工作而生的协同办公管理平台——IBOS!
  17. 个人项目(二)-- 自助点餐系统
  18. 微信小程序-云开发 起步
  19. pytest.ini配置文件详解【pytest系列 12】
  20. 矩阵分析与应用(12)

热门文章

  1. 在Windows 10中打开PowerShell的9种方法
  2. linux rstudio 卸载,R与Rstudio的安装与卸载
  3. JDBC 操作数据库步骤
  4. optimizer.zero_grad()
  5. PyG快速安装(一键脚本,2021.7.14简单有效)
  6. Synchronized和Reentrantlock的区别
  7. img图片加载失败的处理
  8. 陈莉君教授: 回望踏入Linux内核之旅(上篇)
  9. matlab表示网络,Matlab绘制网络
  10. centos7搭建webpack