system: [SYSTEM]

user: 4. 电影票房预测评估 在量化电影票房影响因素的基础上将2017~2019年300部电影数据输入模型构建电影票房预测模型进行拟合预测，分别采用Lasso 、ElasticNet、Ridge、GBDT算法、LightGBM算法、XGBoost算法六个常用的机器学习模型进行票房预测。研究中，选用的集成学习算法是基于树模型在训练样本有限、训练时间短、调参具有独特优势。在代价函数中加入了正则项，可以控制模型的复杂度；支持并行处理和支持用户自定义目标函数和评估函数，灵活性高；内置交叉验证，可以很方便的获取最优迭代次数。相比于近年流行的神经网络能够更灵活处理表格数据，并具有更强的可解释性，适合具有多类型特征的电影影响因素数据。 论文构建票房预测模型的过程大致分为：票房数据分布分析并正态化；通过XGBoost模型的重要性特征图筛选主要影响因素；通过MinMaxScaler函数将影响因素归一化；利用训练数据通过网格搜索和交叉验证对模型进行调参优化，利用调参后的模型进行训练和对比评估；通过Stacking方法融合效果较好的模型并评估；对比影评情感特征引入模型前后的拟合效果；对比不同基学习器Stacking模型的拟合效果；最后通过拟合较好的模型对电影票房进行预测得到最终的预测结果。 4.1. 票房数据正态化 对票房数据做拟合得图6左图，可知数据呈右偏分布，为保证均值和方差相互独立，且残差服从正态分布，便于更好地拟合，论文通过对票房数据取对数，将其正态化如图6右所示。 4.2. 筛选主要影响因素 通过XGBoost模型筛选主要影响因素，作出重要性特征图如图7，其是用来度量自变量在XGBoost模型中对因变量预测的贡献度，是以某特征作为分裂节点带来的平均增益，从而有效地进行特征的筛选。其作为衡量变量重要性的指标，值越高说明该变量对因变量越重要，影响越大。 根据图7可知，在所有的影响因素中，电影首周票房和网络搜索量的平均增益最大，说明在影响票房所有因素中发挥的作用最大，其次是评论人数、情感特征、电影类型等影响因素，另外通过对图7中变量平均增益的观察可以看出，有部分影响因素的重要性分数很小几乎接近于零，表明这些因素在对票房的影响方面发挥的作用很小，相对于其他的重要性分数较大的因素其作用几乎可以忽略，这些因素包括电影演员及第二类型，因此为了简化后续的票房预测模型输入，论文在进行票房影响因素的选择时只选取影响力较大的因素，去掉一些作用很小的影响因素，从而在输入层对预测模型进行简化。因此，筛选后的票房影响因素共包含电影首周票房、网络搜索量、评论人数、情感特征、电影类型、评分、导演和档期等因素。 图6. 电影票房取对数前后对比 图7. XGBoost重要性特征图 4.3. 构建票房预测模型 XGBoost算法汇总多个弱评估器，该算法模型中有多种超参数，为找到最优的参数组合，论文选用sklearn中的GridSearchCV通过网格搜索交叉验证调整模型参数。网格搜索是指定参数的一种穷举搜索方法，根据经验将可能对模型造成影响的参数值设定区间范围，并对其进行排列组合，将所有可能的组合结果列出用于XGBoost训练，然后通过交叉验证对模型进行评估。通过评分函数对每个超参数值进行打分并选择得分最高的参数值，最后得到模型的最优参数组合。 对XGBoost模型调试参数的过程为：分别对XGBoost模型、树、学习目标三个层面的参数进行交叉验证，选用模型均方差最小状态下的参数。对于XGBoost模型调参的具体为：调整树的最大深度，最小叶子的权重通过迭代的方式不断修正，缩小范围；调整样本随机采样率和特征采样率，确定最佳采样比例；根据已有经验在设定小范围内调大节点分裂阈值、调小学习率来测试，防止过拟合。对票房影响因素的研究和多次调参优化后，最终对于XGBoost模型调试的参数如表3。 Table 3 XGBoost model parameter configuratio 参数 含义 取值 booster 学习器 Getree objective 目标函数 Reg:linear eta 学习速率 0.3 subsample 随机采样率 0.7 Max_depth 树的最大深度 3 Colsample bytree 特征采样率 0.7 Min_child_weight 最小叶子的权重 3 gamma 节点分裂阈值 0.1 n_estimators 生成树的个数 500 表3. XGBoost模型参数配置 由于数据量较少，则选用十折交叉验证来优化各个模型的参数，通过训练数据构建单个票房预测模型，利用均方根误差和标准差来进行模型评估。均方根误差评判机器学习模型的准确度，RMSE 越小，模型越准确，它度量了算法的预测值同真实值之间的偏离程度，刻画了学习算法本身的拟合能力。均方根误差的公式见式(1)。标准差评判的是机器学习模型的稳定性，方差越小，模型越稳定。它度量了训练集变动所导致的学习性能变化， 刻画了数据扰动所造成的影响。 R M S E = ∑ i = 1 N ( y i − y ^ i ) 2 N (1) 调试后的模型均方根误差和标准差结果见表4，可知调整模型参数后，GBDT 模型均方根误差和标准差最小，说明该模型拟合效果较好，在采用单个模型时优先考虑用此模型进行电影票房的预测；同时XGBoost、LigthGBM 模型均方根误差和标准差相对其他模型也较小，说明两个模型准确率和预测精度较高，在模型融合时可以优先考虑采用该两模型。 Table 4 Model evaluation before and after the introduction of emotional feature 模型 RMSE 标准差 Lasso 0.146346 0.028864 ElasticNet 0.143952 0.027534 Ridge 0.143934 0.025430 GBDT 0.087363 0.011990 LightGBM 0.100069 0.027869 XGBoost 0.100995 0.018498 表4. 引入情感特征前后的模型评估 综上，使用单个模型进行电影票房预测，容易陷入过拟合，降低了模型预测的准确度。而集成学习包含了多种不同的学习器，由于每个学习器的决策边界与误差不相同，在一定策略下将其进行组合后可以有效降低总误差，类似对单个学习器的纠错行为，能够较好的缓解过拟合的问题，增强模型泛化能力。则论文将使用强学习器进行组合的Stacking 集成学习方法，对模型进行融合从而获得准确的预测。 4.4. Stacking模型融合 模型融合是通过组合一些比较简单的算法，以保留这些算法方差低的优势；在此基础之上，它又能引入复杂的模型，来扩展简单算法的预测空间，集成学习模型融合能够减少标准差和偏差。论文对电影票房数据进行分割，将70%的数据作为训练集，30%作为测试集。在训练集上训练各个模型，得GBDT、XGBoost、LigthGBM拟合效果较好，通过Stacking方法对这三个模型进行融合。 Stacking模型的主要思想是训练模型来学习使用底层学习的预测结果。论文使用两层融合模型。第一层由多个基学习器组成并进行特征抽取，其输入为原始训练集；模型的第二层使用第一层基学习器的输出作为训练集进行再训练，从而获得完整的Stacking模型。论文通过mlxtend库提供的StackingCVRegressorstacking模型融合了拟合较好的三个模型，每个模型内部进行五折交叉验证。模型融合的具体过程如下： 1) 拆解训练集。将训练数据随机且大致均匀的拆为5份，每次选择其中4份作为训练集，1份作为验证集。 2) 针对三个基模型，分别进行5次训练，同时在验证集和测试集上进行预测。每次训练保留一份样本用作训练时的验证，如在模型1中利用4份训练数据进行训练，对1 份验证集进行预测得42条数据，同时在真正的测试集上预测得90 条数据；如此重复5次，将训练集上5次预测结果叠加为1列trian_meta1 (210条)，将测试集上5次结果取均值融合为1列test_meta1 (90条)；此步骤结束后，将三个基模型的验证集预测结果并列得到train_meta (210 * 3)作为下一层的训练数据，将三个基模型的测试集预测结果并列得到test_meta (90 * 3)作为下一层的测试数据。 3) 第二层选用lasso回归模型，去学习新的训练集train_meta，然后对新测试集test_meta进行预测，得到模型融合之后的预测结果。 Table 5 Root mean square error of the fusion mode 模型 RMSE GBDT 0.028831 LightGBM 0.052431 XGBoost 0.000861 Stacking_model 0.037613 表5. 融合模型的均方根误差 通过构建融合模型，对比各模型的拟合效果，训练模型后计算得到的RMSE结果如表5。可知，XGBoost的RMSE值最小，其预测效果最好；GBDT、LigthGBM和融合模型的RMSE值也较小，预测准确率也较高。各算法单独进行预测时，XGBoost的预测误差较小，这是因为XGBoost对损失函数进行了二阶泰勒展开，优化过程使用了一阶和二阶导数信息进行更新迭代，使得模型训练更充分。但若单独使用XGBoost模型容易过拟合，使其在训练集上表现好，但对预测值得预测能力差，而此处的融合模型精度相对XGBoost和GBDT较低，但泛化能力强。 Table 6 Movie box office prediction results of Stacking model and XGBoost mode 电影 票房(万) Stacking_model XGBoost Stacking_model 预测误差 XGBoost 预测误差 大侦探皮卡丘 285200 303465.2 418421.6 6.40% 46.71% 烈火英雄 170900 173821.5 191094.4 1.71% 11.82% 哥斯拉2怪兽之王 138000 138953.5 123081.1 0.69% 10.81% 海王 114500 107460.2 90528.57 6.15% 20.94% 我和我的祖国 108100 117871.7 119299.6 9.04% 10.36% 表6. Stacking 模型和XGBoost模型的电影票房预测结果 为验证Stacking集成学习模型的预测性能，通过对比Stacking模型和XGBoost模型的电影票房预测结果见表6。其中预测误差是通过平均绝对百分比误差衡量，其指标越小，表明模型的预测精度越高。其公式为 M A P E = 100 % N ∑ i = 1 N | y ^ i − y i y i | 由表6可知，Stacking集成模型的预测误差较小，采用Stacking 集成模型的预测效果优于XGBoost模型预测效果。同时计算得Stacking模型和XGBoost 模型的总预测误差分别为7.24%和13.53%，说明Stacking模型的预测效果较好，在预测时泛化能力更强，更适合用来进行票房的预测。 这是由于Stacking集成学习的方式使用第二层的学习器对所有基学习器产生的预测结果进行泛化，有效减少单一模型泛化性能不佳的风险，以此来提高模型的整体预测精度。同时对于模型优化方面，单一模型优化时，模型经常会陷入局部最小值，一些局部极小值所对应的模型泛化性能较差，而将多个基学习器的融合可有效降低陷入局部极小值的风险。因此，采用Stacking集成学习方式后电影票房的预测精度有所提升。 为了进一步验证Stacking集成模型中基学习器选择对预测结果的影响，表7分别给出了不同基学习器组合方式的预测结果。其中，Stacking模型1融合了六种不同的回归模型，Stacking模型2选用精度最小的基学习器组合方式(XGBoost、GBDT、LightGBM)。预测结果显示，使用不同的基学习器对预测结果有较大影响，使用拟合较好的基学习器的Stacking模型比结合全部回归模型学习器的Stacking模型表现更优异。一方面是由于选择学习能力强的基学习器能够整体提升Stacking模型的预测能力。另一方面是 Table 7 Stacking algorithm box office prediction error of different base model combination 模型 Stacking_model1 RMSE Stacking_model2 RMSE Lasso 0.119191 _ ElasticNet 0.117959 _ Ridge 0.102024 _ GBDT 0.028831 0.028831 LightGBM 0.052431 0.052431 XGBoost 0.000861 0.000861 Stacking_model 0.042411 0.037613 表7. 不同基模型组合方式的Stacking算法票房预测误差 因为针对不同的机器学习算法，其本质是在不同的数据空间观测数据，再根据自身算法规则构建相应模型。而选择差异度较大的算法能够最大程度体现不同算法的优势，基模型的多样性和差异性使得集成结果会更加稳健、精确，从而使得预测效果获得更大的提升。因此论文选择预测效果较好的三个模型(XGBoost、GBDT、LightGBM)通过Stacking 方法进行融合，对测试集进行预测，测试结果如图8。 图8. 基于Stacking集成学习的票房预测