forked from docs/doc-exports
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com> Co-authored-by: Su, Xiaomeng <suxiaomeng1@huawei.com> Co-committed-by: Su, Xiaomeng <suxiaomeng1@huawei.com>
139 lines
19 KiB
HTML
139 lines
19 KiB
HTML
<a name="dli_08_0111"></a><a name="dli_08_0111"></a>
|
|
|
|
<h1 class="topictitle1">Time Series Forecasting</h1>
|
|
<div id="body1574406512586"><p id="dli_08_0111__p135424265254">Modeling and forecasting time series is a common task in many business verticals. Modeling is used to extract meaningful statistics and other characteristics of the data. Forecasting is the use of a model to predict future data. DLI provides a series of stochastic linear models to help users conduct online modeling and forecasting in real time.</p>
|
|
<div class="section" id="dli_08_0111__section1378153893610"><h4 class="sectiontitle">ARIMA (Non-Seasonal)</h4><p id="dli_08_0111__p23629282251">Auto-Regressive Integrated Moving Average (ARIMA) is a classical model used for time series forecasting and is closely correlated with the AR, MA, and ARMA models.</p>
|
|
</div>
|
|
<ul id="dli_08_0111__ul2036215283258"><li id="dli_08_0111__li1536222882513">The AR, MA, and ARMA models are applicable to <strong id="dli_08_0111__b236212852517">stationary</strong> sequences.<ul id="dli_08_0111__ul836217283254"><li id="dli_08_0111__li1362028122511">AR(p) is an autoregressive model. An AR(p) is a linear combination of p consecutive values from immediate past. The model can predict the next value by using the weight of linear combination.</li><li id="dli_08_0111__li9362328142513">MA(q) is a moving average model. An MA(q) is a linear combination of q white noise values from the past plus the average value. The model can also predict the next value by using the weight of linear combination.</li><li id="dli_08_0111__li936252812515">ARMA(p, q) is an autoregressive moving average model, which integrates the advantages of both AR and MA models. In the ARMA model, the autoregressive process is responsible for quantizing the relationship between the current data and the previous data, and the moving average process is responsible for solving problems of random variables. Therefore, the ARMA model is more effective than AR/MA.</li></ul>
|
|
</li><li id="dli_08_0111__li1136232812259">ARIMA is suitable for <strong id="dli_08_0111__b6889129205117">non-stationary</strong> series. In ARIMA(p, q, d), <strong id="dli_08_0111__b0763029155216">p</strong> indicates the autoregressive order, <strong id="dli_08_0111__b5611101710599">q</strong> indicates the moving average order, and <strong id="dli_08_0111__b11316266596">d</strong> indicates the difference order.</li></ul>
|
|
<p id="dli_08_0111__p636161419446"><strong id="dli_08_0111__b560911445397">Syntax</strong></p>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0111__screen148620188157"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">AR_PRED</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">):</span><span class="w"> </span><span class="n">Use</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">AR</span><span class="w"> </span><span class="n">model</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">forecast</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="k">data</span><span class="p">.</span>
|
|
<span class="n">AR_COEF</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">):</span><span class="w"> </span><span class="k">Return</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">weight</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">AR</span><span class="w"> </span><span class="n">model</span><span class="p">.</span>
|
|
<span class="n">ARMA_PRED</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">):</span><span class="w"> </span><span class="n">Use</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">ARMA</span><span class="w"> </span><span class="n">model</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">forecast</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="k">data</span><span class="p">.</span>
|
|
<span class="n">ARMA_COEF</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">):</span><span class="w"> </span><span class="k">Return</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">weight</span><span class="w"> </span><span class="k">of</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">ARMA</span><span class="w"> </span><span class="n">model</span><span class="p">.</span>
|
|
<span class="n">ARIMA_PRED</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">degree</span><span class="p">,</span><span class="w"> </span><span class="n">derivativeOrder</span><span class="p">):</span><span class="w"> </span><span class="n">Use</span><span class="w"> </span><span class="n">ARIMA</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">forecast</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="k">data</span><span class="p">.</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
|
|
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0111__table2060911914818" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Parameters</caption><thead align="left"><tr id="dli_08_0111__row1960910913480"><th align="left" class="cellrowborder" valign="top" width="18.14%" id="mcps1.3.6.2.5.1.1"><p id="dli_08_0111__p176092984816">Parameter</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="11.59%" id="mcps1.3.6.2.5.1.2"><p id="dli_08_0111__p03846300421">Mandatory</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="61.63999999999999%" id="mcps1.3.6.2.5.1.3"><p id="dli_08_0111__p136107924817">Description</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="8.63%" id="mcps1.3.6.2.5.1.4"><p id="dli_08_0111__p6233369126"><strong id="dli_08_0111__b1367411164017">Default Value</strong></p>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr id="dli_08_0111__row1153159141914"><td class="cellrowborder" valign="top" width="18.14%" headers="mcps1.3.6.2.5.1.1 "><p id="dli_08_0111__p915475981914">field</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="11.59%" headers="mcps1.3.6.2.5.1.2 "><p id="dli_08_0111__p20154359141910">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="61.63999999999999%" headers="mcps1.3.6.2.5.1.3 "><p id="dli_08_0111__p2154195921915">Name of the field, data in which is used for prediction, in the data stream.</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="8.63%" headers="mcps1.3.6.2.5.1.4 "><p id="dli_08_0111__p18154259151910">-</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0111__row2061019914488"><td class="cellrowborder" valign="top" width="18.14%" headers="mcps1.3.6.2.5.1.1 "><p id="dli_08_0111__p442919453914">degree</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="11.59%" headers="mcps1.3.6.2.5.1.2 "><p id="dli_08_0111__p164226451698">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="61.63999999999999%" headers="mcps1.3.6.2.5.1.3 "><p id="dli_08_0111__p194158459915">Defines how many steps in the past are going to be considered for the next prediction. Currently, only "p = q = degree" is allowed.</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="8.63%" headers="mcps1.3.6.2.5.1.4 "><p id="dli_08_0111__p14410194516912">5</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0111__row166109917484"><td class="cellrowborder" valign="top" width="18.14%" headers="mcps1.3.6.2.5.1.1 "><p id="dli_08_0111__p1440212451592">derivativeOrder</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="11.59%" headers="mcps1.3.6.2.5.1.2 "><p id="dli_08_0111__p639618459915">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="61.63999999999999%" headers="mcps1.3.6.2.5.1.3 "><p id="dli_08_0111__p1138934513910">Derivative order. Generally, this parameter is set to <strong id="dli_08_0111__b814916410516">1</strong> or <strong id="dli_08_0111__b695310885119">2</strong>.</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="8.63%" headers="mcps1.3.6.2.5.1.4 "><p id="dli_08_0111__p838217451892">1</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p id="dli_08_0111__p3199105914448"><strong id="dli_08_0111__b1063492211406">Example</strong></p>
|
|
<p id="dli_08_0111__p15649165174610">Separately use AR, ARMA, and ARIMA to forecast the time series ordered by rowtime.</p>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0111__screen573418131113"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span>
|
|
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="n">AR_PRED</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">rowtime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">ar</span><span class="p">,</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="n">ARMA_PRED</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">rowtime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">arma</span><span class="p">,</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="n">ARIMA_PRED</span><span class="p">(</span><span class="n">b</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">rowtime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">arima</span><span class="w"> </span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">MyTable</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
<div class="section" id="dli_08_0111__section19511616194518"><h4 class="sectiontitle">Holt Winters</h4><p id="dli_08_0111__p1543313553312">The Holt-Winters algorithm is one of the Exponential smoothing methods used to forecast <strong id="dli_08_0111__b17643293117">seasonal </strong>data in time series.</p>
|
|
</div>
|
|
<p id="dli_08_0111__p265511276455"><strong id="dli_08_0111__b153781220454">Syntax</strong></p>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0111__screen1602114023218"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="n">HOLT_WINTERS</span><span class="p">(</span><span class="n">field</span><span class="p">,</span><span class="w"> </span><span class="n">seasonality</span><span class="p">,</span><span class="w"> </span><span class="n">forecastOrder</span><span class="p">)</span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
|
|
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="dli_08_0111__table1261014401323" frame="border" border="1" rules="all"><caption><b>Table 2 </b>Parameters</caption><thead align="left"><tr id="dli_08_0111__row56141740183213"><th align="left" class="cellrowborder" valign="top" width="19.63%" id="mcps1.3.13.2.4.1.1"><p id="dli_08_0111__p146141940103218">Parameter</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="13.94%" id="mcps1.3.13.2.4.1.2"><p id="dli_08_0111__p761710407322">Mandatory</p>
|
|
</th>
|
|
<th align="left" class="cellrowborder" valign="top" width="66.43%" id="mcps1.3.13.2.4.1.3"><p id="dli_08_0111__p4617140193216">Description</p>
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody><tr id="dli_08_0111__row1840663511916"><td class="cellrowborder" valign="top" width="19.63%" headers="mcps1.3.13.2.4.1.1 "><p id="dli_08_0111__p8409635161916">field</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="13.94%" headers="mcps1.3.13.2.4.1.2 "><p id="dli_08_0111__p13409235141915">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="66.43%" headers="mcps1.3.13.2.4.1.3 "><p id="dli_08_0111__p4409143581918">Name of the field, data in which is used for prediction, in the data stream.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0111__row761924043210"><td class="cellrowborder" valign="top" width="19.63%" headers="mcps1.3.13.2.4.1.1 "><p id="dli_08_0111__p16620940183217">seasonality</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="13.94%" headers="mcps1.3.13.2.4.1.2 "><p id="dli_08_0111__p156227403324">Yes</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="66.43%" headers="mcps1.3.13.2.4.1.3 "><p id="dli_08_0111__p89901340203415">Seasonality space used to perform the prediction. For example, if data samples are collected daily, and the season space to consider is a week, then <strong id="dli_08_0111__b104726421727">seasonality</strong> is <strong id="dli_08_0111__b1069810441226">7</strong>.</p>
|
|
</td>
|
|
</tr>
|
|
<tr id="dli_08_0111__row11628114014324"><td class="cellrowborder" valign="top" width="19.63%" headers="mcps1.3.13.2.4.1.1 "><p id="dli_08_0111__p3628104011322">forecastOrder</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="13.94%" headers="mcps1.3.13.2.4.1.2 "><p id="dli_08_0111__p106291040203218">No</p>
|
|
</td>
|
|
<td class="cellrowborder" valign="top" width="66.43%" headers="mcps1.3.13.2.4.1.3 "><p id="dli_08_0111__p2043783714322">Value to be forecast, specifically, the number of steps to be considered in the future for producing the forecast.</p>
|
|
<p id="dli_08_0111__p38188557320">If <strong id="dli_08_0111__b1950717222314">forecastOrder</strong> is set to <strong id="dli_08_0111__b2028723218319">1</strong>, the algorithm forecasts the next value.</p>
|
|
<p id="dli_08_0111__p14322133218332">If <strong id="dli_08_0111__b976085711311">forecastOrder</strong> is set to <strong id="dli_08_0111__b87602578318">2</strong>, the algorithm forecasts the value of 2 steps ahead in the future. The default value is <strong id="dli_08_0111__b84235270615612">1</strong>.</p>
|
|
<p id="dli_08_0111__p11953852203420">When using this parameter, ensure that the OVER window size is greater than the value of this parameter.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p id="dli_08_0111__p6773174624514"><strong id="dli_08_0111__b9123116114615">Example</strong></p>
|
|
<p id="dli_08_0111__p8468182261813">Use Holt-Winters to forecast time series ordered by rowtime.</p>
|
|
<div class="codecoloring" codetype="Sql" id="dli_08_0111__screen15662184020324"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
|
|
<span class="normal">2</span>
|
|
<span class="normal">3</span>
|
|
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="n">b</span><span class="p">,</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="n">HOLT_WINTERS</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">rowtime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">a1</span><span class="p">,</span><span class="w"> </span>
|
|
<span class="w"> </span><span class="n">HOLT_WINTERS</span><span class="p">(</span><span class="n">b</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="n">OVER</span><span class="w"> </span><span class="p">(</span><span class="k">ORDER</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">rowtime</span><span class="w"> </span><span class="k">ROWS</span><span class="w"> </span><span class="k">BETWEEN</span><span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="n">PRECEDING</span><span class="w"> </span><span class="k">AND</span><span class="w"> </span><span class="k">CURRENT</span><span class="w"> </span><span class="k">ROW</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">a2</span>
|
|
<span class="k">FROM</span><span class="w"> </span><span class="n">MyTable</span><span class="w"> </span>
|
|
</pre></div></td></tr></table></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="dli_08_0109.html">StreamingML</a></div>
|
|
</div>
|
|
</div>
|
|
|