欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-07 14:40:51
...

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

 

步骤:

1、数据准备

2、选择算法

3、编程建模

4、分析结果

5、评价

 

目录

一、数据准备

二、选择算法

三、编程建模

四、分析结果

五、评价


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

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

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

如下截图所示

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

 

二、选择算法

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

 

三、编程建模

直接使用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语言数据挖掘之随机森林算法 

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

 

 

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

分析结果如图2所示

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

                                                                            图2  重要度可视化

 

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

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

 

五、评价

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

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

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

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