【问题标题】:anti-bias algorithm for rating a resturant评价餐厅的抗偏算法
【发布时间】:2019-10-27 08:32:10
【问题描述】:

我正在开发一个餐厅应用程序,用户可以在逻辑上对餐厅进行评分,例如 10 人的评分方程如下: 用户可以从 1 到 5 评分 9 评分为 5 1 曾评价 1 方程是((9*5)+(1*1))/10(人的总和)=46/10=4.6 答案是 4.6,这是不公平的,因为 1 人的低利率使结果下降到 4.6 在我看来结果应该是 4.9 我搜索并发现了一个叫做算法偏差的东西我不太理解,zomato 应用公司找到了一个解决方案对于这种情况,喜欢在低评分和虚假评分中保持公平

所以任何人都可以帮助我用一个公平的方程或算法

【问题讨论】:

  • 这是一个难题:technologyreview.com/s/612876/…
  • 我不明白为什么 4.6 的评分是不公平的 - 它非常接近可能的最高评分 5。
  • “在我看来”——这不是偏见吗?
  • 如果一家餐厅有 9 位顾客满意,而一个虚假评分让它的评分下降到 4.6,这是不公平的,黎巴嫩有一个名为 zomato her 的应用程序有餐厅评分,并且在其博客中说她通过算法有一个解决方案,但它的秘密我问是否有人可以提供帮助
  • 投票否决我的问题会让我很难再问我是新来的,我只是寻求帮助,非常感谢你们,抱歉问了

标签: algorithm math statistics prediction equation


【解决方案1】:

算法偏差

这个问题远非微不足道。事实上,它根本无法解决。至少不是你认为的数学方式。我将首先尝试通过几个示例来解释算法偏差:

亚马逊训练了一个人工智能来做出招聘决定。一段时间后,他们意识到人工智能更喜欢男性而不是女性申请者,因为这种偏见也出现在训练数据集中。在这种情况下,判断 AI 是否有不公平的偏见相当简单。

假设我设置了另一个 AI,它也决定邀请哪些申请人参加面试。现在我向亚马逊学习,并通过简单地删除性别、姓名或种族等细节来避免性别偏见。不,我的 AI 既不能是种族主义者,也不能是性别歧视者,所以应该是公平的,对吧?好吧,我的 AI 了解到,最好雇用 30 岁左右的申请人,因为他们有最先进技术的经验,而且对这个行业并不陌生。这对公司来说是理想的(可能至少——我会忽略这个细节,为了简单起见只是假设它)。但是现在我们忽略了新人和超过一定年龄的人。这公平吗?越来越模糊了

之前描述的 AI 被认为不公平而被驳回,现在我还确保新 AI 忽略了年龄。它现在对待新人的方式与对待 30 岁和年长者的方式相同。所以现在是公平的,对吧?但是现在它不太在乎申请人的经验,并且会给没有线索的人提供与投入时间和金钱来获得经验的人相同的机会。那么公平吗?好吧,我几乎无法回答这个问题

或者最后但并非最不重要的一点:这个问题的 cmets 已经表明定义什么是(不)公平是多么棘手。对于剩下的问题,我将假设您提出的评级方案是公平的。

修改评级评估的可能方法

有很多方法可以替代地编译评级。我只会展示两个简单的选项来实现你想要的,尽管确实有很多方法可以用一点创意来弄乱数字。

Median

中位数是一个很好的统计工具,可以消除由评分中的一些异常值引起的偏差。通常中位数计算为排序列表中间的值 - 或者如果评分数是两个中间值的平均值。

def median(arr):
    if len(arr) % 2 == 1:
        return sorted(arr)[len(arr) // 2]
    else:
        i = len(arr) // 2
        return sum(sorted(arr)[i - 1 : i + 1]) / 2

对于您的示例,有 9 个 5 星评级和 1 个 1 星评级,结果将是 5。公平吗?可能不会,因为这将以相同的方式处理任何不等于中位数的评级。 IE。对于上面的用户评分,最后一个用户给一星还是四星都没有区别。另一方面,对于具有极端异常值的偏斜数据,该统计数据非常稳健。所以无论如何它都不是正确的工具。

结合中位数和算术平均值

这个创建的结果更接近您的预期 - 4.8。我们不再完全忽略异常值,但我们给予它们的权重要小得多。因此,总体而言,这个评级对最常见的意见有很大的偏见,但并没有像以前那样赋予它那么多的价值。

甚至可以为中位数和平均值添加权重,以调整对异常值的权重:

def weighted_rating(arr, w):
    arithm = sum(arr) / len(arr)
    m = median(arr)

    return m * w + arithm * (1 - w)

在上面的代码中,w 应该介于 0(仅算术平均值)和 1(仅中位数)之间。对于w = 0.75,评分为 4.9。因此,为了获得这样的评级,中位数的权重是平均值的两倍。

编辑:

@user3386109's answer 是一种以更公平的方式处理异常值的实用方法。我的回答主要是为了展示“公平”统计数据的复杂性,而不是提供任何实际的算法来计算评分。

【讨论】:

  • +1 用于识别中位数与均值的问题。根据我的经验,当中位数和均值相同时,很少有人会争论。正如您的回答所暗示的,当它们不同时,似乎倾向于赋予中位数更多的权重。但是,中位数和均值结合的方法存在问题。当分布是强双峰时,所提出的方法可能会产生很少有人会同意的结果是公平的。例如,给定 10 个 5 星评级和 9 个 1 星评级,weighted_ratingw = 0.75 将是 4.5 (5*0.75 + 3.1*0.25)
  • 一般来说,对于双峰分布,“公平”评级更倾向于算术平均值而不是中位数。
  • @user3386109 我只是想举几个简单的例子来说明如何实现这样的结果。我对这个答案的意图是展示实施“公平”措施的复杂性,而不是提供任何实际措施,您的答案以一种很好的方式解决(也是 +1)。无论如何,我已经编辑了我的答案以明确这一点。
  • 伙计们,你们太棒了,我不知道该说什么,但我能说什么上帝保佑你们!非常感谢@Paul
【解决方案2】:

一种可能的解决方案是将投票给特定评级的人数平方。通过将每个评分乘以平方来计算加权平均值。然后除以平方和,然后四舍五入。这将使评分接近大多数人选择的值。

例如当收视率是

5 stars from 9 people
1 star  from 1 person

那么计算就是

(5*(9*9) + 1*(1*1)) / ((9*9) + (1*1)) = 4.9

如果你有这样的发行版

5 stars from  4 people
4 stars from  8 people
3 start from 11 people
2 stars from  6 people
1 star  from  3 people

那么计算是

(5*16 + 4*64 + 3*121 + 2*36 + 1*9) / (16+64+121+36+9) = 3.1

您还可以尝试不同的加权公式。例如,您可以使用n * sqrt(n),而不是使用n * n

【讨论】:

  • 你太棒了,我不知道该说什么,但我能说什么上帝保佑你!非常感谢@user3386109
  • @AhmadBaddah 很高兴为您提供帮助,祝您好运!
【解决方案3】:

从(非常)低数量的观察中估计随机过程的未知参数(均值、方差等)的问题是一个非常困难的问题,已被深入研究。

这里目前使用术语偏差,但不应与概率偏差(随机过程的数学平均值与估计的数学平均值之间的差异)混淆。在这里要最小化的是误差本身,更准确地说是要避免大的误差。在这种情况下,在投票者数量较少的情况下,一个简单的投票可以有效地偏置估计。

另一个困难是我不相信符号的平均值是一个好的标准。比率的直方图 (90% -> 5, 10% -> 1) 更有趣并提供更多信息。然而,这样的直方图不允许简单的排序......

我不是这个特定问题的专家,我只知道一种简单的常用方法:抑制较低和较高的值。然而,在提议的场景中,我们得到了 5 的排名,这远远不够完美。

我能想到的另一种方法是执行第一次粗略估计,然后对离第一个平均值太远的值执行一个具有较低权重的新平均值。

但是,任何提议的方法都应该从/使用足够的数据推导和检查:收集大量选票,对一家餐厅进行准确估计,然后尝试在提取的任何少量选票的情况下获得大致相同的结果从这个数据库。 最佳算法依赖于过程的概率规律,我不知道。

【讨论】:

    【解决方案4】:

    问题的根本原因在于评分量表是主观的,因此会受到用户认知偏见的影响。因此,最好的解决方案是采用不同的评级方法,例如 Elo 系统 - 用户将被要求将他们最近访问过的餐厅与他们之前访问过的餐厅进行比较,从而创建真正的餐厅排名(这可以让星级重新定义为五分位数)。本文更详细地讨论了该问题和可能的解决方案:https://www.linkedin.com/pulse/how-build-truly-5-star-user-rating-tobias-baer/

    【讨论】:

      【解决方案5】:

      4.6 是公平的,4.9 是有偏见的。

      【讨论】:

      • 在我看来,bias 不应该在这里被理解为数学意义上的。在信号处理中,通常最小平均误差估计量(例如 Wiener/MMSE 估计)是有偏差的! (注意:我没有投反对票)
      • “公平”是一种价值判断,您还没有就我们为什么要接受您的判断提出论据。
      • @pjs:我同意我的回答是不够的。但是“公平”是 OP 使用的术语;不偏不倚更接近真相。
      猜你喜欢
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多