穆榮斌+仲梁維
摘要:隨著企業(yè)信息系統(tǒng)集成的應(yīng)用,數(shù)據(jù)庫中積累了大量分散但有效的數(shù)據(jù)。如何從大量數(shù)據(jù)中挖掘出有效的決策信息,從而帶領(lǐng)企業(yè)快速發(fā)展,成為企業(yè)信息化發(fā)展進(jìn)程中一個(gè)至關(guān)重要的問題。提出一種基于K-均值聚類算法的數(shù)據(jù)挖掘技術(shù),并為某制造企業(yè)開發(fā)了信息系統(tǒng)集成平臺(tái),輔助決策者制定合理方案。
關(guān)鍵詞:數(shù)據(jù)挖掘;信息系統(tǒng)集成;K均值算法;聚類算法;BOM系統(tǒng)
中圖分類號(hào):TP391
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):16727800(2017)004018503
0引言
充分利用企業(yè)信息系統(tǒng)集成中所產(chǎn)生的生產(chǎn)業(yè)務(wù)信息數(shù)據(jù)成為企業(yè)的關(guān)鍵技術(shù),數(shù)據(jù)挖掘技術(shù)則是企業(yè)系統(tǒng)中使用的技術(shù)之一。數(shù)據(jù)挖掘指對(duì)數(shù)據(jù)庫中的海量數(shù)據(jù)進(jìn)行過程復(fù)雜的數(shù)據(jù)分析,從而獲得其中隱含信息的過程。根據(jù)用戶需求,選擇比較切合的數(shù)據(jù)挖掘算法,成為挖掘技術(shù)成功的關(guān)鍵。通過研究各種數(shù)據(jù)挖掘算法,筆者在眾多算法中選擇了K均值算法作為本文數(shù)據(jù)挖掘的基礎(chǔ)算法。
1K均值算法概述
1.1K均值算法概念
聚類問題是將給定的數(shù)據(jù)集合D劃分成一組聚類:{C1,C2,…},Ci∈D,使不同種類中的數(shù)據(jù)盡可能不相似(或距離較遠(yuǎn)),同一種類中的數(shù)據(jù)盡可能相似(或距離較近)。聚類是一種無監(jiān)督的學(xué)習(xí),所謂無監(jiān)督學(xué)習(xí)指事先并不知道要找的內(nèi)容,即沒有目標(biāo)變量,它將相似的對(duì)象歸到同一個(gè)簇中[13]。K均值(Kmeans)算法在聚類算法中使用最為廣泛。首先根據(jù)分類的個(gè)數(shù)k,隨機(jī)地選取k個(gè)初始的聚類中心,當(dāng)然這個(gè)k值是難以確定的,并把每個(gè)對(duì)象分配給離它最近的中心,分別得到起始的聚類點(diǎn)。然后,將當(dāng)前每個(gè)聚類的中心作為新的聚類中心,并把每個(gè)對(duì)象重新分配到最近的中心。不斷地循環(huán)迭代,直到目標(biāo)函數(shù)的最小值,即最終的聚類中心點(diǎn)沒有移動(dòng)。其中,目標(biāo)函數(shù)通常采用平方誤差準(zhǔn)則,即:其中,E表示所有聚類對(duì)象的平方誤差和,S是聚類對(duì)象,Mi是類Ci的各聚類對(duì)象的平均值,即:
其中,|Ci|表示類Ci的聚類對(duì)象數(shù)目。每一次迭代時(shí),每一個(gè)點(diǎn)都要計(jì)算一遍它和各聚類中心的距離,并取最短距離的類作為該點(diǎn)所屬的類。直到E獲取最小值,最終表現(xiàn)為最后的聚類中心無法移動(dòng)。一般k的典型取值為2~10。
1.2K均值算法計(jì)算模型
假設(shè)在一片小區(qū)域中有若干數(shù)據(jù)點(diǎn),如圖1所示。先假設(shè)k=2,即最終這些數(shù)據(jù)點(diǎn)會(huì)聚類成兩個(gè)類。K均值算法具體解釋如下: (1)由于k=2,任意的兩個(gè)數(shù)據(jù)點(diǎn)被選作初始類的聚類中心(圖中用點(diǎn)F、G表示),如圖1(a)所示。 (2)將其余的各個(gè)點(diǎn)分配到距離最近的聚類中心點(diǎn)(本例中為F點(diǎn)、G點(diǎn))所代表的類中,即求圖中所有點(diǎn)到各個(gè)聚類中心的距離。如果Si距離Ci近, 則Si屬于Ci聚類。如圖1(b)所示,A、B點(diǎn)與F點(diǎn)的距離相對(duì)G點(diǎn)更近,所以屬于F點(diǎn)聚類,C、D、E點(diǎn)與G點(diǎn)相對(duì)F點(diǎn)距離更近,所以屬于G點(diǎn)聚類。 (3)將聚類中心點(diǎn)F點(diǎn)、G點(diǎn)移動(dòng)到“自己”的聚類中心,如圖1(c)、圖1(d)所示。 (4)重復(fù)步驟(2)、(3),直到每個(gè)類中的聚類對(duì)象(如圖1(e)中的點(diǎn))不再重新分布為止,第一個(gè)點(diǎn)聚合了A、B、C,第二個(gè)點(diǎn)聚合了D、E,此時(shí)重復(fù)循環(huán)的迭代過程結(jié)束。
2.1系統(tǒng)概述
通過對(duì)K均值算法的介紹及其算法處理模型,筆者結(jié)合某制造型企業(yè)的信息化系統(tǒng)平臺(tái)用戶實(shí)際需求建立數(shù)據(jù)倉庫,在數(shù)據(jù)倉庫的基礎(chǔ)上使用數(shù)據(jù)挖掘中的K均值算法對(duì)大量數(shù)據(jù)進(jìn)行潛在信息的挖掘,并開發(fā)出基于K均值算法的挖掘器,輔助決策者進(jìn)行決策。假如數(shù)據(jù)庫中的數(shù)據(jù)關(guān)于產(chǎn)品信息生成了k個(gè)聚類中心,即k個(gè)中心點(diǎn)point,將其余的各個(gè)點(diǎn)分配到距離最近的聚類中心點(diǎn)所代表的類中,距離為distance,并獲取距聚類中心距離最小的距離min2,將該元素歸類于距離聚類中心點(diǎn)最近的那個(gè)聚類中,核心代碼如下:
private void clusterSet() { float[] distance = new float[m]; for (int l = 0; l < length; l++) { for (int e = 0; e < m; e++) { distance[e] = distance(data.get(l), point.get(e)); } int min2 = min1(distance); cluster.get(min2).add(data.get(l)); } } //將聚類中心點(diǎn)移動(dòng)到自己的聚類中心,求兩點(diǎn)誤差平方 private float result(float[] point1, float[] point) { float x = point1[0] - point[0]; float y = point1[1] - point[1]; float result1 = x * x + y * y; return result1; } //利用上述“求兩點(diǎn)誤差平方”的方法,計(jì)算誤差平方和準(zhǔn)則 private void result2() { float a1 = 0; for (int r = 0; r < cluster.size(); r++) { for (int j = 0; j < cluster.get(r).size(); j++) { a1 += result(cluster.get(r).get(j), point.get(r)); } } sum.add(a1); } //設(shè)置新的聚類中心 private void setNewPoint() { for (int h = 0; h < m; h++) { int n = cluster.get(h).size(); if (n != 0) { float[] newpoint = { 0, 0 }; for (int k = 0; k < n; k++) { newpoint[0] += cluster.get(h).get(k)[0]; newpoint[1] += cluster.get(h).get(k)[1]; } newpoint[0] = newpoint[0] / n; newpoint[1] = newpoint[1] / n; point.set(h, newpoint); } } } //對(duì)第2、3步進(jìn)行重復(fù)迭代,直至得到算法最終結(jié)果 private void kmeans() { init(); while (true) { clusterSet(); result2(); if (n != 0) { if (sum.get(n) - sum.get(n - 1) == 0) { break; } } setNewPoint(); n++; cluster.clear(); cluster = cluster1(); } }
2.2零部件市場(chǎng)需求分析
在銷售系統(tǒng)“零部件市場(chǎng)需求分析”模塊,主要針對(duì)銷售信息以及產(chǎn)品信息所建立的數(shù)據(jù)倉庫中的信息進(jìn)行數(shù)據(jù)挖掘。合同中記載了所銷售的產(chǎn)品圖號(hào)、數(shù)量、客戶相關(guān)信息等,同時(shí)根據(jù)產(chǎn)品圖號(hào)可以得到產(chǎn)品BOM信息。 產(chǎn)品BOM信息即該產(chǎn)品的設(shè)計(jì)信息,包括零件信息、物料進(jìn)貨方式及加工作業(yè)方式、工藝信息、圖紙信息、層次碼、總數(shù)量等。其中零件信息主要有:零件圖號(hào)、零件名稱、材料、牌號(hào)、外形尺寸等;物料進(jìn)貨方式及加工作業(yè)方式主要包括:物料類別(如:配套件、緊固件)、物料進(jìn)場(chǎng)狀態(tài)(如:成品、半成品、毛胚)、加工方式(如:自加工、外加工)、加工內(nèi)容(如:金工、電工);工藝信息即零部件加工的工藝信息;圖紙信息包括圖紙幅面等;層次碼主要用來標(biāo)注該零部件在產(chǎn)品中的所處位置;總數(shù)量即表明該零部件在產(chǎn)品中該層次碼下的個(gè)數(shù)。 相同產(chǎn)品可能會(huì)有處于不同層次的相同零部件,不同產(chǎn)品可能會(huì)有相同零部件。因此,在所建立的數(shù)據(jù)倉庫基礎(chǔ)上,使用數(shù)據(jù)挖掘技術(shù)挖掘出查詢條件,從銷售的產(chǎn)品中具體細(xì)化到銷售需求較多的零部件,從而在企業(yè)決策時(shí)察覺出該情況。通過針對(duì)性地制定預(yù)投生產(chǎn)計(jì)劃、增加庫存,能夠幫助企業(yè)提高生產(chǎn)效率,對(duì)于市場(chǎng)快速反應(yīng),以提高市場(chǎng)占有率。 對(duì)于該部分功能,首先可以進(jìn)行條件查詢。查詢屬性有:產(chǎn)品圖號(hào)、產(chǎn)品型號(hào)、代號(hào)、名稱、規(guī)格尺寸、長度寬度、材料、牌號(hào)、年份和客戶編號(hào)。 從查詢屬性看,這是多種搜索條件的組合;從數(shù)據(jù)挖掘角度看,這是在K-均值聚類算法設(shè)計(jì)的數(shù)據(jù)倉庫基礎(chǔ)上開發(fā)出來的一個(gè)數(shù)據(jù)挖掘工具。此項(xiàng)功能設(shè)計(jì)時(shí)是從月份出發(fā),將每年的銷量按照月份呈現(xiàn),因此“年份”是必選項(xiàng),其余條件用戶可以自由組合。例如:選擇“2012年”,查詢結(jié)果如圖2所示。
該圖表示在2012年的銷售產(chǎn)品里對(duì)零部件數(shù)量進(jìn)行匯總的結(jié)果。通過該數(shù)據(jù)挖掘器,提出了銷量最領(lǐng)先的4個(gè)零部件。曲線代表其在各月的銷售總數(shù)及市場(chǎng)需求總數(shù),單位以“百”計(jì)。每條曲線代表的零部件圖號(hào)在圖右側(cè)進(jìn)行了說明。該表示方法直觀、清晰,可以給決策者提供明確的零部件市場(chǎng)需求變化曲線圖。通過聚類結(jié)果可知,“零件圖號(hào)”為“8UE.016.0211”的零件,從八月開始銷量減少,并且其它3種零件在六月開始需求量變大,從而可使決策者在來年制定更合理的方案,以提高企業(yè)競(jìng)爭(zhēng)力。
2.3廢料統(tǒng)計(jì)情況分析
廢料統(tǒng)計(jì)情況分析主要是針對(duì)生產(chǎn)中由于工人誤操作、材料劣質(zhì)、機(jī)器故障等各種原因造成所領(lǐng)物料報(bào)廢,需要重新領(lǐng)料進(jìn)行加工的情況進(jìn)行統(tǒng)計(jì)分析。 物料是一個(gè)統(tǒng)稱,它包括可以直接領(lǐng)的成品、需要再加工的半成品,以及需要加工的原材料。因此,對(duì)于物料有一個(gè)物料編碼,專門對(duì)所有可領(lǐng)的成品、半成品、原材料進(jìn)行唯一標(biāo)示。物料編碼根據(jù)零件圖號(hào)、零件名稱、材料、牌號(hào)、外形尺寸、物料進(jìn)場(chǎng)狀態(tài)、物料類別、加工方式8個(gè)字段進(jìn)行唯一性區(qū)分。根據(jù)編碼方式,產(chǎn)生唯一的物料編碼,例如“A00B021”。該企業(yè)的物料有“定額”和“非定額”兩種情況?!岸~”即可以用個(gè)數(shù)來統(tǒng)計(jì)的零部件物料;“非定額”指無法用個(gè)數(shù)來統(tǒng)計(jì)的物料,如:5米長的銅線等。具體而言,本文主要研究針對(duì)某個(gè)工作令從生產(chǎn)開始到生產(chǎn)結(jié)束,所有定額物料的生產(chǎn)料廢情況。在工作令系統(tǒng)和領(lǐng)料單系統(tǒng)的基礎(chǔ)數(shù)據(jù)庫上建立數(shù)據(jù)倉庫。工作令系統(tǒng)的數(shù)據(jù)庫中存有工作令號(hào)、起始生產(chǎn)日期、結(jié)束生產(chǎn)日期及其它工作令的基本信息。領(lǐng)料單系統(tǒng)數(shù)據(jù)庫中的廢料表中存有料廢的物料編碼、材料、數(shù)量等信息。查詢屬性有:工作令號(hào)、合同號(hào)、起始時(shí)間和終止時(shí)間。 填入工作令號(hào)“2B7-1D044205”,點(diǎn)擊“查詢”按鈕,會(huì)通過數(shù)據(jù)挖掘方法統(tǒng)計(jì)該工作令下的所有零件材料料廢情況,如表1所示。
表1清晰表明了該工作令號(hào)“2B7-1D044205”中各個(gè)物料損失的比重。從表中可以看出,以廢料“A03B004”、
“D03E334”和“E17B231”為聚類中心的廢料占多數(shù),從而可以使企業(yè)決策者從這些材料損失中發(fā)現(xiàn)問題,分析物料損耗原因,如:采購質(zhì)量問題、工人操作失誤,還是其它可避免的各類原因。因此,該基于數(shù)據(jù)倉庫的數(shù)掘挖掘器,有利于輔助企業(yè)決策者從實(shí)際生產(chǎn)中找出各類潛在問題,從而制定合理的政策,降低生產(chǎn)損失,提高企業(yè)競(jìng)爭(zhēng)力。
3結(jié)語
本文采用數(shù)據(jù)挖掘技術(shù)對(duì)數(shù)據(jù)庫中積累的大量數(shù)據(jù)進(jìn)行了分析處理,系統(tǒng)雖然實(shí)現(xiàn)了將基于K均值算法的數(shù)據(jù)挖掘技術(shù)應(yīng)用于信息化系統(tǒng)集成平臺(tái)中,但也只是實(shí)現(xiàn)了部分輔助決策功能。根據(jù)企業(yè)的具體使用情況,決策者肯定不會(huì)滿足于系統(tǒng)中已經(jīng)提供的決策支持功能,如何更近一步地發(fā)揮系統(tǒng)集成能力,開發(fā)更多決策支持功能,提高數(shù)據(jù)倉庫查詢速度,以滿足企業(yè)決策者更多需求,是下一階段研究的主要方向。
參考文獻(xiàn):
[1]王欣,徐騰飛,唐連章,等.SQL Server2005數(shù)據(jù)挖掘?qū)嵗治鯷M].北京:中國水利水電出版社,2008:15.
[2]李銳,李鵬,曲亞東,等.機(jī)器學(xué)習(xí)實(shí)踐[M].北京:人民郵電出社,2013:184199.
[3]彭木根.數(shù)據(jù)倉庫技術(shù)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2002:321.
[4]陳文偉.數(shù)據(jù)倉庫與數(shù)據(jù)挖掘教程[M].第2版.北京:清華大學(xué)出版社,2011:190.
[5]孫水華,趙釗林,劉建華.數(shù)據(jù)倉庫與數(shù)據(jù)挖掘技術(shù)[M].北京:清華大學(xué)出版社,2012:122.
[6]李晶,陳驥.數(shù)據(jù)挖掘技術(shù)對(duì)ERP實(shí)施的重要性[J].福建電腦,2008(8):6061.
[7]余臘生,李強(qiáng).數(shù)據(jù)挖掘在質(zhì)量管理系統(tǒng)中的應(yīng)用研究[D].長沙:中南大學(xué),2010.
[8]范明,孟小峰.數(shù)據(jù)挖掘概念與技術(shù)[M].北京:機(jī)械工業(yè)出版社,2001:150.
(責(zé)任編輯:黃?。?