劉召,史運(yùn)濤,李書欽,張蔭芬
(1.北方工業(yè)大學(xué)現(xiàn)場總線技術(shù)及自動化北京市重點實驗室,北京,100144;2.中國標(biāo)準(zhǔn)化研究院,北京,100089)
食品安全是影響國民經(jīng)濟(jì)和人民生活的重大問題,隨著經(jīng)濟(jì)社會的快速發(fā)展,食品新技術(shù)的出現(xiàn)以及飲食方式的改變,使得公眾對食品安全問題越來越關(guān)注。目前我國食品安全問題主要在于:(1)難以對食品中可添加危害物進(jìn)行防范;(2)監(jiān)管部門缺少體系化的預(yù)警機(jī)制;(3)對于已發(fā)生的食品事件難以進(jìn)行快速有效的處置。近年來頻頻發(fā)生的食品安全事件嚴(yán)重威脅著人們的健康。引起了國內(nèi)外學(xué)者對食品安全問題的極大關(guān)注,如沈進(jìn)昌等[1]通過構(gòu)建進(jìn)出口食品風(fēng)險評價體系,利用粗糙集理論確定風(fēng)險指標(biāo)權(quán)重并結(jié)合模糊綜合評價方法給出相應(yīng)得風(fēng)險等級;劉巍等[2]通過構(gòu)建食品安全評價指標(biāo)體系,運(yùn)用事故樹原理和網(wǎng)絡(luò)層次分析法對豬肉食品質(zhì)量安全風(fēng)險路徑進(jìn)行溯源。李柯等[3]提出一種基于FTA-BN模型,通過將故障樹和貝葉斯相結(jié)合的方式分析食品鏈中的風(fēng)險因素,達(dá)到控制食品安全風(fēng)險的目的。熊志昂等[4]通過識別食品供應(yīng)鏈上潛在的主要風(fēng)險因素,運(yùn)用層次分析法(AHP)方法來辨識供應(yīng)鏈上的關(guān)鍵風(fēng)險。Lin X等[5]利用布谷鳥搜索算法(CS)實現(xiàn)了基于改進(jìn)隱馬爾可夫模型(HMM)的食品安全動態(tài)風(fēng)險評估。Teyhouee[6]等人通過比較支持向量機(jī)(SVM)和隱馬爾可夫模型(HMM)對食源性疾病暴發(fā)的檢測精度,驗證了隱可夫模型在檢測食源性疾病暴發(fā)方面具有良好的準(zhǔn)確性。
關(guān)聯(lián)規(guī)則算法概念最早是被Agrawal等人在1993年提出[7]。近年來,在警務(wù)情報分析領(lǐng)域應(yīng)用頻繁,通過對一系列犯罪嫌疑人之間的同行同住信息進(jìn)行關(guān)聯(lián)碰撞分析,可以發(fā)現(xiàn)案件潛在的情報線索,幫助警務(wù)人員輔助決策。關(guān)聯(lián)規(guī)則本質(zhì)是以獲取可信的情報規(guī)則作為算法核心,規(guī)則本身是“當(dāng)條件是什么時,結(jié)果就會是什么”的簡單形式。通式可以表示為“if A ?then B”規(guī)則形式,其中A表示前置條件,B表示后置結(jié)果。
關(guān)聯(lián)規(guī)則基本原理主要是對于一個已知的事務(wù)數(shù)據(jù)集,通過預(yù)設(shè)最小支持度和最小置信度閾值,運(yùn)用逐層搜索的迭代方法來尋找符合條件的頻繁項集。假設(shè) I = {i1,i2...im}表示的是事務(wù)數(shù)據(jù)庫中所有可能成員的集合, D ={T1,T2...Tm}表示的是事務(wù)數(shù)據(jù)庫中所有事務(wù)的集合。其中每一個事務(wù)T是項集I的一個子集,如果包含k個元素,表示為k-項集, |D|表示D中的事務(wù)總數(shù),其中X ? T,Y ? T 且X∩Y=?。相關(guān)的定義如下:
定義1.支持度(Support):表示項集{X,Y}在所有事務(wù)集中出現(xiàn)的頻率。
其中, num( X∪Y)表示X和Y同時在事務(wù)集中出現(xiàn)的次數(shù),支持度是對關(guān)聯(lián)規(guī)則重要程度的衡量。
定義2.置信度(Confidence):表示在同時含有X和Y項集的前提下,同含有Y的頻率。
置信度是對關(guān)聯(lián)規(guī)則正確率的衡量。
定義3.強(qiáng)關(guān)聯(lián)規(guī)則:生成的規(guī)則均大于給定的最小支持度(min_sup)和最小置信度(min_conf)稱為強(qiáng)關(guān)聯(lián)規(guī)則。
定義4.頻繁k項集:如果k項集的支持度不小于定義的最小支持度閾值,稱為頻繁k項集。
本文主要研究利用關(guān)聯(lián)規(guī)則來挖掘食品抽檢數(shù)據(jù)中的潛在情報。由于食品抽檢數(shù)據(jù)具有多維特性,并且含有較多的空值,符合稀疏矩陣的特點。非常適合Apriori算法機(jī)制,但是傳統(tǒng)的Apriori算法由于采用逐層搜索的方法,在生成
頻繁項集時,需要反復(fù)掃描數(shù)據(jù)庫,導(dǎo)致模型在尋找長度較大的頻繁項集時,運(yùn)行時間過長,降低了模型的挖掘效率。因此本文引入散列(Hash)機(jī)制,通過減少生成候選頻繁項集的遍歷數(shù)據(jù)集的次數(shù),提高模型的準(zhǔn)確度以及運(yùn)算效率。
基于Hash技術(shù)改進(jìn)Apriori算法處理食品檢測數(shù)據(jù)主要分為兩步,流程如圖1所示。
圖1 改進(jìn)的Apriori算法流程圖
Step1:從食品的事務(wù)數(shù)據(jù)庫中挖掘所有頻繁項集:
結(jié)合食品應(yīng)用場景,并根據(jù)食品數(shù)據(jù)維度,確定利用Hash技術(shù)生成頻繁1-項集、頻繁2-項集以及頻繁3-項集,通過一次遍歷事務(wù)數(shù)據(jù)庫,即可生成候選頻繁1-項集(L1),候選頻繁2-項集(L2)以及候選頻繁3-項集(L3)。并將其暫時存入Hash容器中,根據(jù)標(biāo)準(zhǔn)參數(shù)(minSup*|D|)閾值,對候選項集進(jìn)行篩選,大于標(biāo)準(zhǔn)參數(shù)的保留作為頻繁項集。小于標(biāo)準(zhǔn)參數(shù)則直接排除;然后繼續(xù)采用傳統(tǒng)Apriori算法遞歸策略,來尋找k>3的頻繁k項集;最后對所有的頻繁項集進(jìn)行整合。
Step2:利用Hash技術(shù)尋找到的頻繁項集,根據(jù)最小支持度確定全部的強(qiáng)關(guān)聯(lián)規(guī)則。
本文數(shù)據(jù)來源于2019-2020年全國各地區(qū)的不合格食品抽檢數(shù)據(jù)信息。食品的主要信息包括:食品名稱、生產(chǎn)企業(yè)名稱、生產(chǎn)日期、生產(chǎn)企業(yè)地址、被抽樣單位名稱、被抽樣單位地址、規(guī)格型號、商標(biāo)、生產(chǎn)日期、不合格項目、檢測機(jī)構(gòu)等20種屬性信息。本文應(yīng)用Apriori算法解決的食品安全場景問題如下:
場景一:通過整理不合格食品檢測數(shù)據(jù)樣品,聚焦篩選出肉類食品數(shù)據(jù),挖掘食品小類、規(guī)格型號、生產(chǎn)時間、生產(chǎn)企業(yè)、生產(chǎn)省份以及檢測項目之間的食品安全情報規(guī)則。
場景二:通過整理不合格食品檢測數(shù)據(jù)樣品,聚焦篩選出生產(chǎn)地區(qū)為北京市,檢測項目為菌落總數(shù)、大腸菌群、霉菌的不合格樣品數(shù)據(jù),挖掘食品大類、食品小類、生產(chǎn)時間、生產(chǎn)地區(qū)以及檢測項目之間的食品安全情報規(guī)則。
場景三:通過整理不合格食品檢測數(shù)據(jù)樣品,篩選出由菌落總數(shù)、大腸菌群、霉菌三種強(qiáng)致病因子造成不合格的樣品數(shù)據(jù),挖掘食品大類、食品小類、生產(chǎn)省份以及檢測項目之間的食品安全情報規(guī)則。
根據(jù)食品抽檢數(shù)據(jù)特點可知,一條完整的數(shù)據(jù)大約含有近30多個特征屬性,但是實際上不是所有的屬性都可以作為模型的輸入,如果數(shù)據(jù)屬性過多,會稀釋強(qiáng)相關(guān)的屬性信息,具體處理操作如下:
(1)“生產(chǎn)日期”屬性信息包含年-月-日,使得類別過多,利用季度將時間進(jìn)行限定劃分。如:“2016年3月2日”轉(zhuǎn)化為“第一季度”,“2017年12月1日”轉(zhuǎn)化為“第四季度”。
(2)將規(guī)格型號分為預(yù)包裝和散裝稱重,如“大米:25kg/袋”記為預(yù)包裝,“鮮菜:計量稱重”記為散裝稱重;
(3)生產(chǎn)企業(yè)名稱根據(jù)規(guī)模特點劃分為“公司”、“工廠”、“超市”、“店鋪”四種類型,如“河北達(dá)利食品有限公司”劃分為公司。
場景一數(shù)據(jù)特征選擇:處理后數(shù)據(jù)按照肉類食品類篩選后,得到不合格數(shù)據(jù)樣品422批次,選擇食品小類、規(guī)格型號、生產(chǎn)時間、生產(chǎn)企業(yè)、生產(chǎn)省份以及檢測項目特征屬性,具體如表1所示。
表1 場景1預(yù)處理后的食品檢測數(shù)據(jù)
場景二數(shù)據(jù)特征選擇:根據(jù)食品不合格檢測數(shù)據(jù),依北京市為篩選條件,整理出涵蓋各食品類別的1614條數(shù)據(jù)。選擇食品大類、食品細(xì)類、抽樣地區(qū)、檢測項目作為特征屬性,其中檢測項目包括:菌落總數(shù)、大腸菌群、霉菌;N代表不合格、Y代表合格。挖掘北京市不合格食品數(shù)據(jù)屬性間的情報規(guī)則。具體如表2所示。
表2 場景2預(yù)處理后的食品檢測數(shù)據(jù)
場景三數(shù)據(jù)特征選擇:根據(jù)不合格食品屬性間的挖掘目標(biāo),通過分析影響細(xì)菌性食品安全事件的強(qiáng)關(guān)聯(lián)屬性,整理篩選出3234條可用于真菌毒素分析的數(shù)據(jù)信息。最終將屬性確定為食品大類、食品小類、生產(chǎn)省份以及檢測項目。具體數(shù)據(jù)如表3所示。
表3 場景3預(yù)處理后的食品檢測數(shù)據(jù)
關(guān)聯(lián)規(guī)則模型的實驗環(huán)境為window10,編程語言為Python3,編譯環(huán)境為jupyter notebook。傳統(tǒng)Apriori算法與改進(jìn)的Apriori算法運(yùn)行時間對比如圖2所示。
由圖2所示,基于Hash技術(shù)改進(jìn)Apriori算法在運(yùn)行時間上得到了顯著的提升,具體的場景實驗結(jié)果與分析如下:
圖2 三種場景下的模型運(yùn)行時間對比
(1)場景1實驗結(jié)果與分析
當(dāng)最小支持度S=10,最小置信度C=0.8時,可以得到227條食品情報規(guī)則。運(yùn)行結(jié)果如圖4-3所示,挖掘到有價值的情報規(guī)則如下:
規(guī)則1:{檢測項目=“菌落總數(shù)”,生產(chǎn)時間=“第二季度”,規(guī)格型號=“預(yù)包裝”,食品小類=“醬鹵肉制品”}-->{生產(chǎn)企業(yè)類型=“公司”},置信度為0.87。
規(guī)則2:{生產(chǎn)省份=“廣東”,生產(chǎn)企業(yè)類型=“店鋪”,生產(chǎn)時間=“第三季度”,規(guī)格型號=“散裝稱重”}-->{檢測項目=“胭脂紅及其鋁色淀”};置信度為1。
規(guī)則3:{生產(chǎn)企業(yè)類型=“公司”,規(guī)格型號=“預(yù)包裝”,生產(chǎn)省份 =“重慶”,食品小類=“醬鹵肉制品”}-->{檢測項目=“菌落總數(shù)”};置信度為0.94。
規(guī)則4:{生產(chǎn)企業(yè)類型=“公司”,規(guī)格型號=“預(yù)包裝”,生產(chǎn)時間 =“第三季度”,食品小類=“醬鹵肉制品”}-->{檢測項目=“菌落總數(shù)”};置信度為1。
由以上食品安全情報規(guī)則可以分析出肉類食品問題及行動措施:(1)對于醬鹵肉制品,不合格原因主要是菌落總數(shù)不達(dá)標(biāo),主要集中在第三季度,且重慶市問題較為頻繁。監(jiān)管部門應(yīng)該加強(qiáng)在第三季度對醬鹵肉制品中菌落總數(shù)的抽檢工作;(2)對于廣東省肉類食品的不合格原因主要集中出現(xiàn)在一些小作坊胭脂紅及其鋁色淀含量不達(dá)標(biāo),一般在第三季度比較頻發(fā)。監(jiān)管部門應(yīng)該將小作坊作為重點抽檢對象。
圖3 場景1運(yùn)行結(jié)果
(2)場景2實驗結(jié)果與分析
同上,當(dāng)最小支持度S=10,最小置信度C=0.8時。運(yùn)行結(jié)果如圖4所示,有價值的情報規(guī)則總結(jié)如下:
圖4 場景2運(yùn)行結(jié)果
規(guī)則1:{生產(chǎn)地區(qū)=“北京房山區(qū)”,菌落總數(shù)=“Y”}-->{生產(chǎn)時間=“第一季度”},置信度為0.82;
規(guī)則2:{大腸菌群=“N”,食品大類=“烘焙食品”}-->{生產(chǎn)時間=“第一季度”},置信度為0.88;
規(guī)則3:{大腸菌群=“N”,霉菌=“Y”,食品大類=“烘焙食品”}-->{生產(chǎn)時間=“第一季度”},置信度為0.86。
發(fā)現(xiàn)的問題以及應(yīng)對措施為:對于北京市房山區(qū)在第一季度食品問題較為嚴(yán)重,主要原因是大腸菌群含量不達(dá)標(biāo),因此應(yīng)該加強(qiáng)在第一季度對大腸菌群的抽檢力度。
(3)場景3實驗結(jié)果與分析
設(shè)定最小支持度S=10,最小置信度C=0.7。運(yùn)行結(jié)果如圖5所示:可得到以下幾種對于細(xì)菌性食品安全事件最有價值的規(guī)則信息:
圖5 場景3運(yùn)行結(jié)果
規(guī)則1:{食品大類=“飲料”,食品小類=“包裝飲用水”}-->{檢測項目=“菌落總數(shù)”},置信度=0.75;
規(guī)則2:{食品小類=“水產(chǎn)加工品”,食品大類=“水產(chǎn)及其制品”}-->{檢測項目=“菌落總數(shù)”},置信度=0.76;
規(guī)則3:{食品大類=“餐飲環(huán)節(jié)產(chǎn)品”,食品小類=“餐飲具”}-->{檢測項目=“大腸菌群”};置信度=0.923;
規(guī)則4:{食品小類=“醬鹵肉制品”,食品大類=“肉及肉制品”-->{檢測項目=“菌落總數(shù)”};置信度=0.794。
由以上4條規(guī)則可知,菌落總數(shù)對飲用水、水產(chǎn)加工品以及肉制品的危害程度較高,應(yīng)作為監(jiān)管人員檢測食品的重點對象,餐飲具不合格原因主要是大腸菌群不達(dá)標(biāo),餐飲行業(yè)應(yīng)該加強(qiáng)做好消毒防護(hù)措施。
本文通過分析海量的食品安全抽檢數(shù)據(jù),利用Hash技術(shù)改進(jìn)的關(guān)聯(lián)規(guī)則挖掘算法,建立了三種適用于不同食品安全問題場景下的情報分析模型,對食品抽檢數(shù)據(jù)進(jìn)行挖掘,能夠挖掘出有價值、有意義的情報規(guī)則。并結(jié)合具體的場景獲取的規(guī)則,給出監(jiān)管部門相應(yīng)的執(zhí)行措施,對食品安全監(jiān)督管理工作具有指導(dǎo)意義。