SeldonIO / seldon-server

Machine Learning Platform and Recommendation Engine built on Kubernetes
https://www.seldon.io/
Apache License 2.0
1.47k stars 300 forks source link

tagaffinityrecommender tag store not found #16

Closed boogardgodig closed 8 years ago

boogardgodig commented 8 years ago

I'm trying tagaffinity recommender. the model looks fine. but i can't get any recommendations. I get this error in api logs 2016-05-11 13:00:02,173 DEBUG http-nio-8080-exec-10 UserTagAffinityRecommender [client] [test123] [] - Failed to get tag store for client client 2016-05-11 13:00:02,173 DEBUG http-nio-8080-exec-10 RecommendationPeer [client] [test123] [] - Recommender userTagAffinityRecommender returned 0 results what's tag store? why seldon can't find it?

In case it's related, this is my recommender configuration. /all_clients/client/algs: {"algorithms": [{"name":"userTagAffinityRecommender","filters":[],"includers":["recentItemsIncluder"], "config":[{"name":"io.seldon.algorithm.tags.attrid","value":7}, {"name":"io.seldon.algorithm.tags.useitemdim","value":"false"}, {"name":"io.seldon.algorithm.inclusion.itemsperincluder","value":1000}, {"name":"io.seldon.algorithm.clusters.minnumberitemsforvalidclusterresult","value":10}, {"name":"io.seldon.algorithm.clusters.decayratesecs","value":10800}, {"name":"io.seldon.algorithm.clusters.categorydimensionname","value":"category"}]}, {"name":"recentItemsRecommender","filters":[],"includers":[],"config":[]}], "combiner":"firstSuccessfulCombiner"}

and I got tags.attrid from item_attr table in seldon db | attr_id | name | type | item_type | semantic | | 7 | tags | VARCHAR | 1 | NULL |

ukclivecox commented 8 years ago

It looks like no model for that client has been loaded. If you ran the Spark job then check two locations in Zookeeper:

/config/tagaffinity should have your client name e.g., client /all_clients//tagaffinity should have the location of the model, e.g. /all_clients/client/tagaffinity

boogardgodig commented 8 years ago

/config/tagaffinity was empty /all_clients/client/tagaffinity points to corrent location of model in /seldon-models/client/16932 now I'm getting the following. what's a tag map? 2016-05-11 13:00:02,173 DEBUG http-nio-8080-exec-10 UserTagAffinityRecommender [client] [test123] [] - Failed to get tag map for user test123?

ukclivecox commented 8 years ago

It means there was no tag relationships for this user. Were they in the training data?

boogardgodig commented 8 years ago

all my items have at least one tag. and that user has actions in logs but I constantly get that error

ukclivecox commented 8 years ago

I suggest you look at the actual model files. They are quite simple text files. You can check which users have been loaded.

The model has settings that might mean the user has not enough activity for a tag for it to be included, in particular: minActionsPerUser : Int = 10, minTagCount : Int = 4,

I suggest you change these to lower numbers if you wish.

boogardgodig commented 8 years ago

I looked into models .when I set minActionsPerUser=1 and minTagCount=1 , minPcIncrease=0.01 with days=4 (number of days to input actions) it shows 4 tags for the user. but when i tryied other number of days the model file was empty. Eventhough it says tagCounts size is 2051 after decompressing actions. User has interacted with items that have some tags in common. Is it wrong to expect to seen some of those tags in model files? I can't exactly understand why training with more item intreractions doesn't genererate more tag entries in user model. Why is this happenning? Can't I set tagaffinity so that at least k tags are selected per user?

How can I fix this?

boogardgodig commented 8 years ago

The problem was caused by line 192 of UserTagAffinity.scala if (allTags.size > maxAllowedTags) None I changed that to return top maxAllowedTags off allTags for each user.