數據庫和AI的一次火花

歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐乾貨哦~

本文由宗文 發表於雲+社區專欄

| 導語 通過歷史數據,基於時間序列來預測未來。

我們生活中很多數據是有時間維度的。比如說天氣或者股票價格。對於這種帶有時序的數據,有一種基於時間序列的預測模型—Prophet。

https://github.com/facebook/prophet

上面是項目的地址,需要的小夥伴可以去上面一看究竟。而我主要做的是通過該模型來預測騰訊雲數據庫存儲量變化的未來趨勢。下來就來看看Prophet的強大之處吧。

前面說到Prophet是基於時間序列的模型,所以說時間是裏面最重要的一個維度(如果您需要預測自己的數據,那麼必須是pandas固定的時間格式)。現在就開始直接看下結果吧。

img

縱軸是騰訊雲某類型數據庫的購買總量,可以看到隨着時間的增長,數據庫的購買總量還是在不斷增長的。而Prophet所要做的就是根據數據的歷史表現來估計數據未來的走勢。實驗中我選取了2018年1月到6月的數據作爲測試集。黑點爲真實值,藍色區域爲模型預測的估計值,可以看到隨着時間的推移,總體估計容量的趨勢是增長的,但是隨着時間的推移,不確定性區域越來越大(圖中藍色區域),也可以認爲是隨着時間的推移,不確定性越來越大。下面來看看真實值與模型預測值是否準確:

img

圖中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),第一時間獲取更多海量技術實踐乾貨哦~

海量技術實踐經驗,盡在雲加社區