Time series prediction
The system addresses the challenges of non-stationarity and uncertainty in time series forecasting by training and selecting multiple models in parallel, enhancing prediction accuracy and efficiency.
Patent Information
- Application Number
- JP2024157520
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2020-08-06
- Filing Date
- 2024-09-11
- Publication Date
- 2025-01-07
- Estimated Expiration
- 2041-05-06
AI Technical Summary
Existing time series prediction systems face challenges in accurately forecasting future trends due to inherent non-stationarity and uncertainty, and traditional machine learning models are ineffective when new data becomes available, necessitating frequent retraining.
A system that allows users to perform multiple time series predictions simultaneously by training and selecting the best-fitting models for each prediction, using techniques like ARIMA, hyperparameter tuning, and anomaly detection, and returning predictions in parallel.
Enables efficient and accurate large-scale time series forecasting by reducing response time and improving prediction accuracy through parallel model training and selection, even with limited data sets.
Smart Images

Figure 2025000674000001_ABST
Abstract
Description
[Technical field]
[0001] The present disclosure relates to time series prediction. [Background technology]
[0002] background Predicting future trends based on historical data can provide useful information for a number of different applications. With vast amounts of data readily available and users seeking to leverage accurate predictions to gain a competitive advantage, the need for accurate prediction of future trends is growing. When predicting future data trends, several underlying components may affect the variability of the data. These variability may make it very difficult to accurately predict the time component. Many machine learning models aim to accurately predict future trends that incorporate a time component. Summary of the Invention
[0003] overview One aspect of the disclosure provides a method for time series prediction. The method includes receiving, at the data processing hardware, a time series prediction query from a user. The time series prediction query requests the data processing hardware to perform a plurality of time series predictions. Each time series prediction is a prediction of future data based on respective current data. For each time series prediction of the plurality of time series predictions requested by the time series prediction query, the method includes the data processing hardware simultaneously training a plurality of models for the respective time series prediction. The method also includes simultaneously determining which model of the plurality of models best fits the respective time series prediction, and simultaneously predicting future data based on the determined best fit model and the respective current data. The method also includes the data processing hardware returning predicted future data to the user for each of the plurality of time series predictions requested by the time series prediction query.
[0004] Implementations of the present disclosure may include one or more of the following optional features: In some implementations, the time series prediction request includes only a single query. In these implementations, the single query may include a Structured Query Language (SQL) query. Additionally or alternatively, the single query also includes a reference to three columns of the table. In some examples, the three columns of the table include a first column that includes timestamp data, a second column that includes current data, and a third column that includes time series prediction identification data.
[0005] In some implementations, each model of the multiple models for each respective time series forecast includes an autoregressive integrated moving average model. Training the multiple models may include performing hyperparameter tuning. In some examples, forecasting the future data includes modeling seasonal effects. Optionally, forecasting the future data includes modeling holiday effects. In additional examples, forecasting the future data includes modeling drift. In some implementations, forecasting the future data includes performing anomaly detection. In some examples, determining which model of the multiple models best fits the respective time series forecast includes determining which model has the lowest Akaike Information Criterion (AIC).
[0006] Another aspect of the present disclosure provides a system for time series forecasting. The system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware, when executed on the data processing hardware, provides a time series forecasting system for time series forecasting. The data processing hardware stores instructions for causing the data processing hardware to perform operations. The operations include receiving a time series prediction query from a user. The time series prediction query requests the data processing hardware to perform a plurality of time series predictions. Each time series prediction is a prediction of future data based on respective current data. For each time series prediction of the plurality of time series predictions requested by the time series prediction query, the operations include simultaneously training a plurality of models for the respective time series prediction. The operations also include simultaneously determining which model of the plurality of models best fits the respective time series prediction, and simultaneously predicting future data based on the determined best-fit model and the respective current data. The operations also include returning predicted future data to the user for each of the plurality of time series predictions requested by the time series prediction query.
[0007] Implementations of the present disclosure may include one or more of the following optional features: In some implementations, the time series prediction request includes only a single query. In these implementations, the single query may include a Structured Query Language (SQL) query. Additionally or alternatively, the single query also includes a reference to three columns of the table. In some examples, the three columns of the table include a first column that includes timestamp data, a second column that includes current data, and a third column that includes time series prediction identification data.
[0008] In some implementations, each model of the multiple models for each respective time series forecast includes an autoregressive integrated moving average model. Training the multiple models may include performing hyperparameter tuning. In some examples, forecasting the future data includes modeling seasonal effects. Optionally, forecasting the future data may include modeling holiday effects. In additional examples, forecasting the future data includes modeling drift. In some implementations, forecasting the future data includes performing anomaly detection. In some examples, determining which model of the multiple models best fits the respective time series forecast includes determining which model has the lowest Akaike Information Criterion (AIC).
[0009] The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will become apparent from the description and drawings, and from the claims. [Brief description of the drawings]
[0010] [Figure 1] FIG. 1 is a schematic diagram of an example system for generating a time series forecast. [Diagram 2] FIG. 2 is a schematic diagram of exemplary components of the system of FIG. 1. [Diagram 3] FIG. 13 is a schematic diagram of a table including a time series identification column. [Figure 4] 1 is a plot of a time series and the corresponding decomposition components of that series. [Diagram 5] 2 is a schematic diagram of additional exemplary components of the exemplary system of FIG. 1. [Figure 6] 1 is a flowchart of an example arrangement of operations for a method of generating a time series forecast. [Figure 7] FIG. 1 is a schematic diagram of an example computing device that can be used to implement the systems and methods described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] Like reference numbers in the various drawings indicate like elements. Detailed Description A time series is a sequence of data points in time order (typically at regular intervals). Analysis on time series can be applied to any variable that changes over time (e.g., industrial processes or business metrics). Time series forecasting is the practical computation of predicting (i.e., extrapolating) future data values based on past data values. Since so many forecasting problems have a time component, time series forecasting is a very common problem. Series forecasting is an active area of interest. Specifically, time series forecasting has become an important area for machine learning. However, due to inherent non-stationarity and uncertainty, time series forecasting remains a challenging problem.
[0012] With typical machine learning problems, a model is trained until it provides satisfactory results. The model is then used to make predictions on new data over a period of time until there is enough new data to warrant retraining the model with additional new data. However, in time series forecasting, it may be beneficial to retrain the model even when a single new data point is received. From a practical perspective, deploying a static model (as is traditional with many machine learning models) is ineffective for time series forecasting.
[0013] Implementations herein are directed to a time series prediction system capable of performing "large scale" time series predictions. That is, the system allows a user to fit and forecast many time series in parallel by submitting a single query. The system receives time series prediction requests from a user that request the system to perform multiple time series predictions. For each of the multiple time series predictions, the system trains multiple models simultaneously and determines which model of the multiple models best fits the respective time series prediction. The system forecasts future data based on each of the determined best-fit models and returns the predicted future data to the user for each requested time series prediction.
[0014] 1, in some implementations, an exemplary time series forecasting system 100 includes a remote system 140 that communicates with one or more user devices 10 via a network 112. The remote system 140 may be a single computer, multiple computers, or a distributed system (e.g., a cloud environment) having scalable / elastic resources 142, including computing resources 144 (e.g., data processing hardware) and / or storage resources 146 (e.g., memory hardware). A data store 150 (i.e., a remote storage device) may be overlaid on the storage resources 146 to enable scalable use of the storage resources 146 by one or more of the clients (e.g., the user devices 10) or computing resources 144. The data store 150 is configured to store multiple data blocks 152, 152a-n in one or more tables 158, 158a-n (i.e., a cloud database), each of which includes multiple rows and columns 300, 300a-n (FIG. 3). Data store 150 may store any number of tables 158 at any given time.
[0015] The remote system 140 is configured to receive, for example, via the network 112, time series prediction queries 20 from user devices 10 associated with respective users 12. The user devices 10 may correspond to any computing device, such as a desktop workstation, a laptop workstation, or a mobile device (i.e., a smartphone). The user devices 10 include computing resources 18 (e.g., data processing hardware) and / or storage resources 16 (e.g., memory hardware). The users 12 may construct queries 20 using a Structured Query Language (SQL) interface 14. Each time series prediction query 20 requests one or more time series predictions 22, 22a-n. Specifically, each time series prediction 22 requested by a query 20 is associated with a request to the remote system 140 to generate a prediction of future data 162 based on current data 152.
[0016] The remote system 140 runs a time series predictor 160 to predict future data 162 and return it to the user device 10. The time series predictor 160 is configured to receive a query 20. As described in more detail below, the model trainer 210 simultaneously generates and trains multiple predictive models 212, 212a-n for each prediction request 22. As used herein, the terms prediction request 22 and time series prediction 22 may be used interchangeably. The model trainer 210 may train the predictive models 212 with current data 152 (i.e., data blocks 152) retrieved from one or more tables 158 stored in the data store 150 that are associated with the requested time series prediction 22. That is, the query 20 may include multiple time series predictions 22, each of which requests the remote system 140 to predict future data based on the current data 152 located in one or more tables 158 stored in the data store 150. Alternatively, the query 20 may include the current data 152. That is, the user 12 (via the user device 10) may provide the current data 152 if the current data 152 is not available via the data storage 150.
[0017] The model trainer 210 may generate and / or train each model 212 with different parameters. For example, the model trainer 210 may generate and train multiple autoregressive integrated moving average (ARIMA) models with different orders of the autoregressive model (i.e., the number of time lags, commonly represented as parameter p), different differencing degrees (i.e., the number of times data is subtracted from past values, commonly represented as parameter d), and orders of the moving average model (i.e., the size of the moving average window, commonly represented as parameter q). Using combinations of different parameters (e.g., parameters p, d, and q), the model trainer 210 generates a corresponding predictive model 212 for each combination. Each model 212 is trained using the same data 152. One or more parameters may be configurable or partially configurable by the user 12.
[0018] The model trainer 210 may perform hyperparameter tuning (also known as hyperparameter optimization) when generating and training the multiple models 212. Hyperparameters are parameters that control or adjust the actual learning process while other parameters (e.g., node weights) are being learned. For example, the model trainer 210 may perform hyperparameter tuning on data frequency and non-seasonal order parameters. As described in more detail below, the model trainer 210 may generate and train predictive models 212 that may model many different aspects of time series. For example, the predictive models 212 may consider seasonal effects, holiday effects, drift modeling, and anomalies.
[0019] The model selector 220 receives each trained model 212 and determines which model 212 best fits the data 152. Typically, machine learning models are trained on a training dataset and then evaluated on a test dataset. However, because time series data often have a very limited dataset, the time series predictor 160 may use the same data to train a model 212 and evaluate the model 212 (i.e., predict future data 162). Thus, in some examples, the model selector 220 determines which model 212 results in the lowest Akaike Information Criterion (AIC). The AIC is an estimator of out-of-sample prediction error and may therefore represent the relative quality of the corresponding model 212 with respect to each of the other models 212 trained on the same data 152. The model selector 220 selects the best-fitting model 212S (e.g., the model 212 with the lowest AIC) and sends the model 212S to the predictor 230. This allows the model selector 220 to analytically determine the best-fit model 212 without relying on empirical means (eg, a separate testing data set).
[0020] The predictor 230 uses the selected model 212S to predict future data 162 based on the current data 152. The predictor 230 returns the predicted future data 162 to the user 12 (via the user device 10). The user device 10 displays the predicted data 162, for example as a graph. Each time series requested by the query 20 may be displayed on the same graph, with user-configurable filters to control which portions of which time series are displayed. For example, the query 20 includes a request for ten time series predictions 22. After receiving the future data 162, the user device 10 may display all ten time series predictions simultaneously on the graph. The user may select which time series are available for viewing and may zoom in or out on the data as desired.
[0021] Referring now to FIG. 2, in some examples, a query 20 requests the remote system 140 to perform multiple time series predictions 22. In this case, the model trainer 210 trains multiple models 212 simultaneously for each of the multiple time series predictions 22. For example, if a query 20 includes 10 time series predictions 22 and the model trainer 210 trains 40 models 212 for each time series prediction 22, the model trainer 210 generates and trains 400 (i.e., 40×10) models 212 simultaneously. As shown in FIG. 2, the time series predictor 160 may replicate the model trainer 210 for each time series prediction 22 requested by the query 20 (i.e., 10 replicates of the model trainer 210 for the 10 prediction requests 22). The model selector 220 similarly determines (e.g., via replication) the best-fit model 212S for the corresponding prediction request 22 from each set of models 212 simultaneously. The predictor 230 may also predict future data 162 based on each of the selected models 212S simultaneously (e.g., via replication). The predicted future data 162 from each of the selected models 212S may be included in a query response 164 returned to the user 12 via the user device 10. Thus, the user 12 may request multiple time series predictions 22 with only a single query 20, and the time series predictor 160 processes each of the time series predictions 22 in parallel, significantly reducing the amount of time required to respond to the query 20.
[0022] 3, in some implementations, the query 20 includes references to three columns 300, 300a-c of a table 158 stored in the data store 150. For example, one column 300a includes time series identification information, another column 300b includes time series timestamp data, and a third column 300c includes time series data. The time series timestamp column 300b includes the necessary time components of the time series. Each data element 310 in the time series timestamp column 300b represents a time point associated with a respective time series data element 310 from the time series data column 300c. The time series predictor 160 uses the time series timestamp column 300b and the time series data column 300c to train a predictive model 212 to predict future data 162.
[0023] In some examples, the time series timestamp column 300b and the time series data column 300c are associated with a time series identification (ID) column 300a. The time series ID column 300a identifies which portions of the time series timestamp column 300b and the time series data column 300c correspond to each of the multiple time series predictions 22 requested by the query 20. That is, the time series ID column 300a divides the time series timestamp column 300b and the time series data column 300c based on the multiple time series predictions 22 requested by the query 20.
[0024] In the illustrated example, a time series ID of "ID1" partitions a set of timestamps and data elements 310. Each timestamp and data element 310 associated with time series ID "ID1" corresponds to one of the time series predictions 22 requested by query 20. Similarly, a time series ID of "ID2" partitions a set of timestamps and data elements 310 for a second time series data request 22, and a time series ID of "ID3" partitions a set of timestamps and data elements 310 for a second time series data request 22. The time series ID column 300a partitions the set of timestamps and data elements 310 for the three time series. In this manner, the time series ID column 300a identifies the boundaries of each of the separate time series predictions 22 requested by the query 20. Thus, the user 12 may generate a single query (e.g., using the SQL interface 14) that provides identifiers of three columns 300 of a table 158 stored on the data store 150 that correspond to the time series ID column 300a, the time series timestamp column 300b, and the time series data column 300c, in order to identify multiple requested time series predictions 22 within a single query 20.
[0025] 3 illustrates an explicit identification column 300a to provide a clear example, any column 300 in a table may serve as the time series identification column 300a. For example, a table 158 containing data representing metrics for multiple different offices may use an office location column as the time series identification column 300a to generate multiple time series predictions 22 for each office location. As another example, a table 158 containing data representing weather statistics for different countries may use a column representing country as the time series identification column 300a to generate multiple time series data predictions 22 for each country. That is, a user 12 may generate multiple time series predictions 22 based on any existing column 300 in a table 158 without having to explicitly create a column 300 for the purpose of segmenting a desired time series.
[0026] Referring now to FIG. 4, a plot 400 illustrates an example time series 410 and corresponding components 412a-c of the time series 410. The time series 410 includes a series of data points (y-axis) versus time (x-axis), where the data is represented on the y-axis between approximately 60 and 140, and the x-axis ranges from approximately 1995 to 2015. The time series 410 is decomposed into a trend component 412a, a seasonal component 412b, and a residual component 412c. The trend component 412a represents the trend of the data, moving up and down in a reasonably predictable pattern. Here, the trend component 412a also includes cyclical fluctuations corresponding to cycles (e.g., "boom-bust" cycles). The seasonal component 412b represents fluctuations that repeat over a particular period (e.g., days, weeks, months, etc.). For example, an increase in sales in December represents a seasonal effect of the seasonal component 412b. Residual component 412c represents seemingly random residual fluctuations that do not fall into the classification of other components 412.
[0027] 5, in some examples, an end-to-end time series predictor 500 receives multiple input time series 502 (e.g., comprised of data 152 stored in data store 150). The end-to-end time series predictor 500 may include three main stages: a pre-processing stage 510, a training stage 520, and a prediction stage 530. The pre-processing stage 510 receives the input time series 502 and performs data frequency processing 512, null imputation 514 (i.e., determining and / or rejecting any nulls in the input time series 502), holiday effect modeling 516, and anomaly detection 518.
[0028] Holiday effects may play an important role in time series forecasting. For example, a time series representing sales of an online retailer may experience a significant spike in sales on "Black Friday". However, Black Friday does not have a fixed periodicity since it falls on the day after Thanksgiving, which is the fourth Thursday in November. Thus, the effect is difficult, if not impossible, to take into account in seasonality modeling. In addition, holiday effects may be mistaken for anomalies, which can lead to undesired smoothing of holiday effects. The holiday effect modeling module 516 accounts for these effects that would otherwise be missed by seasonality modeling or erroneously smoothed by anomaly detection.
[0029] After pre-processing, the training stage 520 begins with seasonal and trend decomposition using a Stochastic Local Regression (STL) module 522 that generates deseasonal and seasonal components 523a and 523b. The STL module 522 estimates non-linear relationships and splits the time series into multiple components 412a-c ( 4). The deseasonal component 523a is processed through a Kwiatkowsi-Phillips-Schmidt-Shin (KPSS) testing module 524 to generate multiple ARIMA models in parallel at 526. The seasonal component 523b is passed to a double exponential smoothing module 528. In a forecasting stage 530, the deseasonal component 523a from the ARIMA models is forecasted by a forecasting module 532a and the seasonal component 523b from the double exponential smoothing module 528 is forecasted by a forecasting module 532b. The results from both the forecasting module 532a and the forecasting module 532b are combined to create a forecast result 534. The predictor 500 may return the forecast result 534 to the user 12 via the user device 10. The end-to-end time series predictor 500 replicates stages 510, 520, 530 for each input time series 502 such that each input time series 502 is predicted simultaneously in parallel.
[0030] 6 is a flowchart of an example arrangement of operations for a method 600 for performing time series predictions. The method 600 includes, at operation 602, receiving, at the data processing hardware 144, a time series prediction query 20 from a user 12 requesting the data processing hardware 144 to perform a plurality of time series predictions 22. Each time series prediction 22 is a prediction of future data 162 based on a respective current data 152.
[0031] For each time series prediction 22 of the plurality of time series predictions 22, the method 600 includes, at operation 604, the data processing hardware 144 simultaneously training a plurality of models 212 for each time series prediction 22 of the plurality of time series predictions 22. At operation 606, the method 600 includes the data processing hardware 144 simultaneously determining which model 212S of the plurality of models 212 best fits each time series prediction 22 of the plurality of time series predictions 22. At operation 608, the method 600 includes the data processing hardware 144 simultaneously predicting future data 162 based on the determined best fitting model 212S and the respective current data 152. At operation 610, the method 600 includes the data processing hardware 144 returning to the user 12 the predicted future data 162 for each of the plurality of time series predictions 22 requested by the time series prediction query 20.
[0032] 7 is a schematic diagram of an exemplary computing device 700 that may be used to implement the systems and methods described herein. Computing device 700 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other suitable computers. The components, their connections and relationships, and their functions shown herein are merely exemplary and are not intended to limit the implementation of the invention as described and / or claimed herein.
[0033] Computing device 700 includes a processor 710, a memory 720, a storage device 730, a high-speed interface / controller 740 that connects to memory 720 and high-speed expansion port 750, and a low-speed interface / controller 760 that connects to low-speed bus 770 and storage device 730. Each of components 710, 720, 730, 740, 750, and 760 may be interconnected using various buses and implemented on a common motherboard or in other manners as desired. Processor 710 can process instructions for execution within computing device 700, including instructions stored in memory 720 or storage device 730, to display graphical information for a graphical user interface (GUI) on an external input / output device, such as a display 780 coupled to high-speed interface 740. In other implementations, multiple processors and / or multiple buses may be used, along with multiple memories and types of memories, as desired. Multiple computing devices 700 may also be connected, with each device having its own dedicated bus (e.g., as a server bank). The virtualization engine provides the necessary operational parts for a single virtualization system (as a group of blade servers or as a multiprocessor system).
[0034] The memory 720 stores information non-transiently within the computing device 700. The memory 720 may be a computer-readable medium, a volatile memory unit, or a non-volatile memory unit. The non-transient memory 720 may be a physical device used to temporarily or permanently store programs (e.g., sequences of instructions) or data (e.g., program state information) for use by the computing device 700. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM), and disk or tape.
[0035] The storage device 730 can provide mass storage for the computing device 700. In some implementations, the storage device 730 is a computer-readable medium. In various different implementations, the storage device 730 may be an array of devices including a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid-state memory device, or a device in a storage area network or other configuration. In further implementations, the computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more methods, such as the methods described above. The information carrier is a computer-readable or machine-readable medium, such as the memory 720, the storage device 730, or a memory on the processor 710.
[0036] The high-speed controller 740 manages bandwidth-intensive operations for the computing device 700, and the low-speed controller 760 manages less bandwidth-intensive operations. Such role assignments are merely exemplary. In some implementations, the high-speed controller 740 is coupled to a memory 720, a display 780 (e.g., through a graphics processor or accelerator), and a high-speed expansion port 750 that may accept various expansion cards (not shown). In some implementations, the low-speed controller 760 is coupled to a storage device 730 and a low-speed expansion port 790. The low-speed expansion port 790 may accept various communication ports (e.g., USB, Bluetooth, Ethernet, etc.). .net, wireless Ethernet), and may be coupled, for example via a network adapter, to one or more input / output devices such as a keyboard, pointing device, scanner, or a networking device such as a switch or router.
[0037] Computing device 700 may be implemented in a number of different forms, as shown in the figure, such as as a standard server 700a or multiple times within a group of such servers 700a, as a laptop computer 700b, or as part of a rack server system 700c.
[0038] Various implementations of the systems and techniques described herein may be implemented using digital electronic and / or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and / or any combination thereof. These various implementations may include implementations in one or more computer programs executable and / or interpretable on a programmable system including at least one programmable processor, which may be special purpose or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device.
[0039] A software application (i.e., a software resource) may refer to computer software that causes a computing device to perform tasks. In some examples, a software application may be referred to as an "application," an "app," or a "program." Examples of applications include, but are not limited to, system diagnostic applications, system management applications, system maintenance applications, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and gaming applications.
[0040] These computer programs (also known as programs, software, software applications or codes) contain machine instructions for a programmable processor and may be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine languages. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus and / or device (e.g., magnetic disk, optical disk, memory, programmable logic device (PLD)) used to provide machine instructions and / or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor.
[0041] The processes and logic flows described herein may be executed by one or more programmable processors, also referred to as data processing hardware, which execute one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows may also be executed by special purpose logic circuitry, for example, an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Processors suitable for executing computer programs include, by way of example, both general purpose and special purpose microprocessors, as well as any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read-only memory or a random access memory, or both. The essential elements of a computer are a processor for executing instructions, and one or more memory devices for storing instructions and data. Generally, a computer will also include one or more mass storage devices for storing data, such as, for example, a magnetic disk, a magneto-optical disk, or an optical disk, or be operatively coupled to receive data from or transfer data to the one or more mass storage devices, or both. However, a computer need not have such devices. Computer-readable media suitable for storing computer program instructions and data include, by way of example, all forms of non-volatile memory, media, and memory devices, including semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The processor and the memory may be supplemented by, or incorporated in, special purpose logic circuitry.
[0042] To provide for user interaction, one or more aspects of the present disclosure may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen, for displaying information to a user, and optionally a keyboard and a pointing device, such as a mouse or trackball, by which a user can provide input to the computer. Other types of devices may also be used to provide user interaction, for example, feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and input from the user may be received in any form, including acoustic input, speech input, or tactile input. In addition, the computer may interact with a user by sending documents to and receiving documents from a device used by the user, for example, by sending a web page to a web browser on the user's client device in response to a request received from the web browser.
[0043] Although several implementations have been described, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims.
Claims
1. 1. A method (600), comprising: The method includes receiving, at data processing hardware (144), a time series prediction query (20) from a user (12), the time series prediction query (20) requesting the data processing hardware (144) to perform a plurality of time series predictions (22), each time series prediction (22) being a prediction of future data (162) based on a respective current data (152), the method further comprising: For each time series prediction (22) of the plurality of time series predictions (22) requested by the time series prediction query (20), simultaneously: the data processing hardware (144) training a plurality of models (212) for each time series prediction (22); the data processing hardware (144) determining which model (212) of the plurality of models (212) best fits the respective time series prediction (22); and the data processing hardware (144) predicting the future data (162) based on the determined best-fit model (212) and the respective current data (152), the method further comprising: the data processing hardware (144) returning to the user (12) the predicted future data (162) for each of the plurality of time series predictions (22) requested by the time series prediction query (20).
2. The method (600) of claim 1 , wherein the time series forecast queries (20) include only a single query (20).
3. 3. The method (600) of claim 2, wherein the single query (20) comprises a Structured Query Language (SQL) query (20).
4. 4. The method (600) of claim 2 or 3, wherein the single query (20) includes references to three columns (300) of a table (158).
5. The three columns (300) of the table (158) are: a first column (300a) containing timestamp data; a second column (300b) containing said current data (152); and a third column (300c) comprising time series forecast identification data.
6. The method (600) of any one of claims 1 to 5, wherein each model (212) of the plurality of models (212) for each respective time series prediction (22) comprises an autoregressive integrated moving average model (212).
7. 7. The method of claim 6, wherein training the plurality of models comprises performing hyper-parameter tuning.
8. The method (600) of any one of claims 1 to 7, wherein forecasting the future data (162) comprises modeling seasonal effects.
9. The method (600) of any one of claims 1 to 8, wherein predicting the future data (162) comprises modeling holiday effects.
10. The method (600) of any one of claims 1 to 9, wherein predicting the future data (162) comprises modeling drift.
11. The method (600) of any one of claims 1 to 10, wherein predicting the future data (162) comprises performing anomaly detection (518).
12. The method (600) of any one of claims 1 to 11, wherein determining which model (212) of the plurality of models (212) best fits the respective time series forecast (22) comprises determining which model (212) has a lowest Akaike Information Criterion (AIC).
13. A system (100), comprising: Data processing hardware (144); and memory hardware (146) in communication with the data processing hardware (144), the memory hardware (146) storing instructions that, when executed on the data processing hardware (144), cause the data processing hardware (144) to perform operations, the operations including: receiving a time series prediction query (20) from a user (12), the time series prediction query (20) requesting the data processing hardware (144) to perform a plurality of time series predictions (22), each time series prediction (22) being a prediction of future data (162) based on a respective current data (152), the operations further comprising: For each time series prediction (22) of the plurality of time series predictions (22) requested by the time series prediction query (20), simultaneously: training a plurality of models (212) for each time series prediction (22); determining which model (212) of the plurality of models (212) best fits the respective time series prediction (22); and predicting the future data (162) based on the determined best-fit model (212) and the respective current data (152), the operations further comprising: and returning the predicted future data (162) to the user (12) for each of the plurality of time series predictions (22) requested by the time series prediction query (20).
14. The system (100) of claim 13, wherein the time series forecast queries (20) include only a single query (20).
15. 15. The system (100) of claim 14, wherein the single query (20) comprises a Structured Query Language (SQL) query (20).
16. 16. The system (100) of claim 14 or 15, wherein the single query (20) includes references to three columns (300) of a table (158).
17. The three columns (300) of the table (158) are: a first column (300a) containing timestamp data; a second column (300b) containing said current data (152); and a third column (300c) comprising time series forecast identification data.
18. Each model (212) of the plurality of models (212) for each respective time series prediction (22) The system (100) of any one of claims 13 to 17, wherein 12) comprises an autoregressive integrated moving average model (212).
19. 20. The system of claim 18, wherein training the plurality of models comprises performing hyper-parameter tuning.
20. The system (100) of any one of claims 13 to 19, wherein forecasting the future data (162) includes modeling seasonal effects.
21. The system (100) of any one of claims 13 to 20, wherein predicting the future data (162) comprises modeling holiday effects.
22. The system (100) of any one of claims 13 to 21, wherein predicting the future data (162) comprises modeling drift.
23. The system (100) of any one of claims 13 to 22, wherein predicting the future data (162) comprises performing anomaly detection (518).
24. The system (100) of any one of claims 13 to 23, wherein determining which model (212) of the plurality of models (212) best fits each time series (410) comprises determining which model (212) has a lowest Akaike Information Criterion (AIC).
Citation Information
Patent Citations
Inventory control system, inventory control method and program
JP2016044029A
Prediction system, prediction method, and prediction program
JP2016099738A
Fluctuation forecasting system, inventory management system, program, storage medium
JP4981976B1
Collection of Measurements of Affective Response for Generation of Crowd-Based Results
US20160300252A1
Predictive analytics with stream database
US20170193371A1