胡 玲
(河套學(xué)院經(jīng)濟(jì)管理系,內(nèi)蒙古 巴彥淖爾 015000)
我國(guó)食用菌產(chǎn)業(yè)發(fā)展一直處于領(lǐng)先地位[1]。食用菌栽培作為一種投資小、周期短、見效快的農(nóng)業(yè)經(jīng)濟(jì)項(xiàng)目,近年來發(fā)展勢(shì)頭良好,取得了很好的經(jīng)濟(jì)效益,成為了農(nóng)村增收致富的重要手段。但食用菌栽培者的素質(zhì)偏低,在大多數(shù)地方還是勞動(dòng)密集型的栽培產(chǎn)業(yè)[1]。特別是在互聯(lián)網(wǎng)科技發(fā)展的影響下,食用菌電子商務(wù)成為了一種重要的營(yíng)銷手段
在食用菌的銷售中,電子商務(wù)所占的比重也越來越大,食用菌銷量的波動(dòng)對(duì)食用菌產(chǎn)業(yè)的影響也越來越大。但食用菌栽培品種多、菌種要求高,食用菌的栽培正向著專業(yè)化、規(guī)?;⒐S化生產(chǎn)轉(zhuǎn)變。但食用菌銷量的影響因素有許多,不僅受傳統(tǒng)的菌種、栽培方式等影響,而且還受到國(guó)內(nèi)外市場(chǎng)環(huán)境、研發(fā)技術(shù)和生產(chǎn)管理水平等其它因素影響,多種復(fù)雜因素造成了食用菌銷量的不確定性[2],如何對(duì)食用菌銷量進(jìn)行準(zhǔn)確預(yù)測(cè),把握食用菌經(jīng)濟(jì)發(fā)展的內(nèi)在規(guī)律,掌握食用菌產(chǎn)業(yè)的發(fā)展方向,成為了現(xiàn)代食用菌行業(yè)必需面對(duì)的問題。
食用菌銷量預(yù)測(cè)卷積神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)見圖1。
如圖1所示,食用菌銷量預(yù)測(cè)卷積神經(jīng)網(wǎng)絡(luò)的層級(jí)結(jié)構(gòu)主要包括數(shù)據(jù)輸入層、卷積計(jì)算層、ReLU激勵(lì)層、池化層和全連接層等[3]。其中卷積層用于學(xué)習(xí)輸入的食用菌銷售數(shù)據(jù)的特征表示,在學(xué)習(xí)過程中輸入特征會(huì)被分割成一些區(qū)塊,每個(gè)區(qū)塊的卷積核相同,輸入特征與卷積核做卷積,利用權(quán)值共享的方式把結(jié)果傳遞給激活函數(shù),可以大幅減輕食用菌銷售模型的復(fù)雜度,從而使卷積神經(jīng)網(wǎng)絡(luò)的模型更加容易進(jìn)行訓(xùn)練;而池化層處于連續(xù)的卷積層和激勵(lì)層之間,通過對(duì)銷售數(shù)據(jù)的壓縮以減小過擬合現(xiàn)象的產(chǎn)生;全連接層實(shí)質(zhì)上是利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行銷量計(jì)算的,將銷售預(yù)測(cè)模型的幾個(gè)卷積層和池化層之后,用一個(gè)或多個(gè)全連接層,將前一層的神經(jīng)元與當(dāng)前層的神經(jīng)元進(jìn)行連接,從而形成一個(gè)BP神經(jīng)網(wǎng)絡(luò)完成具體的計(jì)算。
食用菌電子商務(wù)平臺(tái)的在日常的平臺(tái)交易中,會(huì)有許多的電子交易數(shù)據(jù)[4],還有一些與客戶進(jìn)行溝通交流的數(shù)據(jù),從這些提取出與食用菌銷量有關(guān)的數(shù)據(jù),這一過程就是數(shù)據(jù)預(yù)處理的過程。由于在食用菌銷量模型的數(shù)據(jù)來源于真實(shí)的食用菌電子商務(wù)交易數(shù)據(jù),其中含有大量無用的或者是錯(cuò)誤的信息,如取消交易和錯(cuò)誤交易的信息,這些數(shù)據(jù)是無法直接應(yīng)用到預(yù)測(cè)模型中的。因此,首先要對(duì)食用菌電子交易的數(shù)據(jù)集進(jìn)行預(yù)處理。
數(shù)據(jù)的過濾目的是為了將食用菌電子交易數(shù)據(jù)集中存在著冗余數(shù)據(jù)進(jìn)行剔除,數(shù)據(jù)集中還有一些與構(gòu)建預(yù)測(cè)模型無關(guān)的屬性,如地址、郵編等與銷量無關(guān)的數(shù)據(jù),此類信息會(huì)對(duì)預(yù)測(cè)模型的準(zhǔn)確度產(chǎn)生干擾,因此將這些字段也予以刪除。
在數(shù)據(jù)分析過程中,數(shù)據(jù)缺失是最常見的問題之一,食用菌銷量信息中的數(shù)據(jù)庫(kù)表字段數(shù)據(jù)為空或空值(NULL),如銷量數(shù)據(jù)庫(kù)表中有銷售金額但沒有金額的單位;還有一種缺失是整條記錄的缺失,如銷量數(shù)據(jù)表中有銷售記錄,而在供應(yīng)商表中卻沒有銷售產(chǎn)品的供應(yīng)商信息。食用菌銷量數(shù)據(jù)集中的缺失值會(huì)影響數(shù)據(jù)挖掘的效果,有時(shí)會(huì)導(dǎo)致出現(xiàn)匪夷所思的挖掘結(jié)果,如出現(xiàn)某個(gè)月的銷售數(shù)據(jù)為零,這會(huì)嚴(yán)重影響數(shù)據(jù)統(tǒng)計(jì)分析的結(jié)果。
第一,人工填充,人工填充主要是由業(yè)務(wù)人員完成,業(yè)務(wù)人員根據(jù)經(jīng)驗(yàn)和相關(guān)行業(yè)知識(shí),對(duì)缺失值進(jìn)行人工填充。第二,刪除數(shù)據(jù),對(duì)于缺失值過多的特征,無法對(duì)其進(jìn)行填補(bǔ),而這些特征會(huì)對(duì)模型的準(zhǔn)確率造成影響。還有部分具有缺失值的特征,對(duì)模型的構(gòu)建明顯沒有意義,對(duì)于這些特征,可以采用直接刪除的方式。第三,統(tǒng)計(jì)量填充,對(duì)于缺失率較低的特征,根據(jù)數(shù)據(jù)分布的情況使用統(tǒng)計(jì)量來對(duì)缺失值進(jìn)行填充。對(duì)于數(shù)據(jù)符合均勻分布的特征,采用均值填補(bǔ)缺失值;對(duì)于數(shù)據(jù)存在傾斜分布的特征,采用中位數(shù)填補(bǔ)缺失值;對(duì)于離散特征,采用眾數(shù)進(jìn)行填充。
目前的深度學(xué)習(xí)算法主要是對(duì)一些數(shù)據(jù)進(jìn)行矩陣運(yùn)算或者概率運(yùn)算來得到結(jié)論,算法的輸入通常來講應(yīng)該是一組可以表達(dá)數(shù)據(jù)某類特性的數(shù)字。特征抽象的目的是將源數(shù)據(jù)抽象成算法可以理解的數(shù)據(jù),對(duì)于食用菌銷量預(yù)測(cè)模型來說,如果字段都是二值型的,可以通過兩個(gè)數(shù)值來表示,通??梢员硎境?和1。如在銷量是否達(dá)到往年同期數(shù)值,這種銷量的預(yù)測(cè)就可以視為一個(gè)二分類問題,用1表示達(dá)到,用0表示未達(dá)到;對(duì)于多值有序類問題,可以采用標(biāo)簽編碼法給每個(gè)類別一個(gè)唯一的整數(shù)值;對(duì)于多值無序類的特征,采用One-hot編碼方式來把文本無序的字符串?dāng)?shù)據(jù)轉(zhuǎn)換成數(shù)值[5],對(duì)每個(gè)可能的類別,產(chǎn)生一個(gè)新列(變量),表示該值在具體的某次觀測(cè)里是否存在。
食用菌銷量模型是一個(gè)多指標(biāo)的預(yù)測(cè)評(píng)價(jià)體系,各個(gè)指標(biāo)性質(zhì)不同,有著有不同的量綱和數(shù)量級(jí)。當(dāng)各指標(biāo)之間的水平相差比較大時(shí),如果直接用原始的值進(jìn)行學(xué)習(xí),就會(huì)出現(xiàn)指標(biāo)失真的現(xiàn)象,而且一些數(shù)值之間并無可比較的關(guān)系,還需要進(jìn)行無量綱化處理。因此,對(duì)食用菌銷量預(yù)測(cè)模型采用最值歸一化的方法為:
式中:x為具體的指標(biāo)項(xiàng);min(x)表示指標(biāo)項(xiàng)的最小值;max(x)表示指標(biāo)項(xiàng)的最大值。在最值歸一化后,可以將所有數(shù)據(jù)都映射到0~1之間。
通過以上數(shù)據(jù)預(yù)處理方式,將原始的食用菌電子交易數(shù)據(jù)進(jìn)行清洗整理,從而提取到有效的銷量數(shù)據(jù)集,在Python庫(kù)中安裝Pandas庫(kù),用于對(duì)數(shù)據(jù)進(jìn)行讀取以及增、刪、查、改等操作。
通過對(duì)食用菌電子交易數(shù)據(jù)的觀察和分析,去除一些無關(guān)緊要的數(shù)據(jù)列,如銷量預(yù)測(cè)中的地址、郵編、用戶姓名等無關(guān)數(shù)據(jù)列,這些數(shù)據(jù)對(duì)銷量預(yù)測(cè)模型的訓(xùn)練毫無用處。同時(shí),還要從數(shù)據(jù)集中挖掘出隱含的未知信息以增加銷量數(shù)據(jù)的特征,例如每天的銷量的預(yù)測(cè)時(shí),發(fā)現(xiàn)當(dāng)天銷量較高,那么就不僅要從日期這一列的數(shù)據(jù)中得到當(dāng)天具體的銷量,還要挖掘出為什么當(dāng)天銷量會(huì)增加,如當(dāng)天是節(jié)日或者某個(gè)商家的結(jié)算日期。
將食用菌交易量這一列數(shù)據(jù)作為重要的數(shù)據(jù)集標(biāo)簽數(shù)據(jù)進(jìn)行預(yù)測(cè)模型的構(gòu)建,主要涉及的數(shù)據(jù)列還有日期、時(shí)間、食用菌品種等這幾個(gè)特征。僅從這幾個(gè)特征來進(jìn)行模型的訓(xùn)練顯然是不夠的,因此需要從食用菌數(shù)據(jù)集中再進(jìn)行數(shù)據(jù)挖掘,找出一些有相互關(guān)聯(lián)的信息。如食用菌銷售數(shù)據(jù)集中的日期字段中,可以進(jìn)一步挖掘到星期的信息,通過當(dāng)天的日期是星期幾來對(duì)銷量按周進(jìn)行預(yù)測(cè),還可以挖掘出當(dāng)天是否為供應(yīng)商結(jié)算日,是否為節(jié)假日等,從而得到更多的影響食用菌銷量因素。同時(shí),通過對(duì)日期字段內(nèi)容的進(jìn)一步分解也可以發(fā)現(xiàn)一些數(shù)據(jù)特征,如在節(jié)假日,銷售金額會(huì)比平時(shí)增長(zhǎng)很多,在“雙十一”更是出現(xiàn)了井噴;打折促銷期內(nèi),銷量較平時(shí)有較大的增加;在“金九銀十”的月份會(huì)出現(xiàn)價(jià)格上漲的情況。因此,日期字段數(shù)值也可作為一個(gè)數(shù)據(jù)特征來加入銷售預(yù)測(cè)模型。根據(jù)這些方法,也可對(duì)銷售時(shí)間增加上下午、早晚等時(shí)間段,不同的時(shí)間段或多或少也會(huì)影響銷量。
使用Pandas來讀取CSV數(shù)據(jù)集,然后對(duì)數(shù)據(jù)按上述辦法進(jìn)行處理,得到一個(gè)已經(jīng)擴(kuò)展了特征的數(shù)據(jù)集進(jìn)行One-Hot編碼對(duì)銷量數(shù)據(jù)的特征抽象。進(jìn)行One-Hot編碼的另一個(gè)原因是在訓(xùn)練時(shí),One-Hot編碼是銷量分類的特征先進(jìn)行整數(shù)編碼,然后再將其轉(zhuǎn)化為二進(jìn)制向量表示,即0或1,這種編碼比傳統(tǒng)的順序分類編碼更方便計(jì)算機(jī)識(shí)別和計(jì)算,由于將數(shù)值范圍變小只有0和1,因此更有利于梯度下降的計(jì)算機(jī)求解。
為了提高訓(xùn)練出來的預(yù)測(cè)模型的泛化能力,將全部數(shù)據(jù)進(jìn)行打亂,一般需要打亂3次以上。保存數(shù)據(jù)就得到了食用菌銷量預(yù)測(cè)模型的數(shù)據(jù)集。對(duì)該數(shù)據(jù)集分成訓(xùn)練集和測(cè)試集兩部分,比例大概為2:1,使用Pandas提供的to_csv() 命令將數(shù)據(jù)保存為csv格式。
預(yù)測(cè)模型的訓(xùn)練過程通過一個(gè)四層卷積神經(jīng)網(wǎng)絡(luò)來完成,該網(wǎng)絡(luò)由2個(gè)卷積層來完成卷積運(yùn)算,以便提取食用菌銷量數(shù)據(jù)的各種特征;2個(gè)卷積層后連接著1個(gè)全鏈接層,用于將提取到的各種特征進(jìn)行綜合處理,全連接層進(jìn)行數(shù)據(jù)傳輸時(shí)需要耗費(fèi)的內(nèi)存比較大,最后全連接層的輸出值被傳遞給一個(gè)輸出層輸出。但這個(gè)網(wǎng)絡(luò)容易發(fā)生欠擬合,可能是由于卷積神經(jīng)網(wǎng)絡(luò)權(quán)重太少,導(dǎo)致無法學(xué)習(xí)到足夠的信息。因此,使用Adadelta的優(yōu)化器來解決學(xué)習(xí)率的問題,Adadelta避免了神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)速率的衰減,只將網(wǎng)絡(luò)累積之前剃度的容器限制到一個(gè)固定的大小范圍內(nèi),因此可以忽略學(xué)習(xí)速率設(shè)置的問題。即使進(jìn)行了許多更新,仍然會(huì)依據(jù)漸變更新的移動(dòng)容器調(diào)整學(xué)習(xí)速率,仍然繼續(xù)學(xué)習(xí)。
對(duì)卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化,兩層卷積中每個(gè)卷積核的尺寸為3×3;第一卷積層的卷積核通道數(shù)為64,第二層多加一個(gè)卷積核組;神經(jīng)元個(gè)數(shù)設(shè)置為4 096個(gè),以減少全連接層的內(nèi)存消耗。具體訓(xùn)練時(shí)可以先對(duì)預(yù)處理后的數(shù)據(jù)集劃分中的訓(xùn)練集提取少量樣本開始訓(xùn)練,在測(cè)試數(shù)據(jù)集上每訓(xùn)練3 000次后保存一次模型。減少樣本數(shù)的目的是為了節(jié)省訓(xùn)練時(shí)間。理論上準(zhǔn)確率當(dāng)然沒有全集數(shù)據(jù)訓(xùn)練高,但實(shí)際的訓(xùn)練結(jié)果也能達(dá)到99%的準(zhǔn)確率,已經(jīng)基本上達(dá)到了預(yù)測(cè)模型的精度要求,而且還能節(jié)約運(yùn)算時(shí)間。
食用菌電子商務(wù)中的交易數(shù)據(jù)類型眾多,與銷量有關(guān)的數(shù)據(jù)提取和清洗十分必要,食用菌銷量的影響因素也很多,有些因素并不是直接顯示在已有的數(shù)據(jù)集中,還需要進(jìn)行進(jìn)一步挖掘,為訓(xùn)練集和預(yù)測(cè)數(shù)據(jù)集提供更多的銷量數(shù)據(jù)特征,增加銷量預(yù)測(cè)模型的準(zhǔn)確度。采用深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)來構(gòu)建食用菌銷量預(yù)測(cè)模型,可以實(shí)現(xiàn)食用菌電子交易的數(shù)據(jù)的特征自動(dòng)選取,特別是銷量數(shù)據(jù)的特征分類效果良好,能夠滿足訓(xùn)練集數(shù)據(jù)的需要。避免了BP神經(jīng)網(wǎng)絡(luò)中反向傳播時(shí)梯度損失過快的問題,可以對(duì)未來一段時(shí)間食用菌的銷量進(jìn)行更為準(zhǔn)確的預(yù)測(cè),而且能夠節(jié)約訓(xùn)練時(shí)間。