【问题标题】:What matching algorithm could I use?我可以使用什么匹配算法?
【发布时间】:2023-03-21 17:54:01
【问题描述】:

我需要一些帮助,因为我不知道我可以在以下情况下使用什么算法(我使用 python):

  • 史蒂夫 25 岁,他每天都买橙汁

  • 玛丽亚 23 岁,她喜欢买冰沙 史蒂夫和玛丽亚的口味几乎相同。

  • 胡安 16 岁,他只喝苏打水 胡安的口味与史蒂夫和玛丽亚不同。

================================================ =====

我想使用一种匹配算法来检测具有相同饮料偏好且年龄相近的用户。继续这个例子,Steve 和 Maria 将匹配在一起,但 Juan 不匹配。我应该使用哪一个?

【问题讨论】:

  • 任务很模糊。您可以使用包含姓名、年龄和偏好的简单数据结构,然后只需循环这些列表,使用简单的 if 语句创建匹配项。

标签: algorithm machine-learning data-science


【解决方案1】:

我同意@klutt 的观点,即您的任务非常模糊。我想到了两种方法,但是不了解有关您的问题的更多详细信息确实会限制我可以在回答中提供的对您有所帮助的详细信息。我将这个问题解释为您正在接受原始文本,并且可能想要处理更多具有非常相似的语义和句法结构的句子。

一种算法方法: 假设您的单词选择在语义上是静态的(Maria is 23 ... Steve is 25),我们可以解析每个句子并识别像 is 这样的标记andsame 并基本上对文本执行词法分析......从这里,您可以继续思考如何进行匹配等等...但是这相当复杂...

神经网络方法: 如果您以句子的形式接收原始文本,那么使用自上而下的算法方法无法直接解决这个问题。 您可以采用神经网络的方法来训练模型来解决您的问题,但话又说回来,您似乎要问的问题非常复杂,因为每个句子中有多个在语义上不相关的“事实”。例如,您的第二个句子表明 Maria 是 23 岁,但在该句子的末尾有一个 Steve 和 Maria 之间的比较。您的第一句话仅将史蒂夫标识为 25 岁。 即使您将原始文本分块成句子,您也必须拥有非常精细的神经网络架构和大量训练数据才能远程接近您的目标。


现在,这两种解决方案都非常复杂...但是如果您想创建一个应用程序来收集这些数据(通过表单或提示)并将其放入结构化格式(如 json 或 xml 对象)以在内存中组织和存储数据(可能写出到数据库或文件中以进行持久存储),这可能是一个很好的方法。

这也可以作为如何思考数据的一个很好的教训。如果您有数千个句子,只是出于定量目的(经典的定性 -> 定量问题)需要组织的原始数据,这是一回事。如果您要收集这些数据,那就是另一回事了。如果您要收集数据,拥有一个程序来收集和组织姓名、年龄和饮酒偏好(然后在某些数据结构中组织这些数据),那么我们可以讨论匹配算法。

我还要在这里补充一点,如果您确实有结构化数据,Collaborative filtering(由 Shridhar 提到)是一个很好的起点。

【讨论】:

    【解决方案2】:

    Collaborative filtering 最适合您的需求。

    在更新的、狭义的意义上,协同过滤是一种 对用户的兴趣进行自动预测(过滤) 通过收集许多用户的偏好或品味信息 (合作)。协作的基本假设 过滤方法是如果一个人 A 和一个人有相同的意见 B 在某个问题上,A 更有可能对 B 有意见 与随机选择的人不同的问题。例如,一个 电视品味的协同过滤推荐系统 可以预测用户应该喜欢哪个电视节目 给出该用户口味的部分列表(喜欢或不喜欢)。 [3] 请注意,这些预测是特定于用户的,但使用 从许多用户那里收集到的信息。这不同于更简单的 为每个项目给出平均(非特定)分数的方法 兴趣,例如基于其票数。

    【讨论】:

      猜你喜欢
      • 2015-02-15
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-09
      • 2010-10-06
      相关资源
      最近更新 更多