李 敏,葉 煜,文 燕,陳 琳,鄒承俊
(成都農業科技職業學院,成都 溫江 611130)
民以食為天,食源于農業。我國幅員遼闊,是農業大國,傳統農業在中華大地上養育了幾千年的祖祖輩輩。古人常說,農業收成是靠天吃飯。而在當今信息技術爆炸及物聯網技術的指數級發展下,農業也和其他產業一樣,利用現代技術,由傳統農業向著智慧農業發展。
農業生產活動過程中,產生大量的農業數據,俗稱農業大數據。如農業種植、養殖、農產品加工處理、天氣狀況、市場行情以及通過自動化網絡監控系統產生的監控數據等。對于這些海量的原始農業數據,看似雜亂卻包含著巨大的價值,若能對這些數據進行有效的分析處理,在雜亂中尋求其規律,就能為農業預測及發展決策提供科學依據和參考。[1]
農業大數據挖掘是農業數據分析的最關鍵工作。大數據的挖掘是從海量、不完全的、有噪聲的、模糊的、隨機的大型數據庫中發現隱含在其中有價值的、潛在有用的信息和知識的過程。收集到的數據首先就要進行分類管理。所謂分類是找出數據中的一組數據對象的共同特點并按照分類模式將其劃分為不同的類,其目的是通過分類模型,將數據庫中的數據項映射到某個給定的類別中。農業大數據的挖掘中常用的分類算法有貝葉斯分類算法、K最近鄰分類算法、決策樹分類算法等,這些方法從不同的角度對數據進行挖掘。

對歷史發生的情況進行統計,估算出生病的雞為母雞或公雞的概率。
第1步,構造一個歷史發生的情況表,如表1:

表1 雞生病情況
第2步,計算出每一個組成部分的概率,構造出頻率表,如表2:

表2 生病頻率
如果歷史中沒有出現的事件,即發生的概率為0的情況,導致整個結果也為0。但未來不一定不發生。可以利用拉普拉斯估計,給頻率表中的每個計數加上一個較小的數,這樣就可以保證每個特征發生概率非零。一般將0變成1,增加一個小的概率,讓它的占比很小,將0的情況覆蓋掉。而對整個結果影響不是很大。如上一個例子,歷史數據中,公雞沒有生病,也就是公雞生病的概率為0的情況,如表3:

表3 生病頻率有0的情況
改為增加公雞數為4,如表4:

表4 修改生病頻率
如果有多重特征,則p(B|A) = p(B0|A) ×p(B1|A)×p(B2|A)× .... ×p(Bn|A)。
2.1.1 KNN(K-Nearest Neighbor)算法的思路 如果一個樣本在特征空間中的K個最相似的樣本中的大多數屬于某一個類別,則該樣本也屬于這個類別。
2.1.2 KNN三要素
(2)K的選擇 指定一個K值(K值的選擇一般低于樣本數據的平方根,一般是K<=20的整數),按照距離依次排序,選取當前點距離最小的K個點,確定前K個點所在類別的出現概率。
(3)分類決策規則 根據少數服從多數的原則,返回前K個點出現頻率最高的類別作為當前點預測分類。
2.1.3 KNN算法的缺點 當樣本不平衡時,如一個類的樣本容量很大,而其他類樣本容量很小時,有可能導致輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本占多數。可以采用權值的方法。根據和該樣本距離的遠近,對近鄰進行加權,距離越小的鄰居權值越大,權重一般為距離平方的倒數。
通過收集含玉米象小麥籽20g與正常小麥籽20g的發育過程中含蟲數據,從種植的第3天開始,共測1個月。玉米象的發育過程如表5:

表5 玉米象的發育過程
通過小波降噪,特征的選擇與優化后,計算均值、標準差、光子統計熵等特征參數得到數據庫,從數據庫中實驗組和對照組中各取60%作為樣本訓練集,40%作為測試集,利用歐式距離,K取5,使用KNN及其加權的KNN,來檢驗分類的效果。通過比較,KNN的正確率為90%,加權KNN為92.5%,加權分類法的效果最好。[3]
決策樹是通過對訓練集的研究,挖掘有用的規則,用于對新集進行預測分類的一種算法。基本算法是貪心算法,自頂向下遞歸方式構造決策樹。在其生成過程中,如何將屬性進行度量分割尤為重要,直接影響到最終分類效果。
(1)開始時,所有的數據都在根節點,屬性需要離散型字段值,如果是連續的,則將其離散化。
(2)用離散化的屬性進行遞歸分裂所有記錄,直到分裂停止。
決策樹的分裂原則:數據的每一次分裂,盡可能讓類別一樣的數據在樹的一邊,當樹的葉子節點的數據都是一類的時候,則停止分類,可以用if-else語句來實現。
(3)分類劃分的優劣用不純性度量來分析。將純粹度用數據進行量化,度量信息混亂程度的指標:
類別越少,信息熵和基尼系數越低。
條件熵:在某個分類條件下某個類別的信息熵叫做條件熵,類似于條件概率,在知道Y的情況下,X的不確定性。條件熵一般使用H(x|y)表示,代表在Y條件下,X的信息熵。哪個條件熵相對信息熵下降的最快,就選擇誰做為分類,用信息增益來表示條件變化的程度,分類前的信息熵減去分類后的信息熵。選擇信息增益大的屬性作為分類節點的方法叫ID3分類算法。例如特征Y對訓練集D的信息增益為g(D,Y)=H(X)-H(X|Y)。 但這種方法會出現過擬合問題。所以用條件熵作為頂層分類有弊端。
信息增益率gr(D,Y)=g(D,Y)/ H(X):使用信息增益率來做為頂層分類將消除當某些屬性比較混雜時,使用信息增益來選擇分類條件的弊端,這種分類法也叫做C4.5。如果最后一個條件依然沒能將數據準確進行分類,則在這個節點上就可以使用概率來決定。看哪種情況出現的多,就做為該節點的分類結果。
(4)用決策樹來做預測值(回歸),可以求一個平均值做為預測結果。
主要有ID3、C4.5、CART三種,其中ID3是決策樹最基本的構建算法,而C4.5和CART是在ID3的基礎上進行優化的算法。常用的是C4.5。
決策樹如果太復雜,很可能出現過擬合,造成預測不準確的分類,因此需要對決策樹進行優化,優化的方法主要有2種,一是用信息增益率(C4.5)來做。二是剪枝。
下表為某些地區第三季度雨水洪澇數據訓練集樣本屬性,如表6。

表6 雨水洪澇數據訓練集樣本屬性
3.5.2 條件熵的計算
3.5.3 信息增益的計算
(1)以月份為前提條件的信息增益G1=H-H1=1.23096-1.04316=0.1878
(2)以受災人數為前提條件的信息增益G2=H-H2=1.23096-0.70042=0.53054
(3)以農作物受災面積為前提條件的信息增益G3=H-H3=1.23096-0.85977=0.37116
用ID3的算法,即用信息增益作為標準,通過對比,以受災人數作為條件使原來的信息熵下降最快,則將它作為頂層劃分。
3.5.4 信息增益率的計算
(1)以月份為前提條件的信息增益率Gr1=(H-H1)/H=(1.23096-1.04316)/1.23096=0.1526
(2)以受災人數為前提條件的信息增益率Gr2=(H-H2)/H=(1.23096-0.70042)/1.23096=0.4310
(3)以農作物受災面積為前提條件的信息增益率Gr3=(H-H3)/H=(1.23096-0.85977)/1.23096=0.3015用C4.5的算法,即用信息增益率作為標準,通過對比,以受災人數作為頂層條件劃分。
ID3和C4.5這2種算法均得出相同的結果,再進行規則剪枝,最后生成決策樹,如圖1。

算法名稱收斂時間是否過度擬合是否過渡擬合缺失數據敏感度訓練數據量樸素貝葉斯算法快存在不敏感無要求KNN快存在敏感數據量多決策樹快存在不敏感小數據集
在農業大數據中,根據實際情況選擇不同的分類算法或多種算法相結合的方式,使數據分類更為準確。