PyTorch深度学习实战 | 基于深度学习的电影票房预测研究

news/2024/4/26 15:46:31/文章来源:https://blog.csdn.net/qq_41640218/article/details/130346188

基于深度学习的映前票房预测模型(Cross&Dense网络结构模型),该模型通过影片基本信息如:电影类型、影片制式、档期和电影的主创阵容和IP特征等信息对上映影片的票房进行预测。

本篇采用451部电影作为训练模型,最后再在194部影片上进行测试,模型的绝对精度为55%,相对精度为92%。该模型在使用相同的特征的情况下好于SVM、随机森林等算法。上升了至少5%。同时还对模型进行了超参调优工作,通过实验发现:当模型的批大小为128,学习率设置为0.001,迭代次数设置为150,多任务调节权重为0.4的时候预测效果最好。通过该模型对映前票房的成功预测将对影片的制作发行和放映有着重要的指导意义。

01、数据探索

选取2013—2016年在国内上映的影片。票房过小的影片一方面研究价值较低,另一方面存在着严重的特征缺失的问题,所以只筛选了票房超过一千万的影片作为研究对象,最终经过筛选最后共有645部。从互联网上采集了电影的特征(类型、播放制式、上映时间、主创人员信息、发行放映信息和网络口碑等数据),这些数据主要来自于豆瓣网、时光网和猫眼电影专业版和微博电影。这些特征包括连续数据和离散的类别数据。

从图1中可以发现,电影票房收入相差比价大,大部分电影的票房集中在1千万到5亿这个范围内,极少数电影可以超过10亿票房。票房数据的偏度为3.71,峰度为21,因此要研究的票房数据偏离正态分布,呈现出右偏态,同时也可以发现该数据峰度值远大于0,分布比较陡峭,如表1所示。

表1 连续变量统计表

■ 图1 票房直方图

1●连续变量

如图2所示,分析连续变量和票房的关系可以发现采集的连续变量和票房之间没有明显的线性关系,这也是票房预测一直没有取得特别精确的原因之一,同时采集了2015年和2016年的微博指数数据,使用全部数据进行建模时存在缺失值过多,使用两年数据建模时性能较低情况,所以最后舍弃。

■ 图2 连续特征与票房关系散点图

2●离散特征

各个离散变量和票房之间的箱型图可以直观地展示这些变量和票房的关系,为了便于画图,对票房数据进行取对数处理。其中表2展示了电影类型、电影制式等特征,图3给出了票房的箱型图。

表2 样本中各类型影片占比及平均票房表

■ 图3 离散特征和票房箱型图

02、模型设计

为了获得一个有效的票房预测模型,将连续的票房值进行了离散化处理。基于实际需求和模型构建要求将票房离散化成为4个区域,如表3所示。

表3 电源票房分区表

图4 为基于深度学习的电影票房预测模型框架

■ 图4 基于 Cross&Dense 网络的映前票房预测框架图

1●特征层

由于连续特征中各个特征有着不同的量纲和量纲单位,即取值范围存在巨大的差异,例如网络口碑取值范围是[0,10],而主创阵容的取值范围为[0,175492]。这种情况会影响网络训练的精度效率,所以在特征层对连续特征做了归一化处理,使各个特征处于同一个数级。使用标准归一化方法处理后的特征服从标准正太分布,特征的取值范围为[-1,1]:

其中,μ为该特征的均值,δ为该特征的标准差。

对于离散特征进行了one-hot编码。

2●嵌入层

在嵌入层对经过编码的离散特征进行了嵌入计算,具体的处理细节如表4所示。

表4 嵌入层参数设置表

3●深度网络层

电影票房模型使用的深层网路的结构细节如下:深度网络使用了3层,其中每层的神经单元数为50、25和10。稠密跳接网络的深度为4,每层增加的神经元个数都设置为50。同时为了防止模型过拟合使用了dropout技术,dropout的参数本文设置为0.3。

4●输出层

多任务学习是一个在机器学习领域很早就被提出的技术,之前常被应用于决策树、随机森林和神经网络中。它是一种归纳转移的方法,使用包含在相关任务的训练数据中的信息来改善泛化能力,使用并行学习但用分享特征表示,每个任务学习到的特征表达和知识可以帮助更好地学习其他任务[35]。随着深度学习技术的发展,多任务学习技术也成了一个研究的热点。为了提高预测准确率,针对电影票房预测这一问题,对上文中提出的预测框架进行了进一步的改进,引入了多任务学习技术。

(1)任务一:预测电影票房属于每个区域的概率;

(2)任务二:预测票房的实际值。框架中具体的实现方式是,在输出层输出两个预测结果:Y_out1通过softmax层输出多分类的预测结果,损失函数使用常用的多类的对数损失(对应于keras中的categorical_crossentropy);Y_out2通过一层神经网络输出票房的预测值,该预测值为连续的实数对应于票房的真实值,损失函数使用平均绝对值误差(对应于keras中的mean_absolute_error)。

其中,softmax是一种常用于多分类的方法

softmax层输出为该影片属于每一个类的概率,输出为4个类别,所以Y_out1向量表示有y=1、y=2、y=3和y=4的概率,概率最大的那个类别为最终的预测结果。Y_out2输出的预测值和用来训练的票房真实值,采取了取对数的运算,使得模型更优。因此,在输出层这两个输出共享下面的网络和这些网络表征的特征和知识。在训练阶段,设计的模型最小化这两个损失的加权和

其中,参数γ被用来调节两项损失函数的权重。

03、实例验证

1●票房预测分类性能指标

针对多分类问题,研究人员常用混淆矩阵和根据混淆矩阵得到的绝对精度(Bingo)和相对精度(1-Away)来分析分类器的性能优劣。绝对精度准确预测到实际类别的影片个数占整个实际类别影片总数的比率。相对精度准确预测到对应的区间(相邻类别)的影片个数占整个实际类别影片总数的比率。

2●超参数调优

本实验对以下参数进行了分析、实验调优,这些参数包括批大小、学习率、迭代次数及γ。同时以下部分都用箱线图的方式展示,每个实验都重复20次,以保证实验结果的可信。将实验数据以7∶3的比例,随机分成了测试集和训练集,其中训练集共有451部电影,测试集共有194部电影。同时使用了箱形图来展示实验结果,箱形图又称为盒须图或箱线图,可以展示多次实验的统计结果,也可以展示多次实验结果的最大值、最小值、两个四分位数和中位数。

(1)批大小调优:在模型训练时,在每个迭代中,模型的参数需要在每批数据处理结束后进行更新。参数的更新基于每批数据的平均误差,所以每批数据的数据量大小对模型的训练有重要的影响。如图5所示,通过实验可以发现,随着批大小的增加,训练得到的模型在测试集上的预测分类效果越来越好。当批大小为128时模型取得了最好的效果,之后随着批大小的增加模型效果下降。

■ 图5 批大小对模型效果的影响(迭代次数=200,学习率=0.001,γ=0)

(2)学习率调优:在模型训练时,学习率对参数的更新速度有重要的影响,如图6所示,随着学习率的减小,训练得到的模型在测试集上的预测分类结果越好。

■ 图6 学习率对模型效果的影响(批大小=128,迭代次数=200,γ=0)

(3)迭代次数调优:如图7所示,随着迭代次数的增加,训练得到的模型在测试集上的预测精度越来越高,当迭代次数为150时,预测分类效果最好,之后当迭代次数为200时预测准确率降低。

■ 图7 迭代次数对模型效果的影响(批大小=128,学习率=0.001,γ=0)

(4)γ调优:在模型训练时,γ影响着多任务学习中两个损失函数的权重。如图8所示,随着γ的增加,模型的预测能力逐渐提高,在0.4时模型获得最好的预测效果,然后模型预测效果逐渐降低。当取值0时,模型预测分类效果明显降低,这是由于模型只考虑回归的损失函数。

■ 图8 γ对模型效果的影响(批大小=128,迭代次数=150,学习率=0.001)

3●票房预测分类结果及分析

对模型的超参数做了如下设置:学习率设置为0.001,批大小为128,迭代次数为150,γ为0.4。表5为实验票房分类预测效果的混淆矩阵,实验结果表明该预测模型的绝对精度还需要提高,但是相对精度较高。

表5 票房预测分类结果混淆矩阵表

为了说明模型的有效性,进一步将模型与现有的几种算法SVM、决策树CART、随机森林算法进行了对比,先使用训练集对模型进行了训练,然后在测试集上计算了每种算法的准确率。其中SVM、决策树和随机森林使用了Python程序库sklearn中的程序实现的。SVM中参数选择为C=1.0,cache_size=200。决策树选择树的最大深度为5,随机森林选择树的子树的数量为20,树的深度为10。DNN算法采用多层全连接网络,该网络由4层神经网络构成,每层的神经单元数为100、50、25和20,激活函数使用Relu函数。

具体的实验结果如表6所示,为了试验的可靠性,每个算法都经过20次试验然后取其平均值作为最后的预测效果。

表6 电源票房数据集上几种算法预测效果表

如表6所示,通过实验可以发现,该算法更加能够充分利用特征中的信息,同时新的框架相对于普通的DNN网络,更加适用于离散类别特征数据,能够提升3%,也证明了这种框架可以更好地将深度学习应用于含有离散类别数据的分析中。同时,将多任务学习引入之后,回归和分类结果可以共享下层网络的参数和提出的特征和知识,能够有效地提高预测分类的效果,在本实验中提高了3%。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102905.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计网 从头自己构建协议】一、libpcap 介绍 手撕以太网帧

上一篇:IndexError: list index out of range 下一篇:[【计网 从头自己构建协议】二、收发 ARP 请求帧与响应帧] 介绍 理论的学习总是枯燥的,想要加深对理论的理解,最好的方法就是自己实践一遍。 想要亲手实现各种协议&#xf…

【音视频第17天】RTSP、RTMP协议初识

被叫去搞直播了,悲喜交加。先学习一下基本的技术栈,RTSP RTMP HTTP 先简单随便看看吧。 目录 什么是流媒体协议RTMPRTMP 工作原理 RTSPRTSP 工作原理 RTMP 与 RTSP 区别详细看看RTSP简介RTSP交互流程OPTIONSDESCRIBESETUPPLAYPAUSESET_PARAMETERGET_PAR…

春招,进阿里了....

个人背景是东北某 985 科班本硕,做的 测试开发,有两个自己写的小项目。下面是一些印象比较深刻的面试题 阿里一面 什么是软件测试? 软件测试过程中会面向哪些群体? 开发一个软件都要经过哪些阶段? 什么是黑盒测试&…

八年软件测试生涯,是时候做出改变了

五年前,我在南方的大城市:广州,做着一个快乐的游戏测试,工作不太忙,对一切技术充满了好奇心。测试工作不专业,也不受重视。但我有自己的快乐。工作不忙的时候,我今天学学Python,明天…

什么是客户服务平台?

在社交媒体和智能手机出现之前,品牌主要通过单向广告渠道与客户互动。社交媒体打破了这种自上而下的动态,以前所未有的方式打开了对话,将客户包括在内。 品牌不再控制客户对人们分享公司内容的行为。人们可以点击离开,向左滑动&a…

Python-pyppeteer解决微软Microsoft的登录机器人验证(8)

前言 本文是该专栏的第8篇,结合优质项目案例,让你精通使用Pyppeteer,后面会持续分享Pyppeteer的干货知识,记得关注。 在注册微软Microsoft账号或者注册outlook邮箱账号的时候,会遇到如下机器人验证: 是的,你可能第一眼看到这个验证页面,首先会想到是定位它的页面元素N…

非常详细的阻抗测试基础知识

编者注:为什么要测量阻抗呢?阻抗能代表什么?阻抗测量的注意事项... ...很多人可能会带着一系列的问题来阅读本文。不管是数字电路工程师还是射频工程师,都在关注各类器件的阻抗,本文非常值得一读。全文13000多字&#…

Vue CLI 服务

使用命令 在一个 Vue CLI 项目中,vue/cli-service 安装了一个名为 vue-cli-service 的命令。你可以在 npm scripts 中以 vue-cli-service、或者从终端中以 ./node_modules/.bin/vue-cli-service 访问这个命令。 这是你使用默认 preset 的项目的 package.json&…

电脑突然变成绿屏错误代码无法使用怎么办?

电脑突然变成绿屏错误代码无法使用怎么办?有用户使用电脑的时候,电脑桌面变成了绿屏的显示,所有的操作无法继续进行。遇到这个问题要怎么去进行解决呢?来看看详细的解决方法教学吧。 准备工作: 1、U盘一个(…

(原创)Flutter基础入门:手把手教你搭建Flutter混合项目

前言 Flutter是Google开源的构建用户界面(UI)工具包 支持在不同平台构建一致的ui效果 但在实际业务中,一般不会整个APP都用纯Flutter开发 尤其一些老的项目,会采用接入Flutter的方式来混合开发 那么今天就主要讲一下如何搭建一个…

SQLServer:Win/Linux环境安装及一键部署脚本

1. Win安装SQLServer CSDN已有完整安装流程,亲测可用。----》Windows安装SQLServer流程 2. Linux安装 SQLServer 2.1 设置镜像 curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo > /etc/yum.repos.d/mssql-server.repo 2.2 通过y…

深度学习模型参数量与训练数据量的平衡对泛化性能的影响

一、引言 深度学习模型在计算机视觉、自然语言处理等领域取得了显著的成果。为了获得泛化性能良好的模型,研究者需要在模型复杂度和训练数据量之间找到合适的平衡。本文将探讨这两者之间的关系以及如何在实际应用中实现最佳效果。 二、模型复杂度与训练数据量的关…

史上最严宝宝口粮新国标出台,DHA和维生素D可能无需额外补充了

自2023年2月22日起,我国婴幼儿配方食品(以下简称配方奶)新国标开始实施。这意味着2023年2月22日以后在中国上架销售的配方奶必须符合新国标,重新取得国家市场监督管理总局食品评审中心(CFE-SAMR)的注册。这…

改变思想,拥抱毒瘤,让公司走的更远

牛B的人物,早已经厌倦了中英文混杂,他们更进一步,使用中英文缩写,对普通人进行降维打击。更厉害的,造就新的名词,并科普出去。 有几项技术,我从心底里鄙视和厌恶,但每次在技术方案中…

【MCAL_Uart】-1.1-图文详解Uart串口协议

目录 1 什么是UART 2 UART的电平 3 UART的波特率 4 UART帧格式 4.1 start bit起始位 4.2 data bit数据位 4.3 parity bit奇偶校验位 4.4 stop bit停止位 5 什么是8-N-1 6 UART总线负载率计算 结尾 优质博文推荐阅读(单击下方链接,即可跳转&am…

Linux驱动之在Ubuntu下编译驱动模块——学习笔记(12)

为了方便驱动开发学习,了解一下在Ubuntu上进行驱动编译的流程。 一、下载对应的内核源码 首先要通过 uname -a查询一下自己的内核版本。 我这里下载的是 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.gz 二、编译内核 (1&a…

功能安全ISO26262 道路车辆 功能安全审核及评估方法第3部分:软件层面

道路车辆 功能安全审核及评估方法 第3部分:软件层面 Road vehicles - Functional Safety Audit and Assessment Method - Part 3: Software Level (工作组草案) 2022.4.15 前  言 本文件按照GB/T 1.1—2020《标准化工作导则 第1部分…

Pytorch深度学习笔记(十)多分类问题

课程推荐:09.多分类问题_哔哩哔哩_bilibili 目录 1. 多分类模型 2. softmax函数模型 3. Loss损失函数 4.实战MNIST Dataset 之前,在逻辑斯蒂回归中我们提到了二分类任务,现在我们讨论多分类问题。 1. 多分类模型 与二分类不同的是多分…

Hive基础和使用详解

文章目录 一、启动hive1. hive启动的前置条件2. 启动方式一: hive命令3. 方式二:使用jdbc连接hive 二、Hive常用交互命令1. hive -help 命令2. hive -e 命令3. hive -f 命令4. 退出hive窗口5. 在hive窗口中执行dfs -ls /; 三、Hive语法1.DDL语句1.1 创建数据库1.2 两…