制造业SAP&R语言数据挖掘之辅材消耗分析

我目前是在一家铅酸蓄电池公司工作,这篇文章主要是使用R并采用关联规则模型从两个角度分析:1、成本中心领用物料之间是否有关联规则;2、根据五金备件类领用情况,通过分析关联规则给出设置安全库存的建议;这两个场景虽然最后得到的结论并没有非常实用的业务价值,但是经过这个过程,我对R语言的运用和算法的理解以及实际业务场景的理解更进一步提高了。

本文提纲:

1、选择算法

2、导出数据

3、编程建模

4、结论评价

 

一、选择算法

本次案例选择了关联规则当中最经典的Apriori和Eclat算法;这两种算法在R语言当中有R包可以直接运用,省去了自己构建函数代码的工作(但是如果想有更深层次的提升,自己编写算法代码是必要的)

 

二、导出数据

1、从SAP中导出需要分析的数据清单(EXCEL);

2、按照算法所需参数的要求将EXCEL不必要的数据删掉;

3、转换成TXT格式文件(如下图);TID指的是领料单号,ITEMS指领料单中的物料

 

制造业SAP&R语言数据挖掘之辅材消耗分析_第1张图片

说明:

步骤1当中有两个场景:

数据场景1: 各车间、部门在2019-2020年的成本中心领用(移动类型201)情况汇总表

数据场景2:设备科用到的五金类物料,将设置了安全库存的物料号筛选出来,查出对应的成本中心领料单号,在将这些领料单的所有行项目汇总得到清单

将这些数据整理完成之后把TXT文件放到r语言默认的路径下(我设置的是E盘根目录,下面的代码中会有体现)

 

三、R语言编程

library(arules)
library(Matrix)
setwd('E:/')
Trans <- read.transactions(file ="./设备科领用记录.txt" ,format="single",header=TRUE,cols=c("TID","ITEMS"),sep="",encoding = "UTF-8") #从EXCEL转成TXT之前,把表里的特殊符号全删掉;导出TXT之后另存为UTF-8
str(Trans) #查看数据对象结构

#Apriori算法# 
rules <- apriori(data=Trans,parameter=list(support =0.007,confidence =1,minlen =5,target="rules"))
inspect(rules) #显示规则

#Eclat算法#
sets<-eclat(data=Trans,parameter=list(support =0.007,target="frequent itemsets"))
rules1<-ruleInduction(x=sets,transactions=Trans,confidence=0.6)
inspect(sort(x=rules1,by="lift")) #显示规则并按提升度排序

代码说明:

1、转换成TXT格式时,一定是要保证utf-8的编码格式

2、函数中的support、confidence、minlen等参数是要不断调整的,如果support数值过大则找不出规则,如果数值太小则找到的规则太多,这个地方我用的是笨办法,先将support设为0.01,根据找到的rules数量来判断是接着调大还是调小,然后再依次调整confidence、minlen这俩参数,直到最后找到一个数量不多不少的rules数量

3、Apriori,Eclat运算结果是一样的,这一点我已多次验证,代码运算结果就不展示了

4、使用FP-growth的算法,函数“fpgrowth”在运行时一直报错调用函数的接口错误,估计是JAVA环境没有配置正确,这个问题已经百度过N个答案都无法解决(如果有大神知道这个问题请不吝赐教,感谢),故这个算法代码就不在此展示 了

 

 

四、结论评价

1、数据场景1,各车间领料情况分析:

以设备科为例,R语言执行得到的规则复制到EXCEL中截图如下

 制造业SAP&R语言数据挖掘之辅材消耗分析_第2张图片

简单归纳后得出规律:

3M9501\9401口罩-布质手套-纱质手套-肥皂-绿色机修服L ;这些物料在领用时往往是有规则的,即领用口罩的也会去领手套,领用了机修服的也会再去领手套和肥皂

以此类推,分别分析其他部门情况如下:

安环科:浸塑手套-纱质手套-长乳胶手套耐腐蚀耐酸-布质手套

总经办:浸塑手套-纱质手套

车间领用:布质手套-布质袖套-3M1270圣诞树型带线耳塞

品管科:布质手套-肥皂-纱质手套-长乳胶手套耐腐蚀耐酸-浸塑手套

R执行后得出的规则既是出现频次高,也是互相关联高的,由此可见,对于成本中心类的领用当中,劳保类是所有部门领用的最频繁的,这个规律与铅酸行业的特点相关性很高:对于员工的保护是生产当中非常重要的环节。

通过跟仓管员的沟通,他们在实际工作当中发料的情况也差不多与以上规则类似。

2、数据场景2 ,五金类安全库存分析

这个场景的思路是:首先将已设置了安全库存的物料找出来,再将他们对应的领料单以及领料单中的行项目全都导出来,通过R语言对这部分数据进行处理,得到结果的截图如下

制造业SAP&R语言数据挖掘之辅材消耗分析_第3张图片

其中已经设置了安全库存的物料如下所示,括号为安全库存数量

开关接近开关E2B-M18KN16-WZ-C1  (2)

外丝接头DN25(10)

五孔插座(5)

外丝接头DN25(10)

交流接触器辅助触头LADN22C(20)

ABS胶水(50)

弹簧垫圈SUS直径8(2000)

平垫圈SUS直径8(2000)

将其中已经设置过安全库存的物料所在的规则一一挑出,得到如下规则;斜体的物料是与设置过安全库存的物料有关联规则的,推测这些也是可以设置安全来保证及时供应,比如以外丝接头DN25为例,该物料设置了安全库存,根据关联规则,镀锌弯头DN25mm是与其有关联性的,故推测其也是关键备件,也可以设置安全库存

 

 

{接近开关E2B-S08KN02-WP-C1}             => {开关接近开关E2B-M18KN16-WZ-C1}

{镀锌弯头DN25mm,外丝接头DN25}           => {不锈钢卜申DN25-DN15} 

{镜反射光电E3Z-R66}                     => {五孔插座}

{三通DN25}                              => {外丝接头DN25} 

{镀锌弯头DN25mm}                        => {外丝接头DN25}

{交流接触器施耐德}                      => {交流接触器辅助触头LADN22C}

{ABS胶水,薄膜}                          => {塑料包装袋820*800}

{平垫圈SUS直径8,透明胶带}               => {弹簧垫圈SUS直径8}

{回丝}                                  => {弹簧垫圈SUS直径8}

 

将以上筛选之后得到潜在的可设置安全库存物料号,并查看其最近几年所有采购情况,此时推测其采购频率会比较高,因为他们没用设安全库存,但是跟设了安全库存的物料有关联性,故需要大量采购才能满足需要;

具体采购情况简要如下所示:

7103030706接近开关/E2B-S08KN02-WP-C1 2M 1次采购

7104020969不锈钢卜申/DN25-DN15 1次采购

7103040350镜反射光电E3Z-R66 2次采购

7104020187镀锌三通/DN25 1次采购

7101011566镀锌弯头/DN25mm 1次采购

7103060580交流接触器/施耐德 LC1E3210/220V 1次采购

7302030088薄膜 19次采购

51050020014塑料包装袋/820*800 8次采购

7302010029透明胶带 27次采购

7001020002 回丝 61次采购

 

再通过库龄分析:

制造业SAP&R语言数据挖掘之辅材消耗分析_第4张图片

之前的推测当中,关于薄膜 ,塑料包装袋/820*800 ,透明胶带 ,回丝 的推测是正确的;其他的与推测有出入的物料在两年前会大量使用,从目前来看已经成了呆滞料;所以在做关联分析时,数据的时间范围选取要符合所分析的目的。

基于以上分析能给出的建议方案是,将薄膜 ,塑料包装袋/820*800 ,透明胶带 ,回丝设置安全库存,但是从实际业务来讲,设不设安全库存其实没有影响,车间在申请这些物料时通常都是会留余量,所以此建议并不实用。

总结:这两个场景通过关联规则建模分析后,得到的结论与实际业务大同小异,虽然谈不上给业务部门“出出主意”,但是从侧面反映了这个分析过程当中思路和操作是基本正确的。今后可以在这个基础上再细分业务场景进行分析,也许能够得出有指导性的结论。

参考文献:《数据挖掘在机械制造业外购件供应系统的应用》(重庆大学 张亮)

你可能感兴趣的:(数据挖掘案例,数据挖掘,r语言,sap)