制造业OEE&R语言数据挖掘之人工神经网络探索
这篇案例用人工神经网络算法对铅酸电池制造业的OEE统计情况进行分析:对OEE记录数据集进行训练,用训练好的模型对测试集测试,预测OEE。
OEE:设备综合效率,即表现设备实际的生产能力相对于理论产能的比率,是一种独立的测量工具。可以帮助管理者发现和减少生产中存在的六大损失。·可以针对问题,分析和改善生产状况及产品质量。·能最大化提高资源和设备的利用率,挖掘出最大的生产潜力。
步骤:
1、数据准备
2、选择算法
3、编程建模
4、分析结果
5、评价
一、数据准备
本次案例的数据源是极板车间6月份所有开机的涂板机OEE报表,将其汇总整理后成如下表格,如下图所示
二、选择算法
这次选择经典的B-P反向传播网络。
B-P反向传播模型为多层感知机结构,其中不仅包含输入和输出节点,还有一层或多层隐层,又称多层感知机模型,B-P反向传播网络的特点:
1、包含隐层
2、反向传播
3、**函数采用Sigmoid函数
三、编程建模
R代码如下:
library(nnet) #载入R包
oeedata<-as.data.frame(oeenet4) #先从电脑中导入EXCEL到R,然后将数据集转换成数据框格式
oeedata1<-oeedata[,-1] #删掉第一列,第一列数据是设备编号,在本次分析中没用
index<-sample(1:nrow(oeedata1),(round(0.9*nrow(oeedata1)))) #抽样,36行数据,随机抽90%的行号
scaled<-as.data.frame(scale(oeedata1[,-17],center=FALSE)) #center=false 效果最好,没有减去均值,直接除以均方根;对OEE以外的值进行标准化,然后再合并起来作为训练集和测试集,
train_<-scaled[index,] #训练集
train_$OEE<-oeedata1[index,]$OEE #训练集增加一个OEE变量
test_<-scaled[-index,] #测试集
test_$OEE<-oeedata1[-index,]$OEE #测试机增加一个OEE变量
set.seed(12345) #设置随机数种子,使每次的运行的初始随机数是一样的
nn<-nnet(OEE ~.,
data=train_,linout = T,size=50,decay = 0.001,maxit = 1000) #训练神经网络,如果是预测分类,linout=f,如果是预测离散连续则linout=t
prnn<-predict(nn,test_) #使用测试集预测
test_$OEE #显示测试集OEE实际值
prnn #显示测试集OEE预测值
plot(prnn~ test_$OEE) #图形~预测和实际
四、分析结果
R跑出的结果截图如下图所示
测试集实际值:
0.61、0.92、0.51、0.6
神经网络预测值:
0.55、0.92、0.42、0.61
预测准确率为:89% 100% 79% 98%
从这个结果来看,预测准确率比较高,但是预测值之间的差异很大。
在上面的代码:nn<-nnet(OEE ~.,data=train_,linout = T,size=50,decay = 0.001,maxit = 1000),其中size 、decay、maxit经过了多次调试,不断的试不同的取值,才获得相对不错的结果。从网上的资料来看,训练神经网络的参数没有固定的套路,需要不断的尝试。。果然是黑箱算法。
我分析了一下正确率差异大的问题:1、数据太少,模型训练不充分 2、参数设置还可以更优 3、数据本身质量可能有问题,怀疑现场工人填数据不是真实的数据
五、评价
本次案例通过训练OEE数据集,得到神经网络模型,然后用模型预测OEE,得到较高正确率的结果。
这种分析场景在实际业务中基本是不可能出现的,但是通过这次研究,可以得到两个经验:1、如果能够获得完全真实的OEE数据,对其进行训练,训练出的模型可以判断以后的数据的填报真实性,比如停机时间可以作为输出变量,OEE作为输入变量,把预测的停机时间和填报的时间比对,若差异比较大,则填报的数据可能造假。
2、可以将人工神经网络模型拓展到质量分析预测,成本分析预测、设备参数-质量预测等场景。总之,人工神经网络模型可以适用于很多生产过程中的“黑箱”,如果使用得当,会给生产管理带来很大的帮助。
上一篇: php UNIX时间戳用法详解