I am building a recommendation engine for Food products.
To recommend the best products matching the user's preferences, I would like to improve the engine with prioritization algorithms/ methods.
For example, when a user set his preference as 'Organic' and 'Nut Free', the recommendation engine generates the list of the products based on those preferences keywords. so far I have made it working based on TF-IDF distance and collocation.
However, I have no idea how I can weigh the preferences to get more appropriate results.
What is the best way to prioritize the keyword inside of the recommendation engine?
In short, I want to get the result of having more 'Organic' over 'Nut Free' in this example.
Cheers
Related
I consider using aws personalize, or any similar managed recommendation service.
My question is whether it is possible to get recommendations/rankings on items that were not seen in the training data, based on item features. I see that aws personalize does have item feature dataset, but when I read the documentation about ranking recipe it specifically says that items not in the training are added at the end of any ranking. of course - new items have no interaction data, so any recipe/algorithm that solely relies on interaction data is not relevant for my case.
My question is, whether and how can I utilize aws personalize to my use case, if at all possible, or whether you know of any recommender service that can handle it.
Yes. There are specific Amazon Personalize recipes designed to support cold starting items where a cold item is one without behavioral data in the interactions dataset but with item metadata in the items dataset.
The User-Personalization recipe supports cold starting items through a feature called exploration. You control how much exploration (i.e., recommending cold items) is done with the explorationWeight inference hyperparameter when creating a Personalize campaign or batch inference job. See this blog post for details.
Exploration also applies to domain recommenders for the Top picks for you VOD recommender and Recommended for you e-commerce recommender. You specify the explorationWeight when creating a recommender.
The Similar-Items recipe supports the related items use case and looks to balance recommending similar items based on behavioral data and thematic similarity between items. You currently cannot control the weighting with this recipe, though. See this blog post for details. The More like X VOD recommender provides similar functionality.
Amazon Personalize builds a recommendation model taking into account users, items and events. However, items are assumed as available, and this might not be the case for certain scenarios.
If items need to reflect a time window like availability in time (from date, to date), then you should be able to offer only valid items according to that restriction.
For instance, this would be the case for live shows: you should only recommend live shows that will happen in the future, either based on similarity or community behaviour. Live shows that already happened are part of the training, but are not valid products to recommend.
How can you model this availability restriction in Amazon Personalize?
There are a variety of business requirements that you may need to handle, that are not built in to the core of Amazon Personalize, and this is one of those. For these business requirements you need to build the logic into your wrapper around Amazon Personalize.
Edit: Personalize now allows you to filter recommendations on item metadata which looks like it would be sufficient for this use case. See the writeup here: https://aws.amazon.com/blogs/machine-learning/enhancing-recommendation-filters-by-filtering-on-item-metadata-with-amazon-personalize/
I am not quite sure how to ask this and if my title is correct. Please edit this question if seen fit.
Redmine has a feature where user can filter certain user defined parameters when performing search:
I would like to know if there is a term for this kind of feature so I can research more regarding this. I'd also like to know if there are existing technologies (i.e. frameworks/cms/plugin) that support this kind of feature. I want to reuse exising technologies if possible and at the same time have this kind of search feature.
My requirements are similar to that of Redmine. That is, instead of Issues, I search Users and the attributes related to that user. The requirements are as follows:
I can add a user, specify the attributes related to this user.
Perform a search on the user and specify the parameters where to the search the user.
My guess is that there is no real term for this, beyond "advanced search"; unfortunately these functions range from simple to mind-bogglingly advanced.
I have built a recommender systems which has tens of thousands of items and their feature descriptions, but no user profiles as of now. I am looking for pointers to approaches that can help me bootstrap the system, so I can do some evaluation. I would appreciate any pointers to papers/applications that have addressed this problem.
How to deal with the cold-start problem depends a lot on your specific application.
An easy way of dealing with the user cold-start problem is to present the new user with random items, or the most popular items, or hand-selected items, and start learning from them.
Another way is to present users with a questionnaire, and then present items to them according to the results. Or you directly show them items/products and let them rate/select the ones they like.
Also note that in web-based system you usually know some things about your users: Which operating system/browser they use, where they (roughly) come from, which language they speak.
All this information can be used.
Papers:
see the Wikipedia article on the topic
My answer to another question on StackOverflow lists some papers for dealing with new items - most of the methods would also be applicable to new users.
Another approach is to select products/items that will help you most for learning about the user. Just out of my head, you can find them by querying Google Scholar for "recommendation" and the terms "decision trees", "active learning", "user cold-start", and so on.
I am usual software developer (not Usability specialist); so it is interesting for me to know opinion of usability professionals about the following question.
I would like to know: how often usability specialists recommend using feature AutoComplete (http://en.wikipedia.org/wiki/Autocomplete) in modern GUIs? Has presence of the AutoComplete in GUI become a 'standard' to the moment?
This depends a lot on the overall design. Autocomplete increases usability only in some cases, in other it may be inappropriate or distracting. The only way to know in your particular case is to conduct usability testing.
I've implemented autocomplete on several different projects with user base ranging from 200 to 500 and have collected feedback on this feature. From my experience, users love it as long as it's fast.
My favorite control to do autocomplete is jQuery's: http://docs.jquery.com/Plugins/autocomplete
It doesn't start filtering until shortly after the user is done typing. This is important because you don't want to flood the server w/ too many ajax requests.
With Microsoft SharePoint 2007 I replaced the out-of-the-box search with a live search that does autocomplete. This is probably the most used feature in the site
I created a few "portlets" with large amounts of grid data and I use a built in quick find that filters the data for the user. These are also used quite a bit
One other thing to mention is I'm not too certain how 508 compliant it is so you may want to provide an alternative so the page w/ autocomplete can fail gracefully without sacraficing the user experience
Look at discussion on http://www.linkedin.com/groupItem?view=&gid=79272&type=member&item=49087267&qid=3ed96f17-25c4-4cac-b92d-69c37925f5bc&goback=%2Egna_79272; it is devoted to the Auto-Complete feature too. Some exampkles and ideas were written there.