首页 > 其他分享 >R语言电影数据分析:随机森林探索电影受欢迎程度因素、参数调优可视化

R语言电影数据分析:随机森林探索电影受欢迎程度因素、参数调优可视化

时间:2024-05-22 22:41:04浏览次数:15  
标签:变量 电影 建模 调优 参数 随机 可视化 name

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

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

是什么让一个电影受欢迎? 也许是影片的总收入(影院条目和DVD sellings)。我们选择的变量将是票房(gross) 或观众评分(movie_facebook_likes)。众所周知,关于IMDB和番茄的好评与高收益的电影有关。我们的分析旨在回答以下研究问题:“我们能在仅知道它的类型,流派(流派变量),MPAA评级(MPAA_RATING变量),发布一个月(thtr_rel_month变量),发布日(thtr_rel_day变量),IMDB的票数(imdb_num_votes变量),评论家得分(critics_score变量)和最佳影片提名(best_pic_nom变量)等变量能否预测一部电影收入?

这篇文章帮助客户通过一些变量来预测电影的收入。文章提供了一个数据集,该数据集包括了1970年到2014年之间发布的美国电影的信息,使用随机抽样设计方法抽取。文章选择使用票房(gross)或观众评分(movie_facebook_likes)作为响应变量来研究,最终选择观众评分作为响应变量。

在探索数据分析部分,文章使用了直方图和盒状图的方法来了解分类变量和响应变量之间的关联性,以及数值变量和响应变量之间的交互作用。文章还使用了随机森林算法建立模型,并通过调整参数来寻找最优模型。最终,文章发现IMDB票数、评论家得分和最佳影片提名等变量对于预测电影收入非常重要。

数据

抽样设计

该数据集的目标人群是从1970年和2014年,著名的互联网数据库IMDB随机抽取的电影数据 。

推理范围

“电影”的数据集,应考虑使用一个随机抽样设计,选择美国电影有代表性的样本观察性的回顾性研究,我们的结果应该推广到1970年和2014年间发布的所有美国电影。

   
data=read.csv("movie_metadata.csv")

image.png

image.png

探索数据分析

响应变量的分布 首先,我们将检查两个潜在的响应变量之间有高度相关性:票房和观众的分数。

   
cor(movies$gross, movies$movie_facebook_likes)

image.png

由于这两个变量之间的相关性相当高。在我们的研究中,我们将选择movie_facebook_likes作为响应变量。

让我们先来绘制响应变量的直方图。

   
ot(movies2, aes(x = movie_facebook_likes)) + geom_histogram() + xlab("Audience Score") + ylab("Coun

image.png

分布分数变量左侧偏斜,可能是单向或双峰。

   
summary(movies2$movie_facebook_likes)

image.png

盒状图

 
现在,开始探索性数据分析,首先,我们将使用箱图来可视化我们感兴趣的分类变量与响应变量。

   
likes)) + geom_boxplot() + xlab("title_type") + ylab("movie_f

image.png

country和观众得分关联。

   
ikes)) + geom_boxplot() + xlab("content_

image.png

变量MPAA评级和观众得分关联不是那么明显。 content_rating评级可能不适合预测。

响应变量与数值变量的散点图

现在,我们将用散点图可视化我们感兴趣的数值变量如何与我们的响应变量相互作用。

image.png

正如我们可以看到上面,预测变量之间的相关性不是很高,因为它有助于避免多重共线性。

随机森林建模

随机森林是一种常用的机器学习算法,用于建立预测模型。它基于多个决策树的集成,通过对每个决策树的预测结果进行综合,得出最终的预测结果。下面将介绍随机森林建模过程以及参数调优的方法。

在随机森林建模之前,我们需要先对数据进行预处理和特征选择。在这个示例中,我们以"gross-budget"作为因变量,其余列作为自变量进行建模。下面是建模代码:

   
randomForest( gross-budget~.-director_nam

上述代码中,"gross-budget~.-director_name"表示以"director_name"列为排除变量,其他列作为自变量进行建模。接下来,我们通过调用"randomForest"函数进行建模,其中"data"是输入的数据。

随机森林建模过程中,我们可以通过参数调优来提升模型性能。

image.png

QQ截图20231128144503.png

这个结果是随机森林模型对于每个变量的重要性排序。可以看到,num_voted_users(投票用户数)是最重要的变量,其次是num_critic_for_reviews(评论家评价数量)和num_user_for_reviews(普通用户评价数量),这些变量可能与电影的知名度和受欢迎程度有关。其他变量的重要性较低,例如color(颜色)、director_facebook_likes(导演的Facebook赞数)和title_year(发行年份)等。aspect_ratio(宽高比)的重要性为负数,说明这个变量对于模型预测结果的贡献是负面的。

需要注意的是,这里给出的变量重要性仅仅是针对随机森林模型而言,并不能保证在其他的机器学习算法或统计学方法中也是同样的重要性排序。此外,变量重要性也不一定意味着因果关系,只是表明这些变量对于模型预测结果的贡献比较大。

参数调优

参数调优是指通过尝试不同的参数组合,找到最优的参数配置,以提高模型的准确性。在随机森林建模中,可以调整的参数包括ntree(决策树的数量)、mtry(每个决策树的特征选择数量)和nodesize(每个叶节点的最小观测数)等。

下面是参数调优的代码示例:

   
tueRF(data[1:10,-which(colnaata) %in% c("director_name","actor_2_name","genres","actor_

上述代码中,我们使用"tuneRF"函数来进行参数调优,其中"data[1:10,-which(colnames(data)) %in% c("director_name","actor_2_name","genres","actor")]"表示选择除了"director_name"、"actor_2_name"、"genres"和"actor"列之外的其他列作为自变量。ntreeTry表示尝试的决策树数量,stepFactor表示步进因子。

通过参数调优,我们可以得到最优的参数配置。

image.png

image.png

image.png

用最优参数建模

在得到最优的参数配置后,我们可以使用这些参数进行建模。下面是使用最优参数建模的代码示例:

   
randomForest( gross-budget, ntree=1000, mtry=6, nodesize=5,

image.png

上述代码中,我们使用"randomForest"函数进行建模,其中"ntree=1000"表示决策树的数量,"mtry=6"表示每个决策树的特征选择数量,"nodesize=5"表示每个叶节点的最小观测数。

通过建立模型并获得结果,我们可以评估模型的性能和预测效果。

从结果来看,残差是独立的,误差在可接受范围内。

收入作为因变量

   
f <- randomForest( gross ~.-direc

变量重要性

image.png

   
ImpPlot(rf,t

image.png

发现最优参数

   
stmtry <- tuneRF(data[1:10,-whi

image.png

image.png

最优参数建模

   
orest( groslangu1000, mtry=6, nodesize=5, importance=T)

image.png

A-note-to-the-CEO-1536x864.jpg

标签:变量,电影,建模,调优,参数,随机,可视化,name
From: https://www.cnblogs.com/tecdat/p/18207296

相关文章

  • Python可视化训练
    Python可视化训练一实验目的l 使学生综合运用图形用户界面设计的概念;l 使学生熟悉使用中间面板,组成层次复杂的GUI界面;l 使学生掌握Python图形绘制和图像处理步骤与方法;l 使学生掌握Python可视化处理的步骤、方法与编程;二实验环境及实验准备l 所需硬件环境为微机;l ......
  • 可视化学习:使用极坐标参数方程和SDF绘制有趣的图案
    前言本文将介绍如何使用极坐标参数方程和上一篇文章提到的距离场SDF来绘制有趣的图案。说到曲线和几何图形的绘制,我们知道图形系统默认支持的是通过直角坐标绘制,但是有些曲线呢,不太容易使用直角坐标系来表示,却可以很方便地使用极坐标来表示,这个时候我们可以选择通过极坐标和直角......
  • 揭秘配电箱新视角:3D漫游可视化技术
    传统的配电箱房间往往给人一种压抑、复杂的感觉。错综复杂的电线、密密麻麻的设备,让人一眼望去就感到头晕目眩。对于非专业人士来说,想要快速了解整个配电系统的运行情况,几乎是不可能的。而且,一旦出现故障,查找问题、进行维修也是一项极其繁琐的工作。 然而随着科技的进步,一种全......
  • 无需重新学习,使用 Kibana 查询/可视化 SLS 数据
    1.场景现在通过SLS的ES兼容能力,可以很方便地实现用Kibana来查询和可视化SLS的数据。对于从ES迁移到SLS的用户可以继续保留原来的Kibana使用习惯。下面来演示如何通过Kibana来访问SLS。2.使用方法部署架构这里蓝色部分是需要客户端部署的组件。Kibana就......
  • NumPy 随机数据分布与 Seaborn 可视化详解
    随机数据分布什么是数据分布?数据分布是指数据集中所有可能值出现的频率,并用概率来表示。它描述了数据取值的可能性。在统计学和数据科学中,数据分布是分析数据的重要基础。NumPy中的随机分布NumPy的random模块提供了多种方法来生成服从不同分布的随机数。生成离散分布随......
  • 借助开源数据可视化平台发展契机,实现办公流程化!
    如果实现流程化办公,那么对于企业而言是优势多多的。因为可以实现降本、增效、提质,帮助企业提升市场份额,低代码技术平台在推动企业实现流程化办公的过程中应用价值普遍提高,开源数据可视化平台可以助力企业开源节流,从而提升市场竞争力,收获更多辉煌价值。大家都了解低代码技术平台吗......
  • 可视化理解constructor、prototype、__proto__形成的指向图
    Person类和person实例首先给出一段js代码:functionPerson(){}constperson=newPerson()根据以下规则:每个实例都有一个__proto__指向其原型对象。每个构造函数都有一个prototype属性指向其实例的原型对象每一个原型都有一个prototype指向其实例的构造函数。于是就......
  • 实现“代码可视化”需要了解的前置知识-编译器中端
    1.前言前文实现“代码可视化”需要了解的前置知识-编译器前端介绍了编译器前端知识并附带了小练习,本文将继续介绍编译器中端相关的知识,还是概念+练习的学习方式。中间代码是用来进行程序分析和实现代码可视化的关键数据,了解其生成和优化方式能更好的帮助我们理解程序的执行逻辑,......
  • 多状态马尔可夫链、生存分析心脏同种异体移植血管病变(CAV)数据可视化|附数据代码
    原文链接:https://tecdat.cn/?p=36216原文出处:拓端数据部落公众号临床研究和医疗经济学研究中客户经常关注于评估患者在疾病从一种状态发展到另一种状态时的生存预后。标准生存模型仅直接模拟两种状态:存活和死亡。多状态模型允许直接模拟疾病进程,在这些过程中,患者在随机的时间间......
  • R语言空气污染数据的地理空间可视化和分析:颗粒物2.5(PM2.5)和空气质量指数(AQI)|附代码数
    原文链接:http://tecdat.cn/?p=23800最近我们被客户要求撰写关于空气污染数据的研究报告,包括一些图形和统计输出。由于空气污染对公众健康的不利影响,人们一直非常关注。世界各国的环境部门都通过各种方法(例如地面观测网络)来监测和评估空气污染问题介绍全球的地面站及时测量了许......