張向良
摘 要:在新的機(jī)型投入生產(chǎn)之前,需要安排每個(gè)零件的工藝路線,如果該工作能實(shí)現(xiàn)自動(dòng)化,就可以事先快速地給出一個(gè)基本正確的方案,為后續(xù)的并行協(xié)調(diào)提供方便。文章將介紹使用機(jī)器學(xué)習(xí)技術(shù)建立工藝路線分工模型的思路和方法,首先是任務(wù)性質(zhì)的分析、數(shù)據(jù)清洗、特征工程、one-hot編碼等準(zhǔn)備工作,然后使用隨機(jī)森林算法訓(xùn)練工藝分工預(yù)測(cè)模型,對(duì)模型的性能進(jìn)行審查,以及模型學(xué)到的內(nèi)容進(jìn)行解釋?zhuān)詈髮?duì)更先進(jìn)的機(jī)器學(xué)習(xí)技術(shù)在工藝路線分工中的應(yīng)用進(jìn)行展望。
關(guān)鍵詞:工藝路線;機(jī)器學(xué)習(xí);隨機(jī)森林;特征工程;one-hot編碼
中圖分類(lèi)號(hào):TG506 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):2095-2945(2019)21-0091-02
Abstract: Before the new machine is put into production, it is necessary to arrange the process route of each part. If the work can be automated, a basic and correct scheme can be given quickly in advance, so as to provide convenience for the subsequent parallel coordination. This paper will introduce the ideas and methods of using machine learning technology to establish the model of process route division of labor. First of all, it is the preparatory work of task nature analysis, data cleaning, feature engineering, one-hot coding and so on. Then, the stochastic forest algorithm is used to train the process division prediction model, the performance of the model is reviewed, and the contents of the model are explained. Finally, the application of more advanced machine learning technology in the process route division of labor is prospected.
Keywords: process route; machine learning; random forest; feature engineering; one-hot coding
在新機(jī)型投入制造之前,需要安排每個(gè)零件的工藝路線,如果能實(shí)現(xiàn)工藝路線分工自動(dòng)化,就可以事先快速地給出一個(gè)基本正確的方案,為后續(xù)的并行協(xié)調(diào)提供方便。實(shí)現(xiàn)該項(xiàng)工作的自動(dòng)化主要有兩種思路,即基于硬編碼規(guī)則和基于數(shù)據(jù)分析技術(shù)。基于硬編碼規(guī)則的系統(tǒng)源于一個(gè)容易想到的方法——將人工分工所遵循的規(guī)則編入程序中,輸入待預(yù)測(cè)的零件數(shù)據(jù),程序給出工藝路線結(jié)果。這種方法難以解決兩個(gè)問(wèn)題,一是規(guī)則集很難找全,人工梳理規(guī)則有所遺漏在所難免;二是硬編碼的規(guī)則在多變的實(shí)際狀況面前非常脆弱、容易失效且維護(hù)困難?;跀?shù)據(jù)分析的系統(tǒng)通過(guò)預(yù)測(cè)模型提供了一種概率規(guī)則,因此更簡(jiǎn)單、更實(shí)用,雖然也面臨泛化性的困難及對(duì)數(shù)據(jù)集的較高要求,但隨著數(shù)據(jù)資源的積累、算力的提升與更有效的算法的出現(xiàn),這些問(wèn)題得以解決。本文將使用機(jī)器學(xué)習(xí)技術(shù),首先進(jìn)行數(shù)據(jù)準(zhǔn)備工作,然后訓(xùn)練工藝分工預(yù)測(cè)模型,對(duì)模型進(jìn)行審查,最后對(duì)機(jī)器學(xué)習(xí)在本領(lǐng)域的應(yīng)用進(jìn)行展望。
本文所述的方法使用python實(shí)現(xiàn)。
1 任務(wù)分析
在建立機(jī)器學(xué)習(xí)模型前,需要對(duì)任務(wù)和所使用的數(shù)據(jù)集進(jìn)行理解。本文所用的工藝路線分工數(shù)據(jù)集包含11個(gè)特征274340個(gè)樣本,其形式如表1。從業(yè)務(wù)經(jīng)驗(yàn)可知,各生產(chǎn)單位的設(shè)備與工藝基礎(chǔ)不同,所能加工的零件也不同,人工分配工藝路線就是根據(jù)零件的材料、形狀、加工方式等信息進(jìn)行的。數(shù)據(jù)集中包含材料的牌號(hào)和狀態(tài),材料規(guī)格很大程度上決定著零件的形狀與加工方式,并且名稱(chēng)、單機(jī)數(shù)量與重量等特征也能一定程度地反映零件的狀況。另外,該數(shù)據(jù)集包含了多個(gè)較新機(jī)型各部位零件的數(shù)據(jù),數(shù)據(jù)量充足且樣本分布對(duì)問(wèn)題空間比較典型。任務(wù)的輸出(工藝路線)是一個(gè)序列,本文將序列的每一種情形作為一個(gè)類(lèi)別,這樣原任務(wù)便轉(zhuǎn)換成了一個(gè)具有上百個(gè)類(lèi)別的多分類(lèi)任務(wù)。輸入部分有10個(gè)特征,其中的缺失值應(yīng)予以填充,內(nèi)容不規(guī)范的標(biāo)簽特征應(yīng)進(jìn)行清洗,還有的特征其內(nèi)容是復(fù)合的。這些問(wèn)題將在下面的數(shù)據(jù)準(zhǔn)備中處理。
2 數(shù)據(jù)準(zhǔn)備
多分類(lèi)任務(wù)屬于有監(jiān)督學(xué)習(xí),需要保證訓(xùn)練集有標(biāo)注,所以應(yīng)刪除沒(méi)有標(biāo)注的樣本。這些操作可以使用pandas的布爾遮罩實(shí)現(xiàn)(標(biāo)注中若有奇異值也可以用類(lèi)似操作剔除):
import pandas as pd
route_data = pd.read_csv("./test3.csv", encoding="gbk")
route_data = route_data[route_data[u"工藝路線"].notnull()]
對(duì)缺失值應(yīng)進(jìn)行填充,這里采用的策略是:將多項(xiàng)分布特征的空值標(biāo)簽型填充為新值“#”;將數(shù)值型特征的空值填充為0;將二項(xiàng)分布特征的空值填充為出現(xiàn)頻率最高的值。以“名稱(chēng)”、“單機(jī)數(shù)量”和“對(duì)稱(chēng)件”三個(gè)特征為例:
route_data.isnull().any()
route_data[u"名稱(chēng)"].fillna("#")
route_data[u"單機(jī)數(shù)量"].fillna(0)
route_data[u"對(duì)稱(chēng)件"].fillna("N")
數(shù)據(jù)集中含有標(biāo)簽特征,以“名稱(chēng)”為例,口蓋類(lèi)零件的這一特征值可能為“口蓋、艙口蓋、艙口蓋(右)、小口蓋、右邊條13框-14框口蓋”等。這些標(biāo)簽的含義基本相同(都是口蓋),但在one-hot編碼中會(huì)被映射為完全無(wú)關(guān)的量,這會(huì)導(dǎo)致不應(yīng)有的信息損失,所以將每個(gè)標(biāo)簽特征統(tǒng)一成一系列枚舉值,并更名為“類(lèi)型”。“編號(hào)”特征表達(dá)的信息過(guò)于細(xì)致,可將其處理成“號(hào)段”,使之有更好的泛化性。“材料規(guī)格”特征表達(dá)的信息是復(fù)合的,如“XC211-114”表示某一規(guī)格的型材,δ1.2為板料,而d6.0為棒料,且這些特征值的數(shù)據(jù)類(lèi)型也不一致。應(yīng)將復(fù)合特征按表達(dá)的信息類(lèi)別不同拆分成多個(gè)特征,其中有數(shù)值的特征清理成數(shù)值型,標(biāo)簽特征清理成枚舉型。
在上述工作完成后,用于建立模型的數(shù)據(jù)集應(yīng)有如表2的特征和數(shù)據(jù)類(lèi)型。
由于大多數(shù)機(jī)器學(xué)習(xí)算法只能進(jìn)行數(shù)值運(yùn)算,無(wú)法直接處理帶有標(biāo)簽特征的數(shù)據(jù),因此需要對(duì)標(biāo)簽特征進(jìn)行編碼。本文采用one-hot編碼方式,即將n個(gè)標(biāo)簽作為n個(gè)新的特征,樣本在其原標(biāo)簽對(duì)應(yīng)的特征處值為1,其余n-1個(gè)位置為0。使用pandas可以方便地完成這一變換:
pd.get_dummies(route_data)
需要注意的是,應(yīng)對(duì)訓(xùn)練集、驗(yàn)證集和測(cè)試集作相同的變換,否則會(huì)導(dǎo)致數(shù)據(jù)集形狀不一致、串列等毀滅性問(wèn)題。在實(shí)際應(yīng)用中,可以定義一個(gè)sklearn變換器并在模型中使用管線來(lái)保證這一點(diǎn)。
3 建立模型
如前所述,工藝路線分工是根據(jù)零件的材料、形狀等信息進(jìn)行的,于是推測(cè)邏輯模型在本任務(wù)中會(huì)有更好的表現(xiàn)?,F(xiàn)使用90%的數(shù)據(jù)作為訓(xùn)練集,訓(xùn)練一個(gè)隨機(jī)森林模型,該模型在訓(xùn)練集上的5折交叉驗(yàn)證結(jié)果如圖1??梢钥闯瞿P偷脑u(píng)分集中在0.903附近,說(shuō)明模型有著較高準(zhǔn)確率和很好的泛化性。然后在測(cè)試集上評(píng)估該模型,得到各類(lèi)別加權(quán)平均準(zhǔn)確率、召回率與f1值均為0.91,該結(jié)果與在訓(xùn)練集上的交叉驗(yàn)證結(jié)果比較一致。對(duì)于訓(xùn)練的模型,可以輸出各個(gè)特征的重要性(以>=0的浮點(diǎn)數(shù)表示,數(shù)值越大說(shuō)明越重要)。最重要的前10個(gè)特征如表3。
上述特征是編碼后的特征,可以看出零件的BOM層級(jí)、重量、單機(jī)數(shù)量、有無(wú)對(duì)稱(chēng)件、“管”類(lèi)零件和原料為板料的零件有著較強(qiáng)的特征,運(yùn)用這些特征能夠最大程度地將零件分類(lèi)。同理,可以觀察到一些特征的重要性非常小,如以“XC_”開(kāi)頭的特征,說(shuō)明模型認(rèn)為不同型材品種對(duì)工藝路線分工幾乎沒(méi)有幫助,于是可以在特征工程中將這些特征處理成取值為0或1的int64類(lèi)型,這可以降低編碼后的數(shù)據(jù)維度。
使用處理后的數(shù)據(jù)訓(xùn)練模型會(huì)發(fā)現(xiàn),3個(gè)指標(biāo)依然是0.91,說(shuō)明這種特征選擇是合理的。
4 結(jié)論
本文根據(jù)各個(gè)特征的特性,通過(guò)數(shù)據(jù)填充、清洗、拆分等操作形成了工藝路線分工數(shù)據(jù)集,在保證泛化性的情況下取得了91%的準(zhǔn)確率,配合自動(dòng)化的數(shù)據(jù)處理機(jī)制,可以部署在工程實(shí)際中。
然而本文所用的方法也受到了多種因素的限制。從輸出形式來(lái)說(shuō),本文將分工中出現(xiàn)的每一種情況作為一個(gè)類(lèi)別,這忽略了各車(chē)間工藝的相關(guān)性,也無(wú)法很好地反應(yīng)各車(chē)間的“分工順序”概念(如一個(gè)能夠分到化銑廠的零件有很大概率會(huì)先分到鈑金廠);對(duì)于標(biāo)簽特征的處理,本文是清洗后進(jìn)行one-hot編碼,一來(lái)自動(dòng)化的清洗過(guò)程有賴(lài)于人工定義,二來(lái)one-hot編碼本身也會(huì)導(dǎo)致標(biāo)簽之間的關(guān)聯(lián)信息流失。使用更先進(jìn)的RNN模型配合詞嵌入會(huì)使特征提取與預(yù)測(cè)機(jī)制變得更合理,也能相當(dāng)程度地減少特征工程的工作量。另外,本文用于訓(xùn)練模型的數(shù)據(jù)從BOM中獲取,一些有助于分類(lèi)的信息無(wú)法被采集到是無(wú)可避免的,從表達(dá)信息更完整的CAD模型中提取信息將是一個(gè)好的思路。
參考文獻(xiàn):
[1][英]Peter Flach.機(jī)器學(xué)習(xí)[M].段菲,譯.人民郵電出版社,2016.
[2][美]Peter Harrington.機(jī)器學(xué)習(xí)實(shí)戰(zhàn)[M].李銳等,譯.人民郵電出版社,2013.
[3][美]Jake VanderPlas.Python數(shù)據(jù)科學(xué)手冊(cè)[M].陶俊杰,等,譯.人民郵電出版社,2018.