<强>前言强>
最近一段时间都在处理电影领域的数据,而电影票房预测是电影领域数据建模中的一个重要模块,所以我们针对电影数据做了票房预测建模。
<强>前期工作强>
一开始的做法是将这个问题看待成回归的问题,采用GBDT回归树去做。训练了不同残差的回归树,然后做集成学习。考虑的影响因子分别有电影的类型,豆瓣评分,导演的影响力,演员的影响力,电影的出品公司。不过预测的结果并不是那么理想,准确率为真实值的+/- 0.3区间情况下的80%,且波动性较大,不容易解析。
<强>后期的改进强>
总结之前的失败经验,主要归纳了以下几点:
1。影响因子不够多,难以建模
2 .票房成绩的区间较大(一百万到10个亿不等),分布不均匀,大多数集中与亿级,所以不适合采用回归方法解决。
3.数据样本量比较少,不均匀,预测百万级的电影较多,影响预测结果
后期,我们重新规范了数据的输入格式,即影响因子,具体如下:
第一行:电影名字
引用>
第二行:电影票房(也就是用于预测的,以万为单位)
第三行:电影类型
第四行:片长(以分钟为单位)
第五行:上映时间(按月份)
第六行:制式(一般分为2 d, 3 d IMAX)
第七行:制作国家
第八行:导演影响(以导演的平均票房成绩为衡量,以万为单位)
第九行:演员影响(以所有演员的平均票房成绩为衡量,以万为单位)
第十行:制作公司影响(以所有制作公司的平均票房成绩为衡量,以万为单位)
第十一行:发行公式影响(以所有制作公司的平均票房成绩为衡量,以万为单位)
收集了05-17年的来自中国,日本,美国、英国的电影,共1058部电影。由于处理成为分类问题,故按将电影票房分为以下等级:
随机森林是采用spark-mllib提供的随机森林,由于超过10个亿的电影的数据相对比较少,为了平衡各数据的分布,采用了过分抽样的方法,训练模型的代码如下:
公共空间预测()抛出IOException { 配置=new SparkConf SparkConf () .setAppName(“支持向量机”).setMaster(“本地”); conf.set (“spark.testing。记忆”、“2147480000”); SparkContext sc=new SparkContext(设计); SQLContext SQLContext=new SQLContext (sc);//加载和解析数据文件,将它转换为一个DataFrame。 DataFrame trainData=https://www.yisu.com/zixun/sqlContext.read () .format (libsvm) .load (this.trainFile); DataFrame testData=https://www.yisu.com/zixun/sqlContext.read () .format (libsvm) .load (this.testFile);//索引标签,将元数据添加到标签栏。//健康> 树16(1.0重量): 如果(功能10 {0.0}) 如果(特性48 & lt;=110.0) 如果(86 & lt;=13698.87) 如果(功能21 {0.0}) 如果(功能54 {0.0}) 预测:0.0 其他(功能54不是{0.0}) 预测:1.0 其他(功能21不是{0.0}) 预测:0.0 其他(86比;13698.87) 如果(功能21 {0.0}) 如果(85 & lt;=39646.9) 预测:2.0 其他(85比;39646.9) 预测:3.0 其他(功能21不是{0.0}) 预测:3.0 其他(48比特性;110.0) 如果(85 & lt;=15003.3) 如果(功能9 {0.0}) 如果(功能54 {0.0}) 预测:0.0 其他(功能54不是{0.0}) 预测:2.0 其他(功能9不是{0.0}) 预测:2.0 其他(85比;15003.3) 如果{0.0}(65) 如果(85 & lt;=66065.0) 预测:3.0 其他(85比;66065.0) 预测:2.0 其他(65年特性不是{0.0}) 预测:3.0 其他(功能10不是{0.0}) 如果(功能51 {0.0}) 如果(85 & lt;=6958.4) 如果(功能11 {0.0}) 如果(特性50 & lt;=1.0) 预测:1.0 其他(50比特性;1.0) 预测:0.0 其他(功能11不是{0.0}) 预测:0.0 其他(85比;6958.4) 如果(功能5 {0.0}) 如果(功能4 {0.0}) 预测:3.0 其他(功能4不是{0.0}) 预测:1.0 其他(功能5不是{0.0}) 预测:2.0 其他(功能51不是{0.0}) 如果(特性48 & lt;=148.0) 如果(功能0 {0.0}) 如果(功能6 {0.0}) 预测:2.0 其他(功能6不是{0.0}) 预测:0.0 其他(功能0不是{0.0}) 如果(特性50 & lt;=4.0) 预测:2.0 其他(50比特性;4.0) 预测:3.0 其他(48比特性;148.0) 如果(功能9 {0.0}) 如果(特性49 & lt;=3.0) 预测:2.0 其他(49比特性;3.0) 预测:0.0 其他(功能9不是{0.0}) 如果(功能36 {0.0}) 预测:3.0 其他(功能36不是{0.0}) 预测:2.0随火花机森林实现票房预测