[HN Gopher] Show HN: Gorse - An Out-of-the-box open-source Recom...
___________________________________________________________________
Show HN: Gorse - An Out-of-the-box open-source Recommender System
Author : zhenghaoz
Score : 156 points
Date : 2021-07-17 15:07 UTC (7 hours ago)
(HTM) web link (gorse.io)
(TXT) w3m dump (gorse.io)
| jedwhite wrote:
| Great project!
|
| Are you thinking about offering this as a service as well? It
| feels like you could have a lot of interest with a run-it-
| yourself or we-do-it-for-you-as-a-service model. I couldn't see
| that after a quick look :)
| zhenghaoz wrote:
| Good idea! But before that, we have to take a look at GDPR :D
| jedwhite wrote:
| I feel you :D
|
| It might be worth sharing the project with some privacy-
| oriented forums to get some feedback and ideas on what a good
| privacy model would look like for it. Good luck! :)
| gingerlime wrote:
| I use recombee[0] and it seems pretty nice, albeit not open
| source. Not affiliated in any way. Not even a paying customer,
| just using the free plan for a personal project.
|
| [0] https://www.recombee.com/
| scoresmoke wrote:
| Great job! Gorse reminds me of the now-retired Apache
| PredictionIO recommendation engine:
| https://predictionio.apache.org/templates/recommendation/qui....
| Have you evaluated why it took off and why it was later shut
| down, so that your project can avoid its mistakes?
| Sloppy wrote:
| Apache PredictionIO was designed for data scientists (I was a
| committer so am quite familiar with design decisions). It was
| built to allow new "engines" to be implemented for any
| arbitrary ML/AI algorithm. These came in "templates" of various
| flavors.
|
| However it turned out that only the "Universal Recommender"
| template (that I wrote) had real demand and virtually no one
| was developing or using other "engines"
|
| As designed it was hard to deploy and was not multi-tenant. I
| could go on about the shortcomings but suffice it to say that
| after I did the Universal Recommender and saw the PIO
| shortcomings, we (ActionML, my consulting company) decided to
| write a from-scratch ML server, called Harness, to solve the
| PIO issues and act as the host for continuing work on the
| Universal Recommender.
|
| https://actionml.com/docs https://github.com/actionml/harness
|
| So the best part of PIO (The Universal Recommender) lives on
| with a clean new design and modern architecture.
| abeppu wrote:
| I wonder whether a really good experience can be built by
| abstracting out recommendations to this degree. I think in the
| context of an actual product, there would be other considerations
| specific to the particular domain, which is partly why
| organizations often eventually grow up teams around
| recommendations or discovery.
|
| For example:
|
| - Perhaps there are relationships or similarities among items
| which are known prior to any feedback (e.g. different options of
| the "same" product are represented as distinct items in your
| catalog). Recommending to the user many closely related items may
| be a poor experience in some contexts.
|
| - Perhaps you have other relevant actions, and care about more
| than maximizing the probability of a click. E.g. purchases,
| shares, etc. In an ecommerce context, you may want to recommend
| items at a range of price points; showing only very expensive
| items may get you clicks but not purchases.
|
| - This has a concept of whether an item was "read" (which I
| interpret as an impression, or an opportunity to be clicked). But
| not all impressions are equal. Perhaps you have other knowledge
| about the context in which something was displayed. Was it "read"
| in the context of a search? Was it 8th in a list of 10 items?
| zhenghaoz wrote:
| Your consideration is absolutely right. The abstractions in
| Gorse do lose lots of informations. Prior knowedges, contextual
| informations is important to further improve recommender
| systems.
| barefeg wrote:
| Could these issues be solved by providing connectors to
| different data stores to Gorse can use multiple signals in a
| configurable way?
| zhenghaoz wrote:
| The problem is how to utilize these signals. The annoying
| thing is we can't solve these issues if we are not in this
| situation. So, feedbacks from Gorse users are important.
| antman wrote:
| So are there any plans for context aware recommenders?
| Sloppy wrote:
| The Universal Recommender (part of the Harness project) allows
| contextual and multimodal behavioral information to be used in
| recs. https://github.com/actionml/harness
| KaoruAoiShiho wrote:
| Does this handle real time recommendations as described here:
| https://eugeneyan.com/writing/real-time-recommendations/
| Reubend wrote:
| I think this looks very good, and I love seeing that it has the
| capability to automatically select the recommendation algorithm
| with the best performance.
|
| I think there are two major areas where this can be improved. A
| quick read through the docs doesn't show much info about the
| algorithms themselves, and from what I can see, it doesn't look
| like you can customize the hyperparameters of the algorithms
| (correct me if I'm wrong). You have to just wait for the
| automated hyperparameter search to finish. I think this is mostly
| very good but the ability to freeze them would be even better to
| save compute time in subsequent retrainings. The other thing I
| notice is that there's no system to detect when the offline model
| is too out of date and trigger retraining. It would be nice to
| have a way of automating the retraining based on performance
| evaluations rather than on a clock schedule.
| zhenghaoz wrote:
| Thanks for your advice
| opheliate wrote:
| Really interesting project, thank you for sharing! Looking at the
| documentation [0], it would appear that negative feedback for an
| item can only be given by giving feedback that the user has read
| the item, and not then providing positive feedback. Is that the
| case? Or is there a way to provide explicitly negative feedback
| that I'm not seeing?
|
| 0: https://docs.gorse.io/ch01-02-recommend.html
| zhenghaoz wrote:
| There are no explicit negative feedback yet. When a item is
| seen by a user, the read event is recorded. If this user likes
| this item, the positive feedback is recorded. It seems a
| natural way to track user's preference. I will try to add
| explicit negative feedback if someone really need it.
| genewitch wrote:
| "ignored by 84% of visitors" is a metric
| Sloppy wrote:
| If you start with an algorithm that accepts any type of user
| behavior (is multimodal) then using user-dislikes is easy.
|
| We can easily do this with the Universal Recommender as shown
| in this article (reprinted from the IBM dev blog)
| https://actionml.com/blog/making_dislikes_predict_likes
| vector_spaces wrote:
| A challenge with naive recommender systems in an ecommerce
| setting is that they tend to recommend the most popular items on
| your site rather than surfacing the long tail of SKUs, which
| doesn't generally add much value (you could achieve a similar
| effect by showing users recommendations from a hardcoded list of
| top items rather than leaning on a model). If Gorse is generic
| and unaware of the domain, how does it avoid falling into this
| trap?
| Sloppy wrote:
| Not sure this is true but in any case, the Universal
| Recommender uses a technique based on the TF-IDF algorithm of
| search to get long-tail recs. This de-weights popularity so
| that relevancy is more important.
| contravariant wrote:
| Now you've made me curious. If the point is to recommend stuff
| that people are most likely to buy next then recommending the
| most popular items is likely correct. So what metric do you
| have in mind that leads you to the conclusion that recommender
| engines _shouldn 't_ recommend the most popular articles?
| draugadrotten wrote:
| Seller satisfaction will be the highest if the user buys the
| item. Basing the recommender on sales will make it a seller-
| focused recommender.
|
| If the recommender somehow can be based on buyer satisfaction
| - it would be a system that focuses on the buyer. It would
| then perhaps not please the seller.
|
| Taking it one step further, if a buyer is VERY satisfied, the
| buyer is likely to return for MORE purchases, ensuring the
| satisfaction of BOTH seller and buyer with the first
| recommendation. This is the ultimate recommender, measuring
| not first-purchase buyer/seller satisfaction, but rather
| measuring "so satisfied with the first purchase that the
| buyer returned for a second purchase".
| KaoruAoiShiho wrote:
| What do you think about using a graph DB like neo4j, redis-graph
| or the chinese competitor Nebula Graph?
| andyxor wrote:
| cool project, i was curious which algorithms are used for
| recommendations/ranking, couldn't find it in the docs, so had to
| go through the code, may be add a section on algorithms and
| models?
|
| it seems that one algo used is "Bayesian Personal Ranking" based
| on a paper from 2012 https://arxiv.org/pdf/1205.2618.pdf, here is
| a related blog post https://towardsdatascience.com/recommender-
| system-using-baye...
|
| another one is Weighted Regularized Matrix Factorization/ALS (by
| the Netflix Prize winner team): http://yifanhu.net/PUB/cf.pdf ,
| also see https://www.ethanrosenthal.com/2016/10/19/implicit-mf-
| part-1...
___________________________________________________________________
(page generated 2021-07-17 23:00 UTC)