我可以使用什么度量从数据集中选择未来值最有可能最接近的数字?

机器算法验证 可能性 分布
2022-03-15 13:22:05

假设我有一个数据集,显示每天有人使用我开发的移动应用程序的次数。该数据集(排序后)如下所示:

[2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 7, 12, 15, 15, 15, 15, 15, 15]

我想返回一个数字,我敢打赌用户明天将使用我的应用程序的次数或非常接近它的次数。(假设我不关心这些数字在过去 21 天内最初报告的顺序。我只想预测并返回一个仅基于幅度的数字。)

作为查看此数据集的人类分析师,我会押注数字4原因不仅是有很多自然出现的 4,而且还有很多非常接近 4 的数字。

是否存在将从上述数据集中返回 4 的度量或现有算法?

我尝试过的事情:

数据集的众数15虽然这很有趣,但我认为 15 在这个集合中是一个异常值,因为接近 4 的值比 15 多。

该数据集的平均值7.5我们越来越接近 4,但最接近平均值的值 - 7 - 只出现一次。

该数据集的中位数5现在非常接近,但仍然不是我想要的,因为只有少数出现 5。

第一个四分位数3.5这将足够接近,但我认为这恰好接近我想要的数字是幸运的。我觉得对于不同分布的数据集,第一个四分位数可能会关闭。

我是一个统计新手,所以可能有一些关于如何分解这个我还不熟悉的问题的概念。

3个回答

为了使其能够进行严格的分析,您需要指定一个损失函数。相比,并获得有多糟糕一旦你指定了这样一个损失函数,你可以做很多事情。您可能能够通过模拟找到使预期损失最小化对于某些损失函数,最小化器是已知的。xyzx

我想返回一个数字,我敢打赌用户明天将使用我的应用程序的次数或非常接近它的次数

这对我来说听起来很像你想最小化预期的平均绝对误差(MAE),

argminxEy|xy|,

我们假设遵循您在数据集中观察到的分布。y

如果我们同意预期 MAE 是您想要最小化的值,那么您很幸运,因为知道哪个数量会这样做,即中位数:为什么最小化 MAE 会导致预测中位数而不是均值?

正如您所观察到的,这里的中位数是,而不是,尽管多。这样做的原因是所有 s“拉”了 argmin - 观察到的机会意味着预测比预测成本更低。5445151554

我们可以通过从您的数据集中重新采样并评估各种候选预测的 MAE,对预期的 MAE 进行非常简单的模拟。(其实对于你这么简单的数据集,真的不需要模拟,直接制表即可。)在R中:

dataset <- c(2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 7, 12, 15, 15, 15, 15, 15, 15)
set.seed(1) # for reproducibility
sims <- sample(dataset,size=1e5,replace=TRUE)

candidates <- seq(min(dataset),max(dataset))
emae <- sapply(candidates,function(xx)mean(abs(sims-xx)))
plot(candidates,emae,pch=19,xlab="Candidate",ylab="Expected MAE",las=1)

EMAE

如您所见,将导致预期 MAE 略低于54

现在,如果这不是让你开心的东西,那么我们需要找出让你开心的东西……也就是说,我们需要选择不同的损失函数。完成后,您可以运行类似的模拟并选择最小化器。如果您正确调整了损失函数,则最小化器将是(当然,考虑什么损失函数更有意义,而不是从你想要的结果开始。)4

或者,也许您的损失可以通过预测和结果之间的平方距离来更好地描述如果是这样,最小化器将是您的数据集的平均值(平均值最小化平方距离是统计中的标准结果) - 正如您所观察到的那样,即(xy)2xy7.5

这是我要运行的算法:

  1. 在直方图中找到峰值。这里的数据是 这样数组中的索引对应的是原始数据。也就是说,没有,有一个四个,以此类推。您必须调整任何峰值检测算法,特别是其窗口大小(检测器一次使用多少数据点?)。我希望在这种情况下找到两个峰值:警告:如果您的峰值检测器需要从峰值双向逐渐变细,那么它可能找不到
    [0,0,1,4,5,3,0,1,0,0,0,0,1,6],
    012,3415.15作为一个高峰 - 在这种特定情况下不会受到伤害。如果您需要整数值,请确保对结果进行四舍五入,因为峰值检测器不一定会给您整数输出。
  2. 求中位数,即5.
  3. 在第一步中选择最接近中位数的峰值(如距离函数),中位数为d(x,y)=|xy|4.

这让我觉得这是一种合理的方式来获得你想要的东西。

我会使用中位数,因为它应该等于或接近下一个随机用户使用您的应用程序的最可能次数。即使现在您的数据中很少出现这种情况,如果您将来查看随机用户,那么它将是最接近的。

如果您想知道应用程序可能会被使用多少次(针对所有用户,而不仅仅是下一个随机用户),那么平均值是合适的。这将为您提供所有用户对该应用程序的平均使用次数。

您有广泛的用户对应用程序的使用情况,其中有几个是 15 人。如果可能,您可以进行回归以预测该应用程序将被什么样的用户使用多少次。但是您必须了解用户,例如性别、年龄、一天中的时间或其他信息,并且这些必须是数据回归模型中应用程序使用情况的可行预测指标,以便您使用它来预测未来的使用。

如果您是一名投注者,并且想投注应用程序最有可能被使用的次数,您应该使用 15 的模式——但请注意,大多数用户不会使用 15 次,那您就错了大多数时候,虽然比选择任何其他单个数字的错误要少。如果您选择 5 的中位数,那么 5 及其最近的邻居 4 和 7 将共同出现 9 次,并且比 15 更可能出现,而 15 仅出现 6 次。

所以这真的取决于你的目标是什么:预测下一个用户大概会做什么,或者对下一个用户最有可能做的精确使用次数进行赌博,或者预测所有用户的使用次数。您可以通过使用中位数来预测下一个单个用户将使用该应用程序的次数;或者对一个精确的数字进行赌博并使用该模式,但知道这场赌博将是 21 次中的 5 次(或 72% 的时间)是错误的。对于预测的平均使用次数(所有用户),您将使用平均值。当然,所有这些都基于您提供的特定数据分布。对于理想数据(您的数据不是),平均值、中位数和众数在钟形正态分布中都相同,并且该数字将是使用的数字。

上面的一些答案建议通过在公式中加入一个预测数字来找到你想要的数字——但你首先需要找到这个预测数字,这是你问题的症结所在!