当前位置: 首页 > 知识库问答 >
问题:

如何实施战略设计模式?

宓跃
2023-03-14

我正在研究一个推荐系统。这将是一个Android应用程序,用户将输入他们的偏好,并在这些偏好的基础上,其他匹配的配置文件将显示给该用户。我正在从用户那里获取数据,并将其存储在Firebase中。

这些是数值,为了向用户显示匹配的配置文件,我使用两种算法来计算用户之间的相似性计数:余弦相似性Pearson相关性

if (request.query.algo === "cosine") {
  // compute cosine value
} 
else if (request.query.algo === "pearson-correlation") {
  // compute pearson correlation coefficents

}

由于这将是一个实时应用程序,所以这种方法是完全错误的,我想实现策略设计模式,其中算法可以在运行时决定,而不是在编译时。

所以现在的问题是,在策略设计模式中,我如何决定何时使用哪种算法?

例如,当你用信用卡买东西时,信用卡的类型并不重要。所有信用卡都有一个磁条,里面有编码信息。这些条带及其所包含的内容表示“接口”,卡的类型将是“实现”。每张信用卡都可以被任何其他信用卡替换,所有信用卡都是完全独立的。

类似地,在使用策略设计模式的运行时,我应该在余弦和皮尔森之间选择什么基础?

共有1个答案

黄泰宁
2023-03-14

根据我的理解,Pearson在两个用户配置文件具有非常不同的项目集(在本例中是首选项)的情况下会表现得更差。

也许这就是你的标准?在匹配偏好的数量高于某个阈值的情况下,使用Pearson;在其他情况下,使用余弦。

您也许可以向用户显示一个接近匹配列表,该列表使用余弦向用户显示哪些配置文件有许多共同点。

然后你可以显示第二个列表,上面写着你可能也感兴趣,它使用Pearson来显示没有很多共同偏好的匹配配置文件。

 类似资料:
  • 问题内容: 我有一个使用Spring框架以Java 1.5开发的Web应用程序。应用程序包含“仪表盘”,这些仪表盘是简单的页面,在其中可以重新组合一堆信息,并且用户可以在其中修改某些状态。经理们希望我在数据库中为这三个仪表板添加一个日志记录系统。每个仪表板都有不同的信息,但是应该通过日期和用户登录来跟踪日志。 我想做的是实现这样的Strategy模式: Appcontext.xml: 因此,在此解

  • 问题内容: 我正在尝试实现我的第一个工厂设计模式,但不确定将工厂制造的对象添加到列表时如何避免使用instanceof。这就是我想要做的: 根据我在SO上阅读的内容,使用“ instanceof”是一种代码味道。有没有一种更好的方法可以检查工厂创建的不使用“ instanceof”的车辆类型? 我欢迎任何有关实施的反馈/建议,因为我什至不确定我是否会采用正确的方法。 完整示例如下: 问题答案: 您

  • 本文向大家介绍Ruby设计模式编程之适配器模式实战攻略,包括了Ruby设计模式编程之适配器模式实战攻略的使用技巧和注意事项,需要的朋友参考一下 适配器模式 适配器模式可以用于对不同的接口进行包装以及提供统一的接口,或者是让某一个对象看起来像是另一个类型的对象。在静态类型的编程语言里,我们经常使用它去满足类型系统的特点,但是在类似Ruby这样的弱类型编程语言里,我们并不需要这么做。尽管如此,它对于我

  • 该项目是一个 TODO 应用,可以对任务清单进行增加、修改、删除等,相应地,我们需要设计一个数据模型来存储相应的数据和状态。不难想到,表的字段主要有以下几个: id: 标识每条记录的字段,是表的主键,Integer 类型; title: 即任务清单的标题,String 类型; posted_on: 任务创建时间,DATE 类型; status: 任务的状态,Boolean 类型; 因此,我们的数据

  • 9. 策略(Strategy) Intent 定义一系列算法,封装每个算法,并使它们可以互换。 策略模式可以让算法独立于使用它的客户端。 Class Diagram Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy)

  • 为每个任务实例化具体策略,并在不是时实现“虚拟”策略(如下所示)。代码中到处都有奇怪的可为空的和变量,在本例中... 在不计划任务的情况下具有IPlanningStrategy变量,并且只有当任务“提升”为时才使用具体策略实例化。 备选方案(1)应该是这样的: 现在我看到了不同的**非常重要的**问题。除了algorithm(当然实现该算法的所有任务都共享)之外,我的每个具体策略类还包含附加参数,