每年有一个 1 值的分类器

数据挖掘 分类
2022-03-07 06:15:25

假设我想找出赢得奥斯卡最佳电影类别的概率。我知道以下规则:

  1. 每年只有一名获胜者。
  2. 从逻辑上讲,每年的预测概率之和应为 1。

我的分类器中可以有一个年份特征,但这并不意味着强制执行 1 和 2。如果我使用像逻辑回归这样的简单分类器,我也看不出将年份作为一个特征会有什么帮助。

我的问题是:

有没有办法在模型中强制执行这些规则?有关系吗?当我尝试预测给定年份时,我是否应该只使用没有这些规则的模型并将概率标准化为 1?

1个回答

正如@Emre 在评论中指出的那样,您将需要使用softmax 函数在获得每部电影的一组分数后,该函数会将分数压缩到 [0,1] 范围内,并且分数将加起来为 1。


这是一个可能的过程:

  1. 为每个图像生成一个特征集
  2. 在您的特征集上训练模型以输出电影的分数。分数是任意域中的数字。
  3. 对所有候选电影重复步骤 2 以创建得分向量。
  4. 将分数向量输入到 softmax 函数中,以将分数压缩到域 [0,1] 中并使它们相加为 1

作为参考,定义了 softmax 函数:

σ(zi)=ezin=1Nezn


还有一个例子:

我们的功能集将包括以下内容:评论家/观众评分、收入、成本、售出总票数等。

假设您拥有 Oscars 的历史数据,其中包括我们将用于基本事实指标的特征集和分数。你定义分数。例如,如果一部电影甚至没有获得奥斯卡奖提名,它的得分可能为零,而一部获得奥斯卡奖的电影可能得分为 1。一部获得提名但没有获得很多选票的电影可能得分0.50。

您根据历史数据训练模型,这样,给定电影的特征集,它将输出一个分数,类似于您的训练集。

现在您正在考虑预测三部电影:复仇者联盟无限战争、死侍 2 和毒液。

您获得了他们的功能集(您用于培训的相同类别:评论家/观众评分、收入等)

然后通过模型传递每个特征集并获取分数向量:

MovieScoreAvengers Infinity War0.98Deadpool 20.82Venom0.24

我们可以使用 softmax 函数将分数结果解释为概率:

给出函数的分母:

n=1Nezn=e0.98+e0.82+e0.24   where:z={0.98,0.82,0.24}

我们计算给定分数的softmaxx像这样:

exe0.98+e0.82+e0.24

因此,softmax 分数为:

MovieScoreSoftmaxAvengers Infinity War0.980.42932Deadpool 20.820.36584Venom0.240.20484

我们可以看到:

0.42932+0.36584+0.20484=1