From commits-return-5502-archive-asf-public=cust-asf.ponee.io@predictionio.apache.org Fri Oct 5 13:22:41 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 494A1180677 for ; Fri, 5 Oct 2018 13:22:39 +0200 (CEST) Received: (qmail 79159 invoked by uid 500); 5 Oct 2018 11:22:38 -0000 Mailing-List: contact commits-help@predictionio.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@predictionio.apache.org Delivered-To: mailing list commits@predictionio.apache.org Received: (qmail 79141 invoked by uid 99); 5 Oct 2018 11:22:38 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 05 Oct 2018 11:22:38 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D964CE08DE; Fri, 5 Oct 2018 11:22:37 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: git-site-role@apache.org To: commits@predictionio.apache.org Date: Fri, 05 Oct 2018 11:22:39 -0000 Message-Id: <77e0a9b73ccb447f91cbc3b32d9cf4dc@git.apache.org> In-Reply-To: <4e84074e13cf49d199bc6f07f224a47c@git.apache.org> References: <4e84074e13cf49d199bc6f07f224a47c@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [3/7] predictionio-site git commit: Documentation based on apache/predictionio#144d23c344c800ee0691a685d97a21df4fb7c3da http://git-wip-us.apache.org/repos/asf/predictionio-site/blob/fef1e81c/templates/javaecommercerecommendation/quickstart/index.html ---------------------------------------------------------------------- diff --git a/templates/javaecommercerecommendation/quickstart/index.html b/templates/javaecommercerecommendation/quickstart/index.html index 65fec03..3258c56 100644 --- a/templates/javaecommercerecommendation/quickstart/index.html +++ b/templates/javaecommercerecommendation/quickstart/index.html @@ -32,7 +32,7 @@ Your system is all ready to go. [INFO] [App$] MyApp1 | 1 | 3mZWDzci2D5YsqAnqNnXH9SB6Rg3dsTBs8iHkK6X2i54IQsIZI1eEeQQyMfs7b3F | (all) [INFO] [App$] MyApp2 | 2 | io5lz6Eg4m3Xe4JZTBFE13GMAf1dhFl6ZteuJfrO84XpdOz9wRCrDU44EUaYuXq5 | (all) [INFO] [App$] Finished listing 2 app(s). -

4. Collecting Data

Next, let's collect training data for this Engine. By default, the E-Commerce Recommendation Engine Template supports 2 types of entities and 2 events: user and item; events view and buy. An item has the categories property, which is a list of category names (String). A user can view and buy an item. The specical constraint entiy with entityId unavailableItems defines a list of unavailable items and is taken into account in realtime during serving.

In summary, this template requires '$set' user event, '$set' item event, user-view-item events, user-buy-item event and '$set' constraint event.

This template can easily be customized to consider other user-to-it em events.

You can send these events to PredictionIO Event Server in real-time easily by making a HTTP request or through the provided SDK. Please see App Integration Overview for more details how to integrate your app with SDK.

Let's try sending events to EventServer with the following curl commands (The corresponding SDK code is showed in other tabs).

Replace <ACCCESS_KEY> by the Access Key generated in above steps. Note that localhost:7070 is the default URL of the Event Server.

For convenience, set your access key to the shell variable, run:

$ ACCESS_KEY=<ACCESS_KEY>

For example, when a new user with id "u0" is created in your app on time 2014-11-02T09:39:45.618-08:00 (current time will be used if eventTime is not specified), you can send a $set event for this user. To send this event, run the following curl command:

1
+

4. Collecting Data

Next, let's collect training data for this Engine. By default, the E-Commerce Recommendation Engine Template supports 2 types of entities and 2 events: user and item; events view and buy. An item has the categories property, which is a list of category names (String). A user can view and buy an item. The specical constraint entiy with entityId unavailableItems defines a list of unavailable items and is taken into account in realtime during serving.

In summary, this template requires '$set' user event, '$set' item event, user-view-item events, user-buy-item event and '$set' constraint event.

This template can easily be customized to consider other user-to-it em events.

You can send these events to PredictionIO Event Server in real-time easily by making a HTTP request or through the provided SDK. Please see App Integration Overview for more details how to integrate your app with SDK.

Let's try sending events to EventServer with the following curl commands (The corresponding SDK code is showed in other tabs).

Replace <ACCCESS_KEY> by the Access Key generated in above steps. Note that localhost:7070 is the default URL of the Event Server.

For convenience, set your access key to the shell variable, run:

$ ACCESS_KEY=<ACCESS_KEY>

For example, when a new user with id "u0" is created in your app on time 2014-11-02T09:39:45.618-08:00 (current time will be used if eventTime is not specified), you can send a $set event for this user. To send this event, run the following curl command:

1
 2
 3
 4
@@ -47,7 +47,7 @@ Your system is all ready to go.
   "entityId" : "u0",
   "eventTime" : "2014-11-02T09:39:45.618-08:00"
 }'
-
1
+
1
 2
 3
 4
@@ -78,7 +78,7 @@ Your system is all ready to go.
   entity_type="user",
   entity_id=<USER_ID>
 )
-
1
+
1
 2
 3
 4
@@ -119,7 +119,7 @@ Your system is all ready to go.
   'properties' => array('categories' => array('<CATEGORY_1>', '<CATEGORY_2>'))
 ));
 ?>
-
1
+
1
 2
 3
 4
@@ -136,7 +136,7 @@ Your system is all ready to go.
   'user',
   <USER ID>
 )
-
1
+
1
 2
 3
 4
@@ -161,7 +161,7 @@ Your system is all ready to go.
   .entityType("user")
   .entityId(<USER_ID>);
 client.createEvent(userEvent);
-

When a new item "i0" is created in your app on time 2014-11-02T09:39:45.618-08:00 (current time will be used if eventTime is not specified), you can send a $set event for the item. Note that the item is set with categories properties: "c1" and "c2". Run the following curl command:

When a new item "i0" is created in your app on time 2014-11-02T09:39:45.618-08:00 (current time will be used if eventTime is not specified), you can send a $set event for the item. Note that the item is set with categories properties: "c1" and "c2". Run the following curl command:

1
 2
 3
 4
@@ -182,7 +182,7 @@ Your system is all ready to go.
   }
   "eventTime" : "2014-11-02T09:39:45.618-08:00"
 }'
-
1
+
1
 2
 3
 4
@@ -201,7 +201,7 @@ Your system is all ready to go.
     "categories" : ["<CATEGORY_1>", "<CATEGORY_2>"]
   }
 )
-
1
+
1
 2
 3
 4
@@ -218,7 +218,7 @@ Your system is all ready to go.
   'properties' => array('categories' => array('<CATEGORY_1>', '<CATEGORY_2>'))
 ));
 ?>
-
1
+
1
 2
 3
 4
@@ -235,7 +235,7 @@ Your system is all ready to go.
   }
 )
 
-
1
+
1
 2
 3
 4
@@ -248,7 +248,7 @@ Your system is all ready to go.
   .entityId(<ITEM_ID>)
   .property("categories", ImmutableList.of("<CATEGORY_1>", "<CATEGORY_2>"));
 client.createEvent(itemEvent)
-

The properties of the user and item can be set, unset, or delete by special events $set, $unset and $delete. Please refer to Event API for more details of using these events.

When the user "u0" view item "i0" on time 2014-11-10T12:34:56.123-08:00 (current time will be used if eventTime is not specified), you can send a view event. Run the following curl command:

The properties of the user and item can be set, unset, or delete by special events $set, $unset and $delete. Please refer to Event API for more details of using these events.

When the user "u0" view item "i0" on time 2014-11-10T12:34:56.123-08:00 (current time will be used if eventTime is not specified), you can send a view event. Run the following curl command:

1
 2
 3
 4
@@ -267,7 +267,7 @@ Your system is all ready to go.
   "targetEntityId" : "i0",
   "eventTime" : "2014-11-10T12:34:56.123-08:00"
 }'
-
1
+
1
 2
 3
 4
@@ -284,7 +284,7 @@ Your system is all ready to go.
   target_entity_type="item",
   target_entity_id=<ITEM ID>
 )
-
1
+
1
 2
 3
 4
@@ -303,7 +303,7 @@ Your system is all ready to go.
    'targetEntityId' => <ITEM ID>
 ));
 ?>
-
1
+
1
 2
 3
 4
@@ -322,7 +322,7 @@ Your system is all ready to go.
   }
 )
 
-
1
+
1
 2
 3
 4
@@ -337,7 +337,7 @@ Your system is all ready to go.
     .targetEntityType("item")
     .targetEntityId(<ITEM_ID>);
 client.createEvent(viewEvent);
-

When the user "u0" buy item "i0" on time 2014-11-10T13:00:00.123-08:00 (current time will be used if eventTime is not specified), you can send a view event. Run the following curl command:

When the user "u0" buy item "i0" on time 2014-11-10T13:00:00.123-08:00 (current time will be used if eventTime is not specified), you can send a view event. Run the following curl command:

1
 2
 3
 4
@@ -356,7 +356,7 @@ Your system is all ready to go.
   "targetEntityId" : "i0",
   "eventTime" : "2014-11-10T13:00:00.123-08:00"
 }'
-
1
+
1
 2
 3
 4
@@ -373,7 +373,7 @@ Your system is all ready to go.
   target_entity_type="item",
   target_entity_id=<ITEM ID>
 )
-
1
+
1
 2
 3
 4
@@ -392,7 +392,7 @@ Your system is all ready to go.
    'targetEntityId' => <ITEM ID>
 ));
 ?>
-
1
+
1
 2
 3
 4
@@ -409,7 +409,7 @@ Your system is all ready to go.
     'targetEntityId' => <ITEM ID>
   }
 )
-
1
+
1
 2
 3
 4
@@ -490,19 +490,19 @@ User u10 buys item i40
 

When the engine is deployed successfully and running, you should see a console message similar to the following:

1
 2
[INFO] [HttpListener] Bound to /0.0.0.0:8000
 [INFO] [MasterActor] Bind successful. Ready to serve.
-

Do not kill the deployed engine process.

By default, the deployed engine binds to http://localhost:8000. You can visit that page in your web browser to check its status.

Engine Status

6. Use the Engine

Now, You can retrieve predicted results. To recommend 4 items to user ID "u1". You send this JSON { "userEntityId": "u1", "number": 4 } to the deployed engine and it will return a JSON of the recommended items. Simply send a query by making a HTTP request or through the EngineClient of an SDK.

With the deployed engine running, open another terminal and run the following curl command or use SDK to send the query:

1
+

Do not kill the deployed engine process.

By default, the deployed engine binds to http://localhost:8000. You can visit that page in your web browser to check its status.

Engine Status

6. Use the Engine

Now, You can retrieve predicted results. To recommend 4 items to user ID "u1". You send this JSON { "userEntityId": "u1", "number": 4 } to the deployed engine and it will return a JSON of the recommended items. Simply send a query by making a HTTP request or through the EngineClient of an SDK.

With the deployed engine running, open another terminal and run the following curl command or use SDK to send the query:

1
 2
 3
 4
$ curl -H "Content-Type: application/json" \
 -d '{ "userEntityId": "u1", "number": 4 }' \
 http://localhost:8000/queries.json
 
-
1
+
1
 2
 3
import predictionio
 engine_client = predictionio.EngineClient(url="http://localhost:8000")
 print engine_client.send_query({"userEntityId": "u1", "number": 4})
-
1
+
1
 2
 3
 4
@@ -521,7 +521,7 @@ http://localhost:8000/queries.json
 print_r($response);
 
 ?>
-
1
+
1
 2
 3
 4
@@ -534,7 +534,7 @@ http://localhost:8000/queries.json
 response = client.send_query('userEntityId' => 'i1', 'number' => 4)
 
 puts response
-
1
+
1
 2
 3
 4
@@ -578,7 +578,7 @@ http://localhost:8000/queries.json
     {"itemEntityId":"i3","score":0.003007015026561692}
   ]
 }
-

MyECommerceRecommendation is now running.

To update the model periodically with new data, simply set up a cron job to call pio train and pio deploy. The engine will continue to serve prediction results during the re-train process. After the training is completed, pio deploy will automatically shutdown the existing engine server and bring up a new process on the same port.

Note that if you import a large data set and the training seems to be taking forever or getting stuck, it's likely that there is not enough executor memory. It's recommended to setup a Spark standalone cluster, you'll need to specify more driver and executor memory when training with a large data set. Please see FAQ here for instructions.

Setting constraint "unavailableItems"

Now let's send an item constraint "unavailableItems" (replace accessKey with your Access Key):

You can also use SDK to send this event as described in the SDK sample above.

1
+

MyECommerceRecommendation is now running.

To update the model periodically with new data, simply set up a cron job to call pio train and pio deploy. The engine will continue to serve prediction results during the re-train process. After the training is completed, pio deploy will automatically shutdown the existing engine server and bring up a new process on the same port.

Note that if you import a large data set and the training seems to be taking forever or getting stuck, it's likely that there is not enough executor memory. It's recommended to setup a Spark standalone cluster, you'll need to specify more driver and executor memory when training with a large data set. Please see FAQ here for instructions.

Setting constraint "unavailableItems"

Now let's send an item constraint "unavailableItems" (replace accessKey with your Access Key):

You can also use SDK to send this event as described in the SDK sample above.

1
 2
 3
 4
@@ -599,7 +599,7 @@ http://localhost:8000/queries.json
   }
   "eventTime" : "2015-02-17T02:11:21.934Z"
 }'
-
1
+
1
 2
 3
 4
@@ -618,7 +618,7 @@ http://localhost:8000/queries.json
     "items" : ["<ITEM ID1>", "<ITEM ID2>"]
   }
 )
-
1
+
1
 2
 3
 4
@@ -635,7 +635,7 @@ http://localhost:8000/queries.json
   'properties' => array('items' => array('<ITEM ID1>', '<ITEM ID2>'))
 ));
 ?>
-
1
+
1
 2
 3
 4
@@ -650,7 +650,7 @@ http://localhost:8000/queries.json
     'properties' => { 'items' => ['<ITEM ID1>', '<ITEM ID2>'] }
   }
 )
-
1
+
1
 2
 3
 4

http://git-wip-us.apache.org/repos/asf/predictionio-site/blob/fef1e81c/templates/leadscoring/quickstart/index.html
----------------------------------------------------------------------
diff --git a/templates/leadscoring/quickstart/index.html b/templates/leadscoring/quickstart/index.html
index f91f9d2..dbee499 100644
--- a/templates/leadscoring/quickstart/index.html
+++ b/templates/leadscoring/quickstart/index.html
@@ -32,7 +32,7 @@ Your system is all ready to go.
 [INFO] [App$]               MyApp1 |    1 | 3mZWDzci2D5YsqAnqNnXH9SB6Rg3dsTBs8iHkK6X2i54IQsIZI1eEeQQyMfs7b3F | (all)
 [INFO] [App$]               MyApp2 |    2 | io5lz6Eg4m3Xe4JZTBFE13GMAf1dhFl6ZteuJfrO84XpdOz9wRCrDU44EUaYuXq5 | (all)
 [INFO] [App$] Finished listing 2 app(s).
-

4. Collecting Data

Next, let's collect training data for this Engine. By default, Lead Scoring Engine Template supports the following entities: user, page, and item. An user views a page, and buys an item.

Note that a "sessionId" property is required to indicate these events happen in the same session. In the first visit of a user, you should specify the optional "referrral ID" and "browser" information. These are used to determine where the user comes from and the browser information.

In summary, this template requires user-view-page event and user-buy-item events with the session ID, referrer ID and browser properties.

You can send these events to PredictionIO Event Server in real-time easily by making a HTTP request or through the provided SDK. Please see App Integration Overview for more details how to integrate your app with SDK.

Let's try sending events to EventServer with the following curl commands (The corresponding SDK code is showed in other tabs).

Replace <ACCCESS_KEY> by the Access Key generated in above steps. Note that localhost:7070 is the default URL of the Event Server.

For convenience, set your access key to the shell variable, run:

$ ACCESS_KEY=<ACCESS_KEY>

For example, when an user with ID u0 views a URL page "example.com/page0" on time 2014-11-02T09:39:45.618-08:00, with session ID "akdj230fj8ass" (current time will be used if eventTime is not specified) you can send the event to Event Server. Run the following curl command:

1
+

4. Collecting Data

Next, let's collect training data for this Engine. By default, Lead Scoring Engine Template supports the following entities: user, page, and item. An user views a page, and buys an item.

Note that a "sessionId" property is required to indicate these events happen in the same session. In the first visit of a user, you should specify the optional "referrral ID" and "browser" information. These are used to determine where the user comes from and the browser information.

In summary, this template requires user-view-page event and user-buy-item events with the session ID, referrer ID and browser properties.

You can send these events to PredictionIO Event Server in real-time easily by making a HTTP request or through the provided SDK. Please see App Integration Overview for more details how to integrate your app with SDK.

Let's try sending events to EventServer with the following curl commands (The corresponding SDK code is showed in other tabs).

Replace <ACCCESS_KEY> by the Access Key generated in above steps. Note that localhost:7070 is the default URL of the Event Server.

For convenience, set your access key to the shell variable, run:

$ ACCESS_KEY=<ACCESS_KEY>

For example, when an user with ID u0 views a URL page "example.com/page0" on time 2014-11-02T09:39:45.618-08:00, with session ID "akdj230fj8ass" (current time will be used if eventTime is not specified) you can send the event to Event Server. Run the following curl command:

1
 2
 3
 4
@@ -61,7 +61,7 @@ Your system is all ready to go.
   }
   "eventTime" : "2014-11-02T09:39:45.618-08:00"
 }'
-
1
+
1
 2
 3
 4
@@ -106,7 +106,7 @@ Your system is all ready to go.
     "browser": <BROWSER> # optinal. but should specify this if you have this information when user views the landing page
   }
 )
-
1
+
1
 2
 3
 4
@@ -145,7 +145,7 @@ Your system is all ready to go.
   )
 ));
 ?>
-
1
+
1
 2
 3
 4
@@ -178,7 +178,7 @@ Your system is all ready to go.
     }
   }
 )
-
1
+
1
 2
 3
 4
@@ -213,7 +213,7 @@ Your system is all ready to go.
     .property("referrerId", "<REFERRER ID>")
     .property("browser", "<BROWSER>");
 client.createEvent(viewEvent);
-

In the same browsing session "akdj230fj8ass", the user with ID u0 buys an item i0 on time 2014-11-02T09:42:00.123-08:00 (current time will be used if eventTime is not specified), you can send the following buy event. Run the following curl command:

In the same browsing session "akdj230fj8ass", the user with ID u0 buys an item i0 on time 2014-11-02T09:42:00.123-08:00 (current time will be used if eventTime is not specified), you can send the following buy event. Run the following curl command:

1
 2
 3
 4
@@ -238,7 +238,7 @@ Your system is all ready to go.
   }
   "eventTime" : "2014-11-02T09:42:00.123-08:00"
 }'
-
1
+
1
 2
 3
 4
@@ -261,7 +261,7 @@ Your system is all ready to go.
     "sessionId": <SESSION ID>, # required
   }
 )
-
1
+
1
 2
 3
 4
@@ -288,7 +288,7 @@ Your system is all ready to go.
 ));
 
 ?>
-
1
+
1
 2
 3
 4
@@ -311,7 +311,7 @@ Your system is all ready to go.
     }
   }
 )
-
1
+
1
 2
 3
 4
@@ -371,7 +371,7 @@ User u5 buys item i5
 

When the engine is deployed successfully and running, you should see a console message similar to the following:

1
 2
[INFO] [HttpListener] Bound to /0.0.0.0:8000
 [INFO] [MasterActor] Bind successful. Ready to serve.
-

Do not kill the deployed engine process.

By default, the deployed engine binds to http://localhost:8000. You can visit that page in your web browser to check its status.

Engine Status

6. Use the Engine

Now, You can retrieve the results. When a user lands on your page "example.com/page9", with referrer "referrer10.com" and browser "Firefox", you can get the predicted lead score by sending this JSON '{ "landingPageId" : "example.com/page9", "referrerId" : "referrer10.com", "browser": "Firefox" }' to the deployed engine. The engine will return a JSON with the score.

Simply send a query by making a HTTP request or through the EngineClient of an SDK.

With the deployed engine running, open another terminal and run the following curl command or use SDK to send the query:

1
+

Do not kill the deployed engine process.

By default, the deployed engine binds to http://localhost:8000. You can visit that page in your web browser to check its status.

Engine Status

6. Use the Engine

Now, You can retrieve the results. When a user lands on your page "example.com/page9", with referrer "referrer10.com" and browser "Firefox", you can get the predicted lead score by sending this JSON '{ "landingPageId" : "example.com/page9", "referrerId" : "referrer10.com", "browser": "Firefox" }' to the deployed engine. The engine will return a JSON with the score.

Simply send a query by making a HTTP request or through the EngineClient of an SDK.

With the deployed engine running, open another terminal and run the following curl command or use SDK to send the query:

1
 2
 3
 4
@@ -384,7 +384,7 @@ User u5 buys item i5
   "browser": "Firefox" }' \
 http://localhost:8000/queries.json
 
-
1
+
1
 2
 3
 4
@@ -397,7 +397,7 @@ http://localhost:8000/queries.json
   "referrerId" : "referrer10.com",
   "browser": "Firefox"
 })
-
1
+
1
 2
 3
 4
@@ -426,7 +426,7 @@ http://localhost:8000/queries.json
 print_r($response);
 
 ?>
-
1
+
1
 2
 3
 4
@@ -447,7 +447,7 @@ http://localhost:8000/queries.json
 )
 
 puts response
-
1
+
1
 2
 3
 4