【2025年五一数学建模竞赛】C题 完整论文 模型建立与求解
目录
- 2025年五一数学建模竞赛 C题
- 完整论文:建模与求解 Matlab代码
- 一、问题重述
- 二、模型假设与符号说明
- 2.1 模型基本假设
- 2.2 符号说明
- 问题一:预测博主新增关注数
- 问题二:预测用户的新关注行为
- 问题三:预测用户在线状态及互动博主
- 问题四:预测用户在线时段及互动博主
2025年五一数学建模竞赛 C题
完整论文:建模与求解 Matlab代码
一、问题重述
近年来,社交媒体平台的用户与博主互动行为已成为影响内容传播与推荐机制的核心要素。为优化平台推荐策略,需深入分析用户与博主的历史交互数据,构建预测模型以揭示用户行为规律。本题目基于某社交媒体平台在2024年7月11日至7月20日的用户行为记录(附件1)及2024年7月22日用户互动数据(附件2),结合以下假设:(1)平台用户与博主数量固定,无新增或注销行为;(2)用户与博主建立的互动关系不可逆。需解决以下四类问题:
问题1要求基于历史交互数据(观看、点赞、评论、关注),建立数学模型预测各博主在2024年7月21日的新增关注数,并筛选当日新增关注数最多的前五位博主填入指定表格。需通过时间序列分析与聚类方法捕捉博主关注量的动态特征,解决非平稳时序数据的预测难题。
问题2需结合附件1的历史行为与附件2的实时互动数据,预测用户在2024年7月22日的新关注行为,并将指定用户(U7、U6749等)的新关注博主ID填入结果表。需设计用户-博主对的全局吸引力与个体偏好特征,通过密度聚类与神经网络模型捕捉用户兴趣的时空演化规律。
问题3要求基于历史数据预测指定用户(U9、U22405等)在2024年7月21日是否在线,若在线则进一步预测其可能产生互动的博主,并给出互动数最高的三位博主ID。需构建用户在线状态判别模型与长短期记忆网络,融合周期性活跃模式与短期行为强度特征,解决用户实时状态与兴趣漂移的关联性问题。
问题4需在问题3的基础上,预测指定用户(U10、U1951等)在2024年7月23日的在线时段,并输出各时段内互动数最高的三位博主ID及对应时段(以小时为单位)。需引入细粒度时序特征,通过卷积神经网络提取用户行为的空间层级模式,解决高维时序数据的分段预测问题。
以上问题需通过统计分析与深度学习相结合的方法,实现用户行为的精准预测,为社交媒体平台的内容推荐与用户运营提供决策支持。
二、模型假设与符号说明
2.1 模型基本假设
本研究的数学模型构建基于以下核心假设:
(1) 平台用户与博主数量保持恒定,无新增或注销行为,确保分析对象集合的静态性;
(2) 用户与博主间的互动关系(点赞、评论、关注)具有不可逆性,即用户不会取消已建立的互动行为;
(3) 用户行为数据的时间独立性,即某一时刻的行为仅受历史数据影响,不受未记录的隐性因素干扰;
(4) 时序数据的平稳性,通过差分运算可消除非平稳成分,满足ARIMA等模型的适用条件;
(5) 用户兴趣偏好与博主吸引力能够通过历史交互行为量化,且短期内保持相对稳定。
2.2 符号说明
问题一:预测博主新增关注数
解题思路
- 数据预处理:统计2024年7月11日至7月20日各博主的新增关注数。
- 时间序列建模:基于ARIMA模型对各博主的新增关注数进行预测,使用BIC准则优化模型参数。
- 聚类分析:通过K-means算法将博主分为高、低关注群体,提升预测针对性。
- 结果输出:预测2024年7月21日新增关注数最多的前五位博主及其关注量。
关键代码片段
% 数据预处理
followData = A1(A1.UserBehaviour == 4, :);
result = array2table(zeros(nBloggers, nDays+1));
result.Properties.VariableNames = [{'blogger_id'}, cellstr(string(dateList))];
result.blogger_id = bloggerIDs;% ARIMA模型预测
[forData,p,d,q] = ARIMA(data, step);
Mdl = arima(p, d, q);
EstMdl = estimate(Mdl, data);
[forData, YMSE] = forecast(EstMdl, step, 'Y0', data);% K-means聚类
[idx, centroids] = kmeans(lastDayData, 2);
问题二:预测用户的新关注行为
解题思路
- 特征提取:结合博主全局吸引力与用户个体偏好特征,构建用户-博主对的特征体系。
- 用户分类:采用DBSCAN算法对用户进行自适应密度聚类,区分不同互动密度的用户群体。
- 行为预测:基于BP神经网络构建新关注行为预测模型,通过非线性激活捕捉用户行为的深层关联。
- 结果输出:预测指定用户在2024年7月22日的新关注博主列表。
关键代码片段
% 特征提取
Gtj = sum(A1.BloggerID == j & A1.Time == t);
Ptij = sum(A1.UserID == i & A1.BloggerID == j & A1.Time < t);% DBSCAN聚类
labels = dbscan(normalizedFeatures, epsilon, minPts);% BP神经网络预测
net = feedforwardnet([10 10 10]);
net = train(net, x_train_normalized', y_train');
test_out = sim(net, x_test_normalized');
问题三:预测用户在线状态及互动博主
求解思路:
- 特征选择:融合周期性活跃特征、短期互动强度及兴趣广度指标,构建用户在线状态预测模型。
- 在线状态预测:基于SVM分类器筛选出在线用户。
- 互动博主预测:利用LSTM神经网络分析用户的历史互动序列,预测可能产生高互动的博主。
- 结果输出:预测指定用户在2024年7月21日的在线状态及互动博主。
关键代码片段:
% 特征选择
Ci_t = any(userLog.Date == t - days(7));
Si_t = sum(userLog.InteractCount(ismember(userLog.Date, t - days(1:3))));
Ni_t = followCount;% SVM在线状态预测
Mdl = fitcecoc(train_x_feature_label_norm, train_y_feature_label, 'Learners', t);
[~, y_test_predict] = predict(Mdl, test_x_feature_label_norm);% LSTM互动博主预测
layers = [sequenceInputLayer(numFeatures), lstmLayer(numHiddenUnits), dropoutLayer(0.2), fullyConnectedLayer(numResponses), regressionLayer];
net = trainNetwork(XTrain, YTrain, layers, options);
YPred = predict(net, XTest);
问题四:预测用户在线时段及互动博主
求解思路:
- 特征选择:引入时段特征,融合周期性行为模式、短期活跃强度与长期兴趣分布。
- 在线时段预测:基于SVM模型预测用户在2024年7月23日的在线时段。
- 细粒度互动预测:通过CNN卷积神经网络进行细粒度时段互动预测,提取时序数据的空间层级特征。
- 结果输出:预测指定用户在各时段互动数最高的博主及对应时段。
关键代码片段:
% 特征选择
Ci_t = any(userLog.Date == t - days(1));
Si_t = sum(userLog.InteractCount(ismember(userLog.Date, t - days(1:3))));% SVM在线时段预测
Mdl = fitcecoc(train_x_feature_label_norm, train_y_feature_label, 'Learners', t);
[~, y_test_predict] = predict(Mdl, test_x_feature_label_norm);% CNN互动预测
layers = [imageInputLayer([nFeatures 1 1]), convolution2dLayer([5 1], 64), reluLayer, maxPooling2dLayer([2 1]), fullyConnectedLayer(nResponses), regressionLayer
];
net = trainNetwork(xTrainCNN, yTrain, layers, options);
yPred = predict(net, xTestCNN);
完整论文,请看下方