R语言IMDb TOP250电影特征数据挖掘可视化分析受众偏好、排名、投票、评分

发布时间 2023-06-28 22:50:12作者: 拓端tecdat

全文链接:https://tecdat.cn/?p=32998

原文出处:拓端数据部落公众号

本文首先介绍了IMDb(互联网电影资料库) TOP250及其排名算法、评分机制利弊,帮助客户通过分析《黑暗骑士》、《肖申克的救赎》和《教父》三部影片在2008年7月至9月评分数据,分析排名变动的原因。其次,通过抓取曾经入选电影的生产国家、导演和演员、制作年份、风格流派以及当前入选的制作年份和各自的计数、平均打分,总结IMDb TOP250电影特征,最终得出互联网资料库Top250多为欧美国家制作于上世纪末本世纪初剧情片的分析结果。

IMDb简介

互联网电影资料库(Internet Movie Database,简称IMDb)是一个关于电影演员、电影、电视节目、电视明星、电子游戏和电影制作在线数据库。IMDb创建于1990年10月17日,从1998年开始成为Amazon公司旗下网站,2010年是IMDb成立20周年纪念。对于电影的评分目前使用最多的就是IMDb评分。

Top250

Top250是IMDb的特色,里面列出了注册用户投票选出的有史以来最佳250部电影。只有供影院播出的影片可以参加评选,而短片,纪录片,连续短剧和电视电影不在其列。用户在从“1”(最低)到“10”(最高)的范围内对影片评分。得分经过数学公式(IMDb公开的Top250算法[1])的过滤而生成最后的评定。为了保护结果不受恶意投票的影响,并且,只有“经常投票的用户”的投票被记入结果,为保护公平性,成为该类用户的条件是保密的。


[1] The formula for calculating the Top Rated 250 Titles gives a true Bayesian estimate:
weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C =C+(R-C) ×1/(1+m/v)
where:
R = average for the movie (mean) = (Rating)
v = number of votes for the movie = (votes)
m = minimum votes required to be listed in the Top 250 (currently 25000)
C = the mean vote across the whole report (currently 7.0)
for the Top 250, only votes from regular voters are considered.

因此:临界值m=v,有Rating(WR)=(R+C)/2,即最终得分为用户打分和平均分的均值,用户打分有效,但不明显;v<<m时,有Rating(WR)→C,即打分用户越少,用户打分影响越小,越趋近先验值,;v>>m时,有Rating(WR)→R,即打分用户越多,用户打分影响越大,越趋近用户真实打分。

查看数据

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

 
head(df)

df$`Highest position`=apply(df[,c("rank1" ,"rank2")],1,min)

image.png

另外在五部曾经成为过Top1里面,除了《肖申克的救赎》和《教父》,《星球大战》、《黑暗骑士》、《指环王》都是轰动一时的大片;并且排名达到过第二的电影里面既有奥斯卡得主也有商业大片:这说明一部电影在上映或评选时引起的轰动会影响到IMDb排名的剧烈波动。此外,《教父》和《肖申克的救赎》的平均评分分别是9.11和9.10,另外三部拿过第一的电影在平均评分上与前二者有明显差距。

排名算法探讨

IMDb Top250算法的思路就是通过每部影片的评分人数作为调节排序的杠杆:如果这部影片的评分人数低于一个预设值,影片的最终得分会向全部影片的平均分被拉低。

由此可见,平衡评分人数和得分,避免小众高分影片排前,是这个计算方法的出发点。可问题在于:调节整个榜单的排序主要依赖于评分人数预设值。若被设置的很低,那么最终的排序结果,就是每部影片自身评分从高到低在排序;若被设置得过高,那么只适用高曝光率的影片。该预设值从500被调整至25000,遗憾的是这个算法仍然无法很好的解决他们的问题。

考虑国内电影市场,2015年11月19日上映的《我的少女时代》,在2015年12月19日在豆瓣电影得到了累计超过11万人次的评分,而1942年上映的《卡萨布兰卡》,同时刻的评分人数还不到10万。近几年由于观影方式的多样化以及影院观影的持续火爆,使得新近上映的影片很轻松地就能获得大量的评分,相较之下,老片子的曝光机会少了很多。继续调节评分人数预设值已无法满足当前国内电影排行榜的实际需求。

针对以上问题,通常会先用最基本的算法模型来应对,然后针对该算法带来的问题再修改并衍生出新的算法。比如针对评分人数预设值,可以分出老片和新片两个排行分别对待,或把时间因素考虑在内。

评分机制利弊

对于大部分电影而言,长期来看评分是有一定参考价值的。但由于存在受雇于网络公关公司,或者狂热粉丝伪装成普通用户在网站上刷口碑,给竞争对手抹黑,借以操纵市场的行为,不可盲目迷信分数。

2008年7月18日《黑暗骑士》[1]上映时,诺兰狂热粉丝为了将其推上TOP1,昼夜不停给该片打10分,同时给当时TOP1的《教父》[2]打1分,终于把一部21世纪影片送上了TOP1宝座,也让《肖申克的救赎》的分数超越了《教父》。如今《黑暗骑士》终究不敌岁月洗礼跌下去了,不过《肖申克的救赎》[3]的优势却保留了下来,成了TOP1。

下面通过采集IMDb相应时段数据,说明该过程:

 
# 《教父》的IMDb排名走势图  
  
df = read_excel("imdb top250.xls", sheet = 3  )

image.png

从1998年开始,《教父》基本上稳定地排在Top 250榜单的第一名,而在2008年7月底,突然降到第3名,然后从当年8月10日起至今,回升并保持在第二。

 
data.frame(date,na.omit(df$Change),na.omit(rank,df$Rating),na.omit(df$V

image.png

在7月中旬之前,该片每天新增投票100多,但从大约7月20日起,每天新增投票超过1000,同时它的排名降到第2,然后在6天之内降至第3。

image.png

相比之下《黑暗骑士》排名波动较大,从上图可以看出,影片于2008年7月中旬上映,在几天之内冲到Top 250的第一,但在这个位置上它只保持了不到一个月,从8月10日开始连连下跌,最低跌到过第12名,今排第6。

 
df[,c("Date"  , "Change" ,  "Votes" ,  "Rating"      )]

image.png

《黑暗骑士》在2008年7月份的投票变动情况

 
par(new=TRUE)  
plot(x, y2,,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")  
axis(4)  
mtext("y2",side=4,line=3)

image.png

《黑暗骑士》在2008年7月份的投票和新增票数变动情况

上映几天之内新增的票数和评分的走势基本一致,可以认为大量新增的评分拉高了平均分。之后恢复常态的新增票数对评分作了矫正。《黑暗骑士》上映,《教父》投票猛增,伴随排名下降。《黑暗骑士》超过了《教父》,《教父》又跌到《肖申克的救赎》之下,结论即:短期内恶评《教父》的人大量增加了。

image.png

《肖申克的救赎》的IMDb排名走势图

image.png

《肖申克的救赎》在2008年7、8月份的投票变动情况

 
par(new=TRUE)  
plot(x, y2,,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="")

image.png

2008年7月16日至2008年8月10日《教父》、《黑暗骑士》、《肖申克的救赎》的IMDb排名(《教父》和《肖申克的救赎》对应的是次坐标轴)

结合图表发现,其实《肖申克的救赎》的投票情况也受到了《黑暗骑士》上映的影响,从之前的每天100至200票,猛增到后来的每天600至1000票,个别数甚至突破1000。和《教父》情况相似,只不过《肖申克的救赎》的目标不如《教父》醒目,所以受到的“攻击”不如《教父》猛烈,最后渔翁得利。

 

counts <- t(proportion)  
barplot(counts, main="Vote rate",

image.png

image.png

观察《教父》、《黑暗骑士》、《肖申克的救赎》的IMDb评分比例,结合hate votes仇恨投票比例,即打1分的票数占总票数之比。《十二怒汉》[1]、《黄金三镖客》[2]、《低俗小说》[3]等其他Top 10行列的影片这个比例在2.20-3.60%之间,肖申克的救赎为3.40%,比较正常,《黑暗骑士》为3.70%,略偏高,而常年稳居第一的《教父》竟高达6.40%,即出现大量的人给《教父》打1分。从2015年12月18日《教父》、《黑暗骑士》、《肖申克的救赎》的IMDb评分比例可见三者均有被恶评的现象,其中《教父》也高于后两者。

从TOP 250看受众电影偏好

25年间,IMDb一共收录了349.6万部(集)作品,包括33.6万部电影长片,38.9万部电影短片,以及222.4万集电视剧。每一个作品又分别被打上各式各样的标签,有77.1万被打上了“喜剧”标签,“电视真人秀”也多达16.6万部,还有15.3万部配有电影原声歌单。它还收录了173.7万男演员,101.1万女演员的个人资料,有多少人有昵称,谁最近八卦新闻多,哪些演员的主页中同时收录了他/她说过的经典的话,它的采访视频甚至是收入信息。这些标签数据加上打分和票房系统,对于电影开发和制作,拥有巨大的参考价值。

通过分析TOP 250电影特征,能够给予观众和制作者一些启发。亚马逊也靠IMDb卖出了更多的 DVD和录像带。

生产国家

 
"Russia",  
"Federal Republic of Yugoslavia"  
)  
barplot( y1 ,col="blue",xaxt="n", yaxt="n",xlab="",ylab="" )  
axis(4)  
mtext("y1",side=4,line=3 )

image.png

上图影片数拟合幂律分布的可决系数R²高达0.988,前五名(包括美国、英国、法国、德国、日本)集中了81.6%的影片。美国电影独占鳌头,一方面原因是IMDb的主要评分人群在北美,主要定位在北美观众;另一方面得益于严谨的商业体系,稳定的运作。

导演和演员

 
wb = loadWorkbook("imdb top250.xls")  
df = readWorksheet(wb, sheet = "导演", header = TRUE)  
## 生产国家

1111.png

上图影片数拟合幂律分布的可决系数R²分别高达0.899和0.968。观众对于导演的喜爱程度不如演员集中。

演员与影片数和平均评分

 
df = readWorksheet(wb, sheet = "演员", header = TRUE)

image.png

风格流派

 
y=df$Count[-nrow(df)]  
names(y)=df$Genre[-nrow(df)]

image.png

风格流派与影片数

影片数拟合幂律分布的可决系数R²分别高达0.839。其中评分最高的是剧情片。由于剧情片的分数除了其本身水准以外,还会受到一定程度上的情感倾向影响,倾向于励志、感人、亲情、悲剧等一些容易唤起观众共鸣的情感,人们更容易对故事本身而不是电影水准产生认可,但最主要的因素仍是电影本身的质量好坏。

年份

 
df[df$Year %in% 1990:1999,-1]

image.png

观察一共884部历史曾经入选的影片制作年份,可见20世纪 90年代及本世纪初的电影有比较出色的表现。尤其是1996年(包括《美好事物》、《泰坦尼克号》、《真实的谎言》、《罗密欧与朱丽叶》)、1995年(《七宗罪》、《十二只猴子》)、1994年(《低俗小说》、《阿甘正传》、《肖申克的救赎》)

image.png

此外,入选的影片制作年份分布明显右偏。虽然20世纪30年代初到40年代末,特别是1935年到1945年是好莱坞也是美国电影的鼎盛时期。这一时期拍片的数量最多,1946年的产量达500部。电影的观众也最多,影片获得的利润也是最高的,但这并不能说这一时期的影片艺术水平最高,虽然被之后的作品借鉴,但观众最早接触到的仍是离他们最近的影片。

总结

通过以上分析可以明显发现,观众的偏好无论是对于生产国家、导演和演员、制作年份还是风格流派都服从幂律分布,并能够大致勾画出TOP 250电影的典型特征:由欧美国家制作于上世纪末本世纪初的剧情片。

面对良莠不齐的影片,通过集体智慧去粗取精,榜单是一种帮助建立品位的电影体并作为生产者参考标准之一: 在IMDb上的口碑直接影响电影公司对于导演、演员的选取。


JPEG-How-emerging-techs-1536x1536.jpg

最受欢迎的见解

1.R语言动态图可视化:如何、创建具有精美动画的图

2.R语言生存分析可视化分析

3.Python数据可视化-seaborn Iris鸢尾花数据

4.r语言对布丰投针(蒲丰投针)实验进行模拟和动态

5.R语言生存分析数据分析可视化案例

6.r语言数据可视化分析案例:探索brfss数据数据分析

7.R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图

8.R语言高维数据的主成分pca、 t-SNE算法降维与可视化分析案例报告

9.python主题LDA建模和t-SNE可视化