基于机器学习的消费者购物影响因素分析
目录
有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主
项目关键词:机器学习、消费者购物、特征工程、SMOTENC、CatBoost、LightGBM、随机森林、XGBoost、MLP、精准营销、用户忠诚度预测。
1 项目介绍
线上消费已经成为多数用户的日常选择,平台上积累的订单、商品、支付、促销、评分和复购记录,也给消费者行为分析提供了非常好的数据基础。这个项目围绕“消费者购物影响因素分析”展开,不只是简单做几张统计图,而是从原始电商数据出发,把数据清洗、特征处理、可视化探索、模型训练、模型调优、指标对比和特征重要性解释串成了一条完整的数据分析流程。
项目的核心目标很明确:利用机器学习方法判断哪些因素会影响消费者的购物趋势和忠诚度状态,并进一步构建一个能够预测用户是否更容易保持平台忠诚度的分类模型。围绕这个目标,项目选取了年龄、性别、商品类别、购买金额、购买地点、尺码、颜色、季节、评价评分、付款方式、物流方式、折扣、促销码、历史购买次数、购买频率等多个维度进行分析,既能呈现消费者群体画像,也能为后续精准营销提供依据。
整体来看,这套项目比较适合做成数据分析与机器学习综合型作品。前半部分有数据探索和图形展示,能直观看到消费者在商品类别、性别、季节、支付方式等方面的差异;后半部分有多模型并行实验,包括CatBoost、LightGBM、随机森林、XGBoost和MLP,并通过AUC、准确率、精确率、召回率、F1得分等指标进行对比。最后再利用随机森林输出特征重要性排序,让模型结果不只停留在“预测准确”,还能解释“为什么会这样”。

图1-1 随机森林算法流程展示
2 数据来源与字段设计
数据来源为Kaggle平台的消费者购物趋势数据集,原始数据保存在shopping_trends.csv中。数据共包含3900条消费者记录,每条记录代表一个独立客户,字段覆盖消费者基本信息、购买商品信息、交易金额、所在地区、商品属性、季节因素、评价评分、订阅状态、支付方式、物流方式、折扣使用情况、促销码使用情况、历史购买次数和购买频率等内容。
在字段设计上,Customer ID只作为唯一编号使用,对预测结果没有实际贡献,因此在建模前直接删除。真正参与分析的是Age、Gender、Item Purchased、Category、Purchase Amount、Location、Size、Color、Season、Review Rating、Subscription Status、Payment Method、Shipping Type、Discount Applied、Promo Code Used、Previous Purchases、Preferred Payment Method、Frequency of Purchases等特征。目标变量选取Subscription Status,用于区分用户是否具有较高忠诚度。
表2-1 项目数据处理流程
| 模块 | 主要处理内容 | 输出结果 |
| 数据读取 | 读取CSV数据,查看前五行和字段结构 | 形成初始DataFrame |
| 数据清洗 | 删除无预测意义的Customer ID,检查缺失值 | 得到可建模数据集 |
| 类别处理 | 对性别、类别、地区、颜色、支付方式等字段编码 | 转换为模型可识别特征 |
| 样本均衡 | 使用SMOTENC处理目标类别不平衡 | 生成平衡后的训练样本 |
| 特征筛选 | 相关性分析与特征选择 | 保留高相关建模字段 |

图2-1 数据预览与字段类型信息
3 数据预处理与样本均衡
数据预处理是整个项目的第一道关口。原始数据中的字段既有数值型变量,也有大量类别型变量,如果直接输入模型,会影响算法训练效果。因此项目先对数据进行基本检查,包括字段数量、数据类型、非空值数量和缺失值情况。检查结果显示,数据集整体质量较好,主要字段均不存在缺失值,可以直接进入后续特征工程阶段。
比较关键的一步是目标变量的类别平衡处理。原始Subscription Status中,Yes与No的比例并不均衡,其中No占比较高,Yes样本较少。对于分类模型来说,如果不处理这种不平衡情况,模型容易倾向于预测多数类,导致少数类识别能力不足。项目采用SMOTENC进行过采样,这种方法适合同时存在数值型和类别型特征的数据,比普通SMOTE更适合当前场景。
处理流程上,先识别类别型字段并进行标签编码,再确定类别特征在特征矩阵中的索引,随后使用SMOTENC生成新的少数类样本。过采样完成后,项目又将编码后的类别字段还原,保证后续分析和可视化仍然具备可读性。经过处理后,目标变量分布趋于平衡,为后续模型训练提供了更稳定的数据基础。

图3-1 目标变量处理前后对比
4 消费者购物特征可视化分析
4.1 商品类别与交易金额
在购物行为分析中,商品类别是非常核心的维度。项目先对不同商品的交易金额进行统计,可以看到T-shirt等商品的金额表现相对突出,而Coat、Jewelry等类别的交易金额较低。进一步从商品大类来看,服装、鞋类、外套和配饰四个类别的购买金额分布存在差异:部分类别金额分布更分散,说明消费者在这些类别上的消费层级更明显;而部分类别金额相对集中,说明消费区间更加稳定。
箱型图和小提琴图适合展示金额分布特征。箱型图能够快速看出中位数、四分位距和异常值,小提琴图则可以进一步观察分布密度。通过这两类图可以发现,消费者在服装、鞋类和配饰上的金额分布相对接近,外套类别的中位数略低,说明不同商品类别对消费者购买金额的影响并不完全一致。

图4-1 商品金额与类别金额分布
4.2 商品销量与购买频率
商品销量能够反映消费者偏好。项目对不同类别商品的采购数量进行统计后发现,服装类销量最高,配饰类和鞋类也具有较高占比。购买频率占比图进一步说明,消费者在服装类商品上的购买行为最活跃,这类商品往往更新快、复购场景多,更容易形成持续购买。
为了让结果更直观,项目还对购买次数高于均值的商品进行排序展示。毛衣、连衣裙等商品在销量上表现突出,可以作为平台后续推荐、促销活动和库存配置的重点对象。这样的可视化结果不仅能说明“哪类商品卖得多”,还可以帮助平台理解“哪些商品更值得优先运营”。

图4-2 商品类别销量与数量分布

图4-3 购买频率占比与商品销量排序
4.3 地理位置、性别与消费差异
地理位置维度主要用于观察不同区域的消费者分布情况。从前十个地区占比来看,各地区之间差异并不悬殊,说明该数据集中的用户来源相对分散,没有明显集中在某一个区域。对于平台运营而言,这种分布意味着营销策略不宜只围绕单一区域设计,而可以结合不同地区的商品偏好、物流习惯和消费能力进一步细分。
性别维度的分析更具展示价值。项目从男女购买金额、定量数据分布、购买频率、支付方式、季节消费、商品类别和年龄段等多个角度进行对比。结果显示,男女消费者在整体购买趋势上有一定相似性,但在部分商品类别、金额分布和年龄段购买频率上存在差别。比如女性消费者在部分年龄段和商品类别中的购买表现更活跃,这类差异可以为人群分层推荐提供参考。

图4-4 地理位置占比与性别消费特征

图4-5 购买频率、支付方式与季节消费差异

图4-6 不同商品类别与年龄段消费对比
5 相关性分析与特征筛选
可视化分析能够帮助我们从直观层面理解数据分布,但模型训练还需要进一步筛选有效特征。项目对扩充后的数据再次进行标签编码,并使用相关性分析观察各特征与Subscription Status之间的关系。热力图中颜色越深,代表变量之间的相关性越强,通过这种方式可以快速定位对目标变量影响更明显的字段。
相关性结果显示,Promo Code Used和Discount Applied与忠诚度状态的相关性较高,说明促销码和折扣对消费者是否保持平台忠诚具有明显影响。除此之外,Age、Gender、Category、Purchase Amount、Color、Season、Review Rating、Payment Method、Shipping Type、Previous Purchases、Frequency of Purchases等字段也被纳入后续建模。相比直接把所有字段都塞给模型,先进行相关性筛选可以降低噪声,提高模型训练效率,也让结果更容易解释。

图5-1 相关性热力图与高相关特征筛选
6 多模型构建与训练
模型构建阶段采用五类算法进行对比:CatBoost、LightGBM、随机森林、XGBoost和MLP。这样设计的好处在于既覆盖了传统集成学习,也覆盖了梯度提升树和神经网络模型。CatBoost擅长处理类别型特征,LightGBM训练速度快、适合结构化数据,随机森林稳定性较好且便于输出特征重要性,XGBoost在结构化数据分类任务中表现强,MLP则用于捕捉复杂非线性关系。
项目统一使用训练集和测试集进行模型评估,测试集比例为30%。每个模型先进行默认参数训练,再使用网格搜索进行超参数调优。评估指标包括AUC、准确率、精确率、召回率和F1得分,其中AUC用于衡量模型区分正负样本的整体能力,准确率用于观察整体预测正确比例,精确率和召回率则更适合分析不同类别的识别情况。

图6-1 CatBoost与LightGBM模型效果展示

图6-2 随机森林与XGBoost模型效果展示

图6-3 MLP模型训练与调优效果展示
7 模型结果对比
从默认模型结果来看,XGBoost的AUC达到0.947,在五个模型中表现最好;LightGBM和随机森林的AUC均为0.942,紧随其后;CatBoost为0.915,MLP为0.911。准确率方面,各模型基本集中在0.90到0.91之间,说明在整体预测正确率上差距并不大,但AUC能够更好地反映模型区分能力。
调参后,XGBoost的AUC提升至0.950,依然保持第一;LightGBM调优后达到0.947,表现稳定;CatBoost提升到0.922;随机森林为0.941;MLP为0.908。综合来看,XGBoost在本项目中具备更好的分类能力,尤其适合用于消费者忠诚度预测这类结构化数据任务。
表7-1 五类模型AUC结果对比
| 模型 | 默认AUC | 调优后AUC | 项目表现 |
| CatBoost | 0.915 | 0.922 | 类别特征处理能力较好 |
| LightGBM | 0.942 | 0.947 | 训练效率高,表现稳定 |
| 随机森林 | 0.942 | 0.941 | 解释性较强,适合特征重要性分析 |
| XGBoost | 0.947 | 0.950 | 综合表现最佳 |
| MLP | 0.911 | 0.908 | 结构化小样本场景优势不明显 |
对比图可以直观看到不同模型之间的差距。XGBoost调优模型排在最前,LightGBM和默认XGBoost处于第二梯队,随机森林整体表现稳健。MLP虽然能够处理复杂非线性关系,但在当前结构化数据规模下没有明显超过树模型,说明对于这类电商表格数据,梯度提升树和集成树模型仍然是非常值得优先尝试的方案。

图7-1 各模型AUC对比结果
8 购物影响因素解释
预测模型得到结果之后,还需要回答一个更关键的问题:到底哪些因素最影响消费者购物趋势?项目使用随机森林输出特征重要性排序,从结果看,Promo Code Used和Discount Applied排在最前,说明促销码和折扣优惠是影响消费者忠诚度的重要因素。对于电商平台来说,这个结论非常符合业务逻辑:用户是否领取优惠、是否参与折扣,往往会直接影响复购意愿和平台停留。
Age和Previous Purchases也具有较高重要性。年龄代表消费者所处生命周期和消费偏好,历史购买次数则能反映用户与平台之间的关系深度。购买越多的用户,通常越容易形成稳定的购物习惯。Gender、Color、Size、Category、Payment Method、Shipping Type等特征虽然重要性低于促销和折扣,但仍然能够帮助平台做细分推荐。比如不同性别在商品类别和颜色偏好上可能存在差异,不同支付方式和物流方式也会影响用户购买体验。
结合这些结果,平台可以从三个方向落地应用:第一,围绕促销码和折扣建立更精细的优惠策略,对高潜力用户推送专属活动;第二,基于年龄和历史购买次数做用户分层,针对35岁到45岁等高频消费人群强化商品推荐;第三,根据商品类别、颜色、尺码和支付方式优化推荐页面,提高用户从浏览到下单的转化效率。

图8-1 消费者购物影响因素重要性排序
9 项目亮点与可扩展方向
这套项目的亮点主要体现在三方面。第一,流程完整,从数据读取、清洗、均衡处理到建模评估都有对应实现,适合作为完整的数据分析项目展示。第二,图表丰富,商品类别、销量、地理位置、性别、季节、支付方式、年龄段和相关性都做了可视化,读者可以很快理解数据规律。第三,模型对比充分,五类模型同台训练和调优,既有结果展示,也有解释分析,最终能够落到“XGBoost更适合当前任务、促销和折扣最影响忠诚度”这一清晰结论上。
后续还可以继续扩展。一方面可以引入更多真实平台数据,比如淘宝、京东、拼多多等不同渠道的消费记录,让数据覆盖面更广;另一方面可以增加用户评论、浏览时长、收藏行为、加购行为、优惠券领取时间等变量,使模型更贴近真实电商场景。若进一步做成系统,还可以加入登录页、数据上传页、可视化看板、模型预测接口和后台管理模块,让项目从“分析脚本”升级为“可交互的数据分析平台”。
从实际应用角度看,消费者购物影响因素分析不是为了单纯追求模型指标,而是为了让数据真正服务运营。通过模型识别高忠诚度用户,通过特征重要性找到影响复购的核心因素,再结合可视化结果制定营销策略,才能让数据分析形成闭环。这个项目展示的正是这样一条路线:先看清数据,再训练模型,最后解释因素并给出可落地建议。
如果后续做演示版本,可以把结果页设计成三块:上方展示用户数量、平均购买金额、忠诚用户占比等核心指标;中间展示商品类别、性别差异、地区分布和促销转化图;底部展示模型预测结果、AUC对比和特征重要性。这样既能体现数据分析过程,也能让评审或读者快速看到项目落地效果。
代码层面可以继续封装成模块化结构,例如data_process负责数据读取和清洗,visual_analysis负责图表生成,model_train负责模型训练和调参,predict_service负责单条用户预测。模块拆开之后,后期无论是接入Web页面、打包成接口,还是替换新的电商数据,都更加方便。
每文一语
把复杂问题拆成可执行的小步骤,数据会一步一步给出答案。
更多推荐
所有评论(0)