劉召,史運濤,李書欽,張蔭芬
(1.北方工業大學現場總線技術及自動化北京市重點實驗室,北京,100144;2.中國標準化研究院,北京,100089)
食品安全是影響國民經濟和人民生活的重大問題,隨著經濟社會的快速發展,食品新技術的出現以及飲食方式的改變,使得公眾對食品安全問題越來越關注。目前我國食品安全問題主要在于:(1)難以對食品中可添加危害物進行防范;(2)監管部門缺少體系化的預警機制;(3)對于已發生的食品事件難以進行快速有效的處置。近年來頻頻發生的食品安全事件嚴重威脅著人們的健康。引起了國內外學者對食品安全問題的極大關注,如沈進昌等[1]通過構建進出口食品風險評價體系,利用粗糙集理論確定風險指標權重并結合模糊綜合評價方法給出相應得風險等級;劉巍等[2]通過構建食品安全評價指標體系,運用事故樹原理和網絡層次分析法對豬肉食品質量安全風險路徑進行溯源。李柯等[3]提出一種基于FTA-BN模型,通過將故障樹和貝葉斯相結合的方式分析食品鏈中的風險因素,達到控制食品安全風險的目的。熊志昂等[4]通過識別食品供應鏈上潛在的主要風險因素,運用層次分析法(AHP)方法來辨識供應鏈上的關鍵風險。Lin X等[5]利用布谷鳥搜索算法(CS)實現了基于改進隱馬爾可夫模型(HMM)的食品安全動態風險評估。Teyhouee[6]等人通過比較支持向量機(SVM)和隱馬爾可夫模型(HMM)對食源性疾病暴發的檢測精度,驗證了隱可夫模型在檢測食源性疾病暴發方面具有良好的準確性。
關聯規則算法概念最早是被Agrawal等人在1993年提出[7]。近年來,在警務情報分析領域應用頻繁,通過對一系列犯罪嫌疑人之間的同行同住信息進行關聯碰撞分析,可以發現案件潛在的情報線索,幫助警務人員輔助決策。關聯規則本質是以獲取可信的情報規則作為算法核心,規則本身是“當條件是什么時,結果就會是什么”的簡單形式。通式可以表示為“if A ?then B”規則形式,其中A表示前置條件,B表示后置結果。
關聯規則基本原理主要是對于一個已知的事務數據集,通過預設最小支持度和最小置信度閾值,運用逐層搜索的迭代方法來尋找符合條件的頻繁項集。假設 I = {i1,i2...im}表示的是事務數據庫中所有可能成員的集合, D ={T1,T2...Tm}表示的是事務數據庫中所有事務的集合。其中每一個事務T是項集I的一個子集,如果包含k個元素,表示為k-項集, |D|表示D中的事務總數,其中X ? T,Y ? T 且X∩Y=?。相關的定義如下:
定義1.支持度(Support):表示項集{X,Y}在所有事務集中出現的頻率。

其中, num( X∪Y)表示X和Y同時在事務集中出現的次數,支持度是對關聯規則重要程度的衡量。
定義2.置信度(Confidence):表示在同時含有X和Y項集的前提下,同含有Y的頻率。

置信度是對關聯規則正確率的衡量。
定義3.強關聯規則:生成的規則均大于給定的最小支持度(min_sup)和最小置信度(min_conf)稱為強關聯規則。
定義4.頻繁k項集:如果k項集的支持度不小于定義的最小支持度閾值,稱為頻繁k項集。
本文主要研究利用關聯規則來挖掘食品抽檢數據中的潛在情報。由于食品抽檢數據具有多維特性,并且含有較多的空值,符合稀疏矩陣的特點。非常適合Apriori算法機制,但是傳統的Apriori算法由于采用逐層搜索的方法,在生成
頻繁項集時,需要反復掃描數據庫,導致模型在尋找長度較大的頻繁項集時,運行時間過長,降低了模型的挖掘效率。因此本文引入散列(Hash)機制,通過減少生成候選頻繁項集的遍歷數據集的次數,提高模型的準確度以及運算效率。
基于Hash技術改進Apriori算法處理食品檢測數據主要分為兩步,流程如圖1所示。

圖1 改進的Apriori算法流程圖
Step1:從食品的事務數據庫中挖掘所有頻繁項集:
結合食品應用場景,并根據食品數據維度,確定利用Hash技術生成頻繁1-項集、頻繁2-項集以及頻繁3-項集,通過一次遍歷事務數據庫,即可生成候選頻繁1-項集(L1),候選頻繁2-項集(L2)以及候選頻繁3-項集(L3)。并將其暫時存入Hash容器中,根據標準參數(minSup*|D|)閾值,對候選項集進行篩選,大于標準參數的保留作為頻繁項集。小于標準參數則直接排除;然后繼續采用傳統Apriori算法遞歸策略,來尋找k>3的頻繁k項集;最后對所有的頻繁項集進行整合。
Step2:利用Hash技術尋找到的頻繁項集,根據最小支持度確定全部的強關聯規則。
本文數據來源于2019-2020年全國各地區的不合格食品抽檢數據信息。食品的主要信息包括:食品名稱、生產企業名稱、生產日期、生產企業地址、被抽樣單位名稱、被抽樣單位地址、規格型號、商標、生產日期、不合格項目、檢測機構等20種屬性信息。本文應用Apriori算法解決的食品安全場景問題如下:
場景一:通過整理不合格食品檢測數據樣品,聚焦篩選出肉類食品數據,挖掘食品小類、規格型號、生產時間、生產企業、生產省份以及檢測項目之間的食品安全情報規則。
場景二:通過整理不合格食品檢測數據樣品,聚焦篩選出生產地區為北京市,檢測項目為菌落總數、大腸菌群、霉菌的不合格樣品數據,挖掘食品大類、食品小類、生產時間、生產地區以及檢測項目之間的食品安全情報規則。
場景三:通過整理不合格食品檢測數據樣品,篩選出由菌落總數、大腸菌群、霉菌三種強致病因子造成不合格的樣品數據,挖掘食品大類、食品小類、生產省份以及檢測項目之間的食品安全情報規則。
根據食品抽檢數據特點可知,一條完整的數據大約含有近30多個特征屬性,但是實際上不是所有的屬性都可以作為模型的輸入,如果數據屬性過多,會稀釋強相關的屬性信息,具體處理操作如下:
(1)“生產日期”屬性信息包含年-月-日,使得類別過多,利用季度將時間進行限定劃分。如:“2016年3月2日”轉化為“第一季度”,“2017年12月1日”轉化為“第四季度”。
(2)將規格型號分為預包裝和散裝稱重,如“大米:25kg/袋”記為預包裝,“鮮菜:計量稱重”記為散裝稱重;
(3)生產企業名稱根據規模特點劃分為“公司”、“工廠”、“超市”、“店鋪”四種類型,如“河北達利食品有限公司”劃分為公司。
場景一數據特征選擇:處理后數據按照肉類食品類篩選后,得到不合格數據樣品422批次,選擇食品小類、規格型號、生產時間、生產企業、生產省份以及檢測項目特征屬性,具體如表1所示。

表1 場景1預處理后的食品檢測數據
場景二數據特征選擇:根據食品不合格檢測數據,依北京市為篩選條件,整理出涵蓋各食品類別的1614條數據。選擇食品大類、食品細類、抽樣地區、檢測項目作為特征屬性,其中檢測項目包括:菌落總數、大腸菌群、霉菌;N代表不合格、Y代表合格。挖掘北京市不合格食品數據屬性間的情報規則。具體如表2所示。

表2 場景2預處理后的食品檢測數據
場景三數據特征選擇:根據不合格食品屬性間的挖掘目標,通過分析影響細菌性食品安全事件的強關聯屬性,整理篩選出3234條可用于真菌毒素分析的數據信息。最終將屬性確定為食品大類、食品小類、生產省份以及檢測項目。具體數據如表3所示。

表3 場景3預處理后的食品檢測數據
關聯規則模型的實驗環境為window10,編程語言為Python3,編譯環境為jupyter notebook。傳統Apriori算法與改進的Apriori算法運行時間對比如圖2所示。
由圖2所示,基于Hash技術改進Apriori算法在運行時間上得到了顯著的提升,具體的場景實驗結果與分析如下:

圖2 三種場景下的模型運行時間對比
(1)場景1實驗結果與分析
當最小支持度S=10,最小置信度C=0.8時,可以得到227條食品情報規則。運行結果如圖4-3所示,挖掘到有價值的情報規則如下:
規則1:{檢測項目=“菌落總數”,生產時間=“第二季度”,規格型號=“預包裝”,食品小類=“醬鹵肉制品”}-->{生產企業類型=“公司”},置信度為0.87。
規則2:{生產省份=“廣東”,生產企業類型=“店鋪”,生產時間=“第三季度”,規格型號=“散裝稱重”}-->{檢測項目=“胭脂紅及其鋁色淀”};置信度為1。
規則3:{生產企業類型=“公司”,規格型號=“預包裝”,生產省份 =“重慶”,食品小類=“醬鹵肉制品”}-->{檢測項目=“菌落總數”};置信度為0.94。
規則4:{生產企業類型=“公司”,規格型號=“預包裝”,生產時間 =“第三季度”,食品小類=“醬鹵肉制品”}-->{檢測項目=“菌落總數”};置信度為1。
由以上食品安全情報規則可以分析出肉類食品問題及行動措施:(1)對于醬鹵肉制品,不合格原因主要是菌落總數不達標,主要集中在第三季度,且重慶市問題較為頻繁。監管部門應該加強在第三季度對醬鹵肉制品中菌落總數的抽檢工作;(2)對于廣東省肉類食品的不合格原因主要集中出現在一些小作坊胭脂紅及其鋁色淀含量不達標,一般在第三季度比較頻發。監管部門應該將小作坊作為重點抽檢對象。

圖3 場景1運行結果
(2)場景2實驗結果與分析
同上,當最小支持度S=10,最小置信度C=0.8時。運行結果如圖4所示,有價值的情報規則總結如下:

圖4 場景2運行結果
規則1:{生產地區=“北京房山區”,菌落總數=“Y”}-->{生產時間=“第一季度”},置信度為0.82;
規則2:{大腸菌群=“N”,食品大類=“烘焙食品”}-->{生產時間=“第一季度”},置信度為0.88;
規則3:{大腸菌群=“N”,霉菌=“Y”,食品大類=“烘焙食品”}-->{生產時間=“第一季度”},置信度為0.86。
發現的問題以及應對措施為:對于北京市房山區在第一季度食品問題較為嚴重,主要原因是大腸菌群含量不達標,因此應該加強在第一季度對大腸菌群的抽檢力度。
(3)場景3實驗結果與分析
設定最小支持度S=10,最小置信度C=0.7。運行結果如圖5所示:可得到以下幾種對于細菌性食品安全事件最有價值的規則信息:

圖5 場景3運行結果
規則1:{食品大類=“飲料”,食品小類=“包裝飲用水”}-->{檢測項目=“菌落總數”},置信度=0.75;
規則2:{食品小類=“水產加工品”,食品大類=“水產及其制品”}-->{檢測項目=“菌落總數”},置信度=0.76;
規則3:{食品大類=“餐飲環節產品”,食品小類=“餐飲具”}-->{檢測項目=“大腸菌群”};置信度=0.923;
規則4:{食品小類=“醬鹵肉制品”,食品大類=“肉及肉制品”-->{檢測項目=“菌落總數”};置信度=0.794。
由以上4條規則可知,菌落總數對飲用水、水產加工品以及肉制品的危害程度較高,應作為監管人員檢測食品的重點對象,餐飲具不合格原因主要是大腸菌群不達標,餐飲行業應該加強做好消毒防護措施。
本文通過分析海量的食品安全抽檢數據,利用Hash技術改進的關聯規則挖掘算法,建立了三種適用于不同食品安全問題場景下的情報分析模型,對食品抽檢數據進行挖掘,能夠挖掘出有價值、有意義的情報規則。并結合具體的場景獲取的規則,給出監管部門相應的執行措施,對食品安全監督管理工作具有指導意義。