胡新祥,趙 霞,張 乾,李英蘭,孔祥盛,馬玉婷
(甘肅農業大學 信息科學技術學院,甘肅 蘭州 730070)
幾千年來,中國勞動人民過著“靠天收”的生活。農民們根據長久以來的經驗總結出了在農耕中各種方式方法。但是這種依靠經驗的方法往往會因為一些特殊的因素而受到影響。一旦出現意外,對農戶和社會帶來的損失可能是不可估量的。進入了新時代,我們可以嘗試使用現代技術來對這些影響農作物產量的因素進行科學的分析,讓人們更加了解這些因素在農作物產量起到的作用,進而制定出科學的策略來應對一些不可控現象的發生。這既符合大環境趨勢,也讓理論研究真正的應用到實際社會生產生活之中。在信息時代,計算機技術能夠為農產品產量的預測提供更多、更有效的預測方式。利用計算機技術的快速性,國內外的研究者將計算機技術運用到中國農業經濟預測的過程中,通過建立相關農產品產量的預測系統,更精確的預測中國農產品產量的變化趨勢。
近年來,深度學習等人工智能技術得到了迅速發展,在很多領域都取得了較好的應用效果。其中分類算法在數據挖掘方面應用最為廣泛。
常用分類算法有:典型的樸素貝葉斯方法,針對大量數據訓練速度較快,并支持增量式訓練,對結果的解釋便于理解,但在大數據集下才能獲得較為準確的分類結果,且忽略了數據各屬性值之間的關聯性[1];K-最近鄰分類算法比較簡單,訓練過程迅速,抗噪聲能力強,新的數據能夠直接參與訓練集而不需要再次訓練,但在樣本不平衡時結果偏差較大,且每次分類都需要重新進行一次全局運算[2];決策樹分類算法易于理解與解釋,可進行可視化分析,運行速度較快,可擴展應用于大型數據庫中,但容易出現過擬合問題,且易忽略數據屬性間的關聯性[3]。
隨機森林算法在分類方面表現突出,其避免了決策樹分類算法中容易出現的過擬合問題,并在運算量未顯著提高的前提下,提高了分類準確率[4]。因此,設計旨在利用隨機森林算法實現精準客觀且省時省力的分析。
年甘肅省主要農作物:玉米、高粱、馬鈴薯、棉花與油料的產量與10年間甘肅省各年年均太陽輻射量、年均氣溫與年均降水量之間的關系。
以10年間甘肅省的各年度氣象數據為條件,結合產量分析出各種氣象因素對不同農作物產量的影響程度。采用python語言作為分析工具,采用隨機森林算法對數據進行處理與分析。最后得出每一種農作物的產量受各種氣候條件影響程度的大小,并用圖表的形式直觀展現,作為農業生產活動的參考指標。
選取甘肅省2000年~2010年十年間的各類典型農產品產量與各年的年均降水量、年均氣溫與年均太陽輻射量,數據均來自國家統計局官網。對數據進行整理后在python程序中讀取并制表,見表1。

表1 2000年~2010年的數據
讀取數據以后利用python對所得數據進行一些預處理動作,目的是為了觀察數據是否存在缺失情況與離群數據。都缺失數據與離群數據要進行相應的處理。
首先將各年度的年均氣溫、降水量與太陽輻射量繪制在二維柱狀圖中進行觀察。
觀察10年間度甘肅省年均氣溫的直方圖(圖1),數據基本分布在12℃~14℃左右,無缺失數據與離群數據。

圖1 2000年~2010年年均氣溫柱狀圖
觀察10年間度甘肅省年均降水量的直方圖(圖2),數據基本分布在800~1000mm左右,2002年與2007年降水量有明顯增多,無缺失數據。

圖2 2000年~2010年年均降水量柱狀圖
觀察10年間度甘肅省年均太陽輻射量的直方圖(圖3),數據基本分布在 500KW.h/m2左右,無缺失數據與離群數據。

圖3 2000年~2010年年均太陽輻射量柱狀圖
隨后將10年間甘肅省各類主要農作物的年均產量利用箱型圖直觀的展現出來(圖4),觀察是否有缺失數據與離群數據。

圖4 2000年~2010年農作物產量箱型圖
在對數據進行圖表直觀的分析以后,開始對收集到的數據進行進一步的分析,利用python中的pd.describe()函數對十年間農產品產量與環境量進行計算分析,其意義在于觀察這一系列數據的范圍。大小、波動趨勢等等,便于判斷后續對數據采取哪類模型更合適。計算結果見表2,count為計數值,mean為平均值,std為標準差,min為最小值,25%為下四分位,50%為中位數,75為上四分位數,max為最大值。

表2 pd.describe()函數對數據處理結果
從分析的結果來看,收集到的各項數據質量較好,都在各自的范圍內波動,且無缺失情況。利用這些數據就可以進入到各種環境對產量影響程度的探索階段。
在對收集到的數據進行預處理以后,進入數據相關性的分析工作中。在使用分類算法分析之前,利用python中numpy triu_indices函數制作數據矩陣,利用seaborn繪制數據熱力圖。這一動作的目的是初步查看各組數據之間的相關性,使用熱力圖可以更加直觀的展現出來,如圖5所示。
從得到的熱力圖中可以直觀觀察到各種農作物與各環境變量之間的相關程度。由圖可初步得出:小麥的每公頃產量受太陽輻射量影響程度最大,年均溫與年均降水量對其影響程度相當,但次于太陽輻射量的影響程度;玉米與高粱每公頃產量受太陽輻射量與年均降水量的影響程度較大,受年均溫的影響程度較小;棉花每公頃產量受太陽輻射量與年均溫的影響程度較大,受年均降水量的影響程度較小;三種環境對油料的產量影響程度相當。

圖5 數據相關性熱力圖
初步查看到各環境與農作物之間的相關性后,選擇一種合適的分類算法對數據進行更加深入的分析,得到各個環境變量對作物產量影響程度的具體權重。
決策樹作為隨機森林的基分類器,是一種十分常用的分類方法。決策樹分類思想實際上是一個數據挖掘過程,其通過產生一系列規則,然后基于這些規則進行數據分析[5]。決策樹采用單一決策方式,因此具有以下缺點:一是包含復雜的分類規則,一般需要決策樹事前剪枝或事后剪枝;二是收斂過程中容易出現局部最優解;三是因決策樹過于復雜,容易出現過擬合問題。為了解決這些缺點,又引入隨機森林的概念。
隨機森林中的決策樹按照一定精度進行分類,最后所有決策樹參與投票決定最終分類結果,這是隨機森林的核心概念。
隨機森林構建主要包括以下3個步驟:
1)為N棵決策樹抽樣產生N個訓練集。每一棵決策樹都對應一個訓練集,主要采用Bagging抽樣方法從原始數據集中產生N個訓練子集。Bagging抽樣方法是無權重的隨機有放回抽樣,在每次抽取樣本時,原數據集大小不變,但在提取的樣本集中會有一些重復,以避免隨機森林決策樹中出現局部最優解問題。
2)決策樹構建。該算法為每個訓練子集構造單獨的決策樹,最終形成N棵決策樹以形成“森林”。節點分裂原則一般采用CART算法或C4.5算法,在隨機森林算法中,并非所有屬性都參與節點分裂指標計算,而是在所有屬性中隨機選擇某幾個屬性,選中的屬性個數稱為隨機特征變量。隨機特征變量的引入是為了使每棵決策樹相互獨立,減少彼此之間的關聯性,同時提升每棵決策樹的分類準確性,從而提高整個森林的性能。
3)森林形成及算法執行。重復步驟(1)、(2),構建大量決策樹,形成隨機森林。算法最終輸出由多數投票方法實現。將測試集樣本輸入隨機構建的N棵決策子樹進行分類,總結每棵決策樹分類結果,并將具有最大投票數的分類結果作為算法最終輸出結果。如圖6所示。

圖6 隨機森林算法原理圖
在程序中構造隨機森林模型實現使用隨機森林算法對已有數據進行分析,并對得出的果繪制農作物的影響程度的表格,見表3。

表3 各個因數影響農作物的程度情況表
由隨機森林算法得出的最后結果可以觀察到,在此模型中,太陽輻射量、年均氣溫、年均降水量對小麥單位面積產量的影響程度分別為:0.425988 0.327842 0.246170;對玉米單位面積產量的影響程度分別為:0.383898 0.431007 0.185095;對高粱單位面積產量的影響程度分別為:0.558349 0.320426 0.121225;對馬鈴薯單位面積產量的影響程度分別為:0.701089 0.155311 0.143600;對棉花單位面積產量的影響程度分別為:0.338979 0.612493 0.048528;對油料單位面積產量的影響程度分別為:0.761373 0.195005 0.043622。
得出的結論與初步查看相關性時,從熱力圖中的到的大致相關性相吻合。說明結論準確可信。同時也驗證了隨機森林算法在對農產品產量影響因素權重分析中的應用的正確性與有效性。
在此次實驗中,通過收集到的甘肅省10年間環境變量與主要農作物產量的數據,在進行了數據的預處理與簡單的查看相關性后,選擇使用隨機森林算法模型對一系列數據進行了科學、客觀的分析。最后得到了太陽輻射量、年均溫、年均降水量對甘肅省六種主要農作物影響程度的具體權重,得到的結果與現實相吻合,且用數據具體的說明的不同環境變量對不同作物的具體影響程度。這一結果在監督算法的保證下真實有效,可以作為農業生產活動的參考指標之一。