一种同类“产品”的推荐引擎

发布于 2024-10-26 13:50:34 字数 274 浏览 13 评论 0原文

我们正在建立的市场允许人们列出他们要出售的东西,但可以批量/袋子/盒子。我们正在寻求为此构建一个推荐引擎,但大多数文章似乎更适合“销售”大量产品的市场 - 即亚马逊、Netflix 等。因为每个列表都有些独特,所以什么是推荐引擎的最佳方法?有相关文章吗?

我们知道人们过去购买过的物品。 我们知道他们正在寻找适合的尺寸或年龄。

列出的捆绑包包含类别、品牌、尺寸/年龄、颜色和自由格式文本。

有什么想法可以帮助我们开始吗?如果我们的数据存储在 MySQL 中,您认为哪种特定语言是最好的?

A market we are building allows people to list their stuff to sell but in batches / bags / boxes. We are looking to build in a recommendation engine for this, but most of the articles out there seem better suited for markets that "sell" large quantities of many products - ie amazon, netflix etc. Because every listing is somewhat unique, what is the best approach for a recommendation engine? Any relevant articles out there?

We know items people have bought in the past.
We know the size or age appropriateness they are looking for.

The listed bundles have categories, brands, sizes/ages, colors and free form text.

Any ideas to help us get started? Any particular language you think would be best if our data is stored in MySQL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

黑寡妇 2024-11-02 13:50:34

您可以使用推荐引擎过滤多种内容。您可以过滤特定用户之前购买过的商品(在您的情况下,是他们购买的产品中存在哪些功能)。您还可以根据社交分组(喜欢他们的用户)或产品分组(例如您之前销售过的产品)进行过滤。我建议您首先对产品进行聚类,然后将个体或组映射到该产品聚类中的功能。因此,您最终会得到一个推荐引擎:购买具有此功能的商品的人也购买了具有这些功能的商品。然后,您可以为已知用户创建一个引擎:您倾向于购买具有这些功能的产品,这里有更多类似的项目。最后,您可以为群体构建一个引擎:这样的人倾向于购买具有这些功能的产品。

有了多个模型,您的系统就可以根据当前所知道的情况转向合适的模型:已知用户、已知用户组或已知的浏览历史记录。

由于您要推荐批量更独特的产品,因此您需要在获得推荐后添加一个额外的模型,以过滤掉不合适的推荐。该模型将代表兼容性。使用用户之前使用过的同一控制台的新游戏比其他控制台更具兼容性。如果他们上个月买了一辆新车,你不会推荐一辆新车,但可能会推荐十次洗车的套餐。

对于最后一个模型,您可以使用几个不同的概念。如果您要向模型中添加人们头脑中的显性知识,您可能需要建立一个信念网络来过滤掉不适当的建议。如果要使用集体智慧,可以使用简单回归、支持向量机或人工神经网络。我会选择最容易实现的过滤器,而不用担心选择您构建的第一个模型。在确定一个模型之前,您可能会构建一些模型,并通过适当的努力为您带来良好的结果。

您的过滤模型将经历一个测试阶段,在此阶段您提出建议,过滤它的适当性,然后通过某种人工干预(您希望过滤器学习的一组“答案”)再次过滤它,或者只是一个人双重检查结果。然后,您将使用更新的结果重新训练过滤器,重新采样并再次测试。

就推荐引擎而言,您可以使用 GNU 科学库(可用于任何平台的绑定)进行 SVD。如果您要使用大数据,您还可以选择 Mahout 推荐引擎(Hadoop 世界的一部分)。对于过滤器,您可能需要查看 apophenia、libsvm 或 FANN。

您还可以选择在分析框架中工作一段时间,直到您觉得自己已经掌握了一切。可供选择的有 Weka、R、Octave、Matlab、Maple 和 Mathematica。我想我首先列出了价格,然后是易用性。

就资源而言,有一些很好的入门书籍:《Collective Intelligence》、《Mahout》(来自 Manning 的 MEAP)、《数据挖掘》(都是关于 Weka 的)和 用数据建模(apophenia 参考)。

我的最后一个想法是,无论您的推荐引擎是否复杂,大部分价值都在于用户体验。亚马逊的一位人士写道,当他们告诉用户为什么要提出推荐时,他们的推荐引擎效果最好。这可以帮助用户快速接受你的推理(对他们旧的和好的购买的情感反应),或者拒绝它并继续(他们已经有类似的东西,他们不需要另一个)。

There are several things you can filter with a recommendation engine. You can filter on what a particular user has bought before (in your case, which features have been present in the products they have bought). You can also filter on social groupings--users like them, or on product groupings--other products like the ones you have sold before. I'd recommend that you first cluster the products, and then map the individual or groups to the features in that cluster of products. So, you'll end up with a recommendation engine that says: people who bought items with this feature also bought items with these features. Then, you can create an engine for known users: you tend to buy products with these features, here are some more items like those. Finally, you can build an engine for groups: people like this tend to buy products with these features.

With several models in hand, your system can turn to the appropriate one, depending on what they know at the moment: known user, known user group, or just known browsing history.

Since you are recommending batches of more unique products, you'll want to add an additional model after you get your recommendations that will filter out inappropriate recommendations. This model will represent compatibility. A new game using the same console that the user used before is more compatible than another console. If they bought a new car last month, you wouldn't recommend a new car, but maybe a package of ten car washes.

You could use several different concepts for this last model. If you are going to add explicit knowledge to your model that's in people's heads, you may want to build a belief network that filters out inappropriate recommendations. If you are going to use collective intelligence, you could use simple regression, a support vector machine, or an artificial neural network. I would go with the easiest to implement filter and not worry about choosing the first model you build. You'll probably build a handful of models before you settle on one giving you good results with appropriate effort.

Your filtering model will go through a test phase where you make a recommendation, filter it for appropriateness, then filter it again with some sort of human intervention--a set of "answers" you want your filter to learn, or just a human being double-checking results. Then you'll retrain your filter with the updated results, resample and test again.

As far as the recommendation engine goes, you can do SVD with the GNU scientific library (bindings available for about any platform). You could also choose the Mahout recommendation engine (part of the Hadoop world) if you are going to be using big data. For the filter, you may want to look at apophenia, libsvm, or FANN.

You could also choose to work in an analytics framework for a while until you feel like you've got a handle on things. Some to choose from are Weka, R, Octave, Matlab, Maple, and Mathematica. I think I've listed those in terms of price first, then ease of use.

As far as resources, there are a few good introductory books: Collective Intelligence, Mahout (MEAP from Manning), Data Mining (all about Weka), and Modeling with Data (apophenia reference).

My last thought is that however sophisticated you do or don't get with your recommendation engine, most of the value is in the user experience. One of the people from Amazon wrote that their recommendation engines worked best when they told the user why they were making a recommendation. That helps the user quickly adopt your reasoning (an emotive response to their old and good purchase), or reject it and keep going (they already have something like that, they don't need another one).

雾里花 2024-11-02 13:50:34

我个人更喜欢Ruby,但是Ruby、Python和Perl都可以轻松连接到MySQL。

我喜欢 Ruby 的原因之一是它的 Sequel gem,它是一个非常强大的 ORM,使数据库访问变得非常容易管理。如果您使用 MVC,Ruby 有 Rails,它有利于 ActiveRecord 作为其 ORM,这也使得与 MySQL 的对话变得容易。还有 Sinatra 和 Padrino,它们是重量稍轻的 ORM,但也非常强大。它们开箱即用,与数据库无关,并且与 Sequel 很好地集成。

Personally I prefer Ruby, but Ruby, Python and Perl can easily connect to MySQL.

One of the reasons I like Ruby is its Sequel gem which is a very powerful ORM, making database access very easy to manage. If you go with a MVC, Ruby has Rails which favors ActiveRecord as its ORM, which also makes it easy to talk to MySQL. There's also Sinatra and Padrino, which are a bit lighter weight ORMs, but very capable too. They're more DB agnostic out of the box and nicely integrate with Sequel.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文