# Time-Series Forecasting of Seasonal Data Using Machine Learning Methods
## 1 Introduction  
Generally, a time series is a set of data ordered in time. Each time series element is assigned a unique Timestamp \((TS)\) index. The distance between indexes can be seconds, hours, days, months, or even years. At that time, the value of the time interval between neighboring indexes is usually assumed to be the same and is denoted by \(T_{s}=TS[k]-TS[k-1]\). For example, the change in quotes on the exchange can be described by the set of real numbers \(Y[k]\) with an interval with \(T_{s}=1\) min, and the quotes are accumulated in the data set from the start of trading on the exchange until its closure. Some finite sample \(Y\) is considered at a specific time interval \(t\in\left[t_{0},t_{0}+T_{s},\,\ldots,t_{f}\right]\). In general, a time series can be represented by a function of the form \(Y_{t}=T_{t}+S_{t}+R_{t}\), where \(T_{t}\) is the trend cycle component (Trend), \(S_{t}\) is the seasonal component (Seasonal), and \(R_{t}\) are the residuals (Residuals). Time series containing a seasonal component \(S_{t}\) has periodicity properties. That is, the character of the variability of the time series repeats from time to time. An example is the growth of purchasing power during the holiday season or the growth of passenger traffic during the vacation season. Modern machine learning methods can create predictive models for this type of time series, which allows calculating the estimate (forecasting) of the parameter for several steps forward relative to the current point in time (forecast horizon) [1; 2; 3; 4; 5; 6]. In this case, to train the model, we need only knowledge of the history of the parameter, which is described by the time series, that is, the historical data on the time interval, the length of which corresponds to several periods of seasonal variability \(T\). The knowledge of other parameters, as a rule, is not required. Thus, the task arises of building models which can estimate some experimental parameters with seasonal variability on some forecast horizon based on information about previous and present values of this parameter (historical data). Currently, the analysis and forecasting of time serieswith seasonal variability are most common in financial markets and trading [7; 8; 9; 10]. The works [11; 12; 13; 14] build models to obtain forecasts of commodity prices and rates of cryptocurrencies. The works [15; 16] forecast the value of tourist flow, depending on the time of year. In turn, tourist flows impact changes in passenger traffic by various modes of transport, as shown in [17; 18]. Processes that affect climate [19; 20], ecology [21; 22], and medicine [23; 24] are also subject to seasonal changes. The authors [25; 26; 27; 28] describe the application of time series with seasonal variability in industry and energy and resource consumption. The application of deep learning technology and long short-term memory network for physical systems is shown in [29; 30]. All research above uses practically the same set of methods and algorithms. First, these are methods for obtaining autoregressive models ARIMA (Autoregressive Integrated Moving Average) and SARIMA (Seasonal ARIMA), which have been known for quite a long time, and the mathematical apparatus of which is well developed. The first mention of the method was made in 1970 by [PERSON] and [PERSON]. ARIMA/SARIMA allows us to obtain the primary class of models used for time series analysis and forecasting. The Holt-Winters Exponential Smoothing method, developed by [PERSON] in the late 1950s, and its modern modification, the Exponential Smoothing Algorithm (ETS), are also used. In addition to the above methods, which can already be classified as classical, new algorithms have appeared in recent years, successfully coping with constructing predictive models of time series with seasonal variability. These are the methods of Facebook Prophet [31], XGboost [32], and a set of Artificial Neural Network (ANN) methods, in particular, the Long Term Memory (LSTM) method [33; 34; 35].