2022年MathorCup大数据竞赛B题北京移动用户体验影响因素研究求解全过程文档及程序
2022年MathorCup高校数学建模挑战赛—大数据竞赛
B题 北京移动用户体验影响因素研究
原题再现:
移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越完善。各个移动运营商,越来越重视客户的网络使用体验,从而进一步提升网络服务质量。
客户满意度是客户对运营商产品服务的满意程度,反映了客户期望与实际感知的产品服务之间的差异。特别是在信息透明、产品同质化的今天,客户满意度的表现成为各大运营商市场运营状况的重要体现。数字经济时代,各大运营商需要运用数字经济的管理理念和技术手段,建立客户体验生态的全方位系统性测评体系,实现客户满意度评测的数字化转型,让客户体验赋能商业决策,让商业决策真正服务客户,共同推动移动网络高质量可持续发展。
根据客户投诉,对影响用户体验的问题逐点解决,是传统提升客户满意度的方法。但是随着用户数量的大幅增加,移动产品的种类越来越丰富,客户的需求越来越高,传统的方法已经难以有效提升客户的满意度。本研究拟通过分析影响用户满意度的各种因素,为决策提供依据,从而实现更早、更全面提升用户满意度。
中国移动通信集团北京公司,让客户根据自身在网络覆盖与信号强度、语音通话清晰度和语音通话稳定性三个方面的体验进行打分,同时还让客户根据语音通话的整体体验进行语音通话整体满意度的打分,并统计整理影响客户语音业务体验的因素,希望以此来分析客户语音业务满意度的主要影响因素,并提升客户语音业务满意度。同时,对于上网数据业务,中国移动北京公司让客户根据自身在网络覆盖与信号强度、手机上网速度、手机上网稳定性三个方面的体验进行打分,同时还让客户根据手机上网的整体体验进行手机上网整体满意度的打分,并统计整理影响客户上网体验的因素,希望以此可以分析影响客户上网业务体验的主要因素,并提升客户的上网体验。
初赛问题
基于以上背景,请你们的团队根据附件给出的数据,通过数据分析与建模的方法帮助中国移动北京公司解决以下问题:
问题 1:根据附件 1 和附件 2,分别研究影响客户语音业务和上网业务满意度的主要因素,并给出各因素对客户打分影响程度的量化分析和结果。附件 1、2 中各字段的解释说明见附件 5。
问题 2:结合问题 1 的分析,对于客户语音业务和上网业务分别建立客户打分基于相关影响因素的数学模型,并据此对附件 3、4 中的客户打分进行预测研究,将预测结果分别填写在 result.xlsx 的 Sheet1“语音”和Sheet2“上网”两个工作表中,并上传到竞赛平台,说明你们预测的合理性。
附件
附件 1 语音业务用户满意度数据
附件 2 上网业务用户满意度数据
附件 3 语音业务用户满意度预测数据
附件 4 上网业务用户满意度预测数据
附件 5 附件 1、2、3、4 的字段说明
整体求解过程概述(摘要)
随着移动通信技术的迅猛发展和网络工程的不断建设,在信息透明、产品同质化的今天,提升语音通话及网络服务的质量,满足用户对高质量语音通话、网络服务的需求显得尤为重要。本文旨在建立一个基于多模型调参优化的 Stacking 集成学习,完善且合理地预测用户评分的普适性模型,从已有数据中心获得有效信息,更高效地提升服务质量,从而完善业务服务体系。
针对问题一,主要需要对用户语音及上网业务评分影响因素的程度进行量化分析。本文首先对数据集进行统一处理,包括:初步剔除相关列数据、学习数据与预测数据指标一致化、指标规范化、空缺值处理、标签编码、特征构造、数据标准化、学习数据与预测数据一致化、学习数据训练集与测试集划分。之后在处理好的数据集上建立熵权法、灰色关联度分析、随机森林分类模型,多方面综合考虑,量化分析各影响因素对评分的影响程度,最终结果见表 2、表 3及表 4,并依此来确定影响用户两项业务满意度的主要因素。量化结果接近于实际生活,效果良好,且可为后续问题奠定基础。
针对问题二,主要需要根据已有影响因素对用户的评分进行预测,并解释预测的合理性。本文首先结合问题一量化结果以及建立主成分分析模型,对数据累计方差进行解释,确定特征个数;之后建立 XGBoost 模型,并得出各影响因素的重要性,与随机森林模型结合分析,确定特征的选择;再建立 KNN、SVM、LightGBM 以及多分类逻辑回归模型,对数据进行学习分析;随后,对各个模型进行超参数调优,模型准确率均有大幅度提升,如随机森林较原先提升了 11.69%,最高提升较原先可达到 14.25%,效果良好。再者,以模型的准确率、平均绝对误差、均方误差为标准,选择表现较优的模型作为 Stacking 集成学习的基模型,同时选择余下的一个模型作为第二层模型,在提升准确率的同时,避免过拟合。同时对其采用五折交叉验证,验证其稳健性。Stacking 集成学习结果符合预期效果,各评分预测模型效果见表 10,明显优于单一模型。在保证准确率的同时,预测的平均绝对误差、均方误差均有一定优化,同时本文还注重结果的可解释性及模型的现实意义。最后,本文进行可视化分析,绘制原始数据及预测数据评分人数南丁格尔玫瑰图,查看数据分布,绘制模型的混淆矩阵热力图、分类报告、ROC/AUC 曲线,多方面评估模型效果及解释模型的合理性。综合上述分析,可以确认模型效果良好,具有良好的稳健性、泛化能力。
最后,本文对所建立的模型的优缺点进行了中肯的评价、提出了模型的改进措施以及对模型进行了一定推广。
模型假设:
• 假设一:语音与上网业务的八项评分中,存在个别用户乱评、错评现象;
• 假设二:除个别用户的部分评分外,其余所有数据真实且符合实际情况;
• 假设三:用户评分还受到除附件中因素之外的因素的影响;
• 假设四:给定的数据集可全面体现用户整体情况;
• 假设五:对于同一业务,学习数据与预测数据的内在规律是一致的。
问题分析:
问题的整体分析
该题是一个关于移动用户对语音及上网业务体验评分的数据分析、预测类问题。从分析目的看,本题需要分析用户对语音与上网业务的评分及各个影响因素,筛选出影响用户评分的主要因素,并量化结果。同时需要对用户的评分进行预测及研究,为运营商提供参考,从而提升用户语音及上网的优质体验。因此本题主要需完成两方面任务:其一,研究影响用户语音及上网业务满意度的主要因素,并对各因素进行量化分析;其二,根据上述的分析,建立合理模型,对用户的评分进行预测及研究,确保分类模型的准确性、稳健性、可靠性,并有一定的泛化能力,且能够包容用户真实评分的主观性。
从数据来源、特征看,本题的数据来源于北京移动用户的语音与上网业务评分数据,数据包括用户对语音业务下“语音通话整体满意度”“网络覆盖与信号强度”“语音通话清晰度”“语音通话稳定性”,上网业务下“手机上网整体满意度”“网络覆盖与信号强度”“手机上网速度”“手机上网稳定性”方面的评分,以及相关的影响评分的因素。评分数据具有主观性,影响因素数据具有高维、多样、标准体系不一致、量纲不一致等特点,且数据量较大。因此,本题数据相对特殊且复杂,需要对数据进行一定的预处理,以便于后续的分析。从模型的选择看,本题数据量较大、维度较高,且分析目的是分析影响用户评分的主要因素,并对用户的评分进行预测及研究。本文将评分视为多分类,且评分具有一定主观性、分类种类多,因此,在模型的选择上,本文结合多种分类预测模型,构建集成学习模型,尽可能多地学习到用户评分特点,提升模型的准确性、稳健性及可泛化性能。从软件的选择看,本题为数据类型,且需要进行大量的数据分析、预测等,因此我们选择 Python Jupyter 对问题进行求解,其交互式的编程范式,方便且高效。
问题一的分析
问题一的核心目的在于研究并量化分析影响用户对语音及上网业务满意度的主要因素。对于已给的数据集,数据在完整度、指标标准等方面存在一定缺陷。这导致在原数据上我们不可直接进行分析,需要对原数据集进行数据的预处理。此外附件数据集在语音及上网业务中,每一业务均有四项评分,因此我们需要对每一项评分进行分析,对各因素进行量化。结合数据来源、与特征方面,我们综合皮尔逊相关系数、熵权法、灰色关联度分析、随机森林分类,构建多元量化分析模型,尽可能准确挖掘到影响用户评分的因素,为构建后续预测模型提供优质依据。
问题二的分析
问题二的核心目的在于建立基于影响用户评分影响因素的数学模型,并依据附件 3、4中相关因素对用户评分进行预测,并解释模型预测的合理性。但是在附件 1 与附件 2,附件 3与附件 4 中,影响因素存在不配对的情况。这导致在给定用户评分的数据中,部分因素不可作为模型建立的基础特征数据,因此在数据预处理的同时,还需要对附件 1 与附件 2,附件3 与附件 4 中的影响因素列取交集,使得学习数据与预测数据的特征数据一致。此外,在已给的存在用户评分的数据集中,用户对每一项的评分均为整数,不存在小数,且评分范围为[1, 10]。因此,我们在建立预测模型时,应尽量避免使用回归模型,而应使用分类模型,但部分分类模型需要分类标签量值从 0 开始,因此需要对所有评分进行标签编码,规范数据。同时分类种类较多,对于单一模型,其预测准确率较低,平均绝对误差较高、泛化能力较弱……因此,本文结合多种机器学习模型,构建集成学习模型,尽可能准确预测用户评分。最后,在此基础上,结合模型的分类混淆矩阵热力图、分类报告、ROC/AUC 曲线等对于预测结果进行解释,叙述模型的合理性,同时考虑集成学习模型对预测误差的包容性,对模型的泛化能力进行分析。
模型的建立与求解整体论文缩略图
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
import pandas as pd
import numpy as np
import missingno as msno
import scipy.stats as st
import matplotlib.pyplot as plt
import seaborn as sns# 设置图像样式
plt.style.use('seaborn-darkgrid')
sns.set(style = 'darkgrid')
# 设置图像字体
plt.rcParams['font.sans-serif'] = ['STSong']# 忽略警告
import warnings
warnings.filterwarnings('ignore')# 显示pd所有列
pd.set_option('display.max_columns', None)
# 导入数据
data1=pd.read_csv('./data/附件1语音业务用户满意度数据.csv', index_col= '用户id')
# 查看前五行
data1.head()
import numpy as np
#判断数据类型函数2
def pd_sjlx(data):#object,float64,int64 fds=[]#浮点数lb=[]#类别中,英文zs=[]#整数for name in data.columns.tolist():if(data[name].dtype==object):lb.append(name)if(data[name].dtype==np.float64 or data[name].dtype==np.float32):fds.append(name)if(data[name].dtype==np.int64 or data[name].dtype==np.int32):if((len(data[name].unique())>10)):#设置阈值为10,判断是否为整数类型的连续数值变量fds.append(name)else:zs.append(name) return lb,fds,zs
lb,fds,zs=pd_sjlx(data1.iloc[:,4:])
print('类别列',lb)
print()
print('数值列',fds)
print()
print('类别数值列',zs)
dis_cols = 5 #一行几个
dis_rows = len(fds)
plt.figure(figsize=(7*dis_cols, 4* dis_rows))for i in range(len(fds)):ax = plt.subplot(dis_rows, dis_cols, i+1)ax = sns.kdeplot(data1.loc[:,fds[i]], shade= True)ax.set_xlabel(fds[i],fontsize= 15)ax.set_ylabel("Frequency", fontsize= 15)
plt.tight_layout()
plt.show()
# 查看各因变量的类别频数
fig = plt.figure(figsize = (16,9), dpi= 100)
fig.add_subplot(2,2,1)
sns.countplot(x='语音通话整体满意度',data=data1)
fig.add_subplot(2,2,2)
sns.countplot(x='网络覆盖与信号强度',data=data1)
fig.add_subplot(2,2,3)
sns.countplot(x='语音通话清晰度',data=data1)
fig.add_subplot(2,2,4)
sns.countplot(x='语音通话稳定性',data=data1)
# plt.savefig('./图片/满意度各类别频数统计图',formate='png',dpi=500)
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可
相关文章:

2022年MathorCup大数据竞赛B题北京移动用户体验影响因素研究求解全过程文档及程序
2022年MathorCup高校数学建模挑战赛—大数据竞赛 B题 北京移动用户体验影响因素研究 原题再现: 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越…...

C#,《小白学程序》第二十课:大数的加法(BigInteger Add)
大数的(加减乘除)四则运算、阶乘运算。 乘法计算包括小学生算法、Karatsuba和Toom-Cook3算法。 重复了部分 19 课的代码。 1 文本格式 using System; using System.Linq; using System.Text; using System.Collections.Generic; /// <summary>…...
通用功能——git 攻略
摘要 本文主要介绍git常用命令的使用方法,同时介绍一些常见问题的处理方法,持续更新中… git命令通用选项 大多数git命令都适用的选项列表如下: -v, --verbose show hash and subject, give twice for upstream branch -q, --quie…...

LemMinX-Maven:帮助在eclipse中更方便地编辑maven的pom文件
LemMinX-Maven:https://github.com/eclipse/lemminx-maven LemMinX-Maven可以帮助我们在eclipse中更方便地编辑maven工程的pom.xml文件,例如补全、提示等。不用单独安装,因为在安装maven eclipse插件的时候已经自动安装了: 例…...

CAD与 PDM系统如何协同工作的?
在产品研发中,CAD(计算机辅助设计)和PDM(产品数据管理)是两个核心的工具,它们在产品从设计到制造的整个生命周期中发挥着重要的作用。虽然这两个工具在功能上有所不同,但它们在使用上却有着密切…...
vue-历史模式部署
项目部署 本项目采用nginx进行部署,历史模式的部署需要服务端的配合,本次采用nginx进行配合。 1 配置 const basePath process.env.VUE_APP_BASE_PATH; module.exports {publicPath: basePath #静态资源的路径 /ecology/ }2 创建路由 const createR…...

『Linux升级路』基础开发工具——make/Makefile
🔥博客主页:小王又困了 📚系列专栏:Linux 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、认识make/Makefile 📒1.1make/Makefile的优点 📒…...

Python开发技能实战-如何在Visio中添加和删除任意连接点?
问题 在学习或者工作中,我们经常会借助Visio这个软件绘制流程图,在Visio中一般连接点是固定的,固定的连接点只能绘制一条连接线,如下图所示: 但有时候我们需要在两个方框之间绘制双向连接线,达到以下的效果…...

中科驭数受邀出席2023 ODCC冬季全会,共谋开放数据中心创新发展
近日,2023年开放数据中心委员会(简称“ODCC”)冬季全会在宁夏银川成功召开,中科驭数作为ODCC的新成员单位,受邀出席本次重要会议。 ▲ 中科驭数正式加入ODCC开放数据中心委员会 开放数据中心委员会是在中国通信标准化…...

Leetcode—907.子数组的最小值之和【中等】
2023每日刷题(四十二) Leetcode—907.子数组的最小值之和 算法思想 参考自y神思想 实现代码 class Solution { public:int sumSubarrayMins(vector<int>& arr) {long long ans 0;const int mod 1e97;int n arr.size();stack<int>…...
下载文件并重命名
//下载文件并重命名 // 无需数字化归档模版下载 function nodigitalMeth(){ let filenameunescape("/projectapp/ghsjy/template/noNeedDigital.docx")//原文件为英文名字 downloadFileRename(filename,"无需成果数据汇交模版") } // 需要数字化归档模版下…...

BGP路由的选路综合实验
题目要求 1.使用PreVal策略,确保R1通过R3到达192.168.10.0/24 2.使用AS_Path策略,确保R1通过R3到达192.168.11.0/24 3.配置MED策略,确保R1通过R3到达192.168.12.0/24 4.使用Local Preference策略,确保R4通过R2到达192.168.1.0/24…...

英语语法:连词or, and, if, unless怎么用?
连词or, and, if, unless怎么用?1. or conj. 或者,还是, 和, 否则用法:并列连词①当“或者,还是”讲时,用在选择疑问句中,是选择疑问句的标志例:Are you a teacher or a …...
基于Spring、SpringMVC、MyBatis的闪烁物业管理系统
文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的闪烁物业管理系统,java项目。 …...

uni-app 离线打包安卓Apk(小白上手)
场景: 在使用uni-app 开发apk时,使用云打包有次数限制。尤其对于测试阶段是无比难受的,通常是浪费打包次数进行打包或者通过usb 给测试机更新开发环境,但这都是无比漫长的过程 尤其有多个测试机真的是噩梦般的存在 下载离线打包示…...
fatal: refusing to merge unrelated histories報錯咋辦
在 Git 中,如果要合并两个分支,而这两个分支的历史记录不相交,就会出现错误:fatal: refusing to merge unrelated histories。 要解决这个问题,有以下几种方法: 首先,检查一下你正在合并的两个…...

第二十二章 解读pycocotools的API,目标检测mAP的计算COCO的评价指标(工具)
Pycocotools介绍 为使用户更好地使用 COCO数据集, COCO 提供了各种 API。COCO是一个大型的图像数据集,用于目标检测、分割、人的关键点检测、素材分割和标题生成。这个包提供了Matlab、Python和luaapi,这些api有助于在COCO中加载、解析和可视化注释。 …...

如何避免光模块接口受到污染?
光模块作为光通信领域一个重要的配件,实现光电和电光的转换,和光纤连接,承载了数据流量的快速转换与传输。因而在整个网络体系中,起着至关重要的作用。虽然光模块在使用过程中,不像交换机和服务器等网络设备一样需要经…...
虚拟机系列:Oracle VM VirtualBox虚拟机的使用教程和使用体验情况反馈
Oracle VM VirtualBox虚拟机的使用教程和使用体验情况反馈 一. 简述:二. 下载三. 安装解压后选择需要的版本点击安装1:第一步,点击安装,点击下一步2. 这里直接点击下一步,3. 网络警告选择:是4. 准备好以后,点击安装5. 点击完成即可四. 打开五. 创建虚拟机1. 输入虚拟机名…...

echarts 通用线性渐变堆叠面积图
echarts 通用线性渐变堆叠面积图 getLineData2() {const myChart echarts.init(this.$refs.chartDom);const option {tooltip: {trigger: axis,},legend: {show: false,textStyle: {fontSize: 14, //字体大小color: #ffffff, //字体颜色},data: [AAA, BBB],},grid: {show: tr…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云
目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...

ArcGIS Pro制作水平横向图例+多级标注
今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作:ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等(ArcGIS出图图例8大技巧),那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...

动态规划-1035.不相交的线-力扣(LeetCode)
一、题目解析 光看题目要求和例图,感觉这题好麻烦,直线不能相交啊,每个数字只属于一条连线啊等等,但我们结合题目所给的信息和例图的内容,这不就是最长公共子序列吗?,我们把最长公共子序列连线起…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...

数据可视化交互
目录 【实验目的】 【实验原理】 【实验环境】 【实验步骤】 一、安装 pyecharts 二、下载数据 三、实验任务 实验 1:AQI 横向对比条形图 代码说明: 运行结果: 实验 2:AQI 等级分布饼图 实验 3:多城市 AQI…...
Vue3学习(接口,泛型,自定义类型,v-for,props)
一,前言 继续学习 二,TS接口泛型自定义类型 1.接口 TypeScript 接口(Interface)是一种定义对象形状的强大工具,它可以描述对象必须包含的属性、方法和它们的类型。接口不会被编译成 JavaScript 代码,仅…...