Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id CBC15200C5B for ; Wed, 5 Apr 2017 05:19:26 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id CA4C2160BA1; Wed, 5 Apr 2017 03:19:26 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 28825160B90 for ; Wed, 5 Apr 2017 05:19:25 +0200 (CEST) Received: (qmail 51812 invoked by uid 500); 5 Apr 2017 03:19:24 -0000 Mailing-List: contact user-help@predictionio.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@predictionio.incubator.apache.org Delivered-To: mailing list user@predictionio.incubator.apache.org Received: (qmail 51797 invoked by uid 99); 5 Apr 2017 03:19:24 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Apr 2017 03:19:24 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id A31F21A02D2 for ; Wed, 5 Apr 2017 03:19:23 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -2.021 X-Spam-Level: X-Spam-Status: No, score=-2.021 tagged_above=-999 required=6.31 tests=[HTML_MESSAGE=2, JMQ_TRACKER=0.5, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_SORBS_SPAM=0.5, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id rjeStGv8ajZY for ; Wed, 5 Apr 2017 03:19:20 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 5F28B5F1E9 for ; Wed, 5 Apr 2017 03:19:18 +0000 (UTC) Received: (qmail 51768 invoked by uid 99); 5 Apr 2017 03:19:17 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Apr 2017 03:19:17 +0000 Received: from mail-vk0-f43.google.com (mail-vk0-f43.google.com [209.85.213.43]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 1F2491A060E for ; Wed, 5 Apr 2017 03:19:17 +0000 (UTC) Received: by mail-vk0-f43.google.com with SMTP id s68so490416vke.3 for ; Tue, 04 Apr 2017 20:19:17 -0700 (PDT) X-Gm-Message-State: AFeK/H0n2rGn3IjMwYLvAUOYvc4i1++hciWE1XL/tyHfZnajRYf9u7P4PkolHGYhurd2x+gaegvab87XQr0pTQ== X-Received: by 10.31.179.139 with SMTP id c133mr9835476vkf.81.1491362356307; Tue, 04 Apr 2017 20:19:16 -0700 (PDT) MIME-Version: 1.0 References: <86E5A45F-D44B-4669-95E8-C0D3EE1B03F4@occamsmachete.com> <9DC38263-3733-4345-A581-4A81831A8574@occamsmachete.com> In-Reply-To: From: Donald Szeto Date: Wed, 05 Apr 2017 03:19:05 +0000 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Empty result even though there are events To: Pat Ferrel , user@predictionio.incubator.apache.org Cc: actionml-user Content-Type: multipart/alternative; boundary=001a114354c67aaf3e054c62db72 archived-at: Wed, 05 Apr 2017 03:19:27 -0000 --001a114354c67aaf3e054c62db72 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Are you using the appName in engine.json that corresponds to the appId you used when you did `pio import`? Setting a new appName in engine.json will not automatically create a new app. Apps are created when you do `pio app new`. On Tue, Apr 4, 2017 at 8:13 PM Vaghawan Ojha wrote: Hi, Yes, I couldn't use different appName. Even when I changed the appName in engine.json and did pio build, the app name in pio app list still reamins the same. Something to do with the pio itself, I guess. Thank you very much for your support. On Mon, Apr 3, 2017 at 6:58 PM, Pat Ferrel wrote: I am unclear. What is the problem? You can=E2=80=99t use different datasets (different appNames)? What is the output of `pio app list` On Apr 2, 2017, at 9:06 PM, Vaghawan Ojha wrote: Hi, Thank you, I did the changes. But whenever I changed the appname and did pio build its Ok, but while training it says invalid appname for any other app name. I'm missing something, however when I left the appname as handmade, it works. Now the data and recommendation are all working. Thank you very much, I used engine.json.minimum. I will be testing other features, like cart recommendation. Here's my engine.json { "comment":" This config file uses default settings for all but the required values see README.md for docs", "id": "default", "description": "Default settings", "engineFactory": "org.template.RecommendationEngine", "datasource": { "params" : { "name": "sample-handmade-data.txt", "appName": "handmade", "eventNames": ["purchase", "view"] } }, "sparkConf": { "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.kryo.registrator": "org.apache.mahout.sparkbindings.io .MahoutKryoRegistrator", "spark.kryo.referenceTracking": "false", "spark.kryoserializer.buffer.mb": "300", "spark.kryoserializer.buffer": "300m", "es.index.auto.create": "true" }, "algorithms": [ { "comment": "simplest setup where all values are default, popularity based backfill, must add eventsNames", "name": "ur", "params": { "appName": "handmade", "indexName": "urindex", "typeName": "items", "comment": "must have data for the first event or the model will not build, other events are optional", "eventNames": ["purchase", "view"] } } ] } I was very curious, what does this means: "name": "sample-handmade-data.txt", Thanks On Sat, Apr 1, 2017 at 1:29 AM, Pat Ferrel wrote: You have active date range filters and no dates in your data. This is because you are using the engine.json from the integration test, which uses that config. Start form engine.json.minimum and set the appName for your data and the eventNames you will use. On Mar 31, 2017, at 12:52 AM, Vaghawan Ojha wrote: More info: I don't have the secondary event like "View" in my data, I just don't collect the view event, since I'm using old purchased history of the user. With integration test data everything is Ok, but with my real data, it's not. All the data looks like this with varying item_id and user_id. There is no view events. {"entityId":"00068116","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM8941"} {"entityId":"00068116","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM8920"} {"entityId":"00088894","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM66336"} {"entityId":"00097710","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM42110"} {"entityId":"00097710","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM61833"} {"entityId":"00097710","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM65826"} {"entityId":"00097710","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM40182"} {"entityId":"00097710","entityType":"user","event":"purchase","targetEntity= Type":"item","targetEntityId":"BM5001"} Is my data wrong? I am able to successfully train and deploy the engine. On Fri, Mar 31, 2017 at 11:40 AM, Vaghawan Ojha wrote: I've 50000 transection data for experiment. I don't think it's the data because with the same data I could get recommendation using Recommendation template. On Fri, Mar 31, 2017 at 11:29 AM, Vaghawan Ojha wrote: Hi, I imported the bulk data using pio import --appid (id) --input data.json . The import was successful, then I build and trained and deployed the UR, but when I query the server, it always returns a empty json {"itemScores":[]} . I think, I must be missing something in the config, here is my engine.json { "comment":" This config file uses default settings for all but the required values see README.md for docs", "id": "default", "description": "Default settings", "engineFactory": "org.template.RecommendationEngine", "datasource": { "params" : { "name": "sample-handmade-data.txt", "appName": "handmade", "eventNames": ["purchase", "view"] } }, "sparkConf": { "spark.serializer": "org.apache.spark.serializer.KryoSerializer", "spark.kryo.registrator": "org.apache.mahout.sparkbindings.io .MahoutKryoRegistrator", "spark.kryo.referenceTracking": "false", "spark.kryoserializer.buffer": "300m", "es.index.auto.create": "true" }, "algorithms": [ { "comment": "simplest setup where all values are default, popularity based backfill, must add eventsNames", "name": "ur", "params": { "appName": "handmade", "indexName": "urindex", "typeName": "items", "comment": "must have data for the first event or the model will not build, other events are optional", "indicators": [ { "name": "purchase" },{ "name": "view", "maxCorrelatorsPerItem": 50 } ], "availableDateName": "available", "expireDateName": "expires", "dateName": "date", "num": 4 } } ] } is the data supposed to come from the sample-handmade-data.txt? I'm not sure this is weird. My json data import and trains correctly without an error. And example integration runs fine. --=20 You received this message because you are subscribed to the Google Groups "actionml-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to actionml-user+unsubscribe@googlegroups.com. To post to this group, send email to actionml-user@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/actionml-user/CA%2B69RXbRLmJXz7k%2BaB%2BP= p1i1ZA0gmvH0U8U2kMzZ%2B-stgx-xjA%40mail.gmail.com . For more options, visit https://groups.google.com/d/optout. --=20 You received this message because you are subscribed to the Google Groups "actionml-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to actionml-user+unsubscribe@googlegroups.com. To post to this group, send email to actionml-user@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/actionml-user/CA%2B69RXbiz0ghijds%2B3X8Z8= fO%3DQOnwVxY_TWh_Pg%3DHqVMsFziAQ%40mail.gmail.com . For more options, visit https://groups.google.com/d/optout. --001a114354c67aaf3e054c62db72 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Are you using the appName in engine.json that= corresponds to the appId you used when you did `pio import`? Setting a new= appName in engine.json will not automatically create a new app. Apps are c= reated when you do `pio app new`.
=
On Tue, Apr 4, 2017 at 8:13 PM Vaghawan Ojha <vaghawan781= @gmail.com> wrote:
Hi,
<= br class=3D"gmail_msg">
Yes, I couldn't u= se different appName. Even when I changed the appName in engine.json and di= d pio build, the app name in pio app list still reamins the same. Something= to do with the pio itself, I guess.

Thank you very much for your= support.=C2=A0
<= /div>

On Mon, Apr 3, 2017 at 6:58 PM, Pat Ferrel <pat@occamsmachete.com> wrote:
I am unclear. What is the pro= blem? You can=E2=80=99t use different datasets (different appNames)?

Wh= at is the output of `pio app list`


On A= pr 2, 2017, at 9:06 PM, Vaghawan Ojha <vaghawan781@gmail.com>= wrote:

Hi,=C2=A0

Thank you, = I did the changes. But whenever I changed the appname and did pio build its= Ok, but while training it says invalid appname for any other app name. I&#= 39;m missing something, however when I left the appname as handmade, it wor= ks.=C2=A0

Now the data and recommendation are all working. Thank = you very much, I used engine.json.minimum. I will be testing other features= , like cart recommendation. Here's my engine.json

{
=C2=A0 "comment":&= quot; This config file uses default settings for all but the required value= s see README.md for docs",
=C2=A0 "= id": "default",
=C2=A0 "d= escription": "Default settings",
=C2=A0 "engineFactory": "org.template.RecommendationEngin= e",
=C2=A0 "datasource": {
=C2=A0 =C2=A0 "params" : {
=C2=A0 =C2=A0 =C2=A0 "name": "sample-hand= made-data.txt",
=C2=A0 =C2=A0 =C2=A0 &qu= ot;appName": "handmade",
=C2= =A0 =C2=A0 =C2=A0 "eventNames": ["purchase", "view= "]
=C2=A0 =C2=A0 }
=C2=A0 },
=C2=A0 "sparkConf&quo= t;: {
=C2=A0 =C2=A0 "spark.serializer&qu= ot;: "org.apache.spark.serializer.KryoSerializer",
=C2=A0 =C2=A0 "spark.kryo.registrator": "org= .apache.mahout.sparkbindings.io.MahoutKryoRegistrator",
=C2=A0 =C2=A0 "spark.kryo.referenceTracking": = "false",
=C2=A0 =C2=A0 "spark.= kryoserializer.buffer.mb": "300",
=C2=A0 =C2=A0 "spark.kryoserializer.buffer": "300m"= ,
=C2=A0 =C2=A0 "es.index.auto.create&qu= ot;: "true"
=C2=A0 },
=C2=A0 "algorithms": [
=C2=A0 =C2=A0 {
=C2=A0 =C2=A0 =C2=A0 &qu= ot;comment": "simplest setup where all values are default, popula= rity based backfill, must add eventsNames",
=C2=A0 =C2=A0 =C2=A0 "name": "ur",
=C2=A0 =C2=A0 =C2=A0 "params": {
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "appName": "handm= ade",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "= indexName": "urindex",
=C2=A0 = =C2=A0 =C2=A0 =C2=A0 "typeName": "items",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 "comment": "mus= t have data for the first event or the model will not build, other events a= re optional",
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 "eventNames": ["purchase", "view"]
<= div class=3D"gmail_msg">=C2=A0 =C2=A0 =C2=A0 }
=C2=A0 =C2=A0 }
=C2=A0 ]
}

<= /div>
I was very curious, what does this means: &qu= ot;name": "sample-handmade-data.txt",
Thanks

=

On Sat, Apr 1, 201= 7 at 1:29 AM, Pat Ferrel=C2=A0<= span class=3D"gmail_msg"><pat@occamsmachete.com>=C2=A0wrote:
<= blockquote class=3D"gmail_quote gmail_msg" style=3D"margin:0px 0px 0px 0.8e= x;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-styl= e:solid;padding-left:1ex">
You have active date range filters and no dates in your data. This i= s because you are using the engine.json from the integration test, which us= es that config.=C2=A0

Start form engine.json.minimum and set the appNam= e for your data and the eventNames you will use.

On Mar 31, 2017, at 12:52 AM, Vaghawan Ojha <vaghawan781@gmail.co= m> wrote:

More info: I don't have the secondary event like "View&= quot; in my data, I just don't collect the view event, since I'm us= ing old purchased history of the user.=C2=A0

With integration test data= everything is Ok, but with my real data, it's not.=C2=A0 All the data = looks like this with varying item_id and user_id. There is no view events.= =C2=A0

{"entityId":"00068= 116","entityType":"user","event":"p= urchase","targetEntityType":"item","targetEnt= ityId":"BM8941"}
{"entity= Id":"00068116","entityType":"user","= ;event":"purchase","targetEntityType":"item&q= uot;,"targetEntityId":"BM8920"}
{"entityId":"00088894","entityType":&q= uot;user","event":"purchase","targetEntityTyp= e":"item","targetEntityId":"BM66336"}
{"entityId":"00097710",&quo= t;entityType":"user","event":"purchase",= "targetEntityType":"item","targetEntityId":&q= uot;BM42110"}
{"entityId":&quo= t;00097710","entityType":"user","event":= "purchase","targetEntityType":"item","ta= rgetEntityId":"BM61833"}
{&quo= t;entityId":"00097710","entityType":"user&quo= t;,"event":"purchase","targetEntityType":&quo= t;item","targetEntityId":"BM65826"}
{"entityId":"00097710","entityType= ":"user","event":"purchase","target= EntityType":"item","targetEntityId":"BM40182&= quot;}
{"entityId":"00097710&q= uot;,"entityType":"user","event":"purcha= se","targetEntityType":"item","targetEntityId= ":"BM5001"}

Is my data wrong? I am able to s= uccessfully =C2=A0train and deploy the engine.=C2=A0

On Fri, Mar 31, 2017 at 11:40 AM, V= aghawan Ojha=C2= =A0<vaghawan781@gmail.com>=C2=A0wrote:
I've 50000 transection data f= or experiment. I don't =C2=A0think it's the data because with the s= ame data I could get recommendation using Recommendation template.=C2=A0

On Fri, Mar 31, 2017 at 11:29 AM, Vaghawan Ojha=C2=A0<vaghawan781@gmail.com>=C2=A0wrote:
=
Hi,=C2=A0

I importe= d the bulk data using pio import --appid (id) --input =C2=A0data.json . The= import was successful, then I build and trained and deployed the UR, but w= hen I query the server, it always returns a empty json=C2=A0{"itemScor= es":[]} .=C2=A0

=

I think, =C2=A0I must be missing something in the config, here i= s my engine.json=C2=A0

{
=C2=A0=C2=A0"comment":" This config file uses default = settings for all but the required values see README.md for docs",
=C2=A0=C2=A0"id": "default",
=C2=A0=C2=A0"description": "Default settings&quo= t;,
=C2=A0=C2=A0"engineFactory": "org.t= emplate.RecommendationEngine",
=C2=A0=C2=A0"= datasource": {
=C2=A0 =C2=A0=C2=A0"params&q= uot; : {
=C2=A0 =C2=A0 =C2=A0=C2=A0"name": &= quot;sample-handmade-data.txt",
=C2=A0 = =C2=A0 =C2=A0=C2= =A0"appName": "handmade",
=C2=A0 =C2=A0 =C2=A0=C2=A0"eventNames": ["purchase", &qu= ot;view"]
=C2=A0 =C2=A0=C2=A0}
=C2=A0=C2=A0=C2=A0"sparkConf": {=
=C2=A0 =C2=A0=C2=A0"spark.serializer": &quo= t;org.apache.spark.serializer.KryoSerializer",
=C2=A0 =C2=A0=C2=A0"spark.kryo.registrator": "org.apache.mahou= t.sparkbindings.io.MahoutKryoRegistrator",
=C2=A0 =C2=A0=C2=A0"spark.kryo.referenceTracking": "false"= ;,
=C2=A0 =C2=A0=C2=A0"spark.kryoserializer.buffe= r": "300m",
=C2=A0 =C2=A0=C2=A0"es= .index.auto.create": "true"
= =C2=A0=C2=A0},
=C2=A0=C2=A0"algorithms": [
=C2=A0 =C2=A0=C2=A0{
=C2=A0 =C2=A0= =C2=A0=C2=A0"comment": "simplest setup where all values are default,= popularity based backfill, must add eventsNames",
=C2=A0 =C2=A0 =C2=A0=C2=A0"name": "ur",
=C2=A0 =C2=A0 =C2=A0=C2=A0"params": {
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"appName": "handmade"= ;,
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"indexName&qu= ot;: "urindex",
=C2=A0 =C2=A0 =C2= =A0 =C2=A0=C2=A0= "typeName": "items",
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"comment": "must have data for th= e first event or the model will not build, other events are optional",=
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"indicators&quo= t;: [
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0{
<= div class=3D"gmail_msg">=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"name&qu= ot;: "purchase"
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0=C2=A0},{
=C2=A0 =C2=A0 =C2=A0 =C2=A0= =C2=A0 =C2=A0= =C2=A0"name": "view",
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"maxCorrelatorsPerItem"= : 50
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0}
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0],
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"availableDateName": "available= ",
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"expireD= ateName": "expires",
=C2=A0 = =C2=A0 =C2=A0 =C2=A0=C2=A0"dateName": "date",
=C2=A0 =C2=A0 =C2=A0 =C2=A0=C2=A0"num": 4
=C2=A0 =C2=A0 =C2=A0=C2=A0}
=C2=A0 =C2=A0=C2=A0}
=C2=A0=C2=A0]
}
<= div class=3D"gmail_msg">
is the data supposed to come from the sample-handmade-data.txt? I'm= not sure this is weird. My json data import and trains correctly without a= n error. And example integration runs fine.
<= br class=3D"gmail_msg">


--You received this message because you are subscribed= to the Google Groups "actionml-user" group.
To unsubscrib= e from this group and stop receiving emails from it, send an email to=C2=A0actionml-user+unsubscribe@googlegroups.com.
To post to this grou= p, send email to= =C2=A0
actionml-user@googlegroups.com.
To view this discuss= ion on the web visit=C2=A0
https://groups.google.com/d/msgid/actionml-user/CA%2B69RXbRLmJX= z7k%2BaB%2BPp1i1ZA0gmvH0U8U2kMzZ%2B-stgx-xjA%40mail.gmail.com.
<= span style=3D"font-family:Helvetica;font-size:12px;font-style:normal;font-v= ariant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:star= t;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;f= loat:none;display:inline!important" class=3D"gmail_msg">For more options, v= isit=C2=A0https://groups.google.com/d/optout.



--=C2=A0
You received this message because yo= u are subscribed to the Google Groups "actionml-user" group.
To unsubscribe from this group and stop receiving emails from it, send a= n email to=C2=A0actionml-user+unsubscribe@googlegroups.com.
To post to this group, se= nd email to=C2=A0actionml-user@googlegroups.com.
To view this discussion on the web vi= sit=C2=A0https://groups.google.com/d= /msgid/actionml-user/CA%2B69RXbiz0ghijds%2B3X8Z8fO%3DQOnwVxY_TWh_Pg%3DHqVMs= FziAQ%40mail.gmail.com.
For more options, visit=C2=A0https://groups.google.= com/d/optout.<= /span>
<= /div>
--001a114354c67aaf3e054c62db72--