如何实施战略设计模式?

时间:2017-09-02 19:45:52

标签: algorithm design-patterns cosine pearson-correlation

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

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

我从应用程序中获取算法的名称,然后执行算法以向用户显示类似的配置文件。

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

}

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

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

例如,当您使用信用卡购物时,信用卡的类型并不重要。所有信用卡都有一个磁条,其中包含编码信息。条带及其包含的内容代表了界面'卡的类型将是'实施'。每张信用卡都可以被任何其他信用卡取代,并且所有信用卡完全相互独立。

同样,我应该根据战略设计模式在运行时间选择Cosine和Pearson之间的基础?

1 个答案:

答案 0 :(得分:0)

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

也许那可能是你的标准?如果匹配首选项的数量超过某个阈值,请使用Pearson,对于其他情况使用余弦。

您或许可以向您的用户显示一个CLOSE匹配列表,该列表使用余弦来显示配置文件有很多共同点的用户。

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