PredictionIO consists of the following components:
In a common scenario, PredictionIO's Event Server continuously collects data from your application. A PredictionIO engine then builds predictive model(s) with one or more algorithms using the data. After it is deployed as a web service, it listens to queries from your application and respond with predicted results in real-time.
Event Server collects data from your application, in real-time or in batch. It can also unify data that are related to your application from multiple platforms. After data is collected, it mainly serves two purposes:
Like a database server, Event Server can host multiple applications. Data are separated for each application by a unique app_name.
Once Event Server is launched, you can send data to a specific app_name, identified by an Access Key, through its Event API with HTTP requests or with one of the SDKs.
In some special case, you may want your engine to read data from another datastore instead of Event Server. It can be achieved by making some modifications.
Engine is responsible for making prediction. It contains one or more machine learning algorithms. An engine reads training data and build predictive model(s). It is then deployed as a web service. A deployed engine responds to prediction queries from your application through REST API in real-time.
PredictionIO's template gallery offers Engine Templates for all kinds of machine learning tasks. You can easily create one or more engines from these templates .
The components of a template, namely Data Source, Data Preparator, Algorithm(s), and Serving, are all customizable for your specific needs.