葉 煜 李 敏 文 燕
(成都農(nóng)業(yè)科技職業(yè)學(xué)院 信息技術(shù)分院,四川 成都611130)
我國是一個(gè)傳統(tǒng)農(nóng)業(yè)大國。農(nóng)業(yè)生產(chǎn)、管理和經(jīng)營產(chǎn)生了大量的農(nóng)業(yè)數(shù)據(jù)。這些原始農(nóng)業(yè)數(shù)據(jù),需要經(jīng)過分析、處理、提煉,才能轉(zhuǎn)換為有意義的信息,成為有價(jià)值的知識(shí)。數(shù)據(jù)挖掘技術(shù)可以有效地從海量的農(nóng)業(yè)數(shù)據(jù)中探索出各種因素之間的聯(lián)系,從而發(fā)現(xiàn)其中隱藏的規(guī)律,它正是農(nóng)業(yè)生產(chǎn)經(jīng)營活動(dòng)所需要的、能夠引導(dǎo)農(nóng)業(yè)高效生產(chǎn)的技術(shù)。通過數(shù)據(jù)挖掘技術(shù)獲得的信息和知識(shí)可以應(yīng)用于農(nóng)業(yè)生產(chǎn)經(jīng)營活動(dòng)的各個(gè)領(lǐng)域從而實(shí)現(xiàn)這些信息和知識(shí)的價(jià)值。
分類是數(shù)據(jù)挖掘中的一項(xiàng)非常重要和關(guān)鍵的任務(wù),利用分類技術(shù)能夠從數(shù)據(jù)集中提取描述數(shù)據(jù)類的一個(gè)函數(shù)或模型——即分類器,從而把數(shù)據(jù)集中的每個(gè)對(duì)象歸結(jié)到某個(gè)已知的對(duì)象類中。從機(jī)器學(xué)習(xí)的觀點(diǎn),分類技術(shù)是一種有監(jiān)督的學(xué)習(xí),通過在一組已知類別標(biāo)號(hào)的樣本中,訓(xùn)練某種分類器,從而具有能夠預(yù)測某種未知數(shù)據(jù)類型的能力[1]。從這個(gè)意義上說,數(shù)據(jù)挖掘的目的就是根據(jù)樣本數(shù)據(jù)形成的類知識(shí),對(duì)源數(shù)據(jù)進(jìn)行分類,從而也可以預(yù)測未知數(shù)據(jù)的類型。
分類過程是找到描述和區(qū)分?jǐn)?shù)據(jù)類的函數(shù)或模型,也就是分類器,再利用分類器預(yù)測類標(biāo)記未知的對(duì)象類。要構(gòu)造分類器,需要輸入一個(gè)數(shù)據(jù)集作為訓(xùn)練樣本,訓(xùn)練樣本數(shù)據(jù)集由一組數(shù)據(jù)庫記錄也即元組構(gòu)成,每個(gè)記錄是一個(gè)由相關(guān)字段(或?qū)傩?值和類別標(biāo)記組成的特征向量,樣本的形式可以表示為:(v1,v2,...,vn;c),其中的vi 表示字段值,c 表示類別。
數(shù)據(jù)挖掘的分類算法很多,本文僅描述常用的幾個(gè)分類算法:決策樹算法、貝葉斯分類算法、K 鄰近算法、支持向量機(jī)算法、基于關(guān)聯(lián)規(guī)則算法、人工神經(jīng)網(wǎng)絡(luò)算法等。數(shù)據(jù)分類的效果一般和數(shù)據(jù)的特點(diǎn)有關(guān),有的數(shù)據(jù)噪聲大,有的有空缺值,有的分布稀疏,有的字段或?qū)傩蚤g相關(guān)性強(qiáng),有的屬性是離散的而有的是連續(xù)值或混合式的[2]??偟膩碚f沒有哪一種算法優(yōu)于其他分類算法并能適合于各種特點(diǎn)的數(shù)據(jù)。
決策樹是用于分類和預(yù)測的主要技術(shù)之一,決策樹學(xué)習(xí)是以實(shí)例為基礎(chǔ)的歸納學(xué)習(xí)算法,它采用從一組無次序、無規(guī)則的實(shí)例中推理出以決策樹表示的分類規(guī)則[3]。構(gòu)造決策樹的目標(biāo)是要找出屬性與相應(yīng)類別之間的關(guān)系,以便用它來預(yù)測未來未知數(shù)據(jù)的類別。它采用自頂向下的樹狀結(jié)構(gòu)表現(xiàn)分類規(guī)則,內(nèi)部結(jié)點(diǎn)描述屬性,葉子結(jié)點(diǎn)代表結(jié)論,自上而下的一條路徑代表一條分類規(guī)則。它具有結(jié)構(gòu)簡單直觀、規(guī)則易于理解、有較高分類精度的特點(diǎn)。主要的決策樹算法有ID3、C4.5、SLIQ 和SPRINT算法等。這些算法在選擇測試屬性時(shí)所使用的技術(shù)、生成的決策樹結(jié)構(gòu)、剪枝的時(shí)機(jī)和方法,以及處理大數(shù)據(jù)集的能力等多方面都各具特點(diǎn)。
ID3 算法的核心思想是首先計(jì)算決策樹各個(gè)非葉子結(jié)點(diǎn)的每一個(gè)屬性的信息增益,用最大信息增益的屬性作為類別劃分標(biāo)準(zhǔn),因?yàn)樾畔⒃鲆嬖酱?,就越具有代表性、特異性,區(qū)分樣本的類別能力就越強(qiáng),選取信息增益最大的特征分裂出各個(gè)子結(jié)點(diǎn),然后遞歸建立決策樹的分支,當(dāng)樣本集中只有一種類別時(shí)結(jié)束,生成最終的決策樹。這是一種自頂向下的貪心策略。
C4.5 算法通過采用信息增益率來選擇特征,改善了ID3 算法屬性偏向的缺點(diǎn),是ID3 算法的改進(jìn)。C4.5 算對(duì)變量特征進(jìn)行遞歸選擇,用最優(yōu)特征分類數(shù)據(jù)集,至到數(shù)據(jù)集中所有子集歸于同一個(gè)類為止。C4.5 算法分類規(guī)則易于理解、算法復(fù)雜度較低。
SLIQ 算法在C4.5 算法基礎(chǔ)之上,對(duì)算法的實(shí)現(xiàn)方法進(jìn)行了改進(jìn),在決策樹構(gòu)造過程中采用“預(yù)排序”和“廣度優(yōu)先策略”等技巧劃分節(jié)點(diǎn),減少讀寫磁盤次數(shù)從而提高算法效率。SLIQ 算法具有執(zhí)行速度快、有較好的伸縮性和較高的數(shù)據(jù)分類精確度等優(yōu)點(diǎn)。但由于需要將類別列表存放于內(nèi)存,因此處理數(shù)據(jù)集的大小受內(nèi)存容量限制。
SPRINT 算法進(jìn)一步改進(jìn)了數(shù)據(jù)結(jié)構(gòu),舍棄了SLIQ 算法需要駐留內(nèi)存的類別列表,減少駐留內(nèi)存的數(shù)據(jù)量,它將類別信息直接合并到每個(gè)屬性列表中。在遍歷每個(gè)屬性列表尋找當(dāng)前結(jié)點(diǎn)的最優(yōu)劃分標(biāo)準(zhǔn)時(shí),不需要參照其他信息,對(duì)決策樹結(jié)點(diǎn)的劃分表現(xiàn)在對(duì)屬性列表的分割,每個(gè)屬性列表被分割成兩個(gè),分別保存屬于各個(gè)結(jié)點(diǎn)的樣本對(duì)應(yīng)的信息。SPRINT 算法在尋找每個(gè)結(jié)點(diǎn)的最優(yōu)劃分標(biāo)準(zhǔn)更為簡單,但在分割非分割屬性的屬性列表時(shí)很困難。
貝葉斯分類預(yù)測算法是基于概率統(tǒng)計(jì)知識(shí)進(jìn)行分類的算法。貝葉斯算法采用Bayes 定理,假定特征條件相互獨(dú)立,利用先驗(yàn)概率和條件概率計(jì)算未知類別樣本屬于某個(gè)類別的概率,以最大概率的類別作為該樣本的最終類別,如樸素貝葉斯算法。此算法在數(shù)據(jù)集屬性個(gè)數(shù)較多或者屬性之間相關(guān)性較大時(shí),分類效果不好。TAN 算法是降低獨(dú)立性假設(shè)的改進(jìn)算法,基于貝葉斯網(wǎng)絡(luò)結(jié)構(gòu),通過增加屬性對(duì)之間的相關(guān)性來實(shí)現(xiàn)。該方法包括:按降序排序每個(gè)屬性對(duì)的互信息值,依次提取節(jié)點(diǎn)對(duì),遵循不生成循環(huán)的原理,構(gòu)造最大權(quán)重跨度樹直到n-1 個(gè)邊被選擇;然后確定整個(gè)無向圖的邊的方向,選擇任意一個(gè)屬性節(jié)點(diǎn)作為根節(jié)點(diǎn),根節(jié)點(diǎn)的向外方向是屬性節(jié)點(diǎn)之間的方向;為每個(gè)屬性節(jié)點(diǎn)添加一個(gè)父節(jié)點(diǎn),父節(jié)點(diǎn)分類屬性節(jié)點(diǎn),這樣完成了貝葉斯網(wǎng)絡(luò)結(jié)構(gòu)的構(gòu)建。
K- 鄰近算法是一種基于實(shí)例的分類方法。K- 鄰近算法的具體工作原理是:它有一個(gè)樣本數(shù)據(jù)集,并且在樣本集中每個(gè)數(shù)據(jù)都有一個(gè)標(biāo)簽,即已知樣本集中的每個(gè)數(shù)據(jù)與歸屬類別之間的對(duì)應(yīng)關(guān)系。在沒有標(biāo)簽的情況下輸入新數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中的數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較,然后提取樣本中最相似的數(shù)據(jù)(最鄰近)的分類標(biāo)簽。通常,只選擇樣本數(shù)據(jù)集中k 最相似的數(shù)據(jù),即K 鄰近,通常K 是大于20 的整數(shù)。最后,選擇K 個(gè)最相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的類別作為新數(shù)據(jù)的分類。K- 鄰近方法是一種懶惰的學(xué)習(xí)方法,它存儲(chǔ)樣本直到需要分類為止。如果樣本集是復(fù)雜的,它可能會(huì)導(dǎo)致較大的計(jì)算開銷,所以很難應(yīng)用于實(shí)時(shí)情況。
支持向量機(jī)是一種基于統(tǒng)計(jì)學(xué)習(xí)理論的學(xué)習(xí)方法。它是一個(gè)二元分類模型。其基本模型定義為特征空間中間隔最大的線性分類器。它的學(xué)習(xí)策略是最大化間距,并最終可以將其轉(zhuǎn)化為凸二次規(guī)劃問題的解。其最大的特點(diǎn)是通過最大化分類區(qū)間來構(gòu)造學(xué)習(xí)機(jī)的泛化能力,根據(jù)結(jié)構(gòu)風(fēng)險(xiǎn)最小化準(zhǔn)則構(gòu)造最優(yōu)分類超平面,更好地解決非線性、高維和局部極小點(diǎn)的問題。對(duì)于分類問題,支持向量機(jī)算法從該區(qū)域的樣本中計(jì)算出該區(qū)域的決策曲面,從而確定該區(qū)域中未知樣本的類別。它具有較高的分類準(zhǔn)確率和較好的適應(yīng)能力。但處理大規(guī)模數(shù)據(jù)集時(shí)速度較慢。
關(guān)聯(lián)算法是數(shù)據(jù)挖掘中的一類重要算法。其核心是基于兩階段頻繁集思想的遞歸算法。關(guān)聯(lián)規(guī)則在分類上分為一維、單層和布爾型關(guān)聯(lián)規(guī)則。典型的算法是Apriori 算法。Apriori 算法將關(guān)聯(lián)規(guī)則發(fā)現(xiàn)過程分為兩步:第一步是迭代檢索事務(wù)數(shù)據(jù)庫中的所有頻繁項(xiàng)集,即支持度不低于用戶設(shè)置的閾值的項(xiàng)集;第二步利用頻繁項(xiàng)集構(gòu)造規(guī)則滿足用戶的最小信任度。其中,挖掘或識(shí)別所有頻繁項(xiàng)集是算法的核心,占整個(gè)計(jì)算量的大部分。算法通過發(fā)現(xiàn)樣本集中的關(guān)聯(lián)規(guī)則來構(gòu)造分類器,從而減少了對(duì)大樣本量的依賴性。
人工神經(jīng)網(wǎng)絡(luò)是一門結(jié)合了眾多學(xué)科內(nèi)容的信息處理學(xué)科,它是一種應(yīng)用類似生物神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行信息處理的數(shù)學(xué)模型。在這個(gè)模型中,節(jié)點(diǎn)代替神經(jīng)元,每個(gè)節(jié)點(diǎn)代表一個(gè)特定的功能,它們之間的互連構(gòu)成一個(gè)巨大的網(wǎng)絡(luò)系統(tǒng)、即“神經(jīng)網(wǎng)絡(luò)”,從而達(dá)到模擬生物大腦結(jié)構(gòu)和功能來處理信息的目的。人工神經(jīng)網(wǎng)絡(luò)經(jīng)歷了從線性感知機(jī)到多層感知機(jī)的發(fā)展過程。神經(jīng)網(wǎng)絡(luò)通過網(wǎng)絡(luò)學(xué)習(xí),改變每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的連接權(quán)值,使其具有分類功能,經(jīng)過訓(xùn)練的網(wǎng)絡(luò)可用于目標(biāo)識(shí)別。目前,已有多種不同的神經(jīng)網(wǎng)絡(luò)模型。常見的如BP 網(wǎng)絡(luò)、徑向基RBF 網(wǎng)絡(luò)、Hopfield 網(wǎng)絡(luò)、隨機(jī)神經(jīng)網(wǎng)絡(luò)(Boltzmann 機(jī))、競爭神經(jīng)網(wǎng)絡(luò)(Hamming 網(wǎng)絡(luò)、自組織映射網(wǎng)絡(luò))等。然而,目前的神經(jīng)網(wǎng)絡(luò)仍然普遍存在著收斂速度慢、運(yùn)算量大、訓(xùn)練時(shí)間長、無法解釋等缺點(diǎn)。
數(shù)據(jù)分類預(yù)測算法是數(shù)據(jù)挖掘中的核心和基礎(chǔ)技術(shù)之一。通過數(shù)據(jù)挖掘?qū)r(nóng)業(yè)數(shù)據(jù)進(jìn)行有效的采集,進(jìn)而進(jìn)行深層次的分析,為用戶提供分類預(yù)測和農(nóng)業(yè)決策,科學(xué)有效地利用農(nóng)業(yè)數(shù)據(jù)。本文對(duì)常見數(shù)據(jù)分類算法進(jìn)行了綜合闡述,各種算法有自己的優(yōu)缺點(diǎn),在數(shù)據(jù)挖掘?qū)嵺`中,用戶要根據(jù)數(shù)據(jù)的不同特點(diǎn)選擇合適的分類算法。準(zhǔn)確度更高、執(zhí)行速度更快、可伸縮性更強(qiáng)的算法還需要在今后的工作中進(jìn)一步研究。