需要帮助最大化多个相似对象中的3个因素并进行适当排序

我需要用任何语言编写算法,根据3个因素对数组进行排序。 我以度假村为例(如Hipmunk)。 假设我想去度假。 我想要最便宜的地方,最好的评论和最吸引人的地方。 但是,显然我无法在所有3中找到#1。

示例(假设有20个重要景点):

度假村 – 答:150美元/晚… 98/100在有利的评论… 20个景点中的18个
度假村B:99美元/晚… 85/100在有利的评论… 20个景点中的12个
度假村C:120美元/晚… 91/100在有利的评论… 20个景点中的16个

度假村B看起来价格最具吸引力,但在其他两个类别中排名第三。 其中,我可以选择度假村C每晚只需21美元,并获得更多的景点和更好的评论。 价格对我来说仍然很重要,但是A度假村拥有出色的评价和众多景点:价值51美元的奢侈品值多少钱吗?

我希望能够填充一个列表,从“从最好到最差”点亮(我引用bc对消费者来说是主观的)。 我如何最大化每个度假村的价值?

  • 我应该为每个因素设置一个权重(即:55%的价格,30%的评论,15%的设施)并得到一组数字的结果并按照这种方式订购?
  • 我是否需要所有酒店的模式,中位数和范围并确定平均价格,并且平均价格附近的酒店是否保持最重?

如果有点混乱,请访问www.hipmunk.com。 他们有一种飞机排序他们称之为痛苦(和我的问题相似的酒店类型),他们将其作为自己使用。 我以度假村为例让我的问题更有意义。 如何将数学运用于这样的问题?

如何使用可变权重,并让用户通过某些输入(如杠杆)调整它,以便排序顺序将动态更新?

我即将提出有关多因素加权排序的相同问题 ,因为我的研究只提出了双因素排序的答案(例如带解释的公式)。

尽管我们都在询问3个因素,但我会列出我发现的可能性,以防它们有用。

可能性:

注意: S是“排序分数”,您可以按(asc或desc)排序。

  1. “线性加权” – 使用如下函数: S = (w 1 * F 1 ) + (w 2 * F 2 ) + (w 3 * F 3 ) ,其中w x是任意指定的权重, F x是值的因素。 您还需要标准化F (即F x_n = F x / F max )。
  2. “Base-N加权” – 更像是分组而不是加权,它只是一个线性加权,其中权重增加了基数10的倍数(与CSS选择器特异性相似的原则),因此更重要的因素显着更高: S = 1000 * F 1 + 100 * F 2 ...
  3. 估计真实价值(ETV) – 这显然是谷歌分析在他们的报告中引入的 ,其中一个因素的价值影响( 权重 )另一个因素 – 后果是对更多“统计上显着”的值进行排序。 链接很好地解释了,所以这里只是等式: S = (F 2 / F 2_max * F 1 ) + ((1 - (F 2 / F 2_max )) * F 1_avg ) ,其中F 1是“更多重要的“因素”(文章中的“跳出率”), F 2是“重要性修改”因素(文章中的“访问”)。
  4. 贝叶斯估计 – 看起来与ETV非常相似,这就是IMDb计算其评级的方式。 有关说明 ,请参阅此StackOverflowpost ; 等式: S = (F 2 / (F 2 +F 2_lim )) * F 1 + (F 2_lim / (F 2 +F 2_lim )) × F 1_avg ,其中F x与#3相同, F 2_lim是“重要性”因子的最小阈值限制(即不应考虑任何小于X的值)。

选项#3和#4看起来很有前途,因为你不必像在#1和#2中那样选择任意加权方案,但问题是你如何做到这两个以上的因素呢?

在你的情况下,在#1中分配权重可能没问题。 您需要根据用户认为更重要的内容微调算法 – 您可以将权重w x作为filter(如1-10下拉列表)公开,以便用户可以即时调整其搜索。 或者如果你想变得聪明,你可以在搜索之前对你的用户进行轮询(“这对你更重要?”),然后根据响应分配加权集,并在跟踪足够的民意调查后,你可以自动提取加权方案基于大多数回复。

希望能让你走上正轨。