制造业OEE&R语言数据挖掘之随机森林算法
上一篇文章案例中是用互信息求得与OEE相关性最大的三个变量,这篇案例使用决策树模型中的随机森林算法来找影响OEE的前三个最重要的变量
步骤:
1、数据准备
2、选择算法
3、编程建模
4、分析结果
5、评价
目录
本次案例的数据源是极板车间6月份所有开机的涂板机OEE报表,将其汇总整理后成如下表格,如下截图所示
然后再加一列“result”,当OEE>0.6时为“good”,否则为“bad”,删除OEE列 (此处OEE>0.6是因为涂板机OEE的平均值为0.6,因此作为判断好坏的标准,这里仅仅是为了个人分析,不代表行业就是如此)
如下截图所示
二、选择算法
本案例采用随机森林算法。 我在学习决策树的时候,随机森林是我认为准确率最高的算法。
三、编程建模
直接使用R包:randomForest, 简单高效
R代码如下:
library(randomForest) #载入R包
oeedata<-as.data.frame(OEE1) #将数据集转换成数据框
oeedata<-oeedata[,-1] #去掉第一列
oeedata$result<-as.factor(oeedata$result) #将result转换成因子类型
set.seed(12345) # 设置种子,使此次抽样在下一次能够重现
rfm<-randomForest(formula=result ~ . , data=oeedata,mtry=3,ntree =100,importance=TRUE) #randomForest随机森林函数,将结果赋给变量rfm
head(rfm$votes) # 各观测的各类别预测概览
importance(rfm,type=1) #各变量重要性测度
plot(rfm) # 随机森林的OOB错判率和决策树棵树,对应图1
varImpPlot(x=rfm, sort=TRUE,n.var=nrow(rfm$importance),main = "variable importance") #变量重要性可视化,对应图2
四、分析结果
步骤三中,ntree=100, 这个100是通过plot(rfm)找到最合适的数值。比如当设置ntree=100时,Error值最小且保持稳定,此处我是反复的试才找到100作为最优的参数;参数mtry的值同理。
plot(rfm)表示“随机森林的OOB错判率和决策树棵树”,错判率越低越好,棵树越少越好。如图1所示
图1 随机森林的OOB错判率和决策树棵树
当mtry=3,ntree =100,将随机森林结果对象绘图
分析结果如图2所示
图2 重要度可视化
右边的图,表示该变量的重要程度(通过Gini系数下降求得)
最重要的前三依次是:故障、合格(合格与不合格都归为合格类)、培训
五、评价
上一篇文章中,对影响OEE前三变量的分析结果为:故障、合格、设备效率
这次通过随机森林得到结果为故障、合格、培训。
因为这两次所用的算法核心思想都是来自信息论的熵的计算,所以结果大致是一样的。
导致结果有细微不同的原因我推测为:随机森林是采用有放回抽样,不同的ntree值使得抽样结果不一样,因此会造成最后结果的差异。后来通过对ntree=300做实验,发现前三名是 故障、合格、设备效率。由此可见上一篇案例和这篇案例从思路和操作上都是没问题的。
上一篇: 基于axios二次封装网络请求