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