从竞赛到实战:基于LightGBM与SHAP的移动网络用户体验影响因素分析
1. 从竞赛题目到实战项目一次完整的数据分析旅程去年我带着团队参加了MathorCup大数据竞赛选的正是B题“北京移动用户体验影响因素研究”。说实话当时看到这个题目第一感觉是“大而全”从网络覆盖、业务质量到用户感知似乎什么都能往里装。但真正做起来才发现这恰恰是竞赛题目的魅力所在——它模拟了一个真实商业场景的起点你拿到一个模糊但宏大的命题如何将其落地为一个可执行、有深度的数据分析项目这比单纯跑通一个模型要复杂得多。今天我就把我们从破题、数据理解、特征工程到模型构建与解读的完整过程以及其中踩过的坑、总结的经验毫无保留地分享出来。无论你是对数据分析竞赛感兴趣还是在实际工作中需要处理类似的用户研究课题相信这篇长文都能给你带来直接的启发和可复现的路径。这个项目的核心目标很明确量化分析影响北京地区移动用户网络体验的关键因素。但“体验”是个主观词我们需要把它变成客观的数据指标。这背后涉及的是运营商每天都在面对的核心问题在有限的网络建设与优化资源下到底应该优先解决哪些问题才能最有效地提升大多数用户的满意度我们的工作就是通过数据建模给出一份有优先级、有量化依据的“体验优化清单”。2. 解题第一步如何定义“用户体验”与构建分析框架拿到题目最忌讳的就是直接扎进数据里开始清洗和建模。第一步也是决定项目上限的一步是定义清楚我们要研究的“用户体验”到底是什么以及用什么样的框架来分析它。2.1 用户体验的量化拆解从主观感受到客观指标在通信领域用户体验通常被归结为QoE。但竞赛中不会直接给你一个QoE打分表。我们需要从可能提供的数据维度去反向构建。我们当时假设数据会包含以下几类这也是运营商常见的网管和信令数据维度网络覆盖与信号强度如RSRP、SINR。这是体验的基础信号都没有一切免谈。业务质量指标速率类上下行速率、峰值速率、平均速率。时延类Ping时延、TCP建立时延、业务响应时延如视频首帧加载时间。稳定性类速率波动率、丢包率、切换成功率。用户行为与上下文时间忙闲时早高峰、晚高峰、深夜。位置室内/室外、商圈/住宅区/交通干线。业务类型视频流媒体、即时通讯、网页浏览、大型文件下载。终端信息手机型号、支持的频段与MIMO能力。我们的核心思路是单一指标无法定义体验必须组合看待。例如一个用户信号很好RSRP-85dBm但下载速率很低可能是小区拥塞速率很高但视频卡顿可能是时延或丢包问题。因此我们决定不预设一个“总体验分”而是针对不同的关键业务类型分别构建体验评价模型。比如对于视频业务重点考察速率稳定性和时延对于网页浏览重点考察TCP建立时延和首包时延。2.2 构建“端-网-业-场”四维分析框架为了系统化地分析影响因素我们借鉴了行业实践提出了一个“端-网-业-场”四维分析框架。这个框架帮助我们结构化地思考特征工程的方向避免遗漏重要维度。端终端与用户用户所使用的手机终端能力是否支持4x4 MIMO、高阶调制、用户的套餐类型是否限速、历史消费行为等。终端能力是用户体验的天花板。网网络侧包括无线侧基站密度、天线倾角、发射功率、传输侧带宽、负载、核心侧网关容量的指标。这部分数据通常最难直接获取但可以通过一些代理指标来反映如同一基站下其他用户的平均性能。业业务与应用用户正在使用的具体业务类型及其数据流特征。不同的业务对网络的需求差异巨大必须区分对待。场场景与环境用户所处的时间、空间和物理环境。工作日早高峰的地铁站和周末下午的公园网络负荷和挑战完全不同。基于这个框架我们在特征工程阶段的目标就很明确了尽可能利用已有数据构造出能反映这四个维度的特征变量。例如我们可以通过“同一栅格地理分区内同期活跃用户数”来近似反映网络侧负载“网”维度通过“该时段内用户主要使用的APP类型”来定义业务类型“业”维度。3. 数据预处理与特征工程从原始数据到模型“食材”竞赛提供的数据通常是脱敏后的真实网络数据切片杂乱、缺失、量纲不一。这部分工作占据了我们60%以上的时间但也是决定模型效果的基石。3.1 数据清洗中的关键判断与陷阱清洗不是简单地删除缺失值。我们遵循了几个原则区分缺失机制随机缺失例如由于采样周期导致的个别指标丢失可以考虑用同一用户相邻时段、或同一区域相似用户的均值/中位数进行填充。非随机缺失有意义缺失这本身就是一种信息。例如“切换成功标志”字段缺失可能意味着本次测量期间根本没有发生切换事件。我们将其作为一个新的布尔特征“是否发生切换”。大面积系统性缺失如果某个字段比如“云游戏时延”超过70%的样本缺失且业务逻辑上并非所有用户都会使用该业务我们会考虑将该字段转换为一个“是否有该业务记录”的二值特征并谨慎使用或放弃该字段的数值部分因为用统计值填充会引入巨大噪声。异常值处理不是一删了之。我们首先分析异常值的成因测量错误如下行速率记录为0 Mbps或超过物理极限如单用户速率2Gbps这类直接剔除。真实极端情况如用户进入电梯导致RSRP骤降至-120dBm以下或用户站在基站楼下导致RSRP强于-50dBm。这些是重要的边缘场景不能简单删除。我们的做法是进行缩尾处理将超出99%分位数和1%分位数的值用分位数值进行替换保留其“极端”的属性但避免对模型训练造成过大干扰。业务特性导致例如一次大型文件下载的峰值速率可能很高而一次微信文字消息发送的速率几乎为零。这需要结合“业务类型”特征来看在分组如按业务类型后再判断是否为异常。3.2 特征构造挖掘数据深层信息这是体现分析功力的地方。我们基于原始字段构造了几类衍生特征比率/差值特征速率效率 实际吞吐量 / 理论峰值速率。这个特征比单纯看实际速率更能反映网络调度和干扰情况。理论峰值速率可以根据终端支持的MIMO流数、调制阶数等估算。信号质量衰减 RSRP - SINR。理论上两者应强相关若RSRP强但SINR差说明可能存在强干扰这是一个非常重要的故障定位线索。统计聚合特征基于时空维度空间聚合以基站小区或地理栅格为单位计算该区域内所有用户在当前时段的平均速率、速率标准差、用户数。这构成了反映网络局部负载和均匀性的特征。时间序列特征对于同一用户计算其近期如过去1小时平均体验指标、体验指标的趋势是变好还是变坏。用户体验有延续性过去体验差的人可能对当前波动更敏感。交互特征业务类型 * 时段例如定义“晚高峰视频流媒体”为一个特殊类别因为这是最考验网络的场景。终端等级 * 信号强度高端机在弱信号下的性能衰减可能比低端机慢这个交互项可能捕捉到终端性能红利。注意特征不是越多越好。高度相关的特征如上下行速率会导致多重共线性。我们一定会计算特征间的相关系数矩阵对于相关系数大于0.9的特征对考虑只保留一个或使用PCA进行降维。在树模型如LightGBM中共线性影响相对较小但会影响特征重要性的解释。4. 模型选择、训练与体验等级分类我们的目标是将用户体验划分为若干等级如“优”、“良”、“中”、“差”这是一个多分类问题。但直接分类可能丢失序数信息“优”比“良”好所以我们采用了两种策略结合的方式。4.1 模型选型为什么是梯度提升树LightGBM我们对比了逻辑回归、随机森林和LightGBM。逻辑回归线性模型无法捕捉复杂的非线性关系如信号强度和速率之间的关系是非线性的存在一个门限效应。而且需要大量的特征工程如分箱、多项式展开来逼近非线性比较麻烦。随机森林集成树模型能处理非线性稳健性强。但它的训练速度相对较慢并且在超参数调优后其性能上限有时不如梯度提升框架。LightGBM基于梯度提升的决策树算法。它有几个非常适合本次任务的优点1)处理大规模数据效率极高支持直方图算法和并行学习2)能自动处理缺失值无需我们预先填充3)原生支持类别特征无需独热编码节省内存且效果更好4)提供丰富的特征重要性输出这对于我们后续的“影响因素研究”目标至关重要。因此我们选择LightGBM作为主力模型。对于多分类问题我们使用objectivemulticlass并设置num_class为体验等级数如4。4.2 标签定义如何给每条数据打上“体验等级”这是连接业务目标和模型训练的关键一步。我们没有现成的用户打分需要从客观指标合成。 我们采用了基于业务KQI阈值组合的方法针对每种核心业务视频、网页、游戏等定义其关键质量指标KQI的门限。例如对于“视频流媒体”优速率 4Mbps 时延 100ms 卡顿次数 0良速率 2Mbps 时延 200ms 卡顿次数 1中速率 1Mbps 时延 500ms差任何一项不满足“中”的要求对于单条数据记录首先根据“业务类型”字段判断其所属业务然后应用对应的KQI阈值规则得到该业务下的体验等级。如果一条记录包含多种业务如同时记录视频和网页则取其最差的体验等级作为该条记录的最终标签。这是一种保守但符合用户感知的策略用户通常对最差体验记忆深刻。这种方法合成的标签虽然不如真实用户打分准确但它基于行业标准具有强可解释性并且能确保标签与我们的输入特征速率、时延等存在明确的逻辑关系让模型去学习更复杂的、多维度的关联模式。4.3 训练与验证防止过拟合与评估策略我们将数据按用户ID或设备ID分组然后按7:2:1的比例进行分层抽样划分训练集、验证集和测试集。按用户分组划分至关重要可以防止同一用户的数据同时出现在训练集和测试集导致模型只是“记住”了特定用户的模式而非通用的体验规律。 我们使用验证集进行早停和超参数调优。核心调优的参数包括num_leaves控制树复杂度太大易过拟合。min_data_in_leaf防止过拟合的另一个重要参数。learning_rate和n_estimators通常组合调优小学习率配合更多树轮次效果更稳健。feature_fraction/bagging_fraction每次迭代时随机选取部分特征或数据增加模型多样性提升泛化能力。评估指标我们主要看多分类准确率和宏平均F1分数。F1分数对类别不平衡问题更敏感能更好地反映模型在每个体验等级上的识别能力。5. 模型解读与影响因素分析从“黑盒”中提取洞见模型训练好且测试集表现达标后最重要的一步来了解读模型回答竞赛的核心问题——哪些因素影响了用户体验它们的影响程度和方式如何5.1 全局特征重要性分析LightGBM可以直接输出feature_importance我们选择gain即特征在所有树中被用于分裂时带来的总增益。这给了我们一个全局的排名。在我们的结果中排名靠前的通常是反映网络负载的特征如“同栅格用户数”、“小区平均利用率”。这印证了“拥塞”是影响体验的首要因素。信号质量相关特征如“SINR”、“RSRP”。这是无线网络的物理基础。业务与场景交互特征如“晚高峰视频业务标志”。这说明了特定时空场景下的业务压力。用户终端等级高端机用户的体验普遍更好尤其是在中等信号条件下优势明显。实操心得特征重要性只是一个起点。它告诉我们哪些特征被模型频繁且有效地使用但不能直接等同于因果关系。例如“终端等级”重要性高可能部分是因为高端机用户更多地集中在网络覆盖好的区域选择偏差。需要结合业务知识进行解读。5.2 SHAP值分析打开“黑盒”的钥匙特征重要性只能排序无法告诉我们特征是如何影响的是正向还是负向影响是线性的还是非线性的。SHAP值完美解决了这个问题。 我们使用shap库对测试集样本进行计算和可视化Summary Plot可以看到每个特征对于模型输出的影响范围横轴以及影响方向颜色。例如我们发现“同栅格用户数”这个特征其SHAP值大部分分布在负半轴红色表示高特征值明确揭示了“用户越多体验预测分越低越可能被分到差等级”的负向影响。而“SINR”的SHAP值则大部分在正半轴且点呈明显的从左下到右上的分布说明是强正向影响且影响近乎线性。Dependence Plot可以深入看单个特征与模型预测的关系。我们绘制了“SINR”的依赖图。图形显示当SINR低于0dB时其对体验的贡献增长非常缓慢甚至为负这是一个典型的“门限效应”信号质量太差时其他因素都无力回天。当SINR在0-20dB之间时其贡献度几乎线性增长。超过20dB后贡献度增长放缓出现“收益递减”。这个洞察对于网络优化极具价值优先将SINR低于0dB的区域优化到0dB以上能获得最大的体验提升收益。Force Plot / Waterfall Plot针对单个样本进行解释。例如我们可以抽出一个被模型判定为“体验差”的样本用瀑布图展示每个特征是如何将模型的基准预测值“推高”或“拉低”到最终类别的。这能让我们具体地理解一次糟糕体验的“罪魁祸首”组合比如“SINR较低”贡献了-0.5分“同栅格用户数极高”贡献了-0.8分“终端为低端机”贡献了-0.2分。5.3 细分场景下的根因分析全局分析之后我们进行了细分场景的深入分析这是产生 actionable insights 的关键。分区域分析将北京划分为中心城区、郊区、交通干线等分别训练模型或分析SHAP值。我们发现在中心城区“同栅格用户数”的重要性远超郊区说明城区的主要矛盾是容量而在部分郊区“RSRP”的重要性排第一说明郊区的主要矛盾是覆盖。分业务分析分别对视频业务样本和即时通讯业务样本进行分析。对于视频业务“速率稳定性”和“时延”的特征重要性非常高而对于微信等即时通讯“TCP建立时延”和“丢包率”则更为关键。这提示网络优化策略需要按业务施策。分时段分析对比早高峰和凌晨时段的模型特征重要性。早高峰时段网络负载类特征的重要性急剧上升凌晨时段终端能力、基础信号质量的特征重要性相对更高。基于以上分析我们最终的报告不是简单地罗列特征重要性排名而是给出了一个结构化的“体验优化建议矩阵”高优先级-高收益针对SINR 0dB的区域进行覆盖补点或干扰排查。高优先级-中收益在晚高峰的城区热点区域进行容量扩容如增加载波、升级基站。中优先级-高收益推动低端终端用户的换机引导例如与厂商合作推出以旧换新活动因为在中等网络条件下终端能力的提升能带来显著的体验改善。低优先级-长尾优化针对特定场景如地铁隧道的专项优化。通过这样一套从问题定义、框架构建、数据处理、模型训练到深度解读的完整流程我们不仅得到了一个预测模型更重要的是获得了一套分析移动网络用户体验的方法论和一系列具体的、可落地的优化建议。这次竞赛经历让我深刻体会到数据竞赛的价值不在于得到一个多高的分数而在于通过一个具体的命题完整地走通一次数据科学解决实际商业问题的闭环这个过程中的思维训练和经验积累才是最有价值的收获。