胡新祥,趙 霞,張 乾,李英蘭,孔祥盛,馬玉婷
(甘肅農(nóng)業(yè)大學(xué) 信息科學(xué)技術(shù)學(xué)院,甘肅 蘭州 730070)
幾千年來,中國勞動人民過著“靠天收”的生活。農(nóng)民們根據(jù)長久以來的經(jīng)驗總結(jié)出了在農(nóng)耕中各種方式方法。但是這種依靠經(jīng)驗的方法往往會因為一些特殊的因素而受到影響。一旦出現(xiàn)意外,對農(nóng)戶和社會帶來的損失可能是不可估量的。進入了新時代,我們可以嘗試使用現(xiàn)代技術(shù)來對這些影響農(nóng)作物產(chǎn)量的因素進行科學(xué)的分析,讓人們更加了解這些因素在農(nóng)作物產(chǎn)量起到的作用,進而制定出科學(xué)的策略來應(yīng)對一些不可控現(xiàn)象的發(fā)生。這既符合大環(huán)境趨勢,也讓理論研究真正的應(yīng)用到實際社會生產(chǎn)生活之中。在信息時代,計算機技術(shù)能夠為農(nóng)產(chǎn)品產(chǎn)量的預(yù)測提供更多、更有效的預(yù)測方式。利用計算機技術(shù)的快速性,國內(nèi)外的研究者將計算機技術(shù)運用到中國農(nóng)業(yè)經(jīng)濟預(yù)測的過程中,通過建立相關(guān)農(nóng)產(chǎn)品產(chǎn)量的預(yù)測系統(tǒng),更精確的預(yù)測中國農(nóng)產(chǎn)品產(chǎn)量的變化趨勢。
近年來,深度學(xué)習(xí)等人工智能技術(shù)得到了迅速發(fā)展,在很多領(lǐng)域都取得了較好的應(yīng)用效果。其中分類算法在數(shù)據(jù)挖掘方面應(yīng)用最為廣泛。
常用分類算法有:典型的樸素貝葉斯方法,針對大量數(shù)據(jù)訓(xùn)練速度較快,并支持增量式訓(xùn)練,對結(jié)果的解釋便于理解,但在大數(shù)據(jù)集下才能獲得較為準(zhǔn)確的分類結(jié)果,且忽略了數(shù)據(jù)各屬性值之間的關(guān)聯(lián)性[1];K-最近鄰分類算法比較簡單,訓(xùn)練過程迅速,抗噪聲能力強,新的數(shù)據(jù)能夠直接參與訓(xùn)練集而不需要再次訓(xùn)練,但在樣本不平衡時結(jié)果偏差較大,且每次分類都需要重新進行一次全局運算[2];決策樹分類算法易于理解與解釋,可進行可視化分析,運行速度較快,可擴展應(yīng)用于大型數(shù)據(jù)庫中,但容易出現(xiàn)過擬合問題,且易忽略數(shù)據(jù)屬性間的關(guān)聯(lián)性[3]。
隨機森林算法在分類方面表現(xiàn)突出,其避免了決策樹分類算法中容易出現(xiàn)的過擬合問題,并在運算量未顯著提高的前提下,提高了分類準(zhǔn)確率[4]。因此,設(shè)計旨在利用隨機森林算法實現(xiàn)精準(zhǔn)客觀且省時省力的分析。
年甘肅省主要農(nóng)作物:玉米、高粱、馬鈴薯、棉花與油料的產(chǎn)量與10年間甘肅省各年年均太陽輻射量、年均氣溫與年均降水量之間的關(guān)系。
以10年間甘肅省的各年度氣象數(shù)據(jù)為條件,結(jié)合產(chǎn)量分析出各種氣象因素對不同農(nóng)作物產(chǎn)量的影響程度。采用python語言作為分析工具,采用隨機森林算法對數(shù)據(jù)進行處理與分析。最后得出每一種農(nóng)作物的產(chǎn)量受各種氣候條件影響程度的大小,并用圖表的形式直觀展現(xiàn),作為農(nóng)業(yè)生產(chǎn)活動的參考指標(biāo)。
選取甘肅省2000年~2010年十年間的各類典型農(nóng)產(chǎn)品產(chǎn)量與各年的年均降水量、年均氣溫與年均太陽輻射量,數(shù)據(jù)均來自國家統(tǒng)計局官網(wǎng)。對數(shù)據(jù)進行整理后在python程序中讀取并制表,見表1。
表1 2000年~2010年的數(shù)據(jù)
讀取數(shù)據(jù)以后利用python對所得數(shù)據(jù)進行一些預(yù)處理動作,目的是為了觀察數(shù)據(jù)是否存在缺失情況與離群數(shù)據(jù)。都缺失數(shù)據(jù)與離群數(shù)據(jù)要進行相應(yīng)的處理。
首先將各年度的年均氣溫、降水量與太陽輻射量繪制在二維柱狀圖中進行觀察。
觀察10年間度甘肅省年均氣溫的直方圖(圖1),數(shù)據(jù)基本分布在12℃~14℃左右,無缺失數(shù)據(jù)與離群數(shù)據(jù)。
圖1 2000年~2010年年均氣溫柱狀圖
觀察10年間度甘肅省年均降水量的直方圖(圖2),數(shù)據(jù)基本分布在800~1000mm左右,2002年與2007年降水量有明顯增多,無缺失數(shù)據(jù)。
圖2 2000年~2010年年均降水量柱狀圖
觀察10年間度甘肅省年均太陽輻射量的直方圖(圖3),數(shù)據(jù)基本分布在 500KW.h/m2左右,無缺失數(shù)據(jù)與離群數(shù)據(jù)。
圖3 2000年~2010年年均太陽輻射量柱狀圖
隨后將10年間甘肅省各類主要農(nóng)作物的年均產(chǎn)量利用箱型圖直觀的展現(xiàn)出來(圖4),觀察是否有缺失數(shù)據(jù)與離群數(shù)據(jù)。
圖4 2000年~2010年農(nóng)作物產(chǎn)量箱型圖
在對數(shù)據(jù)進行圖表直觀的分析以后,開始對收集到的數(shù)據(jù)進行進一步的分析,利用python中的pd.describe()函數(shù)對十年間農(nóng)產(chǎn)品產(chǎn)量與環(huán)境量進行計算分析,其意義在于觀察這一系列數(shù)據(jù)的范圍。大小、波動趨勢等等,便于判斷后續(xù)對數(shù)據(jù)采取哪類模型更合適。計算結(jié)果見表2,count為計數(shù)值,mean為平均值,std為標(biāo)準(zhǔn)差,min為最小值,25%為下四分位,50%為中位數(shù),75為上四分位數(shù),max為最大值。
表2 pd.describe()函數(shù)對數(shù)據(jù)處理結(jié)果
從分析的結(jié)果來看,收集到的各項數(shù)據(jù)質(zhì)量較好,都在各自的范圍內(nèi)波動,且無缺失情況。利用這些數(shù)據(jù)就可以進入到各種環(huán)境對產(chǎn)量影響程度的探索階段。
在對收集到的數(shù)據(jù)進行預(yù)處理以后,進入數(shù)據(jù)相關(guān)性的分析工作中。在使用分類算法分析之前,利用python中numpy triu_indices函數(shù)制作數(shù)據(jù)矩陣,利用seaborn繪制數(shù)據(jù)熱力圖。這一動作的目的是初步查看各組數(shù)據(jù)之間的相關(guān)性,使用熱力圖可以更加直觀的展現(xiàn)出來,如圖5所示。
從得到的熱力圖中可以直觀觀察到各種農(nóng)作物與各環(huán)境變量之間的相關(guān)程度。由圖可初步得出:小麥的每公頃產(chǎn)量受太陽輻射量影響程度最大,年均溫與年均降水量對其影響程度相當(dāng),但次于太陽輻射量的影響程度;玉米與高粱每公頃產(chǎn)量受太陽輻射量與年均降水量的影響程度較大,受年均溫的影響程度較??;棉花每公頃產(chǎn)量受太陽輻射量與年均溫的影響程度較大,受年均降水量的影響程度較小;三種環(huán)境對油料的產(chǎn)量影響程度相當(dāng)。
圖5 數(shù)據(jù)相關(guān)性熱力圖
初步查看到各環(huán)境與農(nóng)作物之間的相關(guān)性后,選擇一種合適的分類算法對數(shù)據(jù)進行更加深入的分析,得到各個環(huán)境變量對作物產(chǎn)量影響程度的具體權(quán)重。
決策樹作為隨機森林的基分類器,是一種十分常用的分類方法。決策樹分類思想實際上是一個數(shù)據(jù)挖掘過程,其通過產(chǎn)生一系列規(guī)則,然后基于這些規(guī)則進行數(shù)據(jù)分析[5]。決策樹采用單一決策方式,因此具有以下缺點:一是包含復(fù)雜的分類規(guī)則,一般需要決策樹事前剪枝或事后剪枝;二是收斂過程中容易出現(xiàn)局部最優(yōu)解;三是因決策樹過于復(fù)雜,容易出現(xiàn)過擬合問題。為了解決這些缺點,又引入隨機森林的概念。
隨機森林中的決策樹按照一定精度進行分類,最后所有決策樹參與投票決定最終分類結(jié)果,這是隨機森林的核心概念。
隨機森林構(gòu)建主要包括以下3個步驟:
1)為N棵決策樹抽樣產(chǎn)生N個訓(xùn)練集。每一棵決策樹都對應(yīng)一個訓(xùn)練集,主要采用Bagging抽樣方法從原始數(shù)據(jù)集中產(chǎn)生N個訓(xùn)練子集。Bagging抽樣方法是無權(quán)重的隨機有放回抽樣,在每次抽取樣本時,原數(shù)據(jù)集大小不變,但在提取的樣本集中會有一些重復(fù),以避免隨機森林決策樹中出現(xiàn)局部最優(yōu)解問題。
2)決策樹構(gòu)建。該算法為每個訓(xùn)練子集構(gòu)造單獨的決策樹,最終形成N棵決策樹以形成“森林”。節(jié)點分裂原則一般采用CART算法或C4.5算法,在隨機森林算法中,并非所有屬性都參與節(jié)點分裂指標(biāo)計算,而是在所有屬性中隨機選擇某幾個屬性,選中的屬性個數(shù)稱為隨機特征變量。隨機特征變量的引入是為了使每棵決策樹相互獨立,減少彼此之間的關(guān)聯(lián)性,同時提升每棵決策樹的分類準(zhǔn)確性,從而提高整個森林的性能。
3)森林形成及算法執(zhí)行。重復(fù)步驟(1)、(2),構(gòu)建大量決策樹,形成隨機森林。算法最終輸出由多數(shù)投票方法實現(xiàn)。將測試集樣本輸入隨機構(gòu)建的N棵決策子樹進行分類,總結(jié)每棵決策樹分類結(jié)果,并將具有最大投票數(shù)的分類結(jié)果作為算法最終輸出結(jié)果。如圖6所示。
圖6 隨機森林算法原理圖
在程序中構(gòu)造隨機森林模型實現(xiàn)使用隨機森林算法對已有數(shù)據(jù)進行分析,并對得出的果繪制農(nóng)作物的影響程度的表格,見表3。
表3 各個因數(shù)影響農(nóng)作物的程度情況表
由隨機森林算法得出的最后結(jié)果可以觀察到,在此模型中,太陽輻射量、年均氣溫、年均降水量對小麥單位面積產(chǎn)量的影響程度分別為:0.425988 0.327842 0.246170;對玉米單位面積產(chǎn)量的影響程度分別為:0.383898 0.431007 0.185095;對高粱單位面積產(chǎn)量的影響程度分別為:0.558349 0.320426 0.121225;對馬鈴薯單位面積產(chǎn)量的影響程度分別為:0.701089 0.155311 0.143600;對棉花單位面積產(chǎn)量的影響程度分別為:0.338979 0.612493 0.048528;對油料單位面積產(chǎn)量的影響程度分別為:0.761373 0.195005 0.043622。
得出的結(jié)論與初步查看相關(guān)性時,從熱力圖中的到的大致相關(guān)性相吻合。說明結(jié)論準(zhǔn)確可信。同時也驗證了隨機森林算法在對農(nóng)產(chǎn)品產(chǎn)量影響因素權(quán)重分析中的應(yīng)用的正確性與有效性。
在此次實驗中,通過收集到的甘肅省10年間環(huán)境變量與主要農(nóng)作物產(chǎn)量的數(shù)據(jù),在進行了數(shù)據(jù)的預(yù)處理與簡單的查看相關(guān)性后,選擇使用隨機森林算法模型對一系列數(shù)據(jù)進行了科學(xué)、客觀的分析。最后得到了太陽輻射量、年均溫、年均降水量對甘肅省六種主要農(nóng)作物影響程度的具體權(quán)重,得到的結(jié)果與現(xiàn)實相吻合,且用數(shù)據(jù)具體的說明的不同環(huán)境變量對不同作物的具體影響程度。這一結(jié)果在監(jiān)督算法的保證下真實有效,可以作為農(nóng)業(yè)生產(chǎn)活動的參考指標(biāo)之一。