设为首页收藏本站

JMP数据分析论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 3523|回复: 12

减员增效,神经网络助力企业运营提速

  [复制链接]
发表于 2019-6-20 15:12:17 | 显示全部楼层 |阅读模式
处在工业4.0时代,大家一方面常常被业界领袖级企业极其先进的全自动产线所震撼,另一方面又常常慨叹自己的企业因为资金所限产线跟不上时代,运营效率不高。其实用对了方法,你也一样可以成为自家企业提速的超级钢铁侠。

制造业的生产模式都有哪些?重点又是什么?
不论是初出茅庐的新手还是混迹江湖多年的老将都能随口说出很多,比如,推式生产?拉式生产?Build to order? Build to stock?  单件流?  可能有的企业再辅助以精益生产和六西格玛的工具,变化更为丰富。但这些都是追求一种卓越的运营方式以适应企业自身特点,其中,交货周期、产品质量和运营成本又是重中之重,几乎可以占到制造型企业核心竞争力的半壁江山。为了帮助大家能够切实体会到如何通过先进的分析方法帮助企业提速增效,下面我们就通过一个实际工作中的真实案例来聊聊如何借助于JMP软件中的AI平台来提升企业运营水平,达到意想不到的效果。希望对你有一定的借鉴意义和帮助。

本文作者衮雪,JMP特约专栏作者,数据分析爱好者。如果你也想成为JMP合作的长期专栏作者或者想加入我们的“有奖征文”,欢迎在微信公众号对话框私信小编或发送邮件至jmpmarketing@sas.com和我们聊聊。

你的企业是否遇到这样的问题?
下面这张high level流程图代表了一些电子类企业的制造过程。

其中:
-       A- ‘produce theproduct’代表通过某种工艺制造产品的过程;
-       B-‘Electricaltest process’代表通过大规模自动测试仪器来检测产品的各种电性能参数;
-       C-‘Humaninspection and binning’代表人工判断(包括外观缺陷)和分拣的过程;
-       D-‘SPC system’代表企业已有的统计制程控制软件系统;
-       E-‘Call foraction’代表随着SPC报警所需要响应的相关措施;
-       F-‘move to next’代表如果SPC结果正常可以放行到下一步。

其中信息流动顺序是B-‘Electrical test process’(以下简称B站)的结果传输到 C-‘humaninspection and binning’(以下简称C站),C站人工基于B站的结果和自己的判断来进一步分拣不同的次品类型,C站按照不同次品类型的分拣数据进一步传输到D站作为SPC系统的输入,并为下一步的产品处置做出判断。流程中暴露的问题是非常显而易见的,C站的人工判断不但占据了大量的人力资源,引入了人员疲劳的因素,而且从处理周期上很自然的要受制于人工作业时间。回忆下我刚刚提过的制造业企业核心竞争力,这无异于延长了交货周期,增加了产品控制风险并提升了企业运营成本。那么,有没有某种可能性用计算机来帮助实现这一步骤?如果可以的话,又该如何做呢?

着手调研,验证假设
既然B站产生了很多电性能测试数据,那么我们的假设便是能否通过B站产生的数据来预测C站的人工分拣结果。实际上B站的电性能参数比如信噪比等,很多都受制于电感,电阻,电容等在装配时的精度影响,所以从理论上来看,B站的测试结果可以在一定程度上预测装配等的外观缺陷。为此,我们首先选取了过去半年B站的测试数据,这里要注意只选取了B站的电性能次品数据(原因是对于这个案例,次品数据才是需要提取的有价值信息,B站的电性能测试只要有其中一项fail,就是次品),其中,表中每一行代表单个产品的信息,使用JMP软件中的‘John table’功能,把B站的数据(Table B)和C站历史上被人工分拣的数据(Table C)表格通过Product ID连接在一起。

Table B中Product ID是序列型数据,Test1到test N是名义型数据,包含了经过B站每一项电性能测试的pass/fail结果。Table C中 Reject Type是名义型数据,包含了C站人工分拣的结果。(限于数据量巨大,部分截图如下)file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg


点击Table下面的join 功能,进入以下窗口,选中Product ID作为主键将Table B和Table C链接起来。

file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
这样,我们就将两张表结合到了一起。为了方便大家理解,隐藏了Test19及其以后的测试项,请重点注意:此时有了Reject type一列,也就是C站的人工分拣结果。

file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
下一步要就要来做预测了,那么,到底该选择哪种方法呢?

为何Pick神经网络?
依托JMP强大的’Predictive modeling’ 平台,我们可以接触到目前业界应用较为普遍的算法。(尽管JMP本身并没有包括像Tensor flow等那样的算法,但JMP可以直接调用R或Python的输出结果 ,感兴趣的朋友可以针对自己的项目加以考虑,但这并不影响JMP的效用,因为你会节省很多coding的时间)。比如k-Nearest neighbor ,Naive–Bayes,Bootstrap Forest (Decision Tree)和Neural networks.

在这个案例中,我们选择使用神经网络算法,其主要原因是因为神经网络算法在近些年的世界算法大赛上屡获殊荣,大家乐于学习这种算法的兴趣日益高涨,因此应用到此案例中可能对大家的实际工作更有指导意义。其次,因为电子企业中一般数据体量巨大(元器件越来越小型化),而神经网络算法会随着数据量的增大而提升其准确性,极大化逼近线性或非线性的各种可能组合(就像一张棋盘在布局),但其他算法往往会在准确性上遇到天花板,尽管在处理小型体量数据时可能用到。第三,其他算法有诸多使用限制条件及假设,比如朴素贝叶斯就假设所有的预测变量都相互独立,一旦实际案例中这个假设不成立,则效果就大打折扣。

预测建模,验证分析
Pick了神经网络之后,我们就要正式进入分析了。首先,我们要设定训练(Training) 数据和验证(Validation)数据的比例,根据经验和项目自身特点,这里我们选取75%作为训练数据,选择另外25%作为验证数据(当然你也可以根据自身项目的特点选择其他比例,比如80%为训练数据,20%为验证数据,比例本身并没有硬性规定)。

选择JMP软件菜单Analyze ->Predictive Modeling -> Make Validation Column之后,表格会自动按照75% Training Set和25% ValidationSet添加一列 validation,如下所示:

file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image012.jpg注意此时多出了最后一列Validation。

点击Validation列的嵌入公式如下,可以看到实际上JMP使用了Random Category函数。

file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image014.jpg

根据JMP自动分配Validation列之后的表格,我们选择Analyze > PredictiveModeling > Neural.
Neural 启动窗口如下图所示:

file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image016.jpg
之后我们来到ModelLaunch 控制面板,这里让人比较头疼的是如何设置hidden layer的个数(本例只设定1st hidden layer以降低模型复杂度)

根据经验公式设定如下,其中N代表input layer 节点个数,N2代表1st hidden layer节点个数,M代表Output layer个数。计算后1st hidden layer个数(N2)为31。
学习效率和惩罚系数使用JMP默认值。可以参考以下层级排布示意图:

file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image018.png
这里分享给大家一个经验公式,供参考。
Number of Hidden=N2
Number of Input=N
Number of Output=M
Number of Hidden Points: N2 < Product count - 1
Number of Inputs:N < Product count- 1
N2=sqrt(N+M+1)+a (a=1 to 10)
带入本例中的数值,得到N2为31.
N=734  M=6  N2=31
file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image020.jpg
最终运算结果如下,Validation的Generalized R Square大于0.8。


运行ROC曲线: Predictiveand Specialized Modeling > Partition Models > Partition Platform Options>ROC Curve.


ROC(Receiver Operating Characteristic)曲线中的1代表模型完美契合,0.5代表模型几近不能辨别组间差异。从此图上来看,所有曲线(不同颜色代表不同类型的次品)面积均大于0.8,符合预期。


file:///C:/Users/sbjrlv/AppData/Local/Temp/msohtmlclip1/01/clip_image024.jpg
解读结果,拓展应用
将Validation结果带入计算后(如下表所示)你会发现,神经网络算法对于重点类型次品(A类,B类,C类)相对人工分拣吻合度可以达到70%以上,对于C类品吻合程度高达95%。基于此案例的生产环境,完全可以用于日常重点SPC控制的输入以辅助产品监控,也就是说,当B站电性能测试结束的时候,如果出现异常,控制图就会及时报警。



看起来Reject D/E/F类次品吻合率较低。为什么呢?经调查发现,其中Reject D主要是产品上外来物相关缺陷,Reject E主要是产品标签相关缺陷,Reject F主要是产品的外包装的相关缺陷。这三类次品从理论上来说并不属于上一站的装配本身工艺所造成的,而且使用B站的电性能参数很难对其精确的做出判断。所以,在流程的最后,扩大了自动外观设备检测的覆盖范围从抽检变成100%覆盖所有产品,这样就可以省去对Reject D/E/F类进行SPC监控(因为SPC监控很重要的一个目的是通过监控来判断好品有无问题,既然能够对100%产品进行自动化检测,也就不需要在C站对这三类缺陷再进行SPC监控)。

其中有意思的现象是D类,E类和F类神经网络分拣结果中有一些分类到了其他正确率较高的次品类型中(这个例子中是A类),那是否意味着更应该相信模型判断的结果而检查人工误判的因素(疲劳、目视不清等)呢?试想如果一个产品既有A缺陷又有D/E/F等的缺陷之一,人工会很自然地根据自己最容易发现的目视结果做出判断,但实际上可能是更重要的A类缺陷。相信大家在自己的工作场合中会有不同的答案,但无论如何,精简流程带给企业的成本节约和好处,已经远远超过了购入自动化设备或专业工具以提升生产过程能力的那些微不足道的成本支出。

因此,基于以上的分析结果取消C站后,不但缩短了关键质量缺陷的侦测时间,又节省了大量人力成本(后期可以做模型定期刷新,并对接到SPC系统软件中,模型会定期录入新的数据以矫正模型,录入周期可以做到每天)。这样一举两得的结果,无论对于工程师或者是管理层来说,都是喜闻乐见的。

当然,你现在看到的这个结果并不是一蹴而就的,而是经过了我们反复尝试、实践、并不断优化和改进后的成果,它凝聚了团队的力量和心血,希望我们摸黑走过的弯路,能够照亮你工作实践的道路,为你提供一点导航和方向。

最后,想体验JMP神经网络平台的小伙伴,欢迎下载拥有完整功能的JMP 30天免费试用亲自实践。

更多数据分析相关干货、JMP实用技巧、JMP最新活动,敬请关注JMP官方微信公众号:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

发表于 2019-6-20 17:13:29 | 显示全部楼层
请问一下: 你上面列举的这些数据文件,JPM 13自带有吗?还是只有JMP 14才有这些?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-21 10:20:16 | 显示全部楼层
Mujahida 发表于 2019-6-20 17:13
请问一下: 你上面列举的这些数据文件,JPM 13自带有吗?还是只有JMP 14才有这些?

这个不是软件自带的练习数据,是作者工作中的真实案例。已经附上,供参考~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2019-6-22 15:53:53 | 显示全部楼层
你好 我想问下ROC曲线如何确认?   按照文章里的描述没有发现ROC曲线的菜单选项

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-24 09:40:31 | 显示全部楼层
wangtian4625 发表于 2019-6-22 15:53
你好 我想问下ROC曲线如何确认?   按照文章里的描述没有发现ROC曲线的菜单选项

你好,在分割 (Partition)平台运行后的红色下拉小三角导航里。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-24 09:40:32 | 显示全部楼层
wangtian4625 发表于 2019-6-22 15:53
你好 我想问下ROC曲线如何确认?   按照文章里的描述没有发现ROC曲线的菜单选项

你好,在分割 (Partition)平台运行后的红色下拉小三角导航里。
回复 支持 反对

使用道具 举报

发表于 2019-7-25 09:40:43 | 显示全部楼层
谢谢分享。貌似JMP14之前的版本没有Make Validation Column等菜单功能选项?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-7-25 09:58:51 | 显示全部楼层
rocluo5566 发表于 2019-7-25 09:40
谢谢分享。貌似JMP14之前的版本没有Make Validation Column等菜单功能选项?

JMP13也有。无论JMP 13还是JMP 14,在JMP中,支持“交叉验证”的功能项较少,JMP Pro中支持的更好一些,这也是Pro和标准版的差异之一。
回复 支持 反对

使用道具 举报

发表于 2019-7-25 10:09:50 | 显示全部楼层
admin 发表于 2019-7-25 09:58
JMP13也有。无论JMP 13还是JMP 14,在JMP中,支持“交叉验证”的功能项较少,JMP Pro中支持的更好一些, ...

再次仔细查看了:在JMP13的“分析/预测建模”菜单下,并没发现“创建有效列(Make Validation Column)”子菜单项
回复 支持 反对

使用道具 举报

发表于 2019-7-29 17:22:52 | 显示全部楼层
本帖最后由 jhwooo 于 2019-7-29 17:26 编辑

N2=31,可以具体说下怎么来的吗?谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|JMP数据分析论坛 ( 沪ICP备13022603号-2 )  

GMT+8, 2024-3-28 16:44 , Processed in 0.458468 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表