<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A Distributed Online Learning Approach for Pattern Prediction over Movement Event Streams with Apache Flink</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Ehab</forename><surname>Qadah</surname></persName>
							<email>ehab.qadah@iais.fraunhofer.de</email>
							<affiliation key="aff0">
								<orgName type="institution">Fraunhofer IAIS Sankt Augustin</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Michael</forename><surname>Mock</surname></persName>
							<email>michael.mock@iais.fraunhofer.de</email>
							<affiliation key="aff1">
								<orgName type="institution">Fraunhofer IAIS Sankt Augustin</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Elias</forename><surname>Alevizos</surname></persName>
							<email>alevizos.elias@iit.demokritos.gr</email>
							<affiliation key="aff2">
								<orgName type="institution">NCSR &quot;Demokritos&quot;</orgName>
								<address>
									<settlement>Athens</settlement>
									<country key="GR">Greece</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Georg</forename><surname>Fuchs</surname></persName>
							<email>georg.fuchs@iais.fraunhofer.de</email>
							<affiliation key="aff3">
								<orgName type="institution">Fraunhofer IAIS Sankt Augustin</orgName>
								<address>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Distributed Online Learning Approach for Pattern Prediction over Movement Event Streams with Apache Flink</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073)</idno>
					</monogr>
					<idno type="MD5">D3ED092F62AAD9F71CB8B69451AF3867</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T23:14+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In this paper, we present a distributed online prediction system for user-defined patterns over multiple massive streams of movement events, built using the general purpose stream processing framework Apache Flink. The proposed approach is based on combining probabilistic event pattern prediction models on multiple predictor nodes with a distributed online learning protocol in order to continuously learn the parameters of a global prediction model and share them among the predictors in a communicationefficient way. Our approach enables the collaborative learning between the predictors (i.e., "learn from each other"), thus the learning rate is accelerated with less data for each predictor. The underlying model provides online predictions about when a pattern (i.e., a regular expression over the event types) is expected to be completed within each event stream. We describe the distributed architecture of the proposed system, its implementation in Flink, and present experimental results over real-world event streams related to trajectories of moving vessels.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">INTRODUCTION</head><p>In recent years, technological advances have led to a growing availability of massive amounts of continuous streaming data (i.e., data streams observing events) in many application domains such as social networks <ref type="bibr" target="#b22">[23]</ref>, Internet of Things (IoT) <ref type="bibr" target="#b23">[24]</ref>, and maritime surveillance <ref type="bibr" target="#b30">[31]</ref>. The ability to detect and predict the full matches of a pattern of interest (e.g., a certain sequence of events), defined by a domain expert, is typically important for operational decision making tasks in the respective domains.</p><p>An event stream is an unbounded collection of time-ordered data observations in the form of a tuple of attributes that is composed of a value from finite event types along with other categorical and numerical attributes. In this work, we deal with movement event streams. For instance, in the context of maritime surveillance the event stream of a moving vessel consists of spatio-temporal and kinematic information along with the vessel's identification and its trajectory related events, based on the automatic identification system (AIS) <ref type="bibr" target="#b27">[28]</ref> messages that are continuously sent by the vessel. Therefore, leveraging event patterns prediction over real-time streams of moving vessels is useful to alert maritime operation managers about suspicious activities (e.g., fast sailing vessels near ports, or illegal fishing) before they happen. However, processing real-time streaming data with low latency is challenging, since data streams are large and distributed in nature and continuously arrive at a high rate.</p><p>In this paper, we present the design and implementation of an online, distributed and scalable pattern prediction system over multiple, massive streams of events. More precisely, we consider event streams related to trajectories of moving objects (i.e., vessels). The proposed approach is based on a novel method that combines a distributed online prediction protocol <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b15">16]</ref> with an event forecasting method based on Markov chains <ref type="bibr" target="#b1">[2]</ref>. It is implemented on top of the Big Data framework for stream processing Apache Flink <ref type="bibr" target="#b12">[13]</ref>. We evaluate our proposed system over real-world data streams of moving vessels, which are provided in the context of the datAcron project <ref type="foot" target="#foot_0">1</ref> .</p><p>The rest of the paper is organized as follows. We discuss the related work and used frameworks in Section 2. In Section 3, we describe the problem of pattern prediction, our proposed approach, and the architecture of our system. The implementation details on top of Flink are presented in Section 4 and the experimental results in Section 5. We conclude in Section 6.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">RELATED WORK AND BACKGROUND 2.1 Related work</head><p>Pattern prediction over event streams. The task of forecasting over time-evolving streams of data can be formulated in various ways and with varying assumptions. One common way to formalize this task is to assume that the stream is a time-series of numerical values, and the goal is to forecast at each time point n the values at some future points n + 1, n + 2, etc., (or even the output of some function of future values). This is the task of time-series forecasting <ref type="bibr" target="#b24">[25]</ref>. Another way to formalize this task is to view streams as sequences of events, i.e., tuples with multiple, possibly categorical, attributes, like event type, timestamp, etc., and the goal is to predict future events or patterns of events. In this paper, we focus on this latter definition of forecasting (event pattern forecasting).</p><p>A substantial body of work on event forecasting comes from the field of temporal pattern mining where events are defined as 2-tuples of the form (EventType, Timestamp). The ultimate goal is to extract patterns of events in the form either of association rules <ref type="bibr" target="#b0">[1]</ref> or frequent episode rules <ref type="bibr" target="#b21">[22]</ref>. These methods have been extended in order to be able to learn not only rules for detecting event patterns but also rules for predicting events. For example, in <ref type="bibr" target="#b31">[32]</ref>, a variant of association rule mining is where the goal is to extract sets of event types that frequently lead to a rare, target event within a temporal window.</p><p>In <ref type="bibr" target="#b18">[19]</ref>, a probabilistic model is presented for calculating the probability of the immediately next event in the stream. This is achieved by using standard frequent episode discovery algorithms and combining them with Hidden Markov Models and mixture models. The framework of episode rules is employed in <ref type="bibr" target="#b8">[9]</ref> as well. The output of the proposed algorithms is a set of predictive rules whose antecedent is minimal (in number of events) and temporally distant from the consequent. In <ref type="bibr" target="#b34">[35]</ref> a set of algorithms is proposed that target batch online mining of sequential patterns, without maintaining exact frequency counts. As the stream is consumed, the learned patterns can be used to test whether a prefix matches the last events seen in the stream, indicating a possibility of occurrence for events that belong to the suffix of the rule.</p><p>Event forecasting has also attracted some attention from the filed of Complex Event Processing (see <ref type="bibr" target="#b6">[7]</ref> for a review of Complex Event Processing). One such early approach is presented in <ref type="bibr" target="#b25">[26]</ref>. Complex event patterns are converted to automata, and subsequently, Markov chains are used in order to estimate when a pattern is expected to be fully matched. A similar approach is presented in <ref type="bibr" target="#b1">[2]</ref>, where again automata and Markov chains are employed in order to provide (future) time intervals during which a match is expected with a probability above a confidence threshold.</p><p>Distributed Online Learning. In recent years, the problem of distributed online learning has received increased attention and has been studied in <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b15">16,</ref><ref type="bibr" target="#b17">18,</ref><ref type="bibr" target="#b32">33,</ref><ref type="bibr" target="#b33">34]</ref>. A distributed online minibatch prediction approach over multiple data streams has been proposed in <ref type="bibr" target="#b7">[8]</ref>. This approach is based on a static synchronization method. The learners periodically communicate their local models with a central coordinator unit after consuming a fixed number of input samples/events (i.e., batch size b), in order to create a global model and share it between all learners. This work has been extended in <ref type="bibr" target="#b15">[16]</ref> by introducing a dynamic synchronization scheme that reduces the required communication overhead. It can do so by making the local learners communicate their models only if they diverge from a reference model. In this work, we employ this protocol with event patterns prediction models over multiple event streams.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Technological Background</head><p>In the last years, many systems for large-scale and distributed stream processing have been proposed, including Spark Streaming <ref type="bibr" target="#b11">[12]</ref>, Apache Storm <ref type="bibr" target="#b13">[14]</ref> and Apache Flink <ref type="bibr" target="#b12">[13]</ref>. These frameworks can ingest and process real-time data streams, published from different distributed message queuing platforms, such as Apache Kafka <ref type="bibr" target="#b10">[11]</ref> or Amazon Kinesis <ref type="bibr" target="#b4">[5]</ref>. In this work, we implemented our system in Flink and Kafka (see Section 4).</p><p>In the datAcron project, the Flink streaming processing engine has been chosen as a primary platform for supporting the streaming operations, based on an internal comparative evaluation of several streaming platforms. Hence, we used it to implement our system. A predecessor distributed online learning framework has already been implemented in the FERARI project <ref type="bibr" target="#b9">[10]</ref> based on Apache Storm. Apache Flink. Apache Flink is an open source project that provides a large-scale, distributed, and stateful stream processing platform <ref type="bibr" target="#b5">[6]</ref>. Flink is one of the most recent and pioneering Big Data processing frameworks. It provides processing models for both streaming and batch data, where the batch processing model is treated as a special case of the streaming one (i.e., finite stream). Flink's software stack includes the DataStream and DataSet APIs for processing infinite and finite data, respectively. These two core APIs are built on top of Flink's core dataflow engine and provide operations on data streams or sets such as mapping, filtering, grouping, etc.</p><p>The two main data abstractions of Flink are DataStream and DataSet, they represent read-only collections of data elements. The list of elements is bounded (i.e., finite) in DataSet, while it is unbounded (i.e., infinite) in the case of DataStream. Flink's core is a distributed streaming dataflow engine. Each Flink program is represented by a data-flow graph (i.e., directed acyclic graph -DAG) that gets executed by Flink's dataflow engine <ref type="bibr" target="#b5">[6]</ref>. The data flow graphs are composed of stateful operators and intermediate data stream partitions. The execution of each operator is handled by multiple parallel instances whose number is determined by the parallelism level. Each parallel operator instance is executed in an independent task slot on a machine within a cluster of computers <ref type="bibr" target="#b12">[13]</ref>.</p><p>Apache Kafka. Apache Kafka is a scalable, fault-tolerant, and distributed streaming framework/messaging system <ref type="bibr" target="#b10">[11]</ref>. It allows to publish and subscribe to arbitrary data streams, which are managed in different categories (i.e., topics) and partitioned in the Kafka cluster. The Kafka Producer API provides the ability to publish a stream of messages to a topic. These messages can then be consumed by applications, using the Consumer API that allows them to read the published data stream in the Kafka cluster. In addition, the streams of messages are distributed and load balanced between the multiple receivers within the same consumer group for the sake of scalability.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">SYSTEM OVERVIEW 3.1 Pattern prediction on a single stream</head><p>For our work presented in this paper, we use the approach presented in <ref type="bibr" target="#b1">[2]</ref>. For the sake of self-containment, we briefly describe this approach in the following, first assuming that only a single stream is consumed and then adjusting for the case of multiple streams. We follow the terminology of <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b20">21,</ref><ref type="bibr" target="#b34">35]</ref> to formalize the problem we tackle.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.1">Problem formulation.</head><p>We define an input event and a stream of input events as follows: Definition 3.1. Each event is defined as a tuple of attributes e i = (id, type, τ , a 1 , a 2 ....., a n ), where type is the event type attribute that takes a value from a set of finite event types/symbols Σ, τ represents the time when the event tuple was created, the a 1 , a 2 , ..., a n are spatial or other contextual features (e.g., speed); these features are varying from one application domain to another. The attribute id is a unique identifier that connects the event tuple to an associated domain object. Definition 3.2. A stream s = ⟨e 1 , e 3 , ..., e t , ...⟩ is a time-ordered sequence of events.</p><p>A user-defined pattern P is given in the form of a regular expression (i.e., using operators for sequence, disjunction, and iteration) over Σ (i.e., event types) <ref type="bibr" target="#b1">[2]</ref>. More formally, a pattern is given through the following grammar:</p><formula xml:id="formula_0">Definition 3.3. P := E | P 1 ; P 2 |P 1 ∨ P 2 | P * 1</formula><p>, where E ∈ Σ is a constant event type. ; stands for sequence, ∨ for disjunction and * for Kleene − * . The pattern P := E is matched by reading an event e i iff e i .type = E. The other cases are matched as in standard automata theory.</p><p>The problem at hand may then be stated as follows: given a stream s of low-level events and a pattern P, the goal is to estimate at each new event arrival the number of future events that we will need to wait for until the pattern is satisfied (and therefore a full match is detected).</p><p>3.1.2 Proposed approach. As a first step, event patterns are converted to deterministic finite automata (DFA) through standard conversion algorithms <ref type="bibr" target="#b14">[15]</ref>. As an example, see Figure <ref type="figure" target="#fig_3">1a</ref> for the DFA of the simple sequential pattern P = a; d; c and an alphabet Σ = {a, b, c, d} (note that the DFA has no dead states since we need to handle streams and not strings). The next step is to derive a Markov chain that will be able to provide a probabilistic description of the DFA's run-time behavior.</p><p>Towards this goal, we use Pattern Markov Chains, as was proposed in <ref type="bibr" target="#b26">[27]</ref>. Under the assumption that the input stream is generated by an m-order Markov source, and after performing a transformation step on the initial DFA to handle the m t h order (see <ref type="bibr" target="#b26">[27]</ref> for more details). It can be shown that there is a direct mapping of the states of the DFA to states of a Markov chain and the transitions of the DFA to transitions of the Markov chain. The transition probabilities are then conditional probabilities on the event types.</p><p>We call such a derived Markov chain a Pattern Markov Chain (PMC) of order m and denote by PMC m P , where P is the initial pattern and m the assumed order. As an example, see Figure <ref type="figure" target="#fig_3">1b</ref>, which depicts the PMC of order 1 for the generated DFA of Figure <ref type="figure" target="#fig_3">1a</ref>.</p><p>After constructing a PMC, we can use it to calculate the socalled waiting-time distributions. Given a specific state of the PMC, a waiting-time distribution gives us the probability of reaching a set of absorbing states in n transition from now (absorbing states are states with self-loops and probability equal to 1.0). By mapping the final states of the initial DFA to absorbing states of the PMC (see again Figure <ref type="figure" target="#fig_3">1</ref>). Therefore, we can calculate the probability of reaching a final state, or, in other words, of detecting a full match of the original regular expression in n events from now.</p><p>In order to estimate the final forecasts, another step is required, since our aim is not to provide a single future point with the highest probability but an interval. Predictions are given in the form of intervals, as I = (start, end). The meaning of such an interval is that the DFA is expected to reach a final state sometime in the future between the start and end with probability at least some constant threshold θ f c (provided by the user). These intervals are estimated by a single-pass algorithm that scans a waiting-time distribution and finds the smallest (in terms of length) interval that has probability exceeds this threshold (θ f c ). For example, Figure <ref type="figure" target="#fig_2">2a</ref> shows the waiting-time distributions for the non-final states of the DFA in Figure <ref type="figure" target="#fig_3">1</ref>, and the computed prediction intervals are depicted in Figure <ref type="figure" target="#fig_2">2b</ref>.</p><p>The method described above assumes that we know the (possibly conditional) occurrence probabilities of the various event types appearing in a stream (as would be the case with synthetically generated streams). However, this is not always the case in real-world situations. Therefore, it is crucial for a system implementing this method to have the capability to learn the values of the PMC's transition matrix. One way to do this is to use some   part of the stream to obtain the maximum-likelihood estimators for the transition probabilities <ref type="bibr" target="#b3">[4]</ref>. If Π is the transition matrix of a Markov chain with a set of states Q, π i, j the transition probability from state i to state j, n i, j the number of observed transitions from state i to state j, then the maximum likelihood estimator for π i, j is given by: πi, j = n i, j k ∈Q n i,k = n i, j n i Executing this learning step on a single node might require a vast amount of time until we arrive at a sufficiently good model. In this paper, we present a distributed method for learning the transition probability matrix.</p><p>3.2 Pattern prediction on multiple streams 3.2.1 Problem formulation. Let O = {o 1 , ..., o k } be a set of K objects (i.e., moving objects) and S = {s 1 , ..., s k } a set of real-time streams of events, where s i is generated by the object o i . Let P be a user-defined pattern which we want to apply to every stream s i , i.e., each object will have its own DFA.</p><p>The setting that is considered in this work is then described in the following: we have K input event streams S and a system consisting of K distributed predictor nodes n 1 , n 2 ..., n k , each of which consumes an input event stream s i ∈ S. The goal is to provide timely predictions and be able to do this at large-scale. Each node n i handles a single event stream s i associated with a moving object o i ∈ O. In addition, it maintains a local prediction model f i for the user-defined pattern P. The f i model provides the online prediction about the future full match of the pattern P in s i for each new arriving event tuple.</p><p>In short, we have multiple running instances of an online prediction algorithm on distributed nodes for multiple input event streams. More specifically, the input to our system consists of massive streams of events that describe trajectories of moving vessels in the context of maritime surveillance, where there is one predictor node for each vessel's event stream.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>3.2.2</head><p>The proposed approach. We designed and developed a scalable and distributed pattern prediction system over a massive input event streams of moving objects. As the base prediction model, we use the PMC forecasting method <ref type="bibr" target="#b1">[2]</ref>. Moreover, we propose to enable the information exchange between the distributed predictors/learners of the input event streams, by adapting the distributed online prediction protocol of <ref type="bibr" target="#b15">[16]</ref> to synchronize the prediction models, i.e., the transitions probabilities matrix of the PMC predictors.</p><p>Algorithm 1 presents the distributed online prediction protocol by dynamic model synchronization on both the predictor nodes and the coordinator. We refer to the PMC's transition matrix Π i on predictor node n i by f i . That is, when a predictor n i : i ∈ [k] observes an event e j it revises its internal model state (i.e., f i ) and provides a prediction report. Then it checks the local conditions (batch size b and local model divergence from a reference model f r ) to decide whether there is a need to synchronize its local model with the coordinator [or not]. f r is maintained in the predictor node as a copy of the last computed aggregated model f from the previous full synchronization step, which is shared between all local predictors/learners. By monitoring the local condition ∥ f i − f r ∥ 2 &gt; ∆ on all local predictors, we have a guarantee that if none of the local conditions is violated, the divergence (i.e., variance of local models δ</p><formula xml:id="formula_1">(f ) = 1 k k j=1 ∥ f i − f ∥ 2 )</formula><p>does not exceed the threshold ∆ <ref type="bibr" target="#b15">[16]</ref>.</p><p>On the other hand, the coordinator receives the prediction models from the predictor nodes that requested for model synchronization (violation). Then it tries to keep incrementally querying other nodes for their local prediction models until reaching out all nodes, or the variance of the aggregated model f that is computed from the already received models less or equal than the divergence threshold ∆. Finally, the aggregated model f is sent back to the predictor nodes that sent their models after the violation or have been queried by the coordinator. </p><formula xml:id="formula_2">f i ∈Π ∥ f i − f ∥ 2 &gt; ∆ do</formula><p>add other nodes that have not reported violation for their models B ← { f l : f l B and l ∈ [k]} ; receive models from nodes in B;</p><p>compute a new global model f ; send f to all the predictors in B and set f 1 . . .</p><formula xml:id="formula_3">f m = f ; if |B| = k then set a new reference model f r ← f ;</formula><p>This protocol was introduced for linear models, and has been extended to handle kernelized online learning models <ref type="bibr" target="#b16">[17]</ref>. We also employ this protocol for the pattern prediction model, which is internally based on the PMC PMC m P . This allows the distributed PMC m P predictors for multiple event streams to synchronize their models (i.e., the transition probability matrix of each predictor) within the system in a communication-efficient manner.</p><p>We propose a synchronization operation for the parameters of the models (f i = Π i : i ∈ [k]) of the k distributed PMC predictors. The operation is based on distributing the maximum-likelihood estimation <ref type="bibr" target="#b3">[4]</ref> for the transition probabilities of the underlying PMC m P models described by: πi, j = k ∈K n k,i, j k ∈K l ∈L n k,i,l Moreover, we measure the divergence of local models from the reference model ∥ f k − f r ∥ 2 by calculating the sum of square difference between the transition probabilities Π i and Π r :</p><formula xml:id="formula_4">∥ f k − f r ∥ 2 = i, j ( πk i, j − πr i, j) 2</formula><p>In general, our approach relies on enabling the collaborative learning among the distributed predictors. Each predictor node receives a stream of events related to a distinct moving object, and the central coordinator is responsible for synchronizing their prediction models using the synchronization operation. Moreover, the predictors they only need to share the parameters of their models, not the consumed event streams.</p><p>We assume that the underlying event streams belong to the same distribution and share the same behavior (e.g., mobility patterns). We claim this assumption is reasonable in many application domains: for instance, in the context of maritime surveillance, vessels travel through standard routes, defined by the International Maritime Organization (IMO). Additionally, vessels have similar mobility patterns in specific areas such as moving with low speed and multiple turns near the ports <ref type="bibr" target="#b19">[20,</ref><ref type="bibr" target="#b28">29]</ref>. That allows our system to construct a coherent global prediction model dynamically for all input event streams based on merging their local prediction models.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Distributed architecture</head><p>Our system consumes as an input<ref type="foot" target="#foot_1">2</ref> an aggregated stream of events coming from a large number of moving objects, which is continuously collected and fed into the system. It allows users to register a pattern P to be monitored over each event stream of a moving object. The output stream consists of original input events and predictions of full matches of P, displayed to the end users. Figure <ref type="figure" target="#fig_4">3</ref> presents the overview of our system architecture and its main components. The system is composed of three processing units: (i) pre-processing operators that receive the input event stream and perform filtering and ordering operations, before partitioning the input event stream to multiple event streams based on the associated moving object (ii) predictor nodes (learners), which are responsible for maintaining a prediction model for the input event streams. Each prediction node is configured to handle an event stream from the same moving object, in order to provide online predictions for a predefined pattern P (iii) a coordinator node that communicates through Kafka stream channels with the predictors to realize the distributed online learning protocol. It builds a global prediction model, based on the received local models, and then shares it among the predictors.</p><p>Our distributed system consists of multiple pre-processing operators, prediction nodes, and a central coordinator node. These units run concurrently and are arranged as a data processing pipeline, depicted in Figure <ref type="figure" target="#fig_4">3</ref>. We leverage Apache Kafka as a messaging platform to ingest the input event streams and to publish the resulting streams. Also, it is used as the communication channel between the predictor nodes and the coordinator. Apache Flink is employed to execute the system's distributed processing units over the input event streams: the pre-processing operators, the prediction units, and the coordinator node. Our system architecture can be modeled as a logical network of processing nodes, organized in the form of a DAG, inspired by the Flink runtime dataflow programs <ref type="bibr" target="#b5">[6]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">IMPLEMENTATION DETAILS</head><p>In this section, we briefly describe in detail the implementation of our system on top of Apache Flink and Apache Kafka frameworks. Each of the three sub-modules, described in Section 3.3, have been implemented as Flink operations over the Kafka events stream.</p><p>Pre-processing and Prediction Operators. Listing 1 shows how the main workflow of the system is implemented as Flink data flow program.</p><p>The system ingests the input events stream from a Kafka cluster that is mapped to a DataStream of events, which is then processed by an EventTuplesMapper to create tuples of (id, event), where the id is associated to the identifier of the moving object. To handle events coming in out of order in a certain margin, the stream of event tuples is processed by a TimestampAssigner, it assigns the timestamps for the input events based on the extracted creation time. Afterwards, an ordered stream of event tuples is generated using a process function EventSorter.</p><p>DataStream&lt;Event&gt; eventsStream = env.addSource(kafkaConsumer); // Create tuples (id,event) and assign time stamps DataStream&lt;Tuple2&lt;String,Event&gt;&gt; eventTuplesStream = inputEventsStream.map(new EventTuplesMapper()) .assignTimestampsAndWatermarks(new EventTimeAssigner()); // Create the ordered keyed stream orderedEventsStream = eventsStream.keyBy(0).process(new EventSorter()).keyBy(0); // Consume the events by the predictors LocalPredictorNode predictorNode =new LocalPredictorNode&lt;Event&gt;(P); DataStream&lt;Event&gt; processedEventsStream = orderedEventsStream.map(predictorNode);</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Listing 1: Flink pipeline for local predictors workflow</head><p>The ordered stream is then transformed to a keyedEventsStream by partitioning it, based on the ids values, using a keyBy operation. A local predictor node in a distributed environment is represented by a map function over the keyedEventsStream. Each parallel instance of the map operator (predictor) always processes all events of the same moving object (i.e., equivalent id), and maintains a bounded prediction model (i.e., PMC m P predictor) using the Flink's Keyed State <ref type="foot" target="#foot_2">3</ref> . The output streams of the moving objects from the parallel instances of the predictor map functions are sent to a new Kafka stream (i.e., same topic name). They then can be processed by other components like visualization or users notifier.</p><p>Moreover, the implementation of the predictor map function includes the communication with coordinator using Kafka streams. At the beginning of the execution, it sends a registration request to the coordinator. Also at the run-time, it sends its local prediction model as synchronization request, or as a response for a resolution request from the coordinator. These communication messages are published into different Kafka topics as depicted in Table <ref type="table" target="#tab_0">1</ref>.</p><p>Coordinator. It manages the distributed online learning protocol operations, which is also implemented as Flink program. The coordinator receives messages from the local predictors </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">EMPIRICAL EVALUATION</head><p>In this section, we evaluate our proposed system by analyzing the predictive performance and communication complexity using real-world event streams provided by the datAcron project in the context of maritime monitoring. The used event streams describe critical points (i.e., synopses) of moving vessels trajectories, which are derived from raw AIS messages as described in <ref type="bibr" target="#b29">[30]</ref>. In particular, for our evaluation experiments we used a data set of synopses that contains 4, 684, 444 critical points of 5055 vessels sailing in the Atlantic Ocean during the period from 1 October 2015 to 31 March 2016. We used the synopses data set to generate a simulated stream of event tuples i.e., (id, timestamp, longitude, latitude, annotation, speed, heading), which are processed by the system to attach an extra attribute type that represents the event value, where type ∈ Σ, and Σ = Σ 1 ={VerySlow, Slow, Moving, Sailing, Stopping}, which is based on a discretization of the speed values. That is, Σ 1 includes a simple derived event types based on the speed value that can be used over streams of raw AIS or critical points. Or Σ = Σ 2 = {stopStart, stopEnd, changeInSpeedStart, changeInSpeedEnd, slow-MotionStart, slowMotionEnd, gapStart, gapEnd, changeInHeading}, which is derived based on the values of the annotation attribute that encodes the extracted trajectory movement events <ref type="bibr" target="#b29">[30]</ref>. Σ 2 represents the set of possible mobility changes in the vessel's trajectory <ref type="bibr" target="#b29">[30]</ref>, each critical point has at least one event. Where in the case of multiple values, we generate duplicate points each of which corresponding to one event in the same order of Σ 2 .</p><p>In our experiments, we monitor a pattern P 1 = Sailinд with Σ 1 that detects when the vessel is underway (sailing). Likewise, we test a second pattern P 2 =changeInHeading; gapStart; gapEnd; changeInHeading with Σ 2 that describes a potential illegal fishing activity <ref type="bibr" target="#b1">[2]</ref>.</p><p>Experimental setup. We ran our experiments on single-node standalone Flink cluster deployed on an Ubuntu Server 17.04 with Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz X 8 processors and 32GB RAM. We used Apache Flink v1.3.2 and Apache Kafka v0.10.2.1 for our tests.</p><p>Evaluation criteria. Our goal is to evaluate our distributed pattern prediction system, which enables the synchronization of prediction models (i.e., PMC models) on the distributed predictor nodes. Our proposed system can operate in three different modes of protocols/schemes of models synchronization: (i) static scheme based on synchronizing the prediction models periodically every b of input events in each stream, (ii) continuous, full synchronization for each incoming event (hypothetical), (iii) dynamic synchronization protocol based on making the predictors communicate their local prediction models periodically but only under condition that the divergence of the local models from a reference model exceeds a variance threshold ∆ (recommended).</p><p>We compare our proposed system against the isolated prediction mode, in which models are computed on single streams only, and compare the predictive performance in terms of :</p><formula xml:id="formula_5">(i) Precision = # of correct predictions</formula><p># of total predictions is the fraction of the produced predictions that are correct. For each new event in the stream, the predictor provides a prediction interval where the full match of the pattern might occur. Thus, the predictions are temporarily stored until a full match is detected. At that point, all stored prediction intervals are evaluated by considering those intervals where the full match occurred within as correct. (ii) Spread= end(I ) − start(I ) is the width of the prediction interval I , which represents the number of events between the start and the end of I .</p><p>Moreover, we study the communication cost by measuring the cumulative communication that captures the number of messages, which are required to perform the distributed online learning modes to synchronize the prediction models. Next, we present the experimental results for the patterns P 1 = Sailinд with an order of m = 2, and P 2 =changeInHeading; gapStart; gapEnd; changeInHeading with first order m = 1. All experiments are performed with setting the batch size to 100 (b = 100), the variance threshold of 2 (∆ = 2), 80% as PMC prediction threshold (θ f c = 80%), and 200 for the maximum spread.</p><p>Experimental results. Figure <ref type="figure" target="#fig_5">4</ref> depicts the average precision scores of predictions models (one prediction model per vessel) of all synchronization modes for the first pattern P 1 = Sailinд, namely, isolated without synchronization, continuous (full-sync), static, and our recommended approach based on the dynamic synchronization scheme. It can be clearly seen that all methods of distributed learning outperform the isolated prediction models. The hypothetical method of full continuous synchronization has the highest precision rates, while the static and dynamic synchronization schemes have close precision scores. Consequently, dynamic synchronization is not much weaker than the static synchronization, but requires much less communication, as explained below.</p><p>Figure <ref type="figure" target="#fig_6">5</ref> provides the amount of the accumulated communication that is required by the three modes of the distributed online learning, while the isolated approach does not require any communication between the predictors. These results are shown for P 1 . As expected, a larger amount of communication is required for the continuous synchronization comparing to the static and dynamic approaches. Also, it can be seen that we can reduce the communication overhead by applying the dynamic synchronization protocol (a reduction by a factor of 100) comparing to the static synchronization scheme, even with a small variance threshold ∆ = 2. Furthermore, the dynamic protocol is still preserving a close predictive performance to the static one (see Figure <ref type="figure" target="#fig_5">4</ref>). Therefore, we will only consider the dynamic synchronization and the isolated approach in the evaluation of the second pattern.   In Figure <ref type="figure" target="#fig_5">4</ref>, we also noted that the precision is going down in a first phase and stabilizes then. This seems to be counter-intuitive, as the models should improve when getting more data up to a certain point. For explanation, we have investigated the effect of the distributed synchronization of the prediction models on the average spread value, Figure <ref type="figure" target="#fig_7">6</ref> shows the spread results for all approaches. It can be seen that the spread is higher for the distributed learning based methods comparing to the isolated approach. Furthermore, the average spread is decreasing over time until convergence, as result of confidence increase in the models. This may explain the drop in the precision scores from the beginning until reaching the convergence. We will investigate further in the interrelation between precision and spread in future work.</p><p>For the second, more complex pattern (P 2 ), we have found that the precision was worse for a distributed model generated over all vessels than in the created for each vessel isolation. This indicates that there is no global model describing the behavior of all models consistently. However, when looking at specific groups of vessels, we achieved an improvement in terms of precision. As initial experiment, we only enable the synchronization of the prediction models associated with vessels that belong to the same vessel class. Currently, this change is technically performed by an extra filter step that passes only one type of vessels, while multiple runs of the system are required for all vessel types. For example, Figure <ref type="figure" target="#fig_8">7</ref> shows the precision scores for vessels of class PLEASURE CRAFT. An interesting observation is that the dynamic synchronization approach still has higher precision scores than the isolated approach. This case might seem to contradict of our assumption that the input event streams belong to the same distribution and share the same behavior, but it actually follows the same assumption but between the predictors of vessels within the same type group. We will further investigate the effect of groupings and more patterns in future work.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">CONCLUSION</head><p>In this paper, we have presented a system that provides a distributed pattern prediction over multiple large-scale event streams of moving objects (vessels). The system uses the event forecasting with Pattern Markov Chain (PMC) <ref type="bibr" target="#b1">[2]</ref> as the base prediction model on each event stream, and it applies the protocol for distributed online prediction <ref type="bibr" target="#b15">[16]</ref> to exchange information between the prediction models over multiple input event streams. Our proposed system has been implemented using Apache Flink and Apache Kafka. In order to show the usefulness and effectiveness of our approach, we empirically tested it against large real-world event streams related to trajectories of moving vessels.</p><p>As future work, we will address the open issues emerging from the current findings. Firstly, we will study the interrelation between precision and spread scores by validating the approach over synthetic event streams. Secondly, we will investigate the effect of grouping the input event streams on the predictive performance of our method.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>1 (b) PMC 1 PFigure 1 :</head><label>111</label><figDesc>Figure 1: DFA and PMC for P = a; d; c with Σ = {a, b, c, d}, and order m = 1.</figDesc><graphic coords="3,438.25,506.63,121.93,121.93" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>(a) Waiting-time distribution. (b) Prediction intervals.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>Figure 2 :</head><label>2</label><figDesc>Figure 2: Example of how prediction intervals are produced. P = a; d; c, Σ = {a, b, c, d}, m = 1, θ fc = 0.5.</figDesc><graphic coords="3,311.84,506.64,121.93,121.93" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Algorithm 1 :</head><label>1</label><figDesc>Communication-efficient Distributed Online Learning Protocol Predictor node n i : at observing event e j update the prediction model parameters f i and provide a prediction service ; if j mod b = 0 and ∥ f i − f r ∥ 2 &gt; ∆ then send f i to the Coordinator (violation) ; Coordinator: receive local models with violation B = { f i } m i=1 ; while |B| k and 1 |B |</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Figure 3 :</head><label>3</label><figDesc>Figure 3: System Architecture.</figDesc><graphic coords="5,53.79,264.09,231.89,130.21" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Figure 4 :</head><label>4</label><figDesc>Figure 4: Precision scores with respect to the number of input events over time for P 1 .</figDesc><graphic coords="7,53.79,83.67,243.85,243.85" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>Figure 5 :</head><label>5</label><figDesc>Figure 5: Cumulative communication with respect to the number of input events over time for P 1 .</figDesc><graphic coords="7,53.79,449.09,243.85,243.85" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>Figure 6 :</head><label>6</label><figDesc>Figure 6: Average spread value for P 1 .</figDesc><graphic coords="7,309.60,83.67,243.85,243.85" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Figure 7 :</head><label>7</label><figDesc>Figure 7: Precision scores of P 2 for PLEASURE CRAFT vessels.</figDesc><graphic coords="7,309.60,363.91,243.85,227.60" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 :</head><label>1</label><figDesc>Messages to Kafka topics mapping. It is implemented as a single map function over the messages stream, by setting the parallelism level of the Flink program to "1". Increasing the parallelism will scale up the number of parallel coordinator instances, for example, in order to handle different groupings of the input event streams. The map operator of the coordinator handles three message types from the predictors: (i) RegisterNode that contains a registration request for a new predictor node, (ii) RequestSync to receive a local model after violation, (iii) ResolutionAnswer to receive a resolution response from a local predictor node. In addition, it sends CoordinatorSync messages for all predictors after creating a new global prediction model, or RequestResolution to a ask the local predictors for their prediction models.</figDesc><table><row><cell>Message</cell><cell>Kafka Topic</cell></row><row><cell>RegisterNode, RequestSync, and</cell><cell>LocalToCoordinatorTopicId</cell></row><row><cell>ResolutionAnswer</cell><cell></cell></row><row><cell>CoordinatorSync and</cell><cell>CoordinatorToLocalTopicId</cell></row><row><cell>RequestResolution</cell><cell></cell></row><row><cell cols="2">through a Kafka Stream of a topic named "LocalToCoordinator-</cell></row><row><cell>TopicId".</cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">http://www.datacron-project.eu/</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">In practice, the aggregated input events stream is composed of multiple event streams (partitions) from a set of moving objects.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_2">Keyed State in Flink: https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/stream/state.html#kayed-state</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>ACKNOWLEDGMENTS</head><p>This work was supported by EU Horizon 2020 datAcron project (grant agreement No 687591).</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Mining Association Rules Between Sets of Items in Large Databases</title>
		<author>
			<persName><forename type="first">Rakesh</forename><surname>Agrawal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Tomasz</forename><surname>Imieliński</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Arun</forename><surname>Swami</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ACM SIGMOD</title>
				<imprint>
			<date type="published" when="1993">1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Event Forecasting with Pattern Markov Chains</title>
		<author>
			<persName><forename type="first">Elias</forename><surname>Alevizos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Artikis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">George</forename><surname>Paliouras</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 11th ACM International Conference on Distributed and Event-based Systems</title>
				<meeting>the 11th ACM International Conference on Distributed and Event-based Systems</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2017">2017</date>
			<biblScope unit="page" from="146" to="157" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Complex event recognition under uncertainty: A short survey. Event Processing, Forecasting and Decision-Making in the Big Data Era</title>
		<author>
			<persName><forename type="first">Elias</forename><surname>Alevizos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Anastasios</forename><surname>Skarlatidis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Artikis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Georgios</forename><surname>Paliouras</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">EPForDM)</title>
		<imprint>
			<biblScope unit="page" from="97" to="103" />
			<date type="published" when="2015">2015. 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Statistical inference about Markov chains</title>
		<author>
			<persName><forename type="first">Theodore</forename><forename type="middle">W</forename></persName>
		</author>
		<author>
			<persName><forename type="first">Anderson</forename></persName>
		</author>
		<author>
			<persName><forename type="first">Leo</forename><forename type="middle">A</forename><surname>Goodman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">The Annals of Mathematical Statistics</title>
		<imprint>
			<biblScope unit="page" from="89" to="110" />
			<date type="published" when="1957">1957. 1957</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<ptr target="https://aws.amazon.com/de/kinesis/." />
		<title level="m">Amazon Kinesis</title>
				<imprint>
			<publisher>AWS</publisher>
			<date type="published" when="2013">2013. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Apache flink: Stream and batch processing in a single engine</title>
		<author>
			<persName><forename type="first">Paris</forename><surname>Carbone</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Asterios</forename><surname>Katsifodimos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stephan</forename><surname>Ewen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Seif</forename><surname>Volker Markl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Kostas</forename><surname>Haridi</surname></persName>
		</author>
		<author>
			<persName><surname>Tzoumas</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Bulletin of the IEEE Computer Society Technical Committee on Data Engineering</title>
		<imprint>
			<biblScope unit="volume">36</biblScope>
			<biblScope unit="page">4</biblScope>
			<date type="published" when="2015">2015. 2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Processing Flows of Information: From Data Stream to Complex Event Processing</title>
		<author>
			<persName><forename type="first">Gianpaolo</forename><surname>Cugola</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alessandro</forename><surname>Margara</surname></persName>
		</author>
		<idno type="DOI">10.1145/2187671.2187677</idno>
		<ptr target="https://doi.org/10.1145/2187671.2187677" />
	</analytic>
	<monogr>
		<title level="j">ACM Comput. Surv</title>
		<imprint>
			<biblScope unit="volume">44</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page">62</biblScope>
			<date type="published" when="2012-06">2012. June 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Optimal distributed online prediction using mini-batches</title>
		<author>
			<persName><forename type="first">Ofer</forename><surname>Dekel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ran</forename><surname>Gilad-Bachrach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ohad</forename><surname>Shamir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Lin</forename><surname>Xiao</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Machine Learning Research</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="165" to="202" />
			<date type="published" when="2012-01">2012. Jan (2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Efficient Discovery of Episode Rules with a Minimal Antecedent and a Distant Consequent</title>
		<author>
			<persName><forename type="first">Lina</forename><surname>Fahed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Armelle</forename><surname>Brun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Anne</forename><surname>Boyer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Knowledge Discovery, Knowledge Engineering and Knowledge Management</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">2014</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">FERARI: A Prototype for Complex Event Processing over Streaming Multi-cloud Platforms</title>
		<author>
			<persName><forename type="first">Ioannis</forename><surname>Flouris</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Vasiliki</forename><surname>Manikaki</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Nikos</forename><surname>Giatrakos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Antonios</forename><surname>Deligiannakis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Minos</forename><surname>Garofalakis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michael</forename><surname>Mock</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sebastian</forename><surname>Bothe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Inna</forename><surname>Skarbovsky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Fabiana</forename><surname>Fournier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marko</forename><surname>Stajcer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2016 International Conference on Management of Data</title>
				<meeting>the 2016 International Conference on Management of Data</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="2093" to="2096" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<ptr target="https://kafka.apache.org/." />
		<title level="m">Apache Kafka</title>
				<imprint>
			<date type="published" when="2012">2012. 2012</date>
		</imprint>
		<respStmt>
			<orgName>The Apache Software Foundation</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<ptr target="http://spark.apache.org/streaming/." />
		<title level="m">Apache Spark Streaming</title>
				<imprint>
			<date type="published" when="2013">2013. 2013</date>
		</imprint>
		<respStmt>
			<orgName>The Apache Software Foundation</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<ptr target="https://flink.apache.org/." />
		<title level="m">Apache Flink</title>
				<imprint>
			<date type="published" when="2014">2014. 2014</date>
		</imprint>
		<respStmt>
			<orgName>The Apache Software Foundation</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<ptr target="http://storm.apache.org/." />
		<title level="m">Apache Storm</title>
				<imprint>
			<date type="published" when="2014">2014. 2014</date>
		</imprint>
		<respStmt>
			<orgName>The Apache Software Foundation</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Automata theory, languages, and computation</title>
		<author>
			<persName><forename type="first">John</forename><forename type="middle">E</forename><surname>Hopcroft</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Rajeev</forename><surname>Motwani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Jeffrey</forename><forename type="middle">D</forename><surname>Ullman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">International Edition</title>
		<imprint>
			<biblScope unit="volume">24</biblScope>
			<date type="published" when="2006">2006. 2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Communication-efficient distributed online prediction by dynamic model synchronization</title>
		<author>
			<persName><forename type="first">Michael</forename><surname>Kamp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mario</forename><surname>Boley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Daniel</forename><surname>Keren</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Assaf</forename><surname>Schuster</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Izchak</forename><surname>Sharfman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Joint European Conference on Machine Learning and Knowledge Discovery in Databases</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="623" to="639" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Communication-Efficient Distributed Online Learning with Kernels</title>
		<author>
			<persName><forename type="first">Michael</forename><surname>Kamp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sebastian</forename><surname>Bothe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Mario</forename><surname>Boley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michael</forename><surname>Mock</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Joint European Conference on Machine Learning and Knowledge Discovery in Databases</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="805" to="819" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Slow learners are fast</title>
		<author>
			<persName><forename type="first">John</forename><surname>Langford</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alex</forename><forename type="middle">J</forename><surname>Smola</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Martin</forename><surname>Zinkevich</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Advances in Neural Information Processing Systems</title>
		<imprint>
			<biblScope unit="volume">22</biblScope>
			<biblScope unit="page" from="2331" to="2339" />
			<date type="published" when="2009">2009. 2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Stream Prediction Using a Generative Model Based on Frequent Episodes in Event Sequences</title>
		<author>
			<persName><forename type="first">Srivatsan</forename><surname>Laxman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Vikram</forename><surname>Tankasali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Ryen</forename><forename type="middle">W</forename><surname>White</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ACM SIGKDD</title>
				<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Knowledgebased clustering of ship trajectories using density-based approach</title>
		<author>
			<persName><forename type="first">Bo</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Erico N De</forename><surname>Souza</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Stan</forename><surname>Matwin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marcin</forename><surname>Sydow</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IEEE International Conference on. IEEE</title>
				<imprint>
			<date type="published" when="2014">2014. 2014</date>
			<biblScope unit="page" from="603" to="608" />
		</imprint>
	</monogr>
	<note>Big Data (Big Data)</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">The power of events: An introduction to complex event processing in distributed enterprise systems</title>
		<author>
			<persName><forename type="first">David</forename><surname>Luckham</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Workshop on Rules and Rule Markup Languages for the Semantic Web</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2008">2008</date>
			<biblScope unit="page" from="3" to="3" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Discovery of Frequent Episodes in Event Sequences</title>
		<author>
			<persName><forename type="first">Heikki</forename><surname>Mannila</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hannu</forename><surname>Toivonen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">Inkeri</forename><surname>Verkamo</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Data Mining and Knowledge Discovery</title>
				<imprint>
			<date type="published" when="1997">1997. 1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Twittermonitor: trend detection over the twitter stream</title>
		<author>
			<persName><forename type="first">Michael</forename><surname>Mathioudakis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Nick</forename><surname>Koudas</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2010 ACM SIGMOD International Conference on Management of data</title>
				<meeting>the 2010 ACM SIGMOD International Conference on Management of data</meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="1155" to="1158" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Internet of things: Vision, applications and research challenges</title>
		<author>
			<persName><forename type="first">Daniele</forename><surname>Miorandi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sabrina</forename><surname>Sicari</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Francesco</forename><forename type="middle">De</forename><surname>Pellegrini</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Imrich</forename><surname>Chlamtac</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Ad Hoc Networks</title>
		<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="issue">7</biblScope>
			<biblScope unit="page" from="1497" to="1516" />
			<date type="published" when="2012">2012. 2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<title level="m" type="main">Introduction to time series analysis and forecasting</title>
		<author>
			<persName><forename type="first">Cheryl</forename><forename type="middle">L</forename><surname>Douglas C Montgomery</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Murat</forename><surname>Jennings</surname></persName>
		</author>
		<author>
			<persName><surname>Kulahci</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2015">2015</date>
			<publisher>Wiley</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Predictive Publish/Subscribe Matching</title>
		<author>
			<persName><forename type="first">Vinod</forename><surname>Muthusamy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Haifeng</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Hans-Arno</forename><surname>Jacobsen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">DEBS. ACM</title>
				<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Pattern Markov Chains: Optimal Markov Chain Embedding through Deterministic Finite Automata</title>
		<author>
			<persName><forename type="first">Grégory</forename><surname>Nuel</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Applied Probability</title>
		<imprint>
			<date type="published" when="2008">2008. 2008</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<ptr target="http://www.imo.org/OurWork/Safety/Navigation/Pages/AIS.aspx" />
		<title level="m">Automatic identification systems</title>
				<imprint>
			<publisher>International Maritime Organization</publisher>
			<date type="published" when="2001">2001. 2001</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Vessel pattern knowledge discovery from AIS data: A framework for anomaly detection and route prediction</title>
		<author>
			<persName><forename type="first">Giuliana</forename><surname>Pallotta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Michele</forename><surname>Vespe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Karna</forename><surname>Bryan</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Entropy</title>
		<imprint>
			<biblScope unit="volume">15</biblScope>
			<biblScope unit="issue">6</biblScope>
			<biblScope unit="page" from="2218" to="2245" />
			<date type="published" when="2013">2013. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<analytic>
		<title level="a" type="main">Online event recognition from moving vessel trajectories</title>
		<author>
			<persName><forename type="first">Kostas</forename><surname>Patroumpas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Elias</forename><surname>Alevizos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Artikis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marios</forename><surname>Vodas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Nikos</forename><surname>Pelekis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yannis</forename><surname>Theodoridis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">GeoInformatica</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="issue">2</biblScope>
			<biblScope unit="page" from="389" to="427" />
			<date type="published" when="2017">2017. 2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">Event Recognition for Maritime Surveillance</title>
		<author>
			<persName><forename type="first">Kostas</forename><surname>Patroumpas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Alexander</forename><surname>Artikis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Nikos</forename><surname>Katzouris</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Marios</forename><surname>Vodas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yannis</forename><surname>Theodoridis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Nikos</forename><surname>Pelekis</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">EDBT</title>
				<imprint>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="629" to="640" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Predicting rare events in temporal domains</title>
		<author>
			<persName><forename type="first">R</forename><surname>Vilalta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Sheng</forename><surname>Ma</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICDM</title>
				<imprint>
			<date type="published" when="2002">2002</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">Dual averaging methods for regularized stochastic learning and online optimization</title>
		<author>
			<persName><forename type="first">Lin</forename><surname>Xiao</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Machine Learning Research</title>
		<imprint>
			<biblScope unit="volume">11</biblScope>
			<biblScope unit="page" from="2543" to="2596" />
			<date type="published" when="2010-10">2010. Oct (2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">Distributed autonomous online learning: Regrets and intrinsic privacy-preserving properties</title>
		<author>
			<persName><forename type="first">Feng</forename><surname>Yan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Shreyas</forename><surname>Sundaram</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Yuan</forename><surname>Vishwanathan</surname></persName>
		</author>
		<author>
			<persName><surname>Qi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Knowledge and Data Engineering</title>
		<imprint>
			<biblScope unit="volume">25</biblScope>
			<biblScope unit="page" from="2483" to="2493" />
			<date type="published" when="2013">2013. 2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">A pattern based predictor for event streams</title>
		<author>
			<persName><forename type="first">Cheng</forename><surname>Zhou</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Boris</forename><surname>Cule</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Bart</forename><surname>Goethals</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Expert Systems with Applications</title>
		<imprint>
			<date type="published" when="2015">2015. 2015</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
