Stars Realigned:改进 IMDb 评级系统

已发表: 2022-03-11

电影观众有时会使用排名来选择观看的内容。 自己这样做后,我注意到许多排名最高的电影都属于同一类型:戏剧。 这让我觉得排名可能有某种类型的偏见。

我在最受电影爱好者欢迎的网站之一 IMDb 上,该网站涵盖了来自世界各地和任何年份的电影。 其著名的排名基于大量评论。 对于这个 IMDb 数据分析,我决定下载那里的所有可用信息进行分析,并尝试创建一个新的、改进的排名,该排名将考虑更广泛的标准。

IMDb 评级系统:过滤 IMDb 的数据

我能够下载 1970 年至 2019 年间发行的 242,528 部电影的信息。 IMDb 给我的每一个信息是: RankTitleIDYearCertificateRatingVotesMetascoreSynopsisRuntimeGenreGrossSearchYear

为了有足够的信息进行分析,我需要每部电影的评论数量最少,所以我做的第一件事就是过滤评论少于 500 条的电影。 这产生了一组 33,296 部电影,在下表中,我们可以看到对其字段的摘要分析:

场地类型空计数意思是中位数
因素0
标题因素0
ID 因素0
诠释0 2003年2006年
证书因素17587
评分诠释0 6.1 6.3
投票诠释0 21040 2017
元评分诠释22350 55.3 56
概要因素0
运行诠释132 104.9 100
类型因素0
总的因素21415
搜索年诠释0 2003年2006年

注意:在 R 中, Factor指的是字符串。 RankGross在原始 IMDb 数据集中是这样的,例如,由于有数千个分隔符。

在开始细化分数之前,我必须进一步分析这个数据集。 对于初学者来说, CertificateMetascoreGross字段有超过 50% 的空值,因此它们没有用处。 Rank 本质上取决于 Rating(要改进的变量),因此,它不包含任何有用的信息。 ID也是如此,因为它是每部电影的唯一标识符。

最后, TitleSynopsis是短文本字段。 可以通过一些 NLP 技术使用它们,但由于文本数量有限,我决定在这项任务中不考虑它们。

在第一个过滤器之后,我剩下了GenreRatingYearVotesSearchYearRuntime 。 在Genre字段中,每部电影有多个类型,以逗号分隔。 因此,为了捕捉具有多种类型的附加效果,我使用 one-hot 编码对其进行了转换。 这产生了 22 个新的布尔字段(每种类型一个),如果电影具有这种类型,则值为 1,否则为 0。

IMDb 数据分析

为了查看变量之间的相关性,我计算了相关矩阵。

所有剩余的原始列和新的流派列之间的相关矩阵。接近零的数字会导致网格中出现空白。负相关导致红点,正相关导致蓝点。点越大越暗,相关性越强。 (主要文章正文中描述了视觉亮点。)

这里,接近 1 的值表示强正相关,接近 -1 的值表示强负相关。 通过这张图,我做了很多观察:

  • YearSearchYear是绝对相关的。 这意味着它们可能具有相同的值,并且两者都与只有一个相同,所以我只保留了Year
  • 一些领域预期正相关,例如:
    • MusicMusical
    • Adventure Action
    • Adventure Animation
  • 负相关也一样:
    • DramaHorror
    • ComedyHorror
    • HorrorRomance
  • 与我注意到的关键变量( Rating )相关:
    • 它与RuntimeDrama具有正相关且重要的相关性。
    • 它与VotesBiographyHistory的相关性较低。
    • 它与Horror具有相当大的负相关性,而与ThrillerActionSci-FiYear具有较低的负相关性。
    • 它没有任何其他显着的相关性。

似乎长剧收视率很高,而短片恐怖片则不然。 在我看来——我没有数据来检查它——它与产生更多利润的电影类型无关,比如漫威或皮克斯电影。

可能是在这个网站上投票的人不是一般人标准的最佳代表。 这是有道理的,因为那些花时间在网站上提交评论的人可能是某种具有更具体标准的电影评论家。 无论如何,我的目标是去除常见电影功能的效果,所以我试图在这个过程中去除这种偏见。

IMDb 评级系统中的流派分布

下一步是分析每种类型在评分中的分布。 为此,我根据出现在原始Genre字段中的第一个流派创建了一个名为Principal_Genre的新字段。 为了可视化这一点,我制作了一个小提琴图。

小提琴图,显示每种流派的评分分布。

再一次,我可以看到Drama与高收视率相关,而Horror与低收视率相关。 但是,该图表还显示其他类型的得分也不错: BiographyAnimation 。 它们的相关性没有出现在前面的矩阵中可能是因为这些类型的电影太少了。 所以接下来我按流派创建了一个频率条图。

一个条形图,显示数据库中每种类型的电影数量。喜剧、戏剧和动作的频率约为 6,000 或以上;犯罪和恐怖超过 2,000;其余的都在 1,000 以下。

实际上, BiographyAnimation的电影很少, SportAdult也是如此。 因此,它们与Rating的相关性不是很好。

IMDb 评级系统中的其他变量

之后,我开始分析连续协变量: YearVotesRuntime 。 在散点图中,您可以看到RatingYear之间的关系。

评级和年份的散点图。

正如我们之前看到的, Year似乎与Rating呈负相关:随着年份的增加,评级方差也增加,在较新的电影中达到更多的负值。

接下来,我为Votes制作了相同的情节。

收视率和投票的散点图。

在这里,相关性更加清晰:投票数越高,排名越高。 然而,大多数电影的票数并不多,在这种情况下, Rating的差异更大。

最后,我查看了与Runtime的关系。

评级和运行时间之间的散点图。

同样,我们有一个类似的模式,但更强大:更高的运行时间意味着更高的评级,但很少有高运行时间的情况。

IMDb 评级系统改进

经过所有这些分析,我对我正在处理的数据有了更好的了解,所以我决定测试一些模型来预测基于这些字段的评级。 我的想法是,我的最佳模型预测与真实Rating之间的差异将消除共同特征的影响,并反映使电影比其他电影更好的特定特征。

我从最简单的模型开始,线性模型。 为了评估哪个模型表现更好,我观察了均方根 (RMSE) 和平均绝对值 (MAE) 误差。 它们是此类任务的标准措施。 此外,它们与预测变量处于同一尺度,因此易于解释。

在第一个模型中,RMSE 为 1.03,MAE 为 0.78。 但是线性模型假设误差独立,中位数为零,方差恒定。 如果这是正确的,“残差与预测值”图应该看起来像没有结构的云。 所以我决定用图表来证实这一点。

残差与预测值散点图。

我可以看到,在预测值中最多有 7 个,它具有非结构化形状,但在此值之后,它具有明显的线性下降形状。 因此,模型假设很糟糕,而且我对预测值有“溢出”,因为在现实中, Rating不能超过 10。

在之前的IMDb数据分析中, Votes越高, Rating越高; 但是,这种情况发生在少数情况下,并且需要大量选票。 这可能会导致模型失真并产生此Rating溢出。 为了检查这一点,我评估了使用相同模型会发生什么,删除了Votes字段。

移除投票字段时的残差与预测值散点图。

这好多了! 它具有更清晰的非结构化形状,没有溢出预测值。 Votes字段也取决于评论者的活动,不是电影的特色,所以我决定也放弃这个字段。 去除它后的误差在 RMSE 上为 1.06,在 MAE 上为 0.81——稍微差一点,但并没有那么多,我更喜欢有更好的假设和特征选择,而不是在我的训练集上有更好的性能。

IMDb 数据分析:其他模型的效果如何?

接下来我做的是尝试不同的模型来分析哪个表现更好。 对于每个模型,我使用随机搜索技术来优化超参数值和 5 折交叉验证以防止模型偏差。 下表是获得的估计误差:

模型均方根误差MAE
神经网络1.044596 0.795699
提升1.046639 0.7971921
推理树1.05704 0.8054783
加姆1.0615108 0.8119555
线性模型1.066539 0.8152524
惩罚线性调节器1.066607 0.8153331
神经网络1.066714 0.8123369
贝叶斯岭1.068995 0.8148692
支持向量机1.073491 0.8092725

如您所见,所有模型的性能都相似,因此我使用其中一些模型来分析更多数据。 我想知道每个字段对评分的影响。 最简单的方法是观察线性模型的参数。 但是为了避免之前对它们的扭曲,我对数据进行了缩放,然后重新训练了线性模型。 重量如图所示。

线性模型权重的条形图,范围从恐怖的接近 -0.25 到戏剧的接近 0.25。

在此图中,很明显两个最重要的变量是HorrorDrama ,其中第一个对评级有负面影响,第二个对评级有正面影响。 还有其他领域会产生积极影响——比如AnimationBiography ——而ActionSci-FiYear则产生负面影响。 此外, Principal_Genre并没有太大的影响,所以一部电影有哪些类型比哪个是主要类型更重要。

使用广义加性模型 (GAM),我还可以看到对连续变量的更详细影响,在本例中是Year

使用广义相加模型的 Year 与 s(Year) 的关系图。 s(年)值遵循一条曲线,从 1970 年的 0.6 附近开始,在 2010 年跌至 0 以下,到 2019 年再次增加到接近 0。

在这里,我们有一些更有趣的东西。 虽然对于最近的电影来说,评分确实较低,但效果并不稳定。 它在 2010 年达到最低值,然后似乎正在“恢复”。 找出那一年之后电影制作中可能产生这种变化的事情会很有趣。

最好的模型是神经网络,它的 RMSE 和 MAE 最低,但正如你所见,没有模型达到完美的性能。 但就我的目标而言,这并不是坏消息。 可用的信息让我可以很好地估计性能,但这还不够。 还有一些我无法从 IMDb 获得的其他信息使Rating与基于GenreRuntimeYear的预期分数不同。 它可能是演员表演、电影剧本、摄影或许多其他事情。

从我的角度来看,这些其他特征在选择观看内容时真正重要。 我不在乎给定的电影是戏剧、动作还是科幻小说。 我希望它有一些特别的东西,让我玩得开心,让我学习一些东西,让我反思现实,或者只是让我开心的东西。

因此,我通过获取 IMDb 评级并减去最佳模型的预测评级,创建了一个新的、精确的评级。 通过这样做,我删除了GenreRuntimeYear的影响,并保留了对我来说更重要的其他未知信息。

IMDb 评级系统替代方案:最终结果

现在让我们看看我的新评分与真实 IMDb 评分的 10 部最佳电影:

数据库

标题类型IMDb 评级细化评级
Ko to tamo peva 冒险,喜剧,剧情8.9 1.90
地铺2号冒险,家庭8.9 3.14
El senor de los anillos: El retorno del rey 冒险,戏剧,奇幻8.9 2.67
El senor de los anillos: La comunidad del anillo 冒险,戏剧,奇幻8.8 2.55
安贝·西瓦姆冒险,喜剧,剧情8.8 2.38
哈巴姆·西尼菲·塔蒂尔德冒险,喜剧,剧情8.7 1.66
El senor de los anillos: Las dos torres 冒险,戏剧,奇幻8.7 2.46
手印呼唤冒险,戏剧,爱情8.7 2.34
星际迷冒险,戏剧,科幻8.6 2.83
未来之轮冒险,喜剧,科幻8.5 2.32

标题类型IMDb 评级细化评级
地铺2号冒险,家庭8.9 3.14
星际迷冒险,戏剧,科幻8.6 2.83
El senor de los anillos: El retorno del rey 冒险,戏剧,奇幻8.9 2.67
El senor de los anillos: La comunidad del anillo 冒险,戏剧,奇幻8.8 2.55
Kolah ghermezi va pesar khale 冒险,喜剧,家庭8.1 2.49
El senor de los anillos: Las dos torres 冒险,戏剧,奇幻8.7 2.46
安贝·西瓦姆冒险,喜剧,剧情8.8 2.38
Los caballeros de la mesa cuadrada 冒险,喜剧,奇幻8.2 2.35
手印呼唤冒险,戏剧,爱情8.7 2.34
未来之轮冒险,喜剧,科幻8.5 2.32

如您所见,领奖台并没有彻底改变。 这是意料之中的,因为 RMSE 并没有那么高,我们在这里观察顶部。 让我们看看后 10 名发生了什么:

数据库

标题类型IMDb 评级细化评级
Holnap tortent - 一个 nagy bulvarfilm 喜剧,悬疑1 -4.86
Cumali Ceber:阿拉塞尼阿尔辛喜剧1 -4.57
巴当喜剧,奇幻1 -4.74
耶耶! 名义上的科斯米奇纳喜剧1.1 -4.52
骄傲的美国人戏剧1.1 -5.49
棕色大衣:独立战争动作,科幻,战争1.1 -3.71
它生活的周末喜剧,恐怖,悬疑1.2 -4.53
玻利瓦尔:el heroe 动画,传记1.2 -5.34
黑蝙蝠的崛起动作,科幻1.2 -3.65
初恋戏剧1.2 -5.38

标题类型IMDb 评级细化评级
骄傲的美国人戏剧1.1 -5.49
圣诞老人和冰淇淋兔子家庭,奇幻1.3 -5.42
初恋戏剧1.2 -5.38
雷斯传记,戏剧1.5 -5.35
玻利瓦尔:el heroe 动画,传记1.2 -5.34
Hanum & Rangga:信仰与城市剧情,爱情1.2 -5.28
上赛季之后动画、戏剧、科幻1.7 -5.27
Barschel - Genf的Mord 戏剧1.6 -5.23
罗修来风戏剧1.5 -5.08
卡米福森戏剧1.5 -5.08

这里也发生了同样的事情,但现在我们可以看到,在精致案例中出现的剧集比在 IMDb 中出现的剧集更多,这表明有些剧集可能只是因为剧集而被高分。

也许最有趣的领奖台是 IMDb 评分系统评分和我的精炼评分之间差异最大的 10 部电影。 这些电影更加重视其未知特征,并且使电影因其已知特征而比预期的要好(或差)得多。

标题IMDb 评级细化评级区别
Kanashimi no beradonna 7.4 -0.71 8.11
耶稣会巨星7.4 -0.69 8.09
平克弗洛伊德墙8.1 0.03 8.06
天子之蛋7.6 -0.42 8.02
吉本·特克·内亚9.4 1.52 7.87
百乐7.8 0.00 7.80
圣诞老人和三只熊7.1 -0.70 7.80
斯克罗治的阿莱格里历史7.5 -0.24 7.74
皮埃尔德阿斯诺7 -0.74 7.74
1776 7.6 -0.11 7.71

如果我是一名电影导演,并且必须制作一部新电影,在完成所有这些 IMDb 数据分析之后,我可以更好地了解制作什么样的电影才能获得更好的 IMDb 排名。 这将是一部长篇动画传记剧,将翻拍一部老电影——例如《艾玛迪斯》。 可能这会确保一个良好的 IMDb 排名,但我不确定利润……

您如何看待在这项新指标中排名的电影? 你喜欢他们吗? 还是你更喜欢原版的? 在下面的评论中告诉我!