是否可以在机器学习中预测组与组?

数据挖掘 机器学习
2021-09-19 20:40:10

我有一个我认为机器学习可以解决的问题。但是,我是新手,不知道从哪里开始,因此感谢任何指向适当解决方法/指南等问题的指针。我搜索了一下,找不到任何类似的问题,但很可能是因为我不知道要搜索什么:

假设我们有一堆水果:a,b,c,d,e,f它们都有两个与之相关的因素,价格和质量。每天在商店里,顾客可以在两包中进行选择(g1,g2),每包由两种价格和质量不同的水果组成(p,q)每天的4个水果必须是唯一的,所以g1不能在g2中有一个水果。然后,客户每人购买一包。他们看重价格和质量,但也可能受到外部因素的影响,例如它是什么水果以及它与什么结合。

是否可以从中创建训练集?
我想出了两种表示方法:
我能想到的最简单的方法:让一个水果 x 表示为x:{x_p,x_q},一个组表示为 ,g1(a,b)然后定义一个训练元素day(g1,g2),我们将使用它来训练我们的机器。
第二种方法是让水果包含一个现在的标志来标记他们是否在一个组中,x:{x_p,x_q,present}然后一个组就变成g1(a,b,c,d,e,f)了,还有一天day(g1,g2)

是否可以在没有多个水果数据的情况下以第一种方式进行,还是只是特定于实现?
如何通过创建镜像训练元素来训练day(g1(a,b),g2(c,d))vs的镜像情况,day(g1(c,d),g2(a,b))或者机器可以自行解决?
虽然这是一个最小的例子,但如果我们从更大的水果池(20)中覆盖更多的水果(5/束)会有什么不同?
即使该组/水果组合尚未在集合中进行评估,我们是否可以使用它来预测哪个捆绑包更有可能被挑选?

我想到的另一种方法是对组进行训练,但我认为这会导致组的得分持平,并且很可能会错过组之间的关系,例如 g1 优于 g2,g2 优于 g3,g3 优于 g1 ? 这是真的还是机器也能理解?

我正在查看 javascript 库的大脑和思维,并认为其中一个可能是可能的,但我不知道我正在寻找哪种类型的算法/求解方法。任何有关解决此问题的库的建议,最好是 python/php/java/javascript,我们将不胜感激!

此外,如果有人可以为问题添加合适的标签,那就太好了!

编辑:与组镜像相同,我们如何区分组,我们需要按字母顺序对水果进行排序还是机器也可以处理?(apple,banana) 应该与 (banana,apple) 相同

3个回答

我认为,您需要仔细查看流行的排名算法。我建议从Elo开始,一目了然,它可以帮助您解决问题。我只使用“经典”“1-vs.-1”版本。但这里有一些关于你的情况的想法。

将每个捆绑包视为由两名玩家组成的团队;每一位客户的选择都如同对决。这里的主要问题是“团队随机性”,因为您没有固定的团队组成。但是您可以尝试使用团队成员的平均评分来解决它。通过大量的决斗和“团队”,您将获得足够的数据来预测全新水果混合物的结果。

很难理解你的实际目标是什么。

我知道您想从每天给定的一组水果中计算出最佳水果束,这些水果可能没有任何共同的水果。

最简单的方法是积累每种水果的购买频率数据,并将其作为客户价值的衡量标准。然后你可以假设捆绑无关紧要。从这里您可以通过根据水果的价值对水果进行排名来拆分水果篮,并将每个奇数元素分配给篮子一,将每个偶数元素分配给篮子二。

如果您真的确定篮子的组成很重要,因为水果之间存在相互作用,您必须采取不同的策略。如果您可以积累大量数据,您可以出售所有可能的篮子组合,然后再次将销售额作为价值衡量标准。

您可以用每个水果的数值表示您的输入,如果水果在篮子 1 中,则为负数,如果在篮子 2 中,则为正数,否则为 0。这种表示可以推广到更大的篮子。

该表示将导致一些算法(例如逻辑回归)利用训练集的对称性。对于其他算法(如 k-最近邻),您可以镜像训练数据 - 对于每个示例,包括另一个组的身份颠倒的示例 - 这将允许您为每个水果篮 ID 对使用单独的变量。