Skip to content

Code and paper for Problem C of the 2023 National Mathematical Contest in Modeling 2023年全国大学生数学建模竞赛C题的代码和论文

Notifications You must be signed in to change notification settings

jxtse/MCM2023_C

Repository files navigation

MCM2023_C

2023年全国大学生数学建模竞赛C题的代码和论文

五、问题一的模型建立与求解

5.1 用三维热力图分析各品类销量的分布规律

为了对数据有进一步的认识,探寻蔬菜各品类销量的分布规律,我们用三维热力图绘制了各品类在不同年份和月份的销量情况。这种可视化方法允许我们将销售量、品类和日期三个维度结合在一起,以更加生动地呈现销售趋势。 在图1和图2中,x轴的数字1到6表示6种不同品类商品,其对应关系如下表所示:

在图1中,y轴上显示的是销售年份,z轴的高低、颜色的深浅表示销售量的多少。这种可视化方法使我们能够一目了然地了解不同品类商品在不同日期的销售情况,有助于我们发现销售的潜在模式和趋势。从图中可以看出,花叶类蔬菜的销量相对较多,茄类的销量相对较少。2020年到2022年,随着年份的推移,蔬菜的销量逐年增加。

图片

为了更好地了解不同蔬菜品类在不同月份的销量情况,我们选择了销量最多的2022年,研究在一年12个月中的销量变化情况,绘制出了图2的三维热力图。从图中可以看出,随着月份的推移,各品类的蔬菜销量整体都呈上升趋势,其中在9月销量几乎都达到最高。

通过数据可视化,我们能够更全面地理解销售数据的特点和规律,为进一步的分析和决策提供了有力的支持。这些可视化工具帮助我们更好地掌握数据,为研究提供了坚实的基础。

图片

5.2 用二维热力图分析各单品销量之间的关系

为了更好地了解各蔬菜单品的销量分布规律,我们绘制了不同单品在各年份总销量数据的热力图,图3是我们截取的热力图中销量较高的一部分。从图中可以看出很多有趣的信息,例如:

  • 芜湖青椒(1)、净藕(1)、西兰花等单品的销量一直遥遥领先;
  • 云南油麦菜(份)、洪湖莲藕(粉藕)的销量一直稳步提升;
  • 泡泡椒(精品)的在2020年销量表现亮眼,但销量逐渐减少,到2023年已经停售了;
  • 盒装的金针菇在2022年一经推出便饱受好评,2023年销量领先,有望冲击年销量第一;
  • 2021年热销的商品,在2022年销量几乎都有一定程度的下滑。

图片 该图片清晰地展现了各单品的销量分布情况和变化趋势,有助于商家进行更好地进货决策。根据商家的需求,我们还可以绘制各单品在不同月份,不同时间的销量情况,以让我们对数据的整体情况有一个直观地了解。有了这个了解之后,我们就可以对数据进行更深层次的分析,例如,使用STL方法进行季节性分析,使用时间序列分析蔬菜单品销量随时间的变化规律等。

5.3 相关性分析

为了探讨蔬菜各品类之间的销量相关性,以及它们随时间的演变,我们通过相关性矩阵和相关性热力图的形式来可视化这些关系,以更深入地理解不同蔬菜品类之间的关联性和趋势。相关性矩阵是一个方阵,其中包含了各品类销量之间的Pearson相关系数。相关性系数的取值范围在-1到1之间,负值表示负相关,正值表示正相关。我们首先计算了不同蔬菜品类之间的销量相关性系数,并将其呈现在相关性矩阵中。为了更直观地展示不同品类销量之间的相关性,我们创建了一个相关性热力图。相关性热力图以颜色编码的方式表示了相关性矩阵中的数值,使我们可以快速识别出高相关性和低相关性的品类组合。

图片

从相关性矩阵中,我们可以观察到不同蔬菜品类之间的销量存在一定的相关性。例如,水生根茎类和食用菌之间的销量相关性系数为0.98,表明它们之间存在很强的正相关关系。相反,茄类和辣椒类之间的销量相关性系数为0.40,表明它们之间的关系较弱。 通过时间趋势分析,我们可以观察到不同品类销量之间的年度相关性。这有助于我们理解各品类在不同年份内的销售表现是否存在一定的关联性。例如,水生根茎类和食用菌之间的高相关性系数表明它们可能受到相似的季节性影响。

5.4 基于Apriori算法的单品关联关系分析

5.4.1 方法简介

Apriori算法是一种流行的算法,用于数据库中的关联规则挖掘。在Apriori算法中,获取频繁项目集的过程包括连接和修剪过程。在连接过程中,每个项目都与其他项目组合,直到不再形成组合。在修剪过程中,使用 Apriori 算法的最小缺点来修剪在上一个过程中组合的项目的结果,即在执行频繁的项目集搜索时,它必须针对每个项目组合重复扫描数据库。因此,扫描数据库需要花费大量时间;此外,Apriori 过程需要大量候选生成才能根据数据库中项重复出现的频率生成关联规则。 在建模过程中,需要先寻找频繁项集,用于生成关联规则。支持度(support)是该方法的一个重要参数,用于衡量一个项集在数据集中出现的频率或支持程度,其计算公式如下: $$Support(A,B) = P(A \cap B) = \frac{\Sigma 含A和B的交易}{\Sigma 总交易}$$

另一个重要的参数是置信度(Confidence),用于衡量关联规则的参数,计算公式为: $$Confidence = P(A\ |\ B) = \frac{\Sigma 含A和B的交易}{\Sigma 包含A的总交易}$$

此外,我们还需要设定合适的最小置信度阈值和最小置信度阈值,用于筛选频繁项集和关联规则,只有达到最小阈值的数据才会被保留。基于支持度算法进行剪枝操作,去除不满足最小支持度阈值的候选项集。这一步骤减少了搜索空间,提高了效率。 最后,通过组合频繁项集,APRIORI算法生成关联规则,并计算这些规则的置信度。只有置信度不低于最小置信度阈值的规则才会被保留。[2]

在本次研究中,我们将使用 Apriori 算法来分析蔬菜单品销量之间的关系,从而确定不同蔬菜单品销售之间的关联。 通过分析这种关联,我们可以深入了解客户的行为和偏好,从而制定有效的营销策略并提高销量。

5.4.2 实验设计与结果

建立关联规则的分析主要分为以下五个步骤:

  1. 设置最低支持率:首先需要挖掘数据中的频繁项集,这些频繁项集代表了在销售数据中经常一起出现的商品组合。通过初步分析发现,蔬菜单品销售之间的关联度较弱,故我们设置了一个较小的最小支持度阈值,以筛选出频繁项集。
  2. 将数据转换为适合Apriori的格式:Apriori算法通常使用二进制编码表示商品是否出现。这是为了将问题转化为一个集合理论的问题,其中每个交易可以看作是一个包含不同商品的集合。这种编码方式使得算法更高效,减少了内存占用和计算时间。为了进行频繁项集挖掘,我们需要先通过TransactionEncoder函数将数据转换为适合Apriori的格式。
  3. 生成频繁项集:该算法通过迭代扫描交易数据库并剪切不符合最小支持阈值的项目集来生成频繁项目集。在本实验中,频繁项集指的是顾客经常一起购买的蔬菜单品。我们将“销售日期”与“扫码销售时间”合并,得到了“销售时间”这一变量,相同“销售时间”卖出的单品就认为是同一个顾客购买的。通过使用groupby和agg函数将相同销售时间的单品放入一个集合中,我们得到了蔬菜单品销售的频繁项集。
  4. 生成关联规则:我们使用频繁项集生成关联规则,关联规则根据其支持度和置信度进行评估。得到了各个单品之间地关联性,并将结果保存在附件中。例如,我们得到七彩椒(份)与云南生菜的关联支持度约为9.21%,这表明购买了七彩椒(份)的顾客,有9.21%的可能性会搭配购买云南生菜。
  5. 绘制关联性强度热力图:为了更好得展示我们得到地结果,我们使用关联规则绘制了图5的关联性强度热力图。该图直观地展示了不同蔬菜品类之间销售的关联性,红色越深表示关联性越强,蓝色越深表示关联性越弱。从图中可以看出,平菇和大白菜与金针菇(盒)的关联性较强,红椒与上海青的关联性较弱,而红椒与油麦菜几乎没有关联性。

图片

5.5 基于FP-Growth算法的品类关联关系分析

5.5.1 方法简介

FP-Growth算法(Frequent Pattern Growth算法)进行关联分析是一种用于挖掘频繁项集的算法,是Apriori算法的发展。FP-Growth算法纠正了Apriori算法的缺点,在频繁的项目集搜索中生成基于候选树的概念,这就是导致FP-Growth算法比Apriori算法更快的原因。

5.5.2 实验设计与结果

由于在尝试使用Apriori算法分析品类之间关联度速度过慢,而且效果不佳,故我们改为使用FP-Growth算法进行分析,步骤如下:

  • 数据处理:我们使用了与处理品类关联时相同的数据预处理方法,将同时销售的品类放入到一个个集合当中,然后让这些集合构成一个数据集。
  • 构建FP树: 首先,算法遍历数据集,统计每个项的支持度,并根据支持度构建FP树。FP树是一种前缀树结构,用于表示项集的层次关系和支持度信息。
  • 构建条件模式基: 在构建FP树的过程中,算法还维护了一组称为条件模式基的数据结构,用于存储每个项的条件模式。条件模式是指在给定前缀的条件下,与某项相关联的所有事务。
  • 挖掘频繁项集: 一旦构建了FP树和条件模式基,算法可以通过递归方式挖掘频繁项集。它从FP树的叶节点开始,回溯到根节点,生成频繁项集。 在置信度设为50%时,我们没有得到任何输出结果,由此可见各品类销售之间也无明显强关联性。在适当调低了置信度之后,程序输出了如下结果:

{('辣椒类',): (('花叶类',), 0.4411945812807882), ('花叶类',): (('辣椒类',), 0.2959520859149112)}

从该结果可以看出,辣椒类和花菜类在销售时的关联度较高,购买辣椒类菜品的顾客有44.12%的可能性会购买花叶类菜品,而购买花叶类菜品的顾客有29.60%的可能性会购买辣椒类菜品。

5.6 综合分析与讨论

经过数据预处理和可视化,我们对蔬菜单品和品类数据的分布情况有了更深的了解。通过这些了解,商家可以对单品的选择进行更精准的决策。例如,从图3中我们可以看出,在2022有很多新的单品上市,一开始销售就饱受好评,导致很多原先热销的商品销量降低。在分析利润时,如果新品的利润没有原先热销的商品高,那就要考虑是否要提高新品的价格,促进原先产品的销售,反之则需要考虑要不要把原先的产品下架,以保持总体利润的最大化。 除了Apriori算法或FP-Growth算法,我们还将基于NSGA-II(Non-dominated Sorting Genetic Algorithm II)的多层次关联规则挖掘与已有的Apriori算法结合,来发现更高质量的不同单品之间的关联关系。NSGA-II 使用快速非优势排序算法和精英选择策略来提高求解质量,使用拥挤距离排序技术来保持群体的多样性,防止过早收敛。在关联规则挖掘方面,该方法已被用于从大量交易数据中挖掘高质量的规则。它对多层次关联规则挖掘尤其有用,因为多层次关联规则挖掘的目标是挖掘不同抽象层次的关联规则。我们将 NSGA-II 与 Apriori 算法结合使用,先用 Apriori 算法生成频繁项集,用于初始化 NSGA-II 的群体,然后使用 NSGA-II 挖掘不同抽象层次的关联规则。对在不同层次上获得的最终群体进行解码,以获得最终的关联规则。

通过这些关联度分析方法,我们得到了蔬菜各品类或单品之间的相互关系,通过这些关系,我们可以进行购物篮分析(Market Basket Analysis),为了解客户行为和偏好提供有价值的信息,帮助商家制定更加科学合理的销售和展示策略。经过筛选和优化,我们绘制了图7所示的单品关联性强度热力图,帮助商家更清楚地了解不同蔬菜单品之间的关联情况。

图片

从图中可以很明显地看出购买冰草的顾客很有可能会购买小青菜,购买赤松茸的顾客有很大可能会购买杏鲍菇,这些关联规则揭示了不同产品之间的有趣关系,商家可以将这些产品进行捆绑打折促销。例如,针对购买冰草的顾客提供小青菜的优惠,或者推出买一送一活动,从而提高客户满意度和忠诚度,最终提高经济效益。

从之前讨论中我们还发现。花叶类蔬菜与辣椒类蔬菜之间存在一定的关联关系。这意味着购买花叶类蔬菜的顾客中,有一部分顾客可能会同时购买辣椒类蔬菜,反之亦然。根据这些关联规则,可以考虑将花叶类和辣椒类蔬菜放置在相邻的位置,以便于顾客同时购买,这样可以提高顾客的购物体验,从而提高销售额。另外,商家还可以根据这些关联规则对商品库存进行合理的调整。例如,如果发现花叶类蔬菜的销售量增加,可以适当增加辣椒类蔬菜的库存,以满足顾客的需求。 总之,通过本章的分析,我们帮助商家可以更好地了解蔬菜各品类及单品销售量的分布规律及相互关系,并据此制定相应的销售策略,以提高销售额和顾客满意度。

参考文献 [1] Wang, Zhenmin. “A Multi-Level Association Rule Mining Algorithm Based on NSGA-II for Market Basket Analysis.” 2023 4th Information Communication Technologies Conference (ICTC) (2023): 294-300.

[2] Satria, Christofer, Anthony Anggrawan, Mayadi. 《Recommendation System of Food Package Using Apriori and FP-Growth Data Mining Methods》. Journal of Advances in Information Technology 14, Issue 3 (2023): 454–62. https://doi.org/10.12720/jait.14.3.454-462.

About

Code and paper for Problem C of the 2023 National Mathematical Contest in Modeling 2023年全国大学生数学建模竞赛C题的代码和论文

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages