【问题标题】:Translating a score into a probabilty将正方形转换为概率
【发布时间】:2011-07-22 13:19:32
【问题描述】:

人们访问我的网站,我有一个算法,它产生 1 到 0 之间的分数。分数越高,这个人买东西的概率就越大,但分数不是概率,它可能与购买概率不成线性关系。

我有一堆数据,关于我过去给人们打了多少分,以及这些人是否真的购买了。

使用这些关于过去分数发生了什么的数据,我希望能够获取一个分数并根据这些过去的数据将其转换为相应的概率。

有什么想法吗?

edit:有些人建议分桶,我应该提到我已经考虑过这种方法,但我确信一定有一种方法可以“顺利”地做到这一点。前段时间我问了一个关于一个不同但可能相关的问题here,我觉得类似的东西可能适用但我不确定。

edit2:假设我告诉过你,在 0.5 分以上的 100 位客户中,有 12 位购买了,而在 0.5 分以下的 25 位客户中,有 2 位购买了。对于得分为 0.5 的人的估计购买概率,我能得出什么结论(如果有的话)?

【问题讨论】:

  • 一个简单的贝叶斯分类器 (en.wikipedia.org/wiki/Naive_Bayes_classifier) 将是一个好的开始,而且实现起来并不难。
  • 我熟悉贝叶斯分类器,但我不知道如何将其应用于此问题。
  • Argote,这很棘手,我也不确定为什么需要它。
  • 您询问的是如何应用您的数据,而不是任何特定的代码,因此您最好在stats.stackexchange.com 提出您的问题
  • 我正在寻找一种特定于代码的算法。

标签: algorithm math probability


【解决方案1】:

绘制图表 - 在 Y 轴上绘制买家与非买家的比率,在 X 轴上绘制得分 - 拟合曲线 - 然后对于给定的得分,您可以通过曲线的高度获得概率。

(您不需要实际创建图表 - 但算法应该从练习中显而易见)

简单。

【讨论】:

  • 这被否决了,但我真的很喜欢。您甚至可以对其进行回归分析以收集公式。
  • 我希望没有明确的曲线拟合应该是可能的。
  • 鉴于(被认为是)分数和购买之间存在概率关系而不是确定性关系(即图表上会有一些“噪音”),您无法避免某种方法曲线拟合(即使它只是 ARMA)
【解决方案2】:

这就是 logistic regressionprobit regression 和公司的发明目的。现在大多数人会使用逻辑回归,但拟合涉及迭代算法——当然,有很多实现,但你可能不想自己写一个。 Probit 回归在链接中描述了一个近似的显式解决方案,可能足以满足您的目的。

评估逻辑回归是否适用于您的数据的一种可能方法是查看每个分数与购买概率的 logit (log(p/(1-p)) 的关系图,并查看是否这些形成一条直线。

【讨论】:

    【解决方案3】:

    我最终找到了我正在寻找的东西,一种称为“pair-adjacent Violators”的算法。我最初在this paper 中找到了它,但是请注意,他们对实现的描述存在缺陷。

    我描述了算法、这个缺陷以及它的解决方案on my blog

    【讨论】:

      【解决方案4】:

      嗯,最直接的方法是计算某个分数区间内购买某物的人的百分比,并在所有区间(例如,每 0.05 分)执行此操作。

      您是否注意到数据中得分较高与购买可能性增加之间存在实际相关性?

      我不是统计专家,但可能会有更好的答案。

      【讨论】:

      • 是的,我可以通过存储它们来做到这一点 - 但我希望有更好的解决方案。
      【解决方案5】:

      您可以将分数分成多个桶,例如0.0-0.1, 0.1-0.2,...并统计每个桶购买和未购买商品的客户数量。

      或者,您可能希望将每个分数与花费的金额(作为散点图)绘制出来,看看是否有任何明显的关系。

      【讨论】:

        【解决方案6】:

        您可以使用指数衰减来产生加权平均值。

        选择您的用户,按得分顺序排列(随机打破平局)。

        从左到右,从 0 的运行平均值开始。您获得的每个用户,将平均值更改为 average = (1-p) * average + p * (sale ? 1 : 0)。从右到左做同样的事情,除了从 1 开始。

        p 越小,曲线就越平滑。使用您的数据,直到您获得 p 的值,从而为您提供您喜欢的结果。

        顺便说一下,这是 Unix 系统计算平均负载的关键思想。

        【讨论】:

        • 我不明白,我如何使用平均值将分数转换为概率?
        • @sanity:显示的平均值是基于“接近”您当前分数的分数的概率估计值。这有点像分桶的“模糊”版本。
        【解决方案7】:

        根据您的 edit2 评论,您没有足够的数据来发表声明。您的总体购买率为 11.2% 这与您的 2 个高于/低于 0.5 的购买率在统计上没有差异。此外,为了验证您的分数,您必须确保购买百分比随着分数的增加而单调增加。您可以存储,但您需要根据概率计算器检查您的结果,以确保它们不是偶然发生的。

        http://stattrek.com/Tables/Binomial.aspx

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-10-07
          • 2011-06-21
          • 1970-01-01
          • 2022-10-09
          • 1970-01-01
          • 2019-02-20
          • 2019-03-17
          相关资源
          最近更新 更多