大数据分析案例-基于多元线性回归算法构建广告投放收益模型

news2024/11/20 7:07:58

 

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

1.项目背景

2.项目简介

2.1研究目的及意义

2.2研究方法与思路

2.3技术工具

3.算法原理

4.项目实施步骤

4.1理解数据

4.2探索性数据分析

4.3数据预处理

4.4特征工程

4.5模型构建

4.6模型评估

5.实验总结

源代码


1.项目背景

        近几年,随着经济的高速发展,广告市场的发展受到极大的促进,广告客户的数目和消费开支也在持续增加。数据表明,在2015-2019年这段时间里,广告业的规模一直保持着较大幅度的增长。2015年,广告业的市场规模从5973亿元,到2019年的8937亿元,以每年10.6%的速度递增。中商工业研究院预计,中国广告业将在2021年达到10229亿元。

        中国的广告业进入了一个新的阶段,网络广告的渗透率逐步上升。2020年,中国广告市场的增长速度因疫情而下滑6%,但互联网广告市场凭借互联网增长惯性、用户增长红利和疫情对线上业务的机会,仍保持了13%的增速。与2020年相比,2021年的增长速度将会超过11%,而网络广告的增长速度将会有所减缓,但是增长速度将会接近12%。网络广告的渗透率从2018年的51.3%上升到2020年的59.5%,到2022年的60.7%。在移动网络广告中,以视频为主导的信息流已逐渐成为主流。手机连通网的广告市场占有很大的比重,从2018到2020年的88%-90%,并有望在2022年内继续保持不变。

        在未来,网络广告的传播渠道和媒体资源将会越来越丰富,从而更好地适应各种广告主的个性化、个性化的广告宣传需要,在未来的网络广告中,无论是头部媒体还是长尾媒体,都将拥有广阔的发展空间。同时,借助网络的优势,在未来,实现线上、线下的全链条营销,将是一个企业的双赢选择。

2.项目简介

2.1研究目的及意义

        广告投放策略的重中之重就是广告媒介和广告内容,在选择广告媒介上,需要结合媒体规格、点位、播放频次和广告投放费用,以便广告主轻松选择广告媒介。其次在广告内容设计上,需要吸引消费者产生消费的前提是引起兴趣与关注,引导消费者了解产品、认同产品,这便与广告的详细内容、整体创意有关,在投放机制正确的前提下,广告内容将在最后引起消费,从而达到广告投放目的。投放广告是品牌曝光的有效手段,但想要消费者从广告中认识到认知最后认同,广告投放策略就会变得非常重要。本次实验,我们使用Python大数据分析方法研究广告投放收益分析。

2.2研究方法与思路

1.使用pandas读取广告收益数据,然后了解数据基本信息。

2.通过matplotlib中的scatter散点图可视化观察电视、广播、报纸三者与收益的相关性。

3.使用pandas中的dropna和drop_duplicates删除原始数据集中的缺失值和重复值。

4.使用train_test_split拆分原始数据集,训练集比例设置为0.8,测试集比例设置为0.2。

5.使用sklearn中的线性回归算法构建回归模型,其中以电视、广播和报纸三列数据为自变量,收益为因变量训练模型。

6.使用sklearn中的平均绝对误差、均方误差和R方对模型进行评估。

2.3技术工具

Python版本:3.9

代码编辑器:jupyter notebook

3.算法原理

        线性回归是一个主要影响因素作为自变量来解释因变量的变化,在现实问题研究中,因变量的变化往往受几个重要因素的影响,此时就需要用两个或两个以上的影响因素作为自变量来解释因变量的变化,这就是多元回归亦称多重回归。当多个自变量与因变量之间是线性关系时,所进行的回归分析就是多元线性回归。  设y为因变量X1,X2…Xk为自变量,并且自变量与因变量之间为线性关系时,则多元线性回归模型为:Y=b0+b1x1+…+bkxk+e

        其中,b0常数项b1,b2…bk回归系数b1X1,X2…Xk固定时,x1每增加一个单位对y的效应,即x1y偏回归系数;同理b2X1,X2…Xk固定时,x2每增加一个单位对y的效应,即,x2y的偏回归系数,等等。如果两个自变量x1,x2同一个因变量y呈线相关时,可用二元线性回归模型描述为:y=b0 +b1x1 +b2x2 +e

        建立多元线性回归模型时,为了保证回归模型具有优良的解释能力和预测效果,应首先注意自变量的选择,其准则是:

(1)自变量对因变量必须有显著的影响,并呈密切的线性相关

(2)自变量与因变量之间的线性相关必须是真实的,而不是形式上的;

(3)自变量之间应具有一定的互斥性,即自变量之间的相关程度不应高于自变量与因变量之间的相关程度;

(4)自变量应具有完整的统计数据,其预测值容易确定。

4.项目实施步骤

4.1理解数据

首先加载广告收益数据集并调用.head()方法查看数据前五行

接着调用.shape查看数据集有多少行多少列

结果显示数据集共有1000行,4列数据。

调用.describe()对原数据集进行描述性统计

描述性统计结果中,我们可以看到电视、广播、报纸、收益这四列数据的总数、均值、方差、最大值、最小值、四分位数等信息。

接着调用.info()查看数据基本信息

从结果中可以看出,这四列数据都是浮点型数据。

4.2探索性数据分析

最后,使用散点图分别观察电视、广播和报纸与收益之间的相关性。

从图中可看出电视投放与收益之间的正相关性较强,电视投放越大,收益越高。

从图中可看出广播投放与收益也有着较强的正相关性,但是相关性没有电视投放的强,当广播投放越多的时候,也存在着少量异常数据。

从图中可看出报纸投放与收益的相关性很弱,正相关性较弱。

4.3数据预处理

这里对原始数据集进行删除缺失值和重复值,最后得到的有效数据共有991条。 

4.4特征工程

图形用户界面, 文本, 应用程序  描述已自动生成wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

这里我们选取了电视、广播、报纸三列数据作为自变量,收益作为因变量。在拆分数据集的时候,训练集的比例为0.8,测试集的比例为0.2

4.5模型构建

这里调用sklearn中的LinearRegression构建线性回归模型,并且使用拆分的训练集数据进行训练,最后使用模型预测测试集并查看前十条预测结果。

4.6模型评估

从结果可看出模型的平均绝对误差为21.44,均方误差为795.58,模型的R方为0.86,模型效果较好。

5.实验总结

        在数据探索阶段,我们分析了三种广告投放渠道与收益之间的关系,结果表明三种渠道效果电视>广播>报纸。所以该企业应该在这三种渠道投放费用为电视>广播>报纸,这样能使得收益最大化。最后建模阶段,我们选用了线性回归模型,最后得到的模型R方值为0.86,效果较好。

心得与体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

源代码

import pandas as pd
import warnings
warnings.filterwarnings('ignore') # 忽略警告

# 读取数据
data = pd.read_excel('广告投放收益数据.xlsx')
print(data.head())
# 查看数据有几行几列
print(data.shape)
# 描述性统计
print(data.describe())
# 数据基本信息
print(data.info())
import matplotlib.pylab as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示

# 电视投放与收益之间的相关性
plt.scatter(data['电视'],data['收益'])
plt.title('电视投放与收益之间的相关性')
plt.xlabel('电视投放')
plt.ylabel('收益')
plt.show()
# 广播投放与收益之间的相关性
plt.scatter(data['广播'],data['收益'])
plt.title('广播投放与收益之间的相关性')
plt.xlabel('广播投放')
plt.ylabel('收益')
plt.show()
# 报纸投放与收益之间的相关性
plt.scatter(data['报纸'],data['收益'])
plt.title('报纸投放与收益之间的相关性')
plt.xlabel('报纸投放')
plt.ylabel('收益')
plt.show()
# 删除缺失值
data.dropna(inplace=True)
# 删除重复值
data.drop_duplicates(inplace=True)
print(data.shape)
X = data.drop('收益',axis=1)
y = data['收益']
# 拆分数据集
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(X, y,test_size=0.2)
# 构建线性回归模型
from sklearn.linear_model import LinearRegression
lr = LinearRegression()
lr.fit(x_train,y_train)
y_pred = lr.predict(x_test)
print(y_pred[:10])
# 模型评估
from sklearn.metrics import mean_absolute_error,mean_squared_error,r2_score
print('模型平均绝对误差MAE:',mean_absolute_error(y_test,y_pred))
print('模型均方误差:',mean_squared_error(y_test,y_pred))
print('模型R方值:',r2_score(y_test,y_pred))

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

走好这三步,不再掉进云上安全的沟里!

序言一直以来,公有云安全是横亘在广大用户面前的一道鸿沟。云安全(Cloud Security)是指用于控制云计算的安全性、合规性和其他使用风险的过程、机制和服务。公有云提供商们都强调安全是其最高优先级工作,动辄就发布上百页的云上安…

谁还没个技术呢~PYTHON制作观看软件

前言 大家早好、午好、晚好吖 ❤ ~ 以前没钱时,我是这样嘚: 朋友说好一生一起走,账号先借我来耍耍 现在没钱时,我是这样嘚: 涨价就涨价,怎么还搞搞限制账号登录这一出呢~ 这年头~谁还没点技术不是,看我…

复盘一下slam中常用的几种点云类型

使用livox雷达常涉及至少3种点云格式,一个是livox官方定义的custom格式,另外两个就是激光、视觉常用的pcl类型和ros类型。之前总结过Livox雷达驱动程序发布点云格式CustomMsg和pcl::PointXYZI、pcl::PointXYZINormal之间的关系,现在再来复盘一…

【TypeScript】TS进阶-泛型(八)

🐱个人主页:不叫猫先生 🙋‍♂️作者简介:前端领域新星创作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏:vue3从入门到…

【Linux】工具使用

文章目录一、Linux 软件包管理器 yum二、 Linux开发工具(1) Linux编辑器-vim使用(2)简单vim配置三、Linux编译器-gcc/g使用四、动态库和静态库五、Linux调试器-gdb使用六、Linux项目自动化构建工具-make/Makefile(1)make/Makefile…

如何才能精通 Redis?

为什么我要讲 Redis? 已经出过这么多主题的书籍和课程了,这次我为什么要选择 Redis 这个主题呢? 那自然是因为 Redis 是我们实际开发中不可或缺的组件之一,也是目前全球最流行的 KV 数据库。相信小伙伴们在工作中也会频繁接触到…

【入门篇】2 # 复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度

说明 【数据结构与算法之美】专栏学习笔记。 为什么引入这些时间复杂度 先看下面代码 // n 表示数组 array 的长度 int find(int[] array, int n, int x) {int i 0;int pos -1;for (; i < n; i) {if (array[i] x) {pos i;break;}}return pos; }上面代码中如果没有 …

Redis序列化和java存入Redis数据序列化反序列化总结

背景&#xff1a; 最近考虑java代码数据在保存redis时&#xff0c;通常要配置序列化&#xff0c;才能保存到redis中&#xff0c;然而我们知道Redis中也有序列化&#xff08;RDB和AoF两种形式&#xff09;&#xff0c;有点混淆总结一下。 java中数据保存redis过程序列化的原因是…

图解:什么是二叉查找树?

文章目录1. 二叉查找树的概念2. 二叉查找树的实现&#x1f351; 定义节点&#x1f351; 函数接口总览&#x1f351; 构造函数&#x1f351; 拷贝构造&#x1f351; 赋值重载&#x1f351; 析构函数&#x1f351; 查找操作&#x1f345; 动图演示&#x1f345; 非递归实现&#…

【机器学习】线性回归(实战)

线性回归&#xff08;实战&#xff09; 目录一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、构建实验所需的数据&#xff08;以下实验将基于此数据&#xff09;三、实现线性回归的两种方式方法一&#xff1a;通过直接求解得到拟合方程参数&…

Python金融风控模型案例实战大全

大家好&#xff0c;我是Toby老师&#xff0c;今天介绍 《Python金融风控模型案例实战大全》。 1.《Python金融风控模型案例实战大全》程覆盖多个核心知识点&#xff0c;包括风控建模全流程知识介绍&#xff0c;信用评分卡&#xff0c;信用评分卡知识包含个人信用评分卡和企业信…

ifconfig-显示和配置网络

ifconfig是linux中用于显示或配置网络设备&#xff08;网络接口卡&#xff09;的命令&#xff0c;英文全称是network interfaces configuring。配置网卡的IP地址语法例&#xff1a;ifconfig eth0 192.168.0.1 netmask 255.255.255.0 系统命令 语法 ifconfig [网络设备][down up…

读Go语言精进之路

主要是摘取书中&#xff0c;个人感觉比较重要的内容。 文章目录第一部分 熟知Go的一切理解Go的设计哲学使用Go语言原生编程思维写Go代码第二部分 项目结构、代码风格和标识符命名第三部分 声明、类型、语句与控制结构13 了解切片的底层原理14 了解Map实现原理并高效使用15. str…

Word处理控件Aspose.Words功能演示:在 C# .NET 中将 DOC/DOCX 转换为 PNG

Aspose.Words 是一种高级Word文档处理API&#xff0c;用于执行各种文档管理和操作任务。API支持生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现和打印文档&#xff0c;而无需在跨平台应用程序中直接使用Microsoft Word。此外&#xff0c; Aspose API支持流行文件格式处…

Linux系统中常见的压缩命令和特殊权限说明

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java案例分…

PHP多进程(二)之pcntl_wait

上篇文章我们说到父进程应该回收子进程结束之后产生的数据,这样才会不浪费系统资源。 一个程序启动之后&#xff0c;变成了一个进程&#xff0c;进程在以下情况会退出 1&#xff09;运行到最后一行语句 2) 运行时遇到return 时 3) 运行时遇到exit()函数的时候 4) 程序异常的时…

docker搭建maven私服(nexus3),整合springboot上传下载依赖

一、前言 我们在JavaWeb开发中必不可少的就是jar包管理-maven&#xff0c;在没有maven之前&#xff0c;都是自己手动下载jar包导入到项目中&#xff0c;非常的繁琐。 maven出现之后&#xff0c;又迎来新的问题&#xff0c;对于仓库里人家发布的都可以引用下载&#xff0c;但是…

音视频面试基础题

编码原理 为什么巨大的原始视频可以编码成很小的视频呢?这其中的技术是什么呢?核心思想就是去除冗余信息&#xff1a; 1&#xff09;空间冗余&#xff1a;图像相邻像素之间有较强的相关性 2&#xff09;时间冗余&#xff1a;视频序列的相邻图像之间内容相似 3&#xff09…

CVPR21 - BasicVSR:简单有效的视频超分辨率Baseline

文章目录原文信息初识相知组件分析BasicVSRIconVSR部分实验回顾原文信息 原文链接 初识 相比于图像超分&#xff0c;视频超分(VSR&#xff0c;Video Super-Resolution)显然是一件更具挑战性的任务。视频超分比图像超分多了时间维度的信息、更为复杂&#xff0c;而在当时&…

结构体的声明使用及存储方式

文章目录 一、结构体的声明与使用 1、1 结构体的简单声明 1、2 结构体的特殊声明 1、3 结构体自引用 1、4 结构体变量的定义和初始化 1、5 结构体传参 二、结构体在内存中的存储方式 2、1 结构体在内存中的存储方式的引入 2、2 结构体的内存对齐 2、3 修改默认对齐数…