制造业OEE&R语言数据挖掘之随机森林算法

上一篇文章案例中是用互信息求得与OEE相关性最大的三个变量,这篇案例使用决策树模型中的随机森林算法来找影响OEE的前三个最重要的变量

 

步骤:

1、数据准备

2、选择算法

3、编程建模

4、分析结果

5、评价

 

目录

一、数据准备

二、选择算法

三、编程建模

四、分析结果

五、评价


本次案例的数据源是极板车间6月份所有开机的涂板机OEE报表,将其汇总整理后成如下表格,如下截图所示

制造业OEE&R语言数据挖掘之随机森林算法_第1张图片

然后再加一列“result”,当OEE>0.6时为“good”,否则为“bad”,删除OEE列 (此处OEE>0.6是因为涂板机OEE的平均值为0.6,因此作为判断好坏的标准,这里仅仅是为了个人分析,不代表行业就是如此)

如下截图所示

制造业OEE&R语言数据挖掘之随机森林算法_第2张图片 

 

二、选择算法

本案例采用随机森林算法。 我在学习决策树的时候,随机森林是我认为准确率最高的算法。

 

三、编程建模

直接使用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所示

制造业OEE&R语言数据挖掘之随机森林算法_第3张图片 

                                                                        图1 随机森林的OOB错判率和决策树棵树

 

 

当mtry=3,ntree =100,将随机森林结果对象绘图

分析结果如图2所示

制造业OEE&R语言数据挖掘之随机森林算法_第4张图片

                                                                            图2  重要度可视化

 

右边的图,表示该变量的重要程度(通过Gini系数下降求得)

最重要的前三依次是:故障、合格(合格与不合格都归为合格类)、培训

 

五、评价

上一篇文章中,对影响OEE前三变量的分析结果为:故障、合格、设备效率

这次通过随机森林得到结果为故障、合格、培训。

因为这两次所用的算法核心思想都是来自信息论的熵的计算,所以结果大致是一样的。

导致结果有细微不同的原因我推测为:随机森林是采用有放回抽样,不同的ntree值使得抽样结果不一样,因此会造成最后结果的差异。后来通过对ntree=300做实验,发现前三名是 故障、合格、设备效率。由此可见上一篇案例和这篇案例从思路和操作上都是没问题的。

 

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