Patent Publication Number: US-11645293-B2

Title: Anomaly detection in big data time series analysis

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Patent Application Ser. No. 62/777,887, filed on Dec. 11, 2018, which is incorporated herein in its entirety by reference. 
    
    
     BACKGROUND 
     Anomaly detection in time series is a known problem in the field of computer science, and may be applicable to a range of problems in which time series data are generated and/or collected via observations or measurements of temporal processes. Certain aspects of anomaly detection may rely on data sampled over long time scales compared with sampling intervals between data samples (e.g., measured values that make up the time series data). In such cases, the large statistics afforded by the long-term collection of data may help in a signal-to-noise sense. However, evolutionary trends in the data, or shorter term variation, may be washed out or diluted. The tradeoff between utilizing too little data and too much data may therefore present a challenge to reliable anomaly detection. 
     Among previously proposed approaches to anomaly detection is a so-called Watchmen Anomaly Detection, referred to herein as the WAD algorithm. The WAD algorithm is described in “Monitoring the Network Monitoring System: Anomaly Detection using Pattern Recognition” by Maha Mdini et al., published in May 2017 on pages 983 to 986 of the Proceedings of the IFIP/IEEE Symposium on Integrated Network and Service Management (IM) in Lisbon. 
     SUMMARY 
     Part of the WAD algorithm entails determining a reference model against which time series data may be compared. Although the WAD algorithm has been shown to be a fairly reliable tool for anomaly detection in some cases, the inventor has discovered through various test runs that determination of a reference model in the form of a daily pattern and a corresponding threshold during its learning phase may be improved to yield better accuracy. In particular, the inventor has devised an analytical approach that provides for an improved reference model for use in the WAD algorithm. 
     Accordingly, the present disclosure addresses the need for an improved reference model determination, and provides techniques for achieving the improvement. 
     A first example embodiment may involve a computer-implemented method for detecting anomalies in time series data, the method configured for operation in a computing system, and comprising: obtaining training time series data from a production database, the training time series data spanning an observation time window and comprising a series of values of a metric at regularly-spaced sample points in time, the regular spacing equal to an inter-sample time interval; analyzing the training time series data to determine one of a periodicity or a pseudo-periodicity of the training time series data across a plurality of consecutive, repeating sub-windows that span the observation time window, each equal in size to a reference time period and each spanned by the same number N of sample points of metric values, wherein N is a positive integer greater than one; determining a reference pattern comprising a series of N sample points of reference values spanning the reference time period and separated from one another by the inter-sample time interval, the reference pattern corresponding to a model time series having no anomalies greater than a threshold anomaly with respect to the periodicity or pseudo-periodicity; determining a reference threshold; storing the reference pattern and the reference threshold in a reference database; obtaining runtime time series data from the production database, the runtime time series data spanning a runtime observation widow equal to the reference time period, and comprising runtime values of the metric at N sample points in time, separated from one another by the inter-sample time interval; time aligning the N sample points of the reference pattern with the N sample points of runtime observation window; computing runtime deviations between the runtime values and the reference values of the reference pattern at each of the N time aligned sample points; identifying each of zero or more runtime deviations having an absolute value that exceeds the reference threshold as an anomaly; and graphically displaying each identified anomaly and its corresponding sample time in a display device of the computing system. 
     A second example embodiment may involve a system configured for detecting anomalies in time series data, the system comprising: one or more processors; and memory configured for storing instructions that, when executed by the one or more processors, cause the system to carry out operations including: obtaining training time series data from a production database, the training time series data spanning an observation time window and comprising a series of values of a metric at regularly-spaced sample points in time, the regular spacing equal to an inter-sample time interval; analyzing the training time series data to determine one of a periodicity or a pseudo-periodicity of the training time series data across a plurality of consecutive, repeating sub-windows that span the observation time window, each equal in size to a reference time period and each spanned by the same number N of sample points of metric values, wherein N is a positive integer greater than one; determining a reference pattern comprising a series of N sample points of reference values spanning the reference time period and separated from one another by the inter-sample time interval, the reference pattern corresponding to a model time series having no anomalies greater than a threshold anomaly with respect to the periodicity or pseudo-periodicity; determining a reference threshold; storing the reference pattern and the reference threshold in a reference database; obtaining runtime time series data from the production database, the runtime time series data spanning a runtime observation widow equal to the reference time period, and comprising runtime values of the metric at N sample points in time, separated from one another by the inter-sample time interval; time aligning the N sample points of the reference pattern with the N sample points of runtime observation window; computing runtime deviations between the runtime values and the reference values of the reference pattern at each of the N time aligned sample points; identifying each of zero or more runtime deviations having an absolute value that exceeds the reference threshold as an anomaly; and graphically displaying each identified anomaly and its corresponding sample time in a display device of the system. 
     In a third example embodiment provides an article of manufacture including a non-transitory computer-readable medium, having stored thereon program instructions that, when executed by one more processors of a system for detecting anomalies in time series data, cause the system to carry out operations including: obtaining training time series data from a production database, the training time series data spanning an observation time window and comprising a series of values of a metric at regularly-spaced sample points in time, the regular spacing equal to an inter-sample time interval; analyzing the training time series data to determine one of a periodicity or a pseudo-periodicity of the training time series data across a plurality of consecutive, repeating sub-windows that span the observation time window, each equal in size to a reference time period and each spanned by the same number N of sample points of metric values, wherein N is a positive integer greater than one; determining a reference pattern comprising a series of N sample points of reference values spanning the reference time period and separated from one another by the inter-sample time interval, the reference pattern corresponding to a model time series having no anomalies greater than a threshold anomaly with respect to the periodicity or pseudo-periodicity; determining a reference threshold; storing the reference pattern and the reference threshold in a reference database; obtaining runtime time series data from the production database, the runtime time series data spanning a runtime observation widow equal to the reference time period, and comprising runtime values of the metric at N sample points in time, separated from one another by the inter-sample time interval; time aligning the N sample points of the reference pattern with the N sample points of runtime observation window; computing runtime deviations between the runtime values and the reference values of the reference pattern at each of the N time aligned sample points; identifying each of zero or more runtime deviations having an absolute value that exceeds the reference threshold as an anomaly; and graphically displaying each identified anomaly and its corresponding sample time in a display device of the system. 
     In a fourth example embodiment, a system may include various means for carrying out each of the operations of the first and/or second example embodiment. 
     These, as well as other embodiments, aspects, advantages, and alternatives, will become apparent to those of ordinary skill in the art by reading the following detailed description, with reference where appropriate to the accompanying drawings. Further, this summary and other descriptions and figures provided herein are intended to illustrate embodiments by way of example only and, as such, that numerous variations are possible. For instance, structural elements and process steps can be rearranged, combined, distributed, eliminated, or otherwise changed, while remaining within the scope of the embodiments as claimed. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG.  1    is a conceptual representation of an anomaly detection system  100  in which an anomaly detection algorithm may be implemented in a distributed Big Data environment, in accordance with example embodiments. 
         FIG.  2    is a flow chart of high-level view of an example the anomaly detection process, in accordance with example embodiments. 
         FIG.  3    is a flow chart illustrating an example of data filtering used in an example anomaly detection process, in accordance with example embodiments. 
         FIG.  4    is a flow chart illustrating an example of data aggregation used in an example anomaly detection, in accordance with example embodiments. 
         FIG.  5    is a flow chart illustrating an example of obtaining a correct reference pattern for anomaly detection in an example anomaly detection process, in accordance with example embodiments. 
         FIG.  6    is a flow chart illustrating example generation of reference patterns, in accordance with example embodiments. 
         FIG.  7    is a flowchart illustrating an example of anomaly detection of an example anomaly detection process, in accordance with example embodiments. 
         FIG.  8    is a graph showing an example time series test signal in comparison to an example envelope defined by a corresponding reference pattern and threshold, in accordance with example embodiments. 
         FIG.  9    is a plot showing a curve illustrating an example of time series data that contain anomalies, in accordance with example embodiments. 
         FIG.  10    is a plot illustrating an example of alignment of different reference periods of training time series data, in accordance with example embodiments. 
         FIG.  11    is a plot illustrating a fast Fourier transform of example time series data, in accordance with example embodiments. 
         FIG.  12    is a plot showing an example reference pattern, in accordance with example embodiments. 
         FIG.  13    is a plot showing an example deviation sequence, in accordance with example embodiments. 
         FIG.  14    is a plot showing a magnified view of a section of an example deviation sequence for threshold determination, in accordance with example embodiments. 
         FIG.  15    is a plot illustrating an example of anomaly detection based on a reference pattern and threshold, in accordance with example embodiments. 
         FIG.  16    is a simplified block diagram of an example computing system in which anomaly detection may be implemented, in accordance with example embodiments. 
         FIG.  17    is a flow chart of an example method, in accordance with example embodiments. 
     
    
    
     DETAILED DESCRIPTION 
     Example methods, devices, and systems are described herein. It should be understood that the words “example” and “exemplary” are used herein to mean “serving as an example, instance, or illustration.” Any embodiment or feature described herein as being an “example” or “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or features unless stated as such. Thus, other embodiments can be utilized and other changes can be made without departing from the scope of the subject matter presented herein. 
     Accordingly, the example embodiments described herein are not meant to be limiting. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations. For example, the separation of features into “client” and “server” components may occur in a number of ways. 
     Further, unless context suggests otherwise, the features illustrated in each of the figures may be used in combination with one another. Thus, the figures should be generally viewed as component aspects of one or more overall embodiments, with the understanding that not all illustrated features are necessary for each embodiment. 
     Additionally, any enumeration of elements, blocks, or steps in this specification or the claims is for purposes of clarity. Thus, such enumeration should not be interpreted to require or imply that these elements, blocks, or steps adhere to a particular arrangement or are carried out in a particular order. 
     I. EXAMPLE ANALYTICAL FORMULATION AND IMPLEMENTATION 
     A. Overview 
     Analyzing time series data for anomalies presents a number of challenges when the sources of the data are collectively stored in Big Data distributed file system. Such data may not only be voluminous in terms of the amount of information represented, but also diverse in terms of types or subtypes of data, and the variety of time scales of interest that may be represented. The time scales may apply to sampling intervals between individual time series measurements, collection intervals over which measurements are made or obtained, and periodicities of the samples over possibly multiple periods and/or pseudo-periods. In addition, there can be temporal evolution of periodic trends in the time series data. For example, there may be a persistent period of time series samples, while at the same time an underlying process that is subject to measurements represented in the samples evolves over a time scale much larger than the period. For such situations, long-term statistics that might otherwise enhance computational accuracy could wash dilute or wash out the long-term evolution. These and other factors are addressed by example embodiments of systems and methods for anomaly detection of time series data described herein. 
     As used here, the term “Big Data” refers to the use of advanced data analytics methods to extract useful information from large amounts of data stored in databases. The term Big Data may in particular apply to the use of inductive statistics and concepts to infer laws from large sets of data with low information density to reveal relationships and dependencies, as well as to perform predictions of outcomes and behaviors. By way of example, anomaly detection methods and computer systems disclosed herein are described using an example embodiment deployed on a Big Data Hadoop system. It should be understood that this example implementation is presented for illustrative purposes, and should not be seen a limiting with respect to the described embodiments or alternative embodiments. 
     In accordance with example embodiments, a method of detecting an anomaly in one or more periodic time series may be implemented in a computing device or computing system. By way of example some or all of the example method could be implemented in a software language, such as Java Spark. However, the method could be implemented in other software languages and/or machine instructions. 
     Each time series may reflect temporal variation of a specific metric, such as call attempts in a telecommunications system or financial transactions in a global banking system. The time series may be collectively stored in one Big Data distributed file system. The method may entail steps and operations aimed at accommodating the size and variety of stored data, as well as accounting for a variety of time scales represented in the data. In an example embodiment, a user may engage in the example method through a user interface of the system, causing the system to carry out operations involving configuration of operational parameters of the method, as well as providing the user with analytical results for evaluation and further analyses. 
     More particularly, an example method may entail obtaining user preferences in the form of a set of configuration parameters, and then fixing the value of each configuration parameter according to user preferences. With user preferences set, anomaly detection may then entail detecting an update of at least one the time series in the Big Data distributed file system, and obtaining, for each updated time series, the update from the Big Data distributed file system and a periodic reference pattern from a reference pattern database. As described below, each periodic reference pattern may be generated using an unsupervised pattern recognition algorithm, such as the WAD algorithm. Next a sample-by-sample deviation of each update from its corresponding periodic reference pattern may be determined, followed by comparing each deviation with a corresponding predetermined threshold. Finally signaling an anomaly may be signaled in each time series for which the deviation exceeds the corresponding predetermined threshold. 
     In accordance with example embodiments, the set of configuration parameters may include: a place of storage of the time series in the Big Data distributed file system; an identity of each time series where an anomaly is to be detected; the type of preprocessing, such as filtering and aggregation, to be performed on the time series prior to said anomaly detection steps; a type of mathematical technique, such as percentile or regression analysis, used for determination of a threshold; a type of computation, such as mean value calculation or median value calculation, used for the generation of a periodic reference pattern; a type of computation, such as mean value calculation or median value calculation, used for the generation of a periodic reference pattern; temporal parameters used for the generation of a periodic reference pattern; and a type of mathematical transform, if any, to be used for the generation of a periodic reference pattern. Other and/or additional configuration parameters could be included as well. 
     By way of example, a Big Data distributed file system may be a Hadoop distributed file system or HDFS. However, other types of Big Data distributed files systems could be used as well. In accordance with example embodiments, the periodic reference pattern may span a reference time period equal to the periodicity of the time series data. Non-limiting examples of the period include one day, one week, and one month. These examples could be relevant to monitored events in a telecommunications system, for example. It will be appreciated that example embodiments are not limited by any particular or specific time period specification. 
     In an example embodiment, the unsupervised pattern recognition algorithm may involve the use of a Difference over Minimum or DoM transform. As noted, the one or more time series may reflect the temporal variation of a metric characterizing the behavior of a telecommunications network. However, time series data may represent other temporal process as well. In addition, the predetermined threshold may be time-dependent. In further accordance with example embodiments, the example method may involve correlating several time series to obtain a combined key performance indicator of an operational system. 
     In accordance with example embodiments, a distributed Big Data processing computer system configured to execute the example method as defined above. 
     Also in accordance with example embodiments, a method of detecting an anomaly in a periodic or pseudo-periodic sample time series may be implemented in a computing device or computing system. The periodic or pseudo-periodic sample time series may reflect measured temporal variation of a specific metric over a fixed reference time period after which the specific metric&#39;s temporal variation is known to essentially repeat itself. The sample time series may consist of a series of values of the metric measured or obtained at consecutive sample points in time separated from each other by a regular sample time interval. The example method may entail one phase involving reference model generation, and another phase involving anomaly detection. 
     The reference model generation phase may include operations including obtaining a training time series that represents temporal variation of the specific metric over a length of time, referred to herein as an observation time window, corresponding to an integer multiple of the fixed reference time period. For practical mathematical reasons explained below, the observation time window should span at least three reference time periods. The training times series should consist of a series of values of the metric at consecutive points in time separated by regular sample time interval. In accordance with example embodiments, obtaining the training time series data may also entail filtering and/or aggregating multiple sources of time series data in the Big Data distributed file system. For example, for telecommunications data representing operations relating to network service delivery, filtering could be used to select service type, such as voice call attempts, content streaming requests, or data session setup. Aggregation could include aggregating data over regions or subregions of a network, or aggregating data over service types. These are just a few examples. 
     A next step may entail confirming that the training time series has a periodicity corresponding to the fixed reference time period. A periodic reference pattern based on the training time series may then be generated (or possibly obtained from a database). In accordance with example embodiments, the periodic reference pattern may itself be a reference time series over the fixed reference time period that models anomaly-free behavior of the metric over the fixed reference time period. Generation of the periodic reference pattern is described in more detail below. A reference threshold based on the training time series may also be determined in order to later evaluate deviations between time series data and the periodic reference pattern. 
     In accordance with example embodiments, determination of the reference threshold may entail dividing the training time series into a plurality of consecutive subsets, each subset spanning one fixed reference time period and consisting of a series of N values V 1 , i=1, . . . , N, of the metric at consecutive sample points in time separated by the regular sample time interval, wherein N is a natural number. Again, the number of subsets may be at least three. Next, each subset may be time-aligned with the periodic reference pattern, and at each sample point, a deviation between the metric value and the reference pattern may be computed. Each deviation may then be stored in one or another form of memory. Next, a deviation sequence may be constructed as a sequence of deviations ranked according to deviation size, from smallest to largest. The deviation sequence may then be represented as or fit with a curve, and the slope of the curve estimated as a function of deviation sequence rank. The deviation for which the slope of the curve is largest, while still remaining below a predetermined slope upper limit may then be identified as the reference threshold. In accordance with example embodiments, the slope may be determined using piecewise linear regression. The periodic reference pattern, in the form of a time series of reference points, together with the reference threshold, may finally be stored in a reference model database as a reference model for use in anomaly detection. 
     The anomaly detection phase may include obtaining a runtime time series data to be tested, determining deviations between the runtime time series and the reference model, and identifying any deviation that exceeds the threshold as an anomaly. 
     In accordance with example embodiments, generation of a periodic reference model may entail subdividing training time series data spanning an observation time window into a plurality of subsets, each corresponding to a reference time period over which the training time series exhibits periodicity, and time aligning the subsets with a common reference time. At each sample point of the aligned subsets, a statistical measure of the aligned sample time series values is computed and used to define a reference value of a reference pattern. Further details are presented in the following paragraphs. 
     A training time series is first obtained. The training time series may represent temporal variation of the specific metric over a length of time corresponding to the observation time window, and including an integer number n of the fixed reference time period, again n being at least three in an example embodiment. The training times series may consist of a series of values of the metric at consecutive points in time separated by the regular sample time interval. The periodicity of the training time series may be confirmed, for example by apply a fast Fourier transform (FFT). In another example, confirming periodicity may involve confirming that the average value of the training time series is different from zero. The training time series may then be subdivide into the integer number of consecutive subsets, where each subset spans one fixed reference time period and consists of a series of N values V 1 , i=1, . . . , N, of the metric at consecutive sample points in time separated by the regular sample time interval, wherein N is a natural number. 
     All of the subsets are then time-aligned with a common reference time, such that there are n metric values at each sample point of the time-aligned subsets. At each sample point, a median value M i  is determined from the n metric values. At each sample point the value M i  is taken to be a reference time series value, and the set of M i , i=1, . . . , N, is taken to define the periodic reference pattern. The reference threshold is then determined as described above, and both the periodic reference pattern and the threshold are stored as a reference model in a reference model database. 
     The anomaly detection phase may then be carried out as described above, and further discussed below. 
     In accordance with example embodiments, the fixed reference time period may be seven consecutive days, and in particular one week from Monday to Sunday, or a single day. Other reference time periods may be used as well. The number n may be equal to or greater than three. Again, the specific metric may characterize the behavior of one or more network components and/or one or more network subscribers of a telecommunications network, and the telecommunications network may be a mobile telecommunications network. The regular sample time interval may be one of 1 hour, 15 minutes, or 30 minutes. These values may be appropriate for monitoring certain events in a telecommunications network. Other values could be determined according to a particular application of the example method. 
     The example methods and systems described herein may be used to check for anomalies in any kind of time series that exhibits periodic or pseudo-periodic temporal behavior. This holds irrespective of the kind of metric whose temporal behavior the time series reproduces. The time series may, for example, represent the change in time of a stock market index, the time changes of the temperature of a liquid, or any other kind of metric having a periodic behavior in time. 
     By way of example, the example anomaly detection methods and systems are described herein as applied to traffic data generated by a telecommunications network. In one embodiment, the example anomaly detection methods and systems may be part of a mobile network monitoring system. The traffic data, which is monitored for anomalies, may be any kind of metric that is logged by the mobile network monitoring and analytics system. For example, the example anomaly detection methods and systems may look for anomalies in data contained in Call Data Records or CDRs. In one embodiment, the anomaly detection is performed in real time on data that is continually generated by the mobile telecommunications network. 
     B. Example System and Operation 
       FIG.  1    is a conceptual representation of an anomaly detection system  100  in which an anomaly detection algorithm may be implemented in a distributed Big Data environment, in accordance with example embodiments. As shown, the anomaly detection system  100  includes a production database  104 , an anomaly detection algorithm  102 , configuration tools  106 , a reference pattern database  108 , and an anomaly results database  110 . Anomaly results  112  may be displayed in a display device, which may be part of a computing device or system in which the anomaly detection system  100  is implemented. The illustration in  FIG.  1    is conceptual in the sense that the anomaly detection algorithm  102  and configuration tools  106  are represented as operational components. It should be understood, however, that these elements, as well as the implied display of the anomaly results  112 , are implemented on a computing device or computing system, such as one described below. The purpose of the conceptual illustration is to focus on certain operational and procedural aspects of the example embodiments described herein. 
     The analytical core of the system  100  is the anomaly detection algorithm  102 . In particular, this algorithm may be modeled on the WAD algorithm referred to above. In this sense, the anomaly detection algorithm may include a training phase, in which training time series data are used to generate a reference pattern that models anomaly-free behavior of the time series data. A threshold is also determined during the training phase. The anomaly detection algorithm may also include detection phase, in which deviations between runtime time series data are the reference model are evaluated using the threshold, in order to identify deviations that may be classified or identified as anomalies. While the WAD algorithm may incorporate training and detection phases, example embodiments of the anomaly detection algorithm  102  employed in the system  100  introduce significant improvements that make it more accurate and reliable in recognizing anomalies in time series data. These improvements are particularly advantageous in the modeling anomaly-free reference patterns and determining appropriate thresholds. 
     Another advantage of the system  100  is the capability it provides a user to configure various aspects of operation. In particular, the configuration tools  106 , which may be implemented in a computing device and made available by a user interface, allow a user to set parameters that control filtering and aggregation of data to be used by the anomaly detection algorithm. In addition, parameters may be set that control time frames to be used for sliding time windows, sampling intervals of time series data, and periodicities to consider in the analyses, among other time scales. 
     In example embodiment, the anomaly detection algorithm  102  may be embedded in a Big Data environment. Operationally, anomaly detection algorithm  102  may fetch its data inputs from the production database  104 . This database may for example contain data characterizing the traffic on a mobile telecommunications network, though other types of time series data may be stored. 
     The configuration tools  106  may enable a user to fix the values of a set of configuration parameters of the anomaly algorithm  102 . The anomaly detection algorithm  102  uses a reference pattern database  108  for anomaly detection, and stores results of anomaly detection carried in the anomaly results database  110 . It may also display anomaly results  112  as a graphical representation in a display device. 
     The configuration tool  106  may also allow a user to change various settings of the anomaly detection algorithm  102 . The settings chosen by the user may be stored in a configuration file. A sample configuration file is illustrated in Table 1. 
     
       
         
           
               
             
               
                 TABLE 1 
               
               
                   
               
             
            
               
                 #Databases location 
               
               
                 hiveDatawareHouseURL=/user/hive/warehouse/astellia.db/ 
               
               
                 #Spark generic configuration 
               
               
                 sparkConfParam1=hive.execution.engine:mr 
               
               
                 sparkConfParam2=hive.exec.dynamic.partition.mode:nonstrict 
               
               
                 sparkConfParam3=hive.exec.dynamic.partition:true 
               
               
                 sparkConfParam4=hive.exec.compress.output:true 
               
               
                 #ouptut storage type 
               
               
                 outputType=orc 
               
               
                 #ouptut storage (should be same as hiveDatawareHouseURL) 
               
               
                 outputPath=/user/hdfs_astellia/anomalydetect 
               
               
                 #database name for pattern storage 
               
               
                 patternDatabaseName=anomaly_pattern_hour 
               
               
                 #database name for references of all patterns 
               
               
                 referenceDatabaseName=anomaly_reference 
               
               
                 #granularity of database in input 
               
               
                 timeGranularity=hour 
               
               
                 #pattern recognition periodicity 
               
               
                 patternPeriod=week 
               
               
                 #pattern days for generate (if pattern period is week, should be a multiple 
               
               
                 of 7) 
               
               
                 patternDaysDeep=21 
               
               
                 #optional day to test instead of last partition 
               
               
                 #dayToTest=year=2018/month=4/day=15 
               
               
                 #cube name for input 
               
               
                 inputTableName=data_an_service_hour 
               
               
                 #database name for input cube 
               
               
                 inputDatabaseName=inputDB 
               
               
                 #counters to check for anomaly 
               
               
                 columnToAdd1=active_subs_nb 
               
               
                 columnToAdd2=impacted_subs_nb 
               
               
                 #list of cube dimensions 
               
               
                 inputDimension1=rat 
               
               
                 inputDimension2=sqm_service_id 
               
               
                 inputDimension3=id_saicluster 
               
               
                 #list of group by dimensions for extraction request 
               
               
                 groupByDimension1=id_saicluster 
               
               
                 groupByDimension2=sqm_service_id 
               
               
                 #where clause for cube extraction 
               
               
                 whereClause=id_saicluster=0 and sqm_service_id=1 and rat=0 
               
               
                 #threshold for FFT (periodicity check) 
               
               
                 fftThreshold=93 
               
               
                 #threshold for percentile used for anomaly check 
               
               
                 patternThreshold=99 
               
               
                   
               
            
           
         
       
     
     Using the configuration tool  106 , a user may set parameters and make selections, such as:
         Choose the source of the data that is to be analyzed for anomalies;   Set a system configuration;   Choose the metrics within the data which are to be checked for anomalies;   Choose the kind of filtering and/or aggregation, if any, to be applied to the data prior to the actual anomaly detection;   Define correlations between metrics to obtain a combined key performance indicator;   Choose the type of mathematical technique, such as percentile and/or regression analysis, used for the determination of a threshold used in anomaly detection;   Choose the type of calculation, such as mean value calculation or median value calculation used for the generation of a periodic reference pattern;   Choose the value of temporal parameters used for the generation of a periodic reference pattern;   Choose a type of mathematical transform, if any, to be used for the generation of a periodic reference pattern.       

       FIGS.  2 - 7    are flow charts show example operation of various aspects of the anomaly detection system  100 , showing successive levels of detail.  FIG.  8    illustrates the concept of applying the reference pattern in to a test time series signal to detect anomalies. Each of these figures is discussed below. In accordance with example embodiments, an example method of the present disclosure may be configured to detect anomalies in the time series signal of different metrics. 
       FIG.  2    is a flow chart of high-level view of an example the anomaly detection process, in accordance with example embodiments. 
     By way of example, a use case involving a bank client has five different bank accounts with a specific bank may serve to illustrate operation of the anomaly detection algorithm, including improvements described herein, in the context of a Big Data environment. In accordance with example embodiments, the anomaly detection method of the present disclosure, applied in the illustrative use case, may be used to detect anomalies in the temporal evolution of the balance of each one of the five bank accounts. The temporal evolution of the balance of each bank account may be represented by a time series. These time series may each stored in the production database  104 . Each of these time series may represent one metric that may be analyzed by the anomaly detection method of the present disclosure. In practice, the time series stored in the production database  102  may be continually updated, for example as new transactions occur. 
     The production database  104  may be part of a Big Data distributed file system, such as Hadoop distributed file system (HDFS). 
     Once the user has configured the anomaly detection algorithm  102  using the configuration tools  106 , the process of the example method repeatedly executes a processing loop shown in  FIG.  2   , for example, on an hourly or some other regular basis. The repeating process represented in  FIG.  2    may be applied in series or in parallel to each of possibly multiple sets of time series data, such multiple bank accounts. 
     The loop may initially start at step  202 , which in the example of  FIG.  2    also represents the start of subsequent, regular executions of the loop. From the stating step  202 , the process proceeds to step  204 , which involves retrieving data from the production database  104  for the most recent time window, such as the last one hour partition. More specifically, the latest hourly values of all the metrics stored in the production database  104  may be retrieved in step  204 . The process then proceeds to  206 , in which actual time series signals to be tested are constructed from the raw data retrieved in the last partition. In accordance with example embodiments, time series construction may involve filtering and aggregating the data. The filtering and aggregation may be determined according to configuration parameters previously set using the configuration tools  106 . 
     Next, step  208  involves checking whether, for each time series to be analyzed, there is a matching reference pattern stored in the reference pattern database  108 . If there is no matching reference pattern, the process proceeds to steps  210  and  212 , in which a corresponding reference pattern is generated and stored in the reference pattern database  108 . The checking step  208  may involve determining in an existing pattern is stale or out of date. For example, a configuration parameter may specify that an existing pattern is out of date if it was generated more than a specified time period ago, such as one day or one week. This could be associated with a sliding time window, for example. Including an expiration time for patterns enables pattern generation to accommodate evolution in the time series data. 
     If instead a reference pattern database  108  already contains a matching reference pattern, then the process proceeds to step  214 , in which the matching reference pattern is used to check the time series signal for anomalies. The processing next proceeds to a final step of the loop, step  216 , in which the anomalies found during step  214  are stored in anomaly results database  110 . As indicated by the curved gray arrows in the figure, steps  210  to  216  are carried out for each metric under consideration. 
     Steps  210  and  212  may be considered as corresponding to the learning or training phase, which will be described more in detail below. Steps  214  and  216  may be considered as corresponding to the detection phase, also described in more detail below. 
     The filtering and aggregating carried out in step  206  are show in further detail in  FIGS.  3  and  4   . Specifically,  FIG.  3    is a flow chart illustrating an example of data filtering used in an example anomaly detection process, in accordance with example embodiments, and  FIG.  4    is a flow chart illustrating an example of data aggregation used in an example anomaly detection, in accordance with example embodiments. 
     Referring to  FIG.  3   , the filtering starts at step  302  with retrieving the filter setting selected by a user from the configuration file. 
     At step  304 , a retrieval request may be formulated based on the filter setting. The relevant time period for consideration during anomaly detection may be added to the data retrieval request. For example, the period may be one hour. This means that the data from only the last hour would be retrieved from the production database  104  and be subject to anomaly detection. Other time periods could be specified as well. 
     At step  306 , the relevant data may then be retrieved from the production database  104  based on the retrieval request. 
     In addition to the filtering shown in  FIG.  3   , the data in the production database  104  may also be aggregated to build up the test time series signals, as a further aspect of specifying the to be checked for anomalies. An example of data aggregation is shown in  FIG.  4   . It may be noted that, while filtering is done just at the data retrieval steps, aggregation may be applied multiple time to retrieved data, for example at the start of each counter process. At step  402  the next metric for which to build up the test time series signal may be selected. At the next step  404 , the relevant data are aggregated according to the preferences set stored in the configuration file. As described above, preferences may be set and stored in the configuration file by a user. 
     Once the data have been aggregated, the test time series signal may the built up or constructed in step  406 . Once the time series signal (e.g., time series data) has been constructed, execution depends on whether or not a reference pattern for the selected metric already exists. 
     Specifically, if no reference pattern yet for this metric and at this aggregation level exists yet, the process then proceeds to step  408 , which entails building up a training set that can then be used to generate a reference pattern. As indicated, pattern generation is carried out at step  410 . 
     If instead a reference pattern already exists, it may be retrieved from the reference pattern database  108 , as indicated at step  412 . A relevant threshold may also be retrieved with the pre-existing reference pattern. 
       FIG.  5    next illustrates how the correct reference pattern for a given time series signal may be retrieved from the reference pattern database  108 . In particular,  FIG.  5    is a flow chart illustrating an example of obtaining a correct reference pattern for anomaly detection in an example anomaly detection process, in accordance with example embodiments. 
     The process is initiated at step  502 , which also entails loading of configuration. At step  504 , the last partition of the distributed file system is located, followed at step  506  by determination of the name of the day to which last partition corresponds. The number of days that have passed since the last generation of a reference pattern is next determined at step  508 , and a retrieval key is then generated at step  510 . More generally, the time since the last pattern generation may be measured in any time unit appropriate to the time series and temporal processes and time scales under consideration. Thus, “days since the last pattern generation” is illustrative. For the current example using days, the key, which may be used to identify a unique reference pattern, is a function of the number of days that have passed since the last reference pattern generation day, and also of the nature of the relevant metric and the type of filtering and aggregation done on the data. There may be other possible factors in key generation, as well. 
     The next step,  512 , entails checking whether there is already a reference pattern stored in the reference pattern database  108  that matches the generated key. If not, then a reference pattern first needs to may be generated at step  514 . Note that a failure to find matching pattern includes the possibility of finding an out of date or expired pattern. In accordance with example embodiments, reference patterns may expire after a predetermined amount of time. Further, the predetermined amount of time may be stored in the configuration file. 
     If there is a reference pattern matching the period key in the reference pattern database  108 , the process then goes to steps  516  to  520 . Specifically, the matching reference pattern is fetched from the reference pattern database  108 . Once the reference pattern is retrieved, anomaly detection may be carried out at step  522 . 
       FIG.  6    is a flow chart illustrating example generation of reference patterns, in accordance with example embodiments. The process of reference pattern generation process may be considered a learning or training phase of the anomaly detection algorithm  102 . The first step  602  of the process of  FIG.  6    initiates a test for periodicity of the time series signal to be analyzed. In an example embodiment, this test may entail computing a fast Fourier transform (FFT) of the time series data, as shown at step  604 . By way of example, the test looks for a periodicity of one week, however, the test may search for other periodicities. If the average of the time series is zero, this may generally be taken as an indication that the signal is not periodic. A more rigorous test would be to determine that the maximum value equals zero. Such a determination, if made, would obviate the need for testing with an FFT. In the example of  FIG.  6   , a period is detected, which may entail computation of the period at step  606 , followed by creation of signal segments at step  608 . By way of example, signal segments are created on a granularity of days and hours. As used herein signal segments, or just segments, correspond to a sampling interval between individual data or sample values of a time series. 
     In accordance with example embodiments, a median value is computed per segment at step  610 . More specifically, the time series data used for training or learning may span an observation time window that includes multiple periods of the data, where the period is that determined or confirmed by the FFT. The time series data may then be subdivided into subsets, each spanning one period, also referred to as a reference time period. In accordance with example embodiments, a minimum of three reference periods is used to determine the reference pattern. That is, the observation time window may be at least as long as three periods. The three (or more) subsets of data each include the same number N of sample points, each corresponding to a metric value. The three (or more) subsets may be time-aligned with a common reference time, such that their respective sample points also align. At each time-aligned sample point, there will therefore be three (or more) metric values, one from each subset. The median of the three (or more) metric values is taken at each respective sample point of the time-aligned subsets, and is set to a reference value of the reference pattern at the respective sample point. The set of all median values at all the sample points of the time-aligned subset thereby forms the sample pattern. 
     As described below, use of a median value provides an advantage over a mean value in the WAD algorithm, and is one of the bases for the improvement disclosed herein. An advantage of using the median may be understood by considering a simple example, in which the median of three metric values at a particular sample point is computed. Suppose, by way of example, the three values are 0, 14, and 16. The value of 0 is most likely an anomaly. The median of the three is 14. In contrast, the mean is 10. Thus, the median gives a better estimate of an anomaly-free reference value than does the mean, which is used in the WAD algorithm. 
     At step  612 , distances between the pattern and the training set are determined. Then, at step  614 , test thresholds may be determined using a regression method either instead of or in addition to using a percentile method. This, too, provides an improvement over existing WAD approaches. Further details of threshold determination are described below. 
     Finally, at step  616 , the generated reference pattern and threshold are stored in the reference pattern database  108 . 
       FIG.  7    is a flowchart illustrating an example of anomaly detection of an example anomaly detection process, in accordance with example embodiments. More particularly, once a pattern is generated and stored with the determined threshold, they may be applied in an example embodiment of the anomaly detection algorithm. At step  702 , a test set of the time series data is created. The test set includes data segmented in time, such as days and/or hours. At step  704 , distances between the pattern and the test set are computed. As described in connection with  FIG.  2   , the patterns may be retrieved from the pattern database  108 . At step  706 , the computed distances are compared with the threshold, and those that exceed the threshold are identified as anomalies. Finally, the identified anomalies are stored in the anomaly database  110 . Subsequently, the anomaly data may be retrieved and processed using various visualization applications enabling a user to examine and analyze the anomalies. 
       FIG.  8    is a graph showing an example time series test signal in comparison to an example envelope defined by a corresponding reference pattern and threshold, in accordance with example embodiments. The example time series test signal T is illustrative of time series data that may be analyzed for anomaly detection. By way of example, the time series test signal T is shown to include an anomaly, represented by a sharp, tall peak demarked with a black dot. The graph in  FIG.  8    also shows corresponding reference pattern, which may be visualized as an envelope E surrounding the time series T. The anomaly to be detected here is the large spike in the time series at 3 AM. Also by way of example, the graph shows temporal evolution of the metric corresponding to the time series over 24 hours on Apr. 22, 2018. 
     Example embodiments disclosed herein provide at least four improvements over the WAD algorithm. These may be summarized as follows.
         The use of the median value instead of the mean value during the learning phase of the algorithm to obtain an anomaly free pattern. Using the median value instead of the mean value leads to a more reliable pattern generation that is free of anomalies.   The use of a regression method instead of or in addition to a percentile method for calculating the thresholds. This provides a more accurate and reliable way to identify deviations between time series data and the reference pattern as anomalies.   The ability to generate time-dependent thresholds, where time dependence refers to sample times within a reference pattern. Time-dependent thresholds may be weighted depending on time, and may be computed using standard deviations of the test values used in determining the reference values at each sample point of the reference pattern.   The use of periodicities that most appropriate to the types of time series data under consideration. For example, for telecommunications data, weekly patterns may be better suited than daily patterns for generating reference patterns and identifying anomalies. This may be because weekly patterns allow for the differentiation between weekends and weekdays.       

     As noted above, using the median instead of the mean in determining the pattern allows data that includes anomalies to be included in pattern generation, while at the same time suppressing the influence of anomalous data values in the pattern. The advantage of using periodicities appropriate to the time series data under consideration may be further enhanced by use of a sliding time window. As described below, this allows natural trends in the data over time scales longer than the periodicity to be accommodated without such trends being mistaken as anomalies. Considering the example of telecommunications call traffic that exhibits a weekly period, a natural growth trend in call traffic over the course of one year may induce only a mild effect over the course of, say, a three week sliding time window, such that three weeks of data are sufficient to determine a pattern and identify anomalies during any given three week window. At the same time, advancing the sliding window by one week may be sufficient to observe changes in the pattern, such that the need for generating a new pattern every one or a few weeks may be detected and used to trigger operations to update the pattern and threshold. 
     C. Example Use Case: Call Attempts in a Telecommunications Network 
     The example operations described above in terms of flow charts may be further illustrated by considering a particular application or use case involving call attempts in a telecommunications network. The following discussion refers, in particular, to  FIGS.  9 - 15   . 
     In the example use case, the anomaly detection algorithm may used to detect anomalies in the number of call attempts per hour for a given radio cell of a mobile communications network. The use case presented is based on simulated data. However, there is no loss of generality, and the anomaly detection algorithm may be implemented in an actual operational environment of a telecommunications network. 
     The simulation illustrated by  FIGS.  9  to  15    is based on the following scenario. 
     Call attempts per hour made by mobile subscribers in a radio cell located in Montreal, Canada are monitored during the week from 2 to 8 Jul. 2018. The result of the (simulated) monitoring is shown in  FIG.  9   . Experience shows that metrics such as the number of call attempts in a given cell have a pseudo-periodicity of one week. In other words, the mobile subscribers show more or less the same behavior from one week to the next. For the purposes of the discussion here, a pseudo periodic time series may be considered a time series that exhibits at least approximate periodicity. More precisely, the sample point values may repeat to within a predetermined threshold deviation with an observed and/or measurable period. For the example of call attempt data, a period of one week may be observed, such that the number of call attempts during the same hour of the same day each week is the same to within a threshold. The number need not be identically equal during the same hour of the same day each week; just within the threshold. Of course, any given sample may deviate by more than the threshold. Such a deviation may represent an anomaly if it meets the criteria of the anomaly detection algorithm disclosed herein. 
       FIG.  9    is a plot showing a curve illustrating an example of time series data that contain anomalies, in accordance with example embodiments. During the week shown in the figure, two anomalies have taken place. The first anomaly is referenced by the label A. By way of example, it is an unusual increase in the number of call attempts on Tuesday, July 3 between 3 PM and midnight. This could be caused, for example, by a large number of students that have just left the exam center of a university located in the cell and then start calling their relatives and friends to report on the outcome of the exam. 
     The second anomaly is indicated by the label B. It corresponds to an unusual dip in the number of call attempts on Friday, July 6 during the afternoon. This could be caused, for example, by an evacuation in Montreal affecting the radio cell. During the evacuation, very few people are left in the cell so that very few calls are made. 
     The following discussion explains how the anomaly algorithm of the example embodiments herein may detect the two anomalies A and B. 
     First, the algorithm goes through its reference model generation phase. The reference model generation phase is based on a training time series, which is illustrated by  FIG.  10   , which is a plot illustrating an example of alignment of different reference periods of training time series data, in accordance with example embodiments. The training time series consists of the number of call attempts per hour over a time period of three weeks. In  FIG.  10   , those three weeks are overlaid and time-aligned to visualize the anomalies. The dashed curve shows the number of call attempts for the first week, the dashed-dotted curve the number of call attempts for the second week, and the dotted curve the number of call attempts for the third week. Each week corresponds to one subset of the training time series. 
     In the first subset corresponding to the first week there are evidently, and by way of example, two anomalies, C and D. These are unusual increases in the number of call attempts. The first one is on Monday, whereas the second one is in the night between Saturday and Sunday. 
     The second subset corresponding to the second week does not display any noticeable anomalies. 
     The third subset corresponding to the third week evidently, and also by way of example, has an anomaly referenced E. This anomaly is an unusually low number of call attempts on Thursday. 
     In accordance with example embodiments, the whole training time series spanning the three weeks is subjected to a Fast Fourier (FFT) transform, the result of which is shown in  FIG.  11   . This FFT displays a dominant frequency F, which, in the current example, corresponds to the fixed reference time period of one week. 
     Hence, the training time series of  FIG.  10    can be used to generate the reference model. That is, the periodicity test has confirmed periodicity (or pseudo-periodicity). 
     The next step is to obtain or generate a reference pattern. This is illustrated in  FIG.  12   , which is a plot showing an example reference pattern, in accordance with example embodiments. In particular,  FIG.  12    depicts a reference pattern generated from the three weeks of data shown in  FIG.  10   . As described above, this may be achieved by, for each hour of the week, taking the corresponding value for each of the three curves of  FIG.  10   , and then computing the median value for each of these three values. The resulting reference pattern shown in  FIG.  12    is a time series of median values, representing the anomaly free behavior of the number of call attempts per hour over any given one week of the training data. That is, the reference pattern shows what an anomaly-free week would look like. 
     It is noteworthy that because the algorithm uses the median value instead of the mean value, the reference pattern is not noticeably affected by the anomalies C, D and E shown in  FIG.  10   . 
     Having established the reference pattern, the algorithm may now determine the reference threshold. This is done by comparing each of the three subsets shown in  FIG.  10    with the reference pattern shown in  FIG.  12    and storing the size of each deviation between a subset value and its corresponding value in the reference pattern. In the present example, this results in 7×24×3=504 deviation values. The deviations may then be ranked from smallest to largest, yielding a deviation sequence. The deviation sequence is represented as a curve in  FIG.  13   . That is  FIG.  13    is a plot showing an example deviation sequence, in accordance with example embodiments. 
     Determination of the threshold is made by considering the region of the deviation sequence curve containing the most rapid increase, and indicated in  FIG.  13    by the dashed oval. The magnified portion of  FIG.  13    is shown in  FIG.  14   , which is a plot showing a magnified view of a section of an example deviation sequence for threshold determination, in accordance with example embodiments. 
     Using a piecewise linear regression, the slope of the curve of  FIG.  13    as a function of deviation sequence rank may be estimated. This is illustrated by the lines labeled L in  FIG.  14   . The deviation size within the deviation sequence at which the slope is the largest while still remaining below a predetermined slope upper limit is then set as the reference threshold for the reference model. 
     In the present example, there is a large increase in the slope from rank 25 to rank 28. The slope from rank 27 to 28, is above the predetermined slope upper limit. Accordingly, the reference threshold is set at 6, which is the deviation size at rank 27. 
     Using a slope estimation instead of a percentile method, such as is used in the WAD algorithm, to determine the reference threshold reduces the risk of defining a too high reference threshold. Note that too high a threshold would result in missed anomalies, since the threshold may be considered a tolerance for deviations between time series data and the reference pattern not being anomalies. 
     The reference model having been established, the next step is now to detect the anomalies in the sample time series of  FIG.  9   . This is shown in  FIG.  15   , which is a plot illustrating an example of anomaly detection based on a reference pattern and threshold, in accordance with example embodiments. 
     This is done by subtracting the reference pattern of  FIG.  12    from the sample time series of  FIG.  9   . The result is shown in  FIG.  15   , in which the curve of deviations represents differences between the sample time series and the reference pattern. A corridor labeled H in  FIG.  15    corresponds to the determined reference threshold. It may be seen that the corridor extends six units above and below the horizontal axis. 
     The anomaly detection algorithm may now detect the deviation A as a first anomaly, since it extends above the corridor H. It will also detect the deviation B as a second anomaly, since it extends below the corridor H. Comparison with  FIG.  9    reveals that the anomaly detection algorithm has correctly detected the two anomalies. 
     In accordance with example embodiments, for each reference value of the reference pattern—e.g., each computed median value—a standard deviation may also be computed. The effectively provides an indication of the spread of the individual metric values about the median at each sample point. This allows a distinct threshold to be determined for each sample point of the reference pattern. Such a threshold is referred to herein as a time-dependent threshold. Considering again the corridor H in  FIG.  15   , a time-dependent threshold would result in a corridor of varying width as a function of time across the deviation plot of  FIG.  15   . 
     In an alternative embodiment, the anomaly detection as described above may additionally involve the use of a mathematical transform. One may in particular use the Difference over Minimum or DoM transform. Using a mathematical transform may, however, be considered optional. Using the DoM transform may be advantageous for considering strong variations in the time series. 
     II. EXAMPLE COMPUTING SYSTEM 
       FIG.  16    is a simplified block diagram of an example computing system (or computing device)  1600 . The computing system  1600  may be representative of a component of a Big Data distributed file system, or may be communicatively connected a Big Data distributed file system, for example. The computing system  1600  can be configured to perform and/or can perform one or more acts, such as the acts described in this disclosure. As shown, the computing device  1600  may include processor(s)  1602 , memory  1604 , network interface(s)  1606 , and an input/output unit  1608 . By way of example, the components are communicatively connected by a bus  1610 . The bus could also provide power from a power supply (not shown). 
     Processors  1602  may include one or more general purpose processors and/or one or more special purpose processors (e.g., digital signal processors (DSPs) or graphics processing units (GPUs). Processors  1602  may be configured to execute computer-readable instructions that are contained in memory  1604  and/or other instructions as described herein. 
     Memory  1604  may include firmware, a kernel, and applications, among other forms and functions of memory. As described, the memory  1604  may store machine-language instructions, such as programming code or non-transitory computer-readable storage media, that may be executed by the processor  1602  in order to carry out operations that implement the methods, scenarios, and techniques as described herein. In some examples, memory  1604  may be implemented using a single physical device (e.g., one magnetic or disc storage unit), while in other examples, memory  1604  may be implemented using two or more physical devices. In some examples, memory  1604  may include storage for one or more machine learning systems and/or one or more machine learning models as described herein. 
     In some instances, the computing system  1600  can execute program instructions in response to receiving an input, such as an input received via the communication interface  1606  and/or the user interface  1608 . The data storage unit  1604  can also store other data, such as any of the data described in this disclosure. 
     The communication interface  1606  can allow the computing system  1600  to connect with and/or communicate with another entity according to one or more protocols. In one example, the communication interface  1606  can be a wired interface, such as an Ethernet interface. In another example, the communication interface  1606  can be a wireless interface, such as a cellular or WIFI interface. 
     The user interface  1608  can allow for interaction between the computing system  1600  and a user of the computing system  1600 , if applicable. As such, the user interface  1608  can include, or provide an interface connection to, input components such as a keyboard, a mouse, a touch sensitive panel, and/or a microphone, and/or output components such as a display device (which, for example, can be combined with a touch sensitive panel), and/or a sound speaker. In an example embodiment, the client device  1612  may provide user interface functionalities. 
     The computing system  1600  can also include one or more connection mechanisms that connect various components within the computing system  1600 . For example, the computing system  1600  can include a connection mechanism  1610  that connects components of the computing system  1600 , as shown in  FIG.  16   . 
     Network interface(s)  1606  may provide network connectivity to the computing system  1600 , such as to the internet or other public and/or private networks. Networks may be used to connect the computing system  1600  with one or more other computing devices, such as servers or other computing systems. In an example embodiment, multiple computing systems could be communicatively connected, and example methods could be implemented in a distributed fashion. 
     Client device  1612  may be a user client or terminal that includes an interactive display, such as a GUI. Client device  1612  may be used for user access to programs, applications, and data of the computing device  1600 . For example, a GUI could be used for graphical interaction with programs and applications described herein. In some configurations, the client device  1612  may itself be a computing device; in other configurations, the computing device  1600  may incorporate, or be configured to operate as, a client device. 
     Database  1614  may include storage for input and/or output data, such a production database for storing time series data, a configuration database for storing configuration data, and/or an anomaly results database for storing results the anomaly detection techniques described herein. 
     In some configurations, the computing system  1600  can include one or more of the above-described components and can be arranged in various ways. For example, the computer system  1600  can be configured as a server and/or a client (or perhaps a cluster of servers and/or a cluster of clients) operating in one or more server-client type arrangements, for instance. 
     III. EXAMPLE METHOD 
       FIG.  17    show a flows chart a method  1700  illustrating an example embodiment a method for anomaly detection. The method illustrated by  FIG.  17    may be carried out by, or in the context of, a Big Data distributed file system, which may include one or more a computing devices or systems, such as computing device  1600 . However, the process can be carried out by other types of devices or device subsystems. For example, the process could be carried out by a portable computer, such as a laptop or a tablet device. 
     The embodiments of method  1700  may be simplified by the removal of any one or more of the features shown therein. Further, these embodiments may be combined with features, aspects, and/or implementations of any of the previous figures or otherwise described herein. 
     The example method  1700  may also be embodied as instructions executable by one or more processors of the one or more server devices of the system or virtual machine or container. For example, the instructions may take the form of software and/or hardware and/or firmware instructions. In an example embodiment, the instructions may be stored on a non-transitory computer readable medium. When executed by one or more processors of the one or more servers, the instructions may cause the one or more servers to carry out various operations of the example method. 
     Block  1702  of example method  1700  may involve obtaining training time series data from a production database, the training time series data spanning an observation time window and comprising a series of values of a metric at regularly-spaced sample points in time, the regular spacing equal to an inter-sample time interval. 
     Block  1704  may involve analyzing the training time series data to determine one of a periodicity or a pseudo-periodicity of the training time series data across a plurality of consecutive, repeating sub-windows that span the observation time window, each equal in size to a reference time period and each spanned by the same number N of sample points of metric values, wherein N is a positive integer greater than one. 
     Block  1706  may involve determining a reference pattern comprising a series of N sample points of reference values spanning the reference time period and separated from one another by the inter-sample time interval, the reference pattern corresponding to a model time series having no anomalies greater than a threshold anomaly with respect to the periodicity or pseudo-periodicity. 
     Block  1708  may involve determining a reference threshold. 
     Block  1710  may involve storing the reference pattern and the reference threshold in a reference database. 
     Block  1712  may involve obtaining runtime time series data from the production database, the runtime time series data spanning a runtime observation widow equal to the reference time period, and comprising runtime values of the metric at N sample points in time, separated from one another by the inter-sample time interval. 
     Block  1714  may involve time aligning the N sample points of the reference pattern with the N sample points of runtime observation window. 
     Block  1716  may involve computing runtime deviations between the runtime values and the reference values of the reference pattern at each of the N time aligned sample points. 
     Block  1718  may involve identifying each of zero or more runtime deviations having an absolute value that exceeds the reference threshold as an anomaly. 
     Finally, block  1720  may involve graphically displaying each identified anomaly and its corresponding sample time in a display device of the computing system. 
     In accordance with example embodiments, analyzing the training time series data to determine one of a periodicity or a pseudo-periodicity of the training time series data across the plurality of consecutive, repeating sub-windows may entail computing a fast Fourier transform (FFT) of the training time series data, identifying in the FFT a period equal to the reference time period in the FFT data. In practice, equality may not be exact, but rather to within a pre-determined statistical uncertainty. Additionally or alternatively, periodicity or pseudo-periodicity may be recognized by determining that a computed average value of the training time series data differs from zero by greater than a predefined statistical uncertainty, or that the time series data have maximum value of training data greater than zero even if the average is zero. 
     In accordance with example embodiments, the training time series data may be considered periodic if the respective values of the metrics across the observation time window repeat to within a predefined statistical uncertainty of a respective, repeating expected value with a period equal to the reference period. Similarly, the training time series data may be considered pseudo-periodic if the training time series data are periodic except for a non-zero but threshold-limited number of respective values of the metrics that deviate from the respective, repeating expected value by more than an anomaly threshold that is at least as large as the predefined statistical uncertainty. 
     In accordance with example embodiments, the plurality of consecutive, repeating sub-windows that span the observation time window includes at least three consecutive, repeating sub-windows. With this arrangement, determining the reference pattern may entail temporally aligning the N sample points of each of the plurality of consecutive, repeating sub-windows with respect to a common starting reference time, and computing a median of the values of the metric at each temporally aligned sample point. The reference values of the reference pattern may then be set to the computed median values. 
     In further accordance with example embodiments, determining a reference threshold may comprise computationally aligning the N sample points of the reference pattern with the N sample points of each of the plurality of consecutive, repeating sub-windows, and computing a deviation between the value of the metric and the reference value at each computationally aligned sample point. The deviation may then be arranged in a ranked deviation sequence, from smallest to largest, in which each ranked deviation is associated with a sample point and metric value of the training time series data. The reference threshold may then be set to the value of the metric at a particular sample point at which a rate of change between consecutive associated deviations is maximum among all consecutive deviations having rates of change below a rate upper limit. 
     In further accordance with example embodiments, the rates of change between the consecutive deviations in the ranked deviation sequence may correspond to a slope of a curve of the deviations as a function of ranking. As such, the method further entail determining the slope of the curve at associated sample points using piecewise linear regression. 
     The example method may further entail computing a respective standard deviation for each computed median value of the metric at each temporally aligned sample point, and computationally propagating the respective standard deviations to determine a respective threshold value at each sample point of the reference pattern. With this operation, a time-dependent reference threshold may be derived. That is, a different respective threshold may be determined for each sample point of the reference pattern. 
     In accordance with example embodiments, determining the reference pattern comprising the series of N sample points of reference values may entail retrieving a previously-determined reference pattern from the reference database. Similarly, determining a reference threshold may entail retrieving a previously-determined reference threshold from the reference database. 
     In accordance with example embodiments, the observation time window corresponds to a sliding time window that may be advance across the time series data in the production database. With this arrangement, determining the reference pattern may entail whether a previously-generated reference pattern in the reference database is out-of-date with respect to at least one of the runtime time series data or the sliding time window. The previously-generated reference pattern and an associated previously-determined threshold may be retrieved from a reference pattern database, for example. If the previously-generated reference pattern is not out of date, then it and the associated previously-determined threshold may be used instead of generating a new pattern and threshold. If the previously-generated reference pattern is out of date, then a new reference pattern and threshold may be generated according to the steps described above. 
     In accordance with example embodiments, the metric may characterize performance of an operational aspect of a telecommunications network. Non-limiting examples of the operational aspect may include operation of one or more network components, or operation of one or more communication sessions of users of the telecommunications network. In addition, the training time series data and the runtime time series data may be or include performance log data of the telecommunications network. In an example embodiment, the inter-sample time interval may be 15 minutes, one hour, or one day, and the reference time period may be one week. Other values for these timescales are possible as well. 
     The example method may further entail storing each identified anomaly in an anomaly database. 
     In accordance with example embodiments, the production database may be a single Big Data distributed file system (BDDFS), and the production database may include or be associated with configuration data including configuration parameters of the method. With this arrangement, the example method may further entail presenting the configuration parameters on an interactive user interface of the computing system, receiving input from the interactive user interface to modify zero or more configuration parameters, storing the modified configuration parameters, and carrying out at least one step of the method according to at least on stored configuration parameter. 
     In further accordance with example embodiment, the example method may also be able to operate in an autonomous mode in which the operations described in blocks  1702  through  1720  execute in an autonomous loop according to triggering criteria. In particular, the autonomous mode may entail applying the observation time window as a sliding window, and in response to determining that a previously-generated reference pattern is out of with respect to at least one of the sliding window or the runtime time series advancing the sliding window prior to obtaining the training time series data and the runtime time series, then determining the reference pattern as an updated reference pattern to the previously-generated pattern, and determining the reference threshold an updated reference threshold to a previously-generated reference threshold. Then, anomalies may be identified in the runtime time series obtained after advancing the time window. 
     In accordance with example embodiments, the configuration parameters may include one or more of a storage location in the BDDFS of the training time series data and the runtime time series data; an identity of the runtime time series data; one or more pre-processing parameters; specification of a mathematical technique for use in determining at least one of the reference pattern or the reference threshold; specification of a mathematical technique for use in analyzing the training time series data for periodicity or pseudo-periodicity; the inter-sample time interval; or the reference time period. 
     IV. CONCLUSION 
     The present disclosure is not to be limited in terms of the particular embodiments described in this application, which are intended as illustrations of various aspects. Many modifications and variations can be made without departing from its scope, as will be apparent to those skilled in the art. Functionally equivalent methods and apparatuses within the scope of the disclosure, in addition to those described herein, will be apparent to those skilled in the art from the foregoing descriptions. Such modifications and variations are intended to fall within the scope of the appended claims. 
     The above detailed description describes various features and operations of the disclosed systems, devices, and methods with reference to the accompanying figures. The example embodiments described herein and in the figures are not meant to be limiting. Other embodiments can be utilized, and other changes can be made, without departing from the scope of the subject matter presented herein. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, separated, and designed in a wide variety of different configurations. 
     With respect to any or all of the message flow diagrams, scenarios, and flow charts in the figures and as discussed herein, each step, block, and/or communication can represent a processing of information and/or a transmission of information in accordance with example embodiments. Alternative embodiments are included within the scope of these example embodiments. In these alternative embodiments, for example, operations described as steps, blocks, transmissions, communications, requests, responses, and/or messages can be executed out of order from that shown or discussed, including substantially concurrently or in reverse order, depending on the functionality involved. Further, more or fewer blocks and/or operations can be used with any of the message flow diagrams, scenarios, and flow charts discussed herein, and these message flow diagrams, scenarios, and flow charts can be combined with one another, in part or in whole. 
     A step or block that represents a processing of information can correspond to circuitry that can be configured to perform the specific logical functions of a herein-described method or technique. Alternatively or additionally, a step or block that represents a processing of information can correspond to a module, a segment, or a portion of program code (including related data). The program code can include one or more instructions executable by a processor for implementing specific logical operations or actions in the method or technique. The program code and/or related data can be stored on any type of computer readable medium such as a storage device including RAM, a disk drive, a solid state drive, or another storage medium. 
     The computer readable medium can also include non-transitory computer readable media such as computer readable media that store data for short periods of time like register memory and processor cache. The computer readable media can further include non-transitory computer readable media that store program code and/or data for longer periods of time. Thus, the computer readable media may include secondary or persistent long term storage, like ROM, optical or magnetic disks, solid state drives, compact-disc read only memory (CD-ROM), for example. The computer readable media can also be any other volatile or non-volatile storage systems. A computer readable medium can be considered a computer readable storage medium, for example, or a tangible storage device. 
     Moreover, a step or block that represents one or more information transmissions can correspond to information transmissions between software and/or hardware modules in the same physical device. However, other information transmissions can be between software modules and/or hardware modules in different physical devices. 
     The particular arrangements shown in the figures should not be viewed as limiting. It should be understood that other embodiments can include more or less of each element shown in a given figure. Further, some of the illustrated elements can be combined or omitted. Yet further, an example embodiment can include elements that are not illustrated in the figures. 
     While various aspects and embodiments have been disclosed herein, other aspects and embodiments will be apparent to those skilled in the art. The various aspects and embodiments disclosed herein are for purpose of illustration and are not intended to be limiting, with the true scope being indicated by the following claims.