欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由宗文 发表于云+社区专栏

| 导语 通过历史数据,基于时间序列来预测未来。

我们生活中很多数据是有时间维度的。比如说天气或者股票价格。对于这种带有时序的数据,有一种基于时间序列的预测模型---Prophet。

https://github.com/facebook/prophet

上面是项目的地址,需要的小伙伴可以去上面一看究竟。而我主要做的是通过该模型来预测腾讯云数据库存储量变化的未来趋势。下来就来看看Prophet的强大之处吧。

前面说到Prophet是基于时间序列的模型,所以说时间是里面最重要的一个维度(如果您需要预测自己的数据,那么必须是pandas固定的时间格式)。现在就开始直接看下结果吧。

纵轴是腾讯云某类型数据库的购买总量,可以看到随着时间的增长,数据库的购买总量还是在不断增长的。而Prophet所要做的就是根据数据的历史表现来估计数据未来的走势。实验中我选取了2018年1月到6月的数据作为测试集。黑点为真实值,蓝色区域为模型预测的估计值,可以看到随着时间的推移,总体估计容量的趋势是增长的,但是随着时间的推移,不确定性区域越来越大(图中蓝色区域),也可以认为是随着时间的推移,不确定性越来越大。下面来看看真实值与模型预测值是否准确:

图中6月份以后的数值是对模型的测试集,红色区域就是模型未见过的数值与估计值的相对情况。可以明显的看到,该模型估计还是相当准确的呀。可能有很多小伙伴要问了,为啥4月末会出现一个阶段式的跳跃呢?就是我们腾讯云的一个大客户拼多多最近有比较大的手笔。

当然该模型不仅仅可以估计进几个月,也可以估计更长的时间,但是随着时间的推移,可能就更不准确了。

重点就是来了!!!

这东西就是预测一个容量那么简单么?

当然不是了。。主要分两大方面:

1.可以为我们自己提供服务:

(1).可以为我们提供潜在客户的估计。(比如明显可以看到某个公司近几个月飞速购买数据库服务,但是该公司不是我们的大客户。所以很难通过简单的容量排行榜找到他。但是Prophet可以估计出谁可能在后面变成大客户,这样就可以告诉架构师谁是我们的潜在客户。)

(2).还可以通过对我们数据库的总量或者单个客户的数据库总量进行估计,告诉大概什么时候客户需要扩容了,让我们对自己的服务有更好的准备。

2.我们也可以为我们的客户服务:

(1).客户可以通过对自习所选的维度进行分析,相当于一个saas服务。

(2).客户还可以对自己所买的CVM相关的用量进行分析,以便选择最合理的配置。

最后简单说下模型内部结构。

Prophet是一个累加回归模型(additiveregressionmodel)模型的整体构建如下:

y(t) = g(t)+s(t)+h(t)+et

主要有三部分组成:growth(增长趋势)、seasonality(季节趋势)以及holidays(节假日对预测值的影响)。其中g(t)表示增长函数,用来拟合时间序列中预测值的非周期变化。用分段线性或逻辑增长曲线拟合的趋势成分。Prophet会从数据中找出转折点,自动检测趋势变化s(t)用来表示周期性变化,比如每周、每年中的季节等。用傅里叶级数建模的季节成分,以年为单位。用虚拟变量表示的季节成分,以周为单位h(t)表示时间序列中那些潜在的具有非固定周期的节假日对预测值造成的影响。et为噪声项。

问答

云数据库问题?

相关阅读

彭磊:TencentHub的架构实现

微信公众号迁移Serverless详解

如何使用StreamSets实现MySQL中变化数据实时写入HBase

此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/developer/article/1155229?fromSource=waitui

欢迎大家前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区

数据库和AI的一次火花的更多相关文章

  1. 计算系统中互联设备Survey

    Survey of Inter-connects in computer system 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ https://github.co ...

  2. GIAC 2017全球互联网架构大会最新日程

    12月22日至23日,高可用架构和msup联合主办的GIAC 全球互联网架构大会将于上海光大会展中心举行.GIAC 全球互联网架构大会是高可用架构技术社区推广的面向架构师.技术负责人及高端技术从业人员 ...

  3. 我成功攻击了Tomcat服务器之后

    Tomcat是一个开源的轻量级Web应用服务器,在我们平常工作过程中接触得非常多.代码也非常经典,很多人为了提升自己的技术也会去阅读学习Tomcat的源码.但正如著名诗人李白所说的:世界上本没有漏洞, ...

  4. FAAS -- Serverless

    FAAS概念,无服务器运算,功能即服务,function-as-a-service 初创企业-大型企业.民间组织-政府机构 ===>>>> 上云 云计算第三代技术 -- Ser ...

  5. 阿里新晋 CNCF TOC 委员张磊:“云原生”为什么对云计算生态充满吸引力?

    简介: 美国当地时间 2021 年 2 月 2 日,全球顶级开源社区云原生计算基金会(Cloud Native Computing Foundation,简称 CNCF)正式宣布其新一届技术监督委员会 ...

  6. JSP应用开发 -------- 电纸书(未完待续)

    http://www.educity.cn/jiaocheng/j9415.html JSP程序员常用的技术   第1章 JSP及其相关技术导航 [本章专家知识导学] JSP是一种编程语言,也是一种动 ...

  7. 人工智能头条(公开课笔记)+AI科技大本营——一拨微信公众号文章

    不错的 Tutorial: 从零到一学习计算机视觉:朋友圈爆款背后的计算机视觉技术与应用 | 公开课笔记 分享人 | 叶聪(腾讯云 AI 和大数据中心高级研发工程师) 整    理 | Leo 出   ...

  8. 张益肇:AI 医疗,微软有哪些布局?

    编者按:近几年来,医疗和人工智能碰撞出了相当多的火花,大量资金短期投入到医疗领域当中.然而在微软亚洲研究院副院长张益肇博士看来,人工智能医疗是一场持久战,大家一定要沉下心多调研.多思考.多学习. 人工 ...

  9. 一步步实现ABAP后台导入EXCEL到数据库【1】

    在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...

随机推荐

  1. c# 将json转换为DataTable

    /// <summary> /// 将json转换为DataTable /// </summary> /// <param name="strJson" ...

  2. Java简单实现AOP,Java通用异常拦截,Java与Lamada

    直接看代码不废话.不懂Lamada直接百度... package test; /** * QQ:1448376744 * @author 花间岛 * */ //控制器 public class Con ...

  3. BST_insert

    #include <stdio.h> /* printf, scanf, NULL */ #include <stdlib.h> /* malloc, free */ stru ...

  4. 洛谷P4517 [JSOI2018]防御网络(dp)

    题面 传送门 题解 翻译一下题意就是每次选出一些点,要用最少的边把这些点连起来,求期望边数 我也不知道为什么反正总之就是暴力枚举太麻烦了所以我们考虑贡献 如果一条边是割边,那么它会在图里当且仅当两边的 ...

  5. SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度

    数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  6. 1、Numpy基础

    NumPy是什么? NumPy是科学计算的基本包在Python中. 这是一个Python库,它提供了一个多维数组对象, 各种派生的对象(如蒙面数组和矩阵),和一个 快速操作数组的各式各样的例程,包括 ...

  7. 使用Jenkins进行Android自动打包,自定义版本号等信息【转】

    之前App在提交测试和最终部署的过程中App打包一直是由开发人员来完成的,由于项目比较大, 再加上Android打包本身就比较慢,所以每次打包还是很耗时的.并且按照严格的研发流程来讲,开发人员应该只负 ...

  8. struts2学习笔记(四)——访问Servlet的API&结果跳转&数据封装

    一.Struts2访问Servlet的API 前面已经对Struts2的流程执行完成了,但是如果表单中有参数如何进行接收?又或者我们需要向页面保存一些数据,又要如何完成呢?我们可以通过学习Struts ...

  9. 记一个SpringBoot中属性注入失败的问题Consider defining a bean of type ''' in your configuration

    今天遇到的一个问题: 代码检查了好几次,都没有错误,但是启动时就会报错Consider defining a bean of type ''' in your configuration. 启动类在c ...

  10. 栈和递归的关系 144:Binary Tree Preorder Traversal

    前序遍历:根左右 //用栈来实现非递归解法/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeN ...