2020年认证杯SPSSPRO杯数学建模
D题 让电脑桌面飞起来
原题再现:
对于一些必须每天使用电脑工作的白领来说,电脑桌面有着非常特殊的意义,通常一些频繁使用或者比较重要的图标会一直保留在桌面上,但是随着时间的推移,桌面上的图标会越来越多,有的时候想找到一个马上要用的图标是非常困难的,就比如下图所示的桌面。各种各样的图标会让你眼花缭乱,甚至有的时候反复找好几遍都找不到你想要的图标。其实只要把图标进行有效的分类就可以解决这个问题,但是手工分类往往非常浪费时间,有的时候使用者也会陷入分类决定困难,不知该如何选择。
第二阶段问题: 假定我们把第一阶段设计的图标分类算法制作成了一个软件,该软件具有一个数据库,可以存储日常图标使用的数据,并且通过这些数据可以实现“为你推荐”功能,即当用户关闭一个应用的时候会提示用户可能接下来会使用到的应用图标。请为这个功能设计数据库的表结构,并给出推荐模型。
整体求解过程概述(摘要)
本文研究了合理推荐桌面软件的问题。在已建立的软件类型数据库的基础上,设计了软件数据库的表结构,结合层次分析方法建立了软件推荐模型。
首先,根据用户的特征用层次分析方法对第一阶段中软件类型进行推荐排序。实际际中反映用户特征的因素很多,例如用户的职业和爱好。利用用户职业和爱好两个指标来对九类软件层次分析进行排序。把推送给用户软件类型作为目标层,职业和兴趣爱好作为准则层,九类软件作为方案层进行层次分析。以教师用户为例,根据教师使用软件的数据,对所得到的数据用 Excel 和 MATLAB 对模型进行求解,计算得到准则层职业和爱好权重和方案层相对于准则层的权重,根据综合权重对九类软件进行排序,排名结果为:聊天类>办公类>视频类>游览器>音乐类>游戏类>下载类>系统类>其它。
然后,分析可知用户桌面软件的日均使用次数、日均使用时长是两个重要的指标,结合推荐软件类型综合权重建立推荐模型。把要关闭的软件的使用的时长和使用次数与其它软件使用时长和使用次数进行比较分析。结合前面层次分析得出的软件类型权重和实际意义,对协方差模型进行改进建立推荐模型。综合分析得到软件推荐优先度,按照优先度给用户推送当关闭当前软件时最有可能被使用的三个软件。以教师用户为例,对模型进行了检验,利用推荐模型计算出优先推荐的三个软件,结果表明推荐的软件与教师日常使用软件规律基本一致。
问题分析:
在实际生活中使用计算机都会留下使用的痕迹,计算机可以记录下用户的使用数据。假设我们在第一阶段中用图标分类算法对用户桌面上的每个软件建立了分类,同时这个分类软件会记录用户信息、每天使用软件的时长和使用软件的次数。为了让用户更加便捷的找到需要使用的软件,主要从用户信息和软件使用情况两个方面来综合分析:
在实际应用时,我们发现影响对用户推荐软件的因素很多,其中用户的个人信息(职业、爱好等)对软件类型的选择具有很大的影响,用户的日常使用软件情况对软件的推荐有一定的影响。在这里我们准备结合这两个方面进行计算推荐:首先,我们按照每个用户的职业和兴趣等等都有所不同,采用层次分析法,对软件类型进行层次分析。在此我们选取软件类型为方案层,用户的职业和兴趣等等作为准则层。通过方案层和准则层对用户选择类型进行分析我们利用 Excel 和 MATLAB 计算层次分析模型,对于不同用户的不同类型进行权重分析。
之后,我们选取用户的软件使用情况对下一个打开软件进一步分析,在此我们选取日均使用该软件时间和日均使用该软件次数、今日目前使用该软件时间和今日使用该软件次数两组进行分析。发现今日软件使用情况对接下来用户使用到的软件具有一定的影响。
因此我们通过日均使用和今日目前使用进行最优解分析我们利用对用户信息(类型)的分析和使用情况(软件)的分析进行推荐算法,利用 matlab 代入推荐模型,选择对于用户最佳几个推送软件。
模型假设:
1、假设该软件统计数据完善,无缺失;
2、假设该用户的职业为教师;
3、假设该软件数据库数据储存类型为矩形方阵;
4、假设该软件统计数据为用户主动打开软件产生的数据;
5、假设该用户日常使用电脑软件习惯有规律。
论文缩略图:
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
disp('请输入判断矩阵 L') %输入判断矩阵 L
L=input('L='); %读取 L 矩阵
[n,n] = size(L); %% % % % % % % % % % % % % 1、算术平均法求权重% % % % % % % % % % % % %
SUm_L = sum(L);
SUM_L = repmat(SUm_L,n,1);
Stand_L = L./ SUM_L;
disp('算术平均法求权重结果为:'); %输出结果
disp(sum(Stand_L,2)./n)% % % % % % % % % % % % %2、几何平均法求权重% % % % % % % % % % % % %
P_L = prod(L,2);
P_n_L = P_L .^ (1/n);
disp('几何平均法求权重结果为:'); %输出结果
disp(P_n_L ./ sum(P_n_L))% % % % % % % % % % % % %3、特征值法求权重% % % % % % % % % % % % % %
[V,D] = eig(L);
Max_eig = max(max(D));
[r,c]=find(D == Max_eig , 1);
disp('特征值法求权重结果为:'); %输出结果
disp( V(:,c) ./ sum(V(:,c)) )% % % % % % % % % % % % %下面计算一致性比例 CR 环节% % % % % % % %
CI = (Max_eig - n) / (n-1);
RI=[0 0.0001 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58
1.59];
%这里 RI 最多支持 n = 15
% 这里当 n=2 时,一定是一致矩阵。所以 CI = 0,为避免分母为 0,将这里的第二个元
素改为了接近 0 的正数。
CR=CI/RI(n);
disp('一致性指标 CI=');disp(CI);
disp('一致性比例 CR=');disp(CR);
if CR<0.10disp('因为 CR<0.10,该判断矩阵 A 的一致性可以接受');
elsedisp('注意:CR >= 0.10,因此此判断矩阵 A 需要进行修改');
end