INTEGRATING SCHEDULED FUTURE EVENTS INTO TRAINING OF TIME SERIES FORECASTING MODEL

In various embodiments, a time series forecasting model can take into account scheduled (or high-confidence) future events into training of a time series forecasting model. During model training, such future event data can be integrated with data describing past events, so as to improve the accuracy of the model in generating forecasts. By taking into account such scheduled (or high-confidence) future events, forecasting of unscheduled future events may be improved.

TECHNICAL FIELD

The present document relates to systems and methods for automatically forecasting a time series representing future events.

BACKGROUND

Time series forecasting is a process wherein time series data may be analyzed using various techniques such as statistics, modeling, and/or machine learning, so as to generate forecasts (or predictions) about future events and/or trends. It can be an important function in many contexts, such as for example in operating financial and human resources (HR) departments or businesses. In general, time series forecasting is performed using information about past events as input.

In many situations, however, certain highly-likely future events are known in advance. For example, in businesses where people make reservations or buy tickets in advance, future demand may be relatively well-known. For example, in an airline business, many customers book their flights a few months prior to travel, thus allowing predictions about passenger load to be made in advance. In cash flow forecasting systems, there may be user-foreseen future cash inflows and outflows. Similarly, other contexts exist in which highly-likely future events may be known in advance.

SUMMARY

In various embodiments, a time series forecasting model can take into account scheduled (or high-confidence) future events into training of a time series forecasting model. In at least one embodiment, during model training, such data describing scheduled future events may be integrated with data describing past events, so as to improve the accuracy of the model in generating forecasts.

By taking into account such scheduled (or high-confidence) future events, the techniques described herein may provide improved forecasting of unscheduled future events, as well as demand, yield, capacity, load, staffing, and/or the like. Forecasts may be aggregated at any desired level or group of individuals, including for example, a team, department, organization, company, and/or the like.

By integrating scheduled (or high-confidence) future events into a forecasting model and taking event booking patterns into consideration, the described system can make forecasts more accurately.

Further details and variations are described herein.

DETAILED DESCRIPTION OF THE EMBODIMENTS

In various embodiments, as described in more detail herein, a time series forecasting system may integrate scheduled future event data with historical event data, so as to improve accuracy of forecasts for unscheduled future events.

In some embodiments, one or more components, as shown and described below in connection withFIGS.1and2, may be used to implement the system and method described herein. In at least one embodiment, such components may be implemented in a cloud computing-based client/server architecture, using, for example, Amazon Web Services, an on-demand cloud computing platform available from Amazon.com, Inc. of Seattle, Washington. Therefore, for illustrative purposes, the system and method are described herein in the context of such an architecture. One skilled in the art will recognize, however, that the systems and methods described herein may be implemented using other architectures, such as for example a standalone computing device rather than a client/server architecture.

Further, the functions and/or method steps set forth herein may be carried out by software running on one or more of the device101, client device(s)108, server(s)110, and/or other components. This software may optionally be multi-function software that may be used to retrieve, store, manipulate, and/or otherwise use data stored in data storage devices such as data store106, and/or to carry out one or more other functions.

For illustrative purposes, the system is described in the context of forecasting unscheduled future leaves of absence for employees of a company, based on historical trends and further based on scheduled future leaves of absence. However, one skilled in the art will recognize that the described techniques can be used for forecasting other types of unscheduled future events. For example, the described techniques can be used for forecasting expected load or demand for items such as airline tickets, tickets for concerts or sporting events, restaurant reservations, and/or appointments for hair stylists, doctors, therapists, and/or the like.

Another example of an application of the described techniques is to forecast cash flow based on historical trends and further based on high-confidence future income and/or expenditures.

Definitions and Concepts

For clarity, the description presented herein may refer to mechanisms for predicting/forecasting unscheduled future events; however, the techniques described herein can be applied in various other contexts as well, and are not limited to making forecasts as to unscheduled future events. Rather the system can be applied to generate forecasts as to demand, yield, capacity, load, staffing, and/or the like. Thus, references to predicting or forecasting unscheduled future events, or simply “events”, are understood to apply to any type of forecasts or predictions that can be made in accordance with the techniques described herein. Examples include, without limitation, airline tickets, concert tickets, demand for services or appointments for hair stylists, doctors, restaurants, and/or the like.

For purposes of the description herein, a “user”, such as user100referenced herein, may be an individual, enterprise, or other group, which may optionally include one or more users. A “data store”, such as data store106referenced herein, may be any device capable of digital data storage, including any known hardware for nonvolatile and/or volatile data storage. A collection of data stores106may form a “data storage system” that can be accessed by multiple users. A “computing device”, such as device101and/or client device(s)108, may be any device capable of digital data processing. A “server”, such as server110, may be a computing device that provides data storage, either via a local data store, or via connection to a remote data store. A “client device”, such as client device108, may be an electronic device that communicates with a server, provides output to a user, and accepts input from a user.

An “entity” may be a stakeholder, customer, company, association, organization, and/or the like, or an agent for any of these.

An “event” may be any occurrence, expected occurrence, instance of demand or supply, appointment, encounter, meeting, entertainment event, sports event, purchase of a good or service, delivery, resource consumption or provision, and/or the like. An event may be associated with a particular moment in time, or a time period (duration) of any length, or it may not be associated with any particular time period or moment. An event may be associated with one or more specific place(s), or it may not be associated with any specific place. One example of an event is an employee leave of absence.

A “scheduled event” (or “scheduled future event”) may be an event that has been booked or scheduled for some time in the future, or an event that is known will take place in the future with some relatively high degree of confidence. Thus, the time when the event is scheduled may thus be in advance of the time of the event itself (the “event occurrence time” or “event time”); the length of time between the time when the event is scheduled and the event occurrence time may be any length, from moments to weeks to months or even more. The term “scheduled event” is used herein to apply to any future event that is known will take place in the future with some relatively high degree of confidence (i.e., a “high-confidence future event”), and is therefore not intended to be limited to events that are explicitly scheduled by a user or other entity.

An “unscheduled event” (or “unscheduled future event”) may be an event that takes place at some time but is not known in advance. In at least one embodiment, the techniques described herein provide mechanisms for forecasting, or predicting, unscheduled events based on patterns of past events in combination with scheduled future events.

A “past event” (or “historical event”) may be an event that has occurred in the past (i.e., the event occurrence time is in the past).

A “model” may be a predictive model, including a machine learning model or any other type of model that can be implemented in hardware, software, and/or any combination therefore. The model may be a predictive model which may be trained using training data as described herein. Training mechanisms may use techniques that are known in the art. Once trained, the model may be used for generating forecasts (predictions) as to unscheduled future events, as described in more detail herein.

System Architecture

According to various embodiments, the systems and methods described herein may be implemented on any electronic device or set of interconnected electronic devices, each equipped to receive, store, and present information. Each electronic device may be, for example, a server, desktop computer, laptop computer, smartphone, tablet computer, and/or the like. As described herein, some devices used in connection with the systems and methods described herein may be designated as client devices, which may be generally operated by end users. Other devices may be designated as servers, which generally conduct back-end operations and communicate with client devices (and/or with other servers) via a communications network such as the Internet. In at least one embodiment, the techniques described herein may be implemented in a cloud computing environment using techniques that are known to those of skill in the art.

In addition, one skilled in the art will recognize that the techniques described herein may be implemented in other contexts, and indeed in any suitable device, set of devices, or system capable of interfacing with existing enterprise data storage systems. Accordingly, the following description is intended to illustrate various embodiments by way of example, rather than to limit scope.

Referring now toFIG.1, there is shown a block diagram depicting a hardware architecture that may be used for practicing the described system, according to one embodiment. Such an architecture may be used, for example, for implementing the techniques of the system in a computer or other device101. Device101may be any electronic device.

In at least one embodiment, device101may include a number of hardware components that are well known to those skilled in the art. Input device102may be any element that receives input from user100, including, for example, a keyboard, mouse, stylus, touch-sensitive screen (touchscreen), touchpad, trackball, accelerometer, microphone, or the like. Input may be provided via any suitable mode, including for example, one or more of: pointing, tapping, typing, dragging, and/or speech. In at least one embodiment, input device102may be omitted or functionally combined with one or more other components.

Data store106may be any magnetic, optical, or electronic storage device for data in digital form; examples include read-only memories (ROMs), random access memories (RAMs), flash memory, magnetic or solid state drives, or the like. In at least one embodiment, data store106may store information that may be utilized and/or displayed according to the techniques described below. Data store106may be implemented in a database or using any other suitable arrangement. In another embodiment, data store106may be stored elsewhere, and data from data store106may be retrieved by device101when needed for processing and/or presentation to user100. Data store106may store one or more data sets, which may be used for a variety of purposes and may include a wide variety of files, metadata, and/or other data.

In at least one embodiment, data store106may store event data, appointment data, forecasts, predictions, historical data, and/or the like. In at least one embodiment, such data may be stored at another location, remote from device101, and device101may access such data over a network, via any suitable communications protocol.

In at least one embodiment, data store106may be organized in a file system, using well known storage architectures and data structures, such as relational databases. Examples include MySQL and PostgreSQL. Appropriate indexing may be provided to associate data elements in data store106with each other. In at least one embodiment, data store106may be implemented using cloud-based storage architectures such as Amazon S3 and/or Cloudflare.

Data store106may be local or remote with respect to the other components of device101. In at least one embodiment, device101may be configured to retrieve data from a remote data storage device when needed. Such communication between device101and other components may take place wirelessly, by Ethernet connection, via a computing network such as the Internet, via a cellular network, or by any other appropriate communication systems.

In at least one embodiment, data store106may be detachable in the form of a CD-ROM, DVD, flash drive, USB hard drive, and/or the like. Data store106may include multiple stores for redundancy, backup, sharding, and/or scalability. Information may be entered from a source outside of device101into a data store106that may be detachable, and later displayed after the data store106is connected to device101. In another embodiment, data store106may be fixed within device101.

In at least one embodiment, data store106may be organized into one or more well-ordered data sets, with one or more data entries in each set. Data store106, however, may have any suitable structure. Accordingly, the particular organization of data store106need not resemble the form in which information from data store106is displayed to user100on display screen103. In at least one embodiment, an identifying label may also be stored along with each data entry, to be displayed along with each data entry.

Display screen103may be any element that displays information such as text and/or graphical elements. In particular, display screen103may present a user interface for entering, viewing, configuring, selecting, editing, and/or otherwise interacting with events and/or forecasts as described herein. In at least one embodiment where only some of the desired output may be presented at a time, a dynamic control, such as a scrolling mechanism, may be available via input device102to change which information is currently displayed, and/or to alter the manner in which the information is displayed.

Processor104may be a conventional microprocessor for performing operations on data under the direction of software, according to well-known techniques. Memory105may be random-access memory having a structure and architecture as are known in the art, for use by processor104in the course of running software.

A communication device107may communicate with other computing devices through the use of any known wired and/or wireless protocol(s). For example, communication device107may be a network interface card (“NIC”) capable of Ethernet communications and/or a wireless networking card capable of communicating wirelessly over any applicable standards such as, for example, IEEE 802.11. Communication device107may be capable of transmitting and/or receiving signals to transfer data and/or initiate various processes within and/or outside device101.

Referring now toFIG.2, there is shown a block diagram depicting a hardware architecture in a client/server environment, according to one embodiment. Such an implementation may use a “black box” approach, whereby data storage and processing may be done completely independently from user input/output. An example of such a client/server environment may be a web-based implementation, wherein client device108runs a browser that provides a user interface for interacting with web pages and/or other web-based resources from server110. Items from data store106may be presented as part of such web pages and/or other web-based resources, using known protocols and languages such as Hypertext Markup Language (HTML), Cascading Style Sheets (CSS), JavaScript, WebAssembly (Wasm), and/or the like.

Client device108may be any electronic device incorporating input device102and/or display screen103, such as a desktop computer, laptop computer, cellular telephone, smartphone, handheld computer, tablet computer, kiosk, connected television, game system, wearable device, or the like. Any suitable type of communications network109, such as the Internet, may be used as the mechanism for transmitting data between client device108and server110, according to any suitable protocols and techniques. In addition to the Internet, other examples include cellular telephone networks, EDGE, 3G, 4G, 5G, long term evolution (LTE), Session Initiation Protocol (SIP), Short Message Peer-to-Peer protocol (SMPP), SS7, Wi-Fi, Bluetooth, ZigBee, Hypertext Transfer Protocol (HTTP), Secure Hypertext Transfer Protocol Secure (HTTPS), Transmission Control Protocol/Internet Protocol (TCP/IP), and/or the like, and/or any combination thereof. In at least one embodiment, client device108transmits requests for data via communications network109, and receives responses from server110containing the requested data. Such requests may be sent via HTTP as remote procedure calls or the like.

In one implementation, server110may be responsible for data storage and processing, and may incorporate data store106. Server110may include additional components as needed for retrieving data from data store106in response to requests from client device108.

As described above in connection withFIG.1, data store106may be organized into one or more well-ordered data sets, with one or more data entries in each set. Data store106, however, may have any suitable structure, and may store data according to any organization system known in the information storage arts, such as databases and other suitable data storage structures. As inFIG.1, data store106may store event data, appointment data, forecasts, predictions, historical data, and/or the like; alternatively, such data may be stored elsewhere (such as at another server) and retrieved as needed.

In addition to or in the alternative to the foregoing, data may also be stored in a data store106that may be part of client device108. In some embodiments, such data may include elements distributed between server110and client device108and/or other computing devices in order to facilitate secure and/or effective communication between such devices.

As discussed above in connection withFIG.1, display screen103may be any element that displays information such as text and/or graphical elements. Various user interface elements, dynamic controls, and/or the like may be used in connection with display screen103.

As discussed above in connection withFIG.1, processor104may be a conventional microprocessor for use in an electronic device to perform operations on data under the direction of software, according to well-known techniques. Memory105may be random-access memory, having a structure and architecture as are known in the art, for use by processor104in the course of running software. A communication device107may communicate with other computing devices through the use of any known wired and/or wireless protocol(s), as discussed above in connection withFIG.1.

In one embodiment, some or all of the system may be implemented as software written in any suitable computer programming language, whether in a standalone or client/server architecture. Alternatively, some or all of the system may be implemented and/or embedded in hardware.

Notably, multiple client devices108and/or multiple servers110may be networked together, and each may have a structure similar to those of client device108and server110that are illustrated inFIG.2. The data structures and/or computing instructions used in the performance of methods described herein may be distributed among any number of client devices108and/or servers110. As used herein, “system” may refer to any of the components, or any collection of components, fromFIGS.1and/or2, and may include additional components not specifically described in connection withFIGS.1and2.

In some embodiments, data within data store106may be distributed among multiple physical servers. Thus, data store106may represent one or more physical storage locations, which may communicate with each other via the communications network and/or one or more other networks (not shown). In addition, server110as depicted inFIG.2may represent one or more physical servers, which may communicate with each other via communications network109and/or one or more other networks (not shown).

In at least one embodiment, some or all components of the system may be implemented in software written in any suitable computer programming language, whether in a standalone or client/server architecture. Alternatively, some or all components may be implemented and/or embedded in hardware.

In at least one embodiment, the system may run a predictive model that may be trained and then used to forecast future events. As discussed in further detail below, the model may be trained using a combination of past events and scheduled future events, so as to improved predictive accuracy. In at least one embodiment, the model may run on any suitable hardware architecture, including for example that shown inFIG.1or2.

Overview

In at least one embodiment, the techniques described herein can be used in connection with known time series forecasting models which may include well known statistical models such as autoregressive integrated moving average (ARIMA) models and/or advanced deep learning models such as a Temporal Fusion Transformer (TFT). Conventionally, such models only use past event data to generate a forecast. The techniques described herein provide mechanisms for improving the accuracy of forecasts by taking into account scheduled future events (along with past events) in generating forecasts regarding unscheduled future events. More specifically, the described system and method may incorporate such scheduled future events (along with past events) in the training of a time series forecasting model.

Referring now toFIG.11, there is shown a graph1100depicting an example of a distribution of the number of days in advance for scheduling leaves of absence. In at least one embodiment, the techniques described herein are able to forecast unscheduled future events, taking into account not only past events but also future events that have been scheduled in the past.

Software Architecture

Referring now toFIG.3, there is shown a block diagram depicting a software architecture300for implementing the techniques described herein according to one embodiment. Software architecture300may be implemented on any suitable hardware architecture, including, for example, those shown inFIGS.1and/or2. The various elements depicted inFIG.3may be implemented on various hardware components and may be distributed in any suitable fashion among those components; such components may include, for example, client device(s)108, server(s)110, memory105, data store(s)106, processor(s)104, input device(s)102, display screen(s)103, and/or the like, as may be depicted inFIGS.1and/or2. One skilled in the art will recognize that software architecture300may alternatively be implemented on other hardware architectures and/or configurations, without limitation.

Model training/inference data generator302may extract data from stored production event data301. Using the extracted data, model training/inference data generator302may generate inference data303. Inference data303may include past event data and scheduled future event data, and may take the form of one or more feature matrix401, as described in more detail below.

Model training/inference data generator302may also generate model targets that may be stored as training data304. Training data304may include multiple feature matrices401and targets across a training period. Notably, training data304may include any number of feature matrices401corresponding to different historical periods, whereas inference data303generally only includes one feature matrix401to predict the future.

Model training component305may then extract and use training data304to train the model generated by model training/inference data generator302. Training may be performed using any known techniques for training a predictive model, as may be known in the art.

Inference/forecasting module306may then use the trained model (received from model training component305), together with inference data303, to generate forecasts. Such forecasts (also referred to as predictions) may then be output, for example via user interface307, which may be presented on display screen(s)103or via any other output device.

In various embodiments, production event data301, inference data303, and/or training data304may be stored in any data store(s)106or in any other suitable location, either separately or in any combination.

Model Structure

Referring now toFIG.4, there is shown a block diagram depicting an example of a model structure400for implementing the techniques described herein, according to one embodiment. In at least one embodiment, time series forecasting model402may be any type of predictive model, such as a multi-label deep learning regression model and/or any other machine learning model. A two-dimensional feature matrix401(described in more detail below) may be directly supplied to model402; model402may then forecast target events (such as unscheduled future events) based on information from feature matrix401. As described in more detail herein, by using feature matrix401, model402can learn from patterns associated with past (historical) events as well as patterns associated with scheduled future events. In this manner, the system is able to provide greater accuracy in forecasting future events before they are scheduled, such as for example leaves of absence for employees.

In at least one embodiment, model402may include a Long Short-Term Memory (LSTM) layer403that may be capable of learning long-term dependencies among time steps in a time series. In at least one embodiment, model402may also include fully connected layer404that receives information from LSTM layer403and generates output405including predicted future events406.

Referring now toFIG.10, there is shown a set of flow diagrams depicting different approaches for a multi-step forecasting problem, according to various embodiments. In each flow diagram, inputs1003provide data for training model402, and outputs (targets)1004represent forecasts of future events that may be generated by model402.

In at least one embodiment, a recursive approach may be used for generating model402, as shown in flow diagram1000. For each step, a one-step predicted value may be used as an input feature in prediction of the next step. This may be repeated recursively until model402predicts the final step. Thus, for example, data generated for one time period may be used as input for the next time period. In such an approach, the same single model402may be used to generate forecasts for all future periods.

In another embodiment, a direct approach may be used, as shown in flow diagram1001, wherein multiple different models402A,402B may be developed for generating forecasts for different periods. Each model402A,402B may be responsible for a single period. The same features may be shared across all models402A,402B, but the model targets may be different. By performing separate modeling for each period, such an approach may address some drawbacks of the recursive approach, for example by avoiding undesirable propagation of prediction error from one period to another. In at least one embodiment, the direct approach may be implemented in connection with a gradient boosting tree.

In yet another embodiment, a multiple output approach may be used, as shown in flow diagram1002. In such an approach, model402may capture stochastic dependency across target values1004, such as correlation among targets in different steps, thus providing advantages over the direct approach.

Method

Referring now toFIG.5, there is shown a flow diagram depicting a method500for training and using a predictive model, according to one embodiment. As described herein, method500may take into account past event data as well as scheduled future event data in training the model and/or as input to the trained model. Method500may be implemented in software running on any suitable hardware architecture, such as those depicted inFIGS.1and/or2, and may be implemented using a software architecture and model structure as depicted inFIGS.3and/or4. Alternatively, method500may be implemented in any other suitable device or system and/or using any other suitable hardware and/or software architecture.

Method500begins590. Training data may be generated or obtained501. In at least one embodiment, the training data may include data describing past events and/or scheduled future events. In this context and elsewhere herein, “scheduled future events” may include any future event(s) for which there is a high degree of confidence that the event(s) will occur. The training data may be generated by a component such as module302shown inFIG.3.

The training data may be provided502to a model training module such as module305shown inFIG.3. Using the past event data and scheduled future event data in the training data, model training module305may generate a feature matrix, such as feature matrix401shown inFIG.4. Feature matrix401may then be used to train504a predictive model, such as time series forecasting model402, using model training techniques that are known in the art.

Once model402has been trained, it can be used to generate forecasts of unscheduled future events. Inference data303may be generated and/or obtained505; such data may include past event data and scheduled future event data, and may take the form of feature matrix401. Model402may then use inference data303to generate506forecasts of unscheduled future events. The generated forecasts may then be output507, for example via a user interface307presented on display screen103of device101or client device108. Method500then ends599.

In at least one embodiment, each iteration of training and validation of time series forecasting model may be performed using a particular target point in time, referred to as t0. Conventionally, only data prior to t0is used to train a model, and the performance of the model can be tested on subsequent known points in time (referred to as t1, t2, and the like). According to the techniques described herein, the system and method may integrate scheduled future events (i.e., events scheduled prior to t0that occur subsequent to t0) into model training, without invalidating the testing process (that is, without letting the model “cheat” and simply return values from after t0).

In at least one embodiment, the system and method may define a two-dimensional time series, with one axis indicating the event occurrence time and another axis indicating the time at which each event is scheduled. The target and features of the model may be designed so that the model can be trained using a feature matrix based on this two-dimensional dataset.

Time Series Example

Referring now toFIG.6, there is shown an example of a two-dimensional time series600, which can be used as the basis of a feature matrix401for training time series forecasting model402. X-axis601indicates event occurrence time (indicated in the example as times t−10 through t10) and y-axis602shows the time at which each event is/was scheduled. In the example, ten target events603are depicted, each corresponding to a different time t1through t10. Feature matrix401is input to be used in training model402, while target events603are those which model402is seeking to forecast.

For illustrative purposes, it can be assumed that t0represents the current time, and that it is desired to predict unscheduled future events (target events603) that have an event occurrence time from t1to t10. In this example, data available for the forecast may include data extending back to t−10. Target events603represent events that are to take place in the future, specifically from t1to t10, but have not been scheduled as of t0. Thus, for example:t1target event(s) represents one or more event(s) that will happen at t1but have not been scheduled as of t0;t2target event(s) represents one or more event(s) that will happen at t2but have not been scheduled as of t0;etc.

In at least one embodiment, model402may predict target events603(including future target events and/or historical target events) based on a combination of past events and scheduled future events, which have been used to train model402via feature matrix401. In at least one embodiment, feature matrix401may represent all available event data scheduled before the start of the forecasting period t0. Feature matrix401may be used as an input for model402. It may include scheduled future events with event occurrence times from t1to t10that were scheduled before t1, in addition to past events with event occurrence times from t−10 to t0. In addition, matrix401may also contain information about when each event is scheduled (represented by y-axis602inFIG.6). Such additional information may help model402to achieve better accuracy over conventional time-series models.

Predicted target events603may be added to previously scheduled events for the period (t1, t2, etc.), and the aggregated values may then be used to generate a forecast, as follows:t1forecast=t1prediction+events that happen at t1and are scheduled before t1t2forecast=t2prediction+events that happen at t2and are scheduled before t1. . . .

Referring now toFIG.9, there is shown a set of graphs901depicting examples of time series for leaves of absences for various entities, according to one embodiment. In at least one embodiment, the system may generate one model for each entity (such as a company). Alternatively, the system may use a global model for all entities (companies), which may be trained on a data set that includes all entities but may still learn individual time series patterns for each entity. By using such an approach, the system may cross-learn shared patterns across entities, which may result in improved forecasting performance.

Referring now toFIG.7, there is shown a graph series700depicting an example of an application of the techniques described herein to generate forecasts for unscheduled leaves of absence based on previously scheduled leaves of absence, according to one embodiment. In this example, the current date is ½. A separate graph701is shown for each week from 12/12 through ½, including scheduled future (and past) leaves of absence702and forecast (unscheduled) future leaves of absence703. Each scheduled future (and past) leave of absence702and forecast (unscheduled) future leave of absence703is associated with a start date and a duration.

Using the techniques described herein, unscheduled future leaves of absence703may be forecast (predicted) based on patterns of previous leaves of absence as well as patterns of already-scheduled future leaves of absence. Thus, in the depicted example, five unscheduled future leaves of absence703may be forecast (predicted), including:a five-day leave of absence703starting on ½;a seven-day leave of absence703starting on 1/9;a four-day leave of absence703starting on 1/16;a three-day leave of absence703starting on 1/23; anda two-day leave of absence703starting on 1/30.

User Interface

As described above, forecasts (predictions) may be output via any suitable user interface307, which may be presented on display screen(s)103or via any other output device. Referring now toFIG.8, there is shown an example800of a user interface307that may be used for viewing and scheduling leaves of absences for individuals, including forecasts, according to one embodiment. Example800may be provided, for example, as the dashboard page of a software application for human resources management, including schedules, tasks, meeting dates, absence balances, and/or the like for various employees.

Referring now toFIG.12, there is shown an example1200of a user interface for presenting predicted leaves of absences in an aggregated manner, according to another embodiment. As shown, the user interface may present aggregate numbers of leaves of absence in a line graph, although other types of visual representation may be used. The user interface shown in example1200includes the following elements:present time1201;aggregate number of past leaves of absence1202at various points in time;aggregate number of scheduled leaves of absence1203at various points in time; andaggregate number of forecast (predicted) leaves of absence1204at various points in time.

The techniques described herein may provide advantages over conventional time-series models that may take into account historical trends but may fail to use scheduled future events in generating forecasts. In various embodiments, the techniques described herein may take into account event booking patterns including events that are scheduled at a time different than the event occurrence time itself. By integrating scheduled (or high-confidence) future events into training of a time series forecasting model, and also taking event booking patterns into consideration, the system and method described herein may provide improved accuracy in forecasting events.

Although the techniques are described in terms of predicting leaves of absence, for example, one skilled in the art will recognize that the techniques may be applied in other contexts. As one example, the described techniques may be applied to cash flow forecasting as well as many other types of forecasting.

The present system and method have been described in particular detail with respect to possible embodiments. Those of skill in the art will appreciate that the system and method may be practiced in other embodiments. First, the particular naming of the components, capitalization of terms, the attributes, data structures, or any other programming or structural aspect is not mandatory or significant, and the mechanisms and/or features may have different names, formats, or protocols. Further, the system may be implemented via a combination of hardware and software, or entirely in hardware elements, or entirely in software elements. Also, the particular division of functionality between the various system components described herein is merely exemplary, and not mandatory; functions performed by a single system component may instead be performed by multiple components, and functions performed by multiple components may instead be performed by a single component.

Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one embodiment. The appearances of the phrases “in one embodiment” or “in at least one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.

Various embodiments may include any number of systems and/or methods for performing the above-described techniques, either singly or in any combination. Another embodiment includes a computer program product comprising a non-transitory computer-readable storage medium and computer program code, encoded on the medium, for causing a processor in a computing device or other electronic device to perform the above-described techniques.

Certain aspects include process steps and instructions described herein in the form of an algorithm. It should be noted that the process steps and instructions may be embodied in software, firmware and/or hardware, and when embodied in software, may be downloaded to reside on and be operated from different platforms used by a variety of operating systems.

The algorithms and displays presented herein are not inherently related to any particular computing device, virtualized system, or other apparatus. Various general-purpose systems may also be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent from the description provided herein. In addition, the system and method are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings described herein, and any references above to specific languages are provided for disclosure of enablement and best mode.

Accordingly, various embodiments include software, hardware, and/or other elements for controlling a computer system, computing device, or other electronic device, or any combination or plurality thereof. Such an electronic device may include, for example, a processor, an input device (such as a keyboard, mouse, touchpad, microphone, and/or any combination thereof), an output device (such as a screen, speaker, and/or the like), memory, long-term storage (such as magnetic storage, solid state storage, and/or the like), and/or network connectivity, according to techniques that may be well known in the art. Such an electronic device may be portable or non-portable. Examples of electronic devices that may be used for implementing the described system and method include: a smartphone, kiosk, server computer, enterprise computing device, desktop computer, laptop computer, tablet computer, consumer electronic device, or the like. An electronic device may use any operating system such as, for example and without limitation: Linux; Microsoft Windows, available from Microsoft Corporation of Redmond, Washington; MacOS, available from Apple Inc. of Cupertino, California; iOS, available from Apple Inc. of Cupertino, California; Android, available from Google, Inc. of Mountain View, California; and/or any other operating system that is adapted for use on the device.

While a limited number of embodiments have been described herein, those skilled in the art, having benefit of the above description, will appreciate that other embodiments may be devised. In addition, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the subject matter. Accordingly, the disclosure is intended to be illustrative, but not limiting, of scope.