• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于XGBoost方法的葡萄酒品質預測

      2018-12-26 12:09:12孫逸菲袁德成王建龍
      沈陽化工大學學報 2018年4期
      關鍵詞:葡萄酒準確率分類

      孫逸菲, 袁德成, 王建龍, 白 楊

      (沈陽化工大學 信息工程學院, 遼寧 沈陽 110142)

      葡萄酒是一種成分復雜的飲品,其質量測定是葡萄酒行業(yè)進行質量管理的重要手段之一.測定葡萄酒質量主要通過專業(yè)品酒師的品嘗和測量葡萄酒的物理化學性質來進行判定.質量評價主要依靠品酒師的感官,品酒師通過觀察葡萄酒的顏色、質感等外觀特性和嗅聞葡萄酒的香氣,并結合品嘗的方式進行葡萄酒的質量評價.而測量葡萄酒的物理化學性質是指測量其非揮發(fā)性酸度、密度及pH等,這種測量方法對葡萄酒的質量測評比較有效.

      在數(shù)據(jù)分析過程中,經(jīng)常需要對數(shù)據(jù)建模并做出預測.Boosting分類器屬于監(jiān)督學習范疇,它的基本思想是把成百上千個分類準確率較低的樹模型組合起來,組合成為一個準確率較高的模型[1].這個模型會不斷地迭代,每次迭代生成一顆新的樹.對于如何在每一步生成合理的樹,有很多種解決方法,其中在1999年由Jerome Friedman提出的梯度推進機(Gradient Boosting Machine)[2]是一個相對效率較高的算法.它在生成每一顆樹的時候采用梯度下降的思想,以之前生成的所有樹為基礎,向著最小化給定目標函數(shù)的方向多走一步.現(xiàn)在希望能通過XGBoost工具更好地解決這個問題.XGBoost(Extreme Gradient Boost)是Gradient Boosting Machine的一個C++實現(xiàn)[3],它最大的特點在于能夠自動利用CPU的多線程進行并行,同時在算法上加以改進,提高精度.

      隨著科學技術的進步,使得收集、存儲和處理數(shù)據(jù)成為可能,機器學習技術在葡萄酒品質預測中也得到了廣泛的應用.對葡萄酒質量的評價方法較多,劉延玲[4]利用改進的人工神經(jīng)網(wǎng)絡對葡萄酒物理化學性質及感官進行了分類預測;李運等[5]介紹了運用聚類算法、主成分分析方法、相關分析方法等對葡萄酒質量進行評價;徐海濤[6]提出利用改進的近似支持向量機方法對葡萄酒質量進行鑒定和預測;林劼等[7]利用隨機森林算法對葡萄酒品質進行了預測,通過與其他方法的比較表明其預測精度較高;Cortez等[8]將線性回歸、神經(jīng)網(wǎng)絡和支持向量機這三個回歸技術應用于對葡萄酒品質的預測.

      針對葡萄酒質量檢測這一問題,本文采用機器學習中XGBoost算法進行葡萄酒品質預測,將該方法與線性回歸、神經(jīng)網(wǎng)絡和支持向量機算法相比較[8],發(fā)現(xiàn)該方法具有預測準確率高及運算時間短的特點,在葡萄酒品質測定過程中,能夠有效地減少因品酒師個人因素所帶來的偏差,對于提高釀酒品質和葡萄酒的生產(chǎn)測定都具有重要意義.

      1 XGBoost機器學習算法

      監(jiān)督學習算法的重要組成部分包括模型、參數(shù)和目標函數(shù).模型和參數(shù)本身指定了給定輸入,我們如何做預測;目標函數(shù)的作用是使我們能夠找到一個比較好的預測.一般的目標函數(shù)包括下面兩項[3]:

      Obj(Θ)=L(Θ)+Ω(Θ)

      (1)

      L(Θ)表示誤差函數(shù),Ω(Θ)是正則化項.

      1.1 回歸樹的重要組成部分

      XGBoost最基本的組成部分叫做回歸樹.對于樹的集合,可以把模型寫成:

      (2)

      其中每個f是一個函數(shù)空間F里面的函數(shù),而F是包含所有回歸樹的函數(shù)空間.設計的目標函數(shù)包含兩部分,誤差函數(shù)和正則化項:

      fk∈F

      (3)

      1.2 Gradient Boosting學習模型

      (1) 學習方法:公式(3)中第一部分是誤差函數(shù),第二部分是每棵樹的復雜度的和.對于樹模型,每一次保留原來的模型不變,加入一個新的函數(shù)f到模型中.

      (4)

      (2) 目標:選取一個f來最小化目標函數(shù)

      Ω(ft)+C

      (5)

      其中C為常數(shù).

      (3) 再采用如下的泰勒展開定義一個近似的目標函數(shù),用泰勒展開近似原來的目標.泰勒展開式為:

      f(x+Δx)≈f(x)+f′(x)Δx+

      (6)

      定義gi和hi:

      (7)

      (4) 得到新的學習目標函數(shù):

      (8)

      當把常數(shù)項移除之后

      (9)

      這個目標函數(shù)的特點是它只依賴于每個數(shù)據(jù)點在誤差函數(shù)上的一階導數(shù)和二階導數(shù).

      (5) 重新定義每棵樹

      先對f的定義作細化,把樹拆分成結構部分q和葉子權重部分ω.結構函數(shù)q把輸入映射到葉子的索引號上去,而ω給定了每個索引號對應的葉子分數(shù).

      ft(x)=ωq(x),ω∈RT,q:Rd→{1,2,…,T}

      (10)

      ω∈RT表示葉子的向量,q為樹的結構.

      (6) 定義一棵樹的復雜度

      (11)

      (7) 在這種新定義下,目標函數(shù)為

      (12)

      其中I被定義為每個葉子上面樣本集合Ij={i|q(xi)=j}.這個目標包含了T個相互獨立的單變量二次函數(shù).可以定義Gj=∑i∈Ijgi,Hj=∑i∈Ijhi.那么這個目標函數(shù)可以進一步改寫成如下的形式,假設已經(jīng)知道樹的結構q,可以通過這個目標函數(shù)來求解出最好的ω,以及最好ω對應的目標函數(shù)最大的增益.

      (13)

      等式的左邊是最好的ω(葉子權重部分),右邊是這個ω對應的目標函數(shù)的值:

      (14)

      (15)

      (8) XGBoost算法流程

      在每一次迭代中增加一個新樹,對每一次迭代計算:

      (16)

      gi為誤差函數(shù)的一階導數(shù),hi為誤差函數(shù)的二階導數(shù).運用算法尋找切分點,產(chǎn)生每一輪新的樹

      (17)

      增加新函數(shù)ft(x)到模型

      (18)

      通常加入y(t)=y(t-1)+εft(xi),ε稱為縮減因子,目的是為了避免過擬合,通常設置為0.1.

      2 運用XGBoost算法對葡萄酒品質進行預測

      2.1 實驗數(shù)據(jù)的選取

      葡萄酒數(shù)據(jù)[9]來自于認證階段的物理化學分析測試,這些來自于2004年5月至2007年2月收集到的樣本數(shù)據(jù).數(shù)據(jù)從生產(chǎn)需求到感官分析被一個計算機系統(tǒng)記錄.每一個實例都是基于一次測試的結果,最終的數(shù)據(jù)集導入一個.csv文件中.在預處理階段,數(shù)據(jù)轉換為一個二維表,每一行代表一個單獨的葡萄酒樣本.由于紅葡萄酒和白葡萄酒存在較大差異,所以,將紅葡萄酒和白葡萄酒的數(shù)據(jù)分為兩個.csv文件進行存放與處理.

      紅葡萄酒的樣本數(shù)量為1 599個,白葡萄酒的樣本數(shù)量為4 898個.輸入變量包括客觀實驗測試得到的11個物理化學性質,如表1.

      表1 每種類型中的葡萄酒物理化學數(shù)據(jù)屬性Table 1 The physicochemical data statistics per wine type

      輸出變量基于感官數(shù)據(jù),感官數(shù)據(jù)分為0(極壞)~10級(非常好),由三位品酒師通過感官評價,選取三人中評分最低一人的評分作為評估值(運用盲測方法)[2].極壞和非常好的葡萄酒樣本都是少數(shù),評價為中間等級的葡萄酒樣本最多.所以將紅葡萄酒分為6類,評價等級為3至8;白葡萄酒分為7類,評價等級為3至9,如圖1.

      圖1 對紅葡萄酒和白葡萄酒的感官性能評價Fig.1 The histograms for the red and white sensory preferences

      2.2 XGBoost算法在葡萄酒品質預測中的應用

      2.2.1 葡萄酒品質判定的XGBoost方法和研究

      在python環(huán)境下安裝XGBoost的C++版本.通過預測模型準確率來判斷模型的優(yōu)劣.通過分類和k-Fold兩種方法評估XGBoost模型.分類方法的步驟是[10]:導入葡萄酒數(shù)據(jù),準備用于訓練和評估XGBoost模型;將數(shù)據(jù)集分成輸入X和輸出Y兩部分,將X和Y的數(shù)據(jù)分成訓練集和測試集,訓練集用于準備XGBoost模型,測試集用于從之前評估的模型性能中做新的預測;將67 %的數(shù)據(jù)用于訓練,33 %的數(shù)據(jù)用于測試;之后運用model.fit()函數(shù)擬合模型并對XGBoost模型進行預測.k-Fold方法的步驟是[10]:運用10折交叉驗證,把數(shù)據(jù)隨機分成10份,然后依次取1份作為測試集,其余9份共同作為訓練集,之后用XGBoost算法擬合訓練集數(shù)據(jù)得到模型.首先導入葡萄酒數(shù)據(jù),其次指定折疊的數(shù)量和數(shù)據(jù)集的大?。贿\用cross_val_score()函數(shù)可以運用10折交叉驗證法對XGBoost 模型進行預測.

      2.2.2 仿真結果與分析

      運用XGBoost算法下的葡萄酒特征提取圖如圖2所示.圖2中表示的是葡萄酒的11個輸入變量,f0~f10分別代表了實驗測試得到的11個物理化學性質(表1),這些物理化學性質特征從大到小順序依次如圖2所示.在獲得的圖形中證實了釀酒學的理論.比如f10代表酒精度越高表示葡萄酒的品質越高.當然對于不同種類的葡萄酒,變量重要性排序是不同的.幾類數(shù)據(jù)在一些理化性質上相差不大,但圖3中f5代表的游離二氧化硫的特征重要性大,可以說明這一理化性質大大影響口味.從圖2和圖3可以看出葡萄酒質量評價也是一個非常困難的工作.

      圖2 紅葡萄酒特征重要性條形圖Fig.2 The red wine input importances bar chart

      圖3 白葡萄酒特征重要性條形圖Fig.3 The white wine input importances bar chart

      為了使葡萄酒的品級預測更加完善并提高準確率,運用XGBoost算法的分類方法和k-fold方法分別進行了仿真試驗.在分類方法中將67 %的數(shù)據(jù)用于訓練,33 %的數(shù)據(jù)用于測試.在k-fold方法中指標分類器錯誤率的估計采用10折交叉驗證法.表2和表3為采用XG Boost分類方法和k-fold方法進行葡萄酒品質預測的結果,并將實驗結果與Cortez等人[8]運用數(shù)據(jù)挖掘技術中的其他3個回歸技術作了比較.

      表2 采用XGBoost分類與k-Fold方法對紅葡萄酒品質的預測結果Table 2 The XGBoost classification and k-Fold method predict the quality of red wine

      表中T代表容錯率,實際指絕對誤差.比如實際輸出y=1,模型預測的輸出只要在容錯率T=0.25內(y在0.75~1.25之間)就認為分類是準確的.表2中列出紅葡萄酒的驗證仿真數(shù)據(jù).前3種算法是Cortez等人先前研究的結果.表格最后兩列是通過XGBoost算法得出的分類準確率和k-Fold法準確率.從表2可以看出:在容錯率為25 %的情況下,運用XGBoost分類算法預測的紅葡萄酒準確率為61.9 %,運用XGBoost k-Fold交叉驗證算法預測的準確率為58.6 %,這都明顯高于線性回歸算法、神經(jīng)網(wǎng)絡算法和支持向量機算法的預測準確率.在準確率為50 %的情況下,同樣可以看出XGBoost分類方法的預測準確率高于線性回歸算法、神經(jīng)網(wǎng)絡算法和支持向量機算法的預測準確率.從運行時長來看,XGBoost分類方法和k-Fold交叉驗證算法的運行時長明顯快于其他3種算法的運行時長.雖然支持向量機算法的預測準確率相對較高一些,但是通過支持向量機算法測試數(shù)據(jù)集將耗費大量的運算時間.

      表3 采用XGBoost分類與k-Fold方法對白葡萄酒品質的預測結果Table 3 The XGBoost classification andk-Fold method predict the quality of white wine

      表3是采用XGBoost分類方法和k-Fold交叉驗證算法對白葡萄酒品質進行預測的結果.與線性回歸、神經(jīng)網(wǎng)絡和支持向量機的預測結果進行比較,可以看出:在容錯率25 %的情況下,通過XGBoost分類算法預測的白葡萄酒準確率為57.9 %,XGBoost k-Fold交叉驗證算法預測的白葡萄酒準確率為54.8 %,這也明顯高于其他算法的準確率.在容錯率為50 %的前提下,可以看出:無論是XGBoost分類方法還是XGBoost k-Fold交叉驗證算法,其準確率都比線性回歸和神經(jīng)網(wǎng)絡的準確率高.雖然支持向量機在50 %容錯率的情況下準確率比XGBoost算法準確率高,但是運行時間卻是XGBoost算法運行時間的約150倍.所以,綜合上述兩表可以看出XGBoost算法具有運行時間短、準確率高的優(yōu)點.

      將XGBoost分類方法和XGBoostk-Fold交叉驗證算法互相比較可以看出:XGBoost分類方法的準確率略高于XGBoost通過k-Fold交叉驗證算法的準確率,但是通過k-Fold交叉驗證算法的準確程度相比較分類方法更高.因為在k-Fold交叉驗證運行算法過程中,每一次都運用不同的訓練與測試數(shù)據(jù)進行迭代,使得計算出的準確率更加精確,但運行時長也相對較長.

      3 結束語

      通過化學檢驗的方法獲取一系列參數(shù),并采用機器學習方法進行建模、預測,可以有效地減少因品酒師個人主觀因素帶來的對葡萄酒品質判定的偏差,并通過改變特征重要性提高葡萄酒的品質.采用機器學習中XGBoost學習算法對葡萄酒的數(shù)據(jù)進行了學習仿真,對葡萄酒數(shù)據(jù)準確率進行評估,并與其他算法進行比較,對結果進行了分析.一旦識別出某些變量和質量評價的關系,就能夠在葡萄酒生產(chǎn)階段對某些變量加以控制,以使口味更好.以上分析結果可以看出:XGBoost算法在葡萄酒品質預測的應用中明顯優(yōu)于線性回歸和神經(jīng)網(wǎng)絡算法,并優(yōu)于在容錯率T=0.25情況下的支持向量機算法.XGBoost算法的運行時長相對于其他3種算法相對較短.這些對于改進釀酒、品酒評價和葡萄酒的生產(chǎn)測定都具有重要意義.

      猜你喜歡
      葡萄酒準確率分類
      自制的葡萄酒為啥愛“上頭”?
      分類算一算
      乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
      健康之家(2021年19期)2021-05-23 11:17:39
      不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
      2015—2017 年寧夏各天氣預報參考產(chǎn)品質量檢驗分析
      分類討論求坐標
      十款葡萄酒與十塊石頭
      收藏界(2018年3期)2018-10-10 05:34:08
      高速公路車牌識別標識站準確率驗證法
      數(shù)據(jù)分析中的分類討論
      教你一招:數(shù)的分類
      商河县| 丰镇市| 巴塘县| 永定县| 合作市| 噶尔县| 邯郸市| 宜春市| 朝阳县| 堆龙德庆县| 赣榆县| 壶关县| 且末县| 兰州市| 常山县| 静宁县| 山阴县| 宝坻区| 都匀市| 呼和浩特市| 上林县| 略阳县| 阳泉市| 安福县| 沙田区| 新巴尔虎左旗| 莱芜市| 武鸣县| 陵川县| 黔东| 井研县| 无锡市| 增城市| 平利县| 永川市| 西畴县| 丹巴县| 资阳市| 平昌县| 海阳市| 齐齐哈尔市|