一種基於reABC‑SVM的葡萄酒質量鑑別方法與流程
2023-11-03 07:28:42 2
本發明設計葡萄酒質量鑑別領域,具體是一種基於reabc-svm的葡萄酒質量分類方法。
技術背景
葡萄酒中含有豐富的營養物質,至今多達600種以上的物質被測定出來。葡萄具有的營養和醫療作用很早就被認識,葡萄酒因其特殊的營養價值和較好的保健效果,越來越受到廣大消費者的歡迎。那麼如何準確的對葡萄酒質量進行鑑別就顯得尤為重要。對於傳統的葡萄酒鑑別方法,通常是靠評酒員的主觀評價,這種評價方法首先不具備普遍性,並且絕對依賴於評酒員。其次,在工作量大大增加後,評酒員的瓶酒準確性可能會出現很大的誤差,這樣可能會造成災難性的後果。所以需要更精確的鑑別工具。
目前一般都通過交叉驗證試算的方法,或者梯度下降法確定,不僅效率較低且穩定性不高。而且對於葡萄酒質量分類問題,如果使用目前普遍的方法,更容易陷入局部最優。
技術實現要素:
為了解決現有技術的不足之處,本發明提供一種基於reabc-svm的葡萄酒質量鑑別方法,以期能利用改進abc算法對svm參數進行優化,從而得到最合適的分類模型實現對葡萄酒質量好壞的分類,進而解決葡萄酒質量鑑別問題。
本發明解決上述技術問題的技術方案包括以下步驟:
本發明一種基於reabc-svm的葡萄酒質量鑑別方法的特點是按如下步驟進行:
步驟1:獲取n個葡萄酒的特徵向量集合構成訓練樣本集,記為v=[v1,v2,…,vi,…,vn],其中vi為第i個葡萄酒的特徵向量,並有為第i個葡萄酒的第j個特徵值,yi為第i個葡萄酒的質量,且yi=1表示第i個葡萄酒的質量為優,yi=0表示第i個葡萄酒的質量為劣;1≤i≤n,1≤j≤n;
步驟2:基於所述訓練樣本集v,利用改進的人工蜂群優化算法對支持向量機的懲罰係數c和rbf核函數的參數g進行動態調整,從而建立葡萄酒質量鑑別的最優分類模型;
步驟2.0:利用式(1)對訓練樣本集v進行歸一化,得到歸一化後的訓練樣本集v′=[v′1,v′2,…,v′i,…,v′n],並有
式(1)中,為第i個葡萄酒的特徵向量vi中的最小特徵值,為第i個葡萄酒的特徵向量vi中的最大特徵值;
步驟2.1:定義種群大小為m、最大迭代次數為len、當前迭代次數為t,蜜源放棄限制為limit,計數器為lim,蜜蜂個體集合為e;初始化t=0、e為空集;
步驟2.2:初始化lim=0;
由第m個懲罰係數cm和第m個參數gm構成第m個蜜蜂個體gm,從而由m個蜜蜂個體構成蜜蜂種群;並在所設置的範圍內隨機初始化所述蜜蜂種群作為第t代種群;
步驟2.3:利用所述第t代種群中的第m個蜜蜂個體和所述歸一化後的訓練樣本集對svm分類器進行訓練,得到第t代種群的第m個分類模型,從而得到第t代種群的m個分類模型;
步驟2.4、利用所述第t代種群的m個分類模型對所述歸一化後的訓練樣本集v′進行分類,得到第t代種群的m個分類模型的分類精度,記為表示第t代種群的第m個分類精度,1≤m≤m;
步驟2.5、從第t代種群的m個分類精度at中選取最大值所對應的蜜蜂個體作為第t+1代種群的中心,記為ft+1;
步驟2.6、令m=1;
步驟2.7、在第t+1代種群的中心ft+1的鄰域內生成第t代種群的第m個新蜜蜂個體,記為用新蜜蜂個體和所述歸一化後的訓練樣本集v′對svm分類器進行訓練,從而得到第t代種群的第m個新蜜蜂個體的分類模型;
用所述第t代種群的第m個新蜜蜂個體的分類模型對所述歸一化後的訓練樣本集v′進行分類,得到第t代種群的第m個新蜜蜂個體的分類精度比較是否成立,若成立,則將第t代種群中的第m個蜜蜂個體作為第t+1代種群的第m個蜜蜂個體,若不成立,則將新蜜蜂個體作為第t+1代種群的第m個蜜蜂個體;
步驟2.8、將m+1賦值給m,判斷m>m是否成立,若成立,則執行步驟2.9,否則,返回步驟2.7;
步驟2.9、根據步驟2.3和步驟2.4,得到第t+1代種群的m個分類精度,記為比較max(at+1)>max(at)是否成立,若成立,則令lim=0,否則,令lim+1賦值給lim;
步驟2.10、利用式(2)獲得第t+1代種群中第m個蜜蜂個體的被選概率從而得到第t+1代種群中m個蜜蜂個體的被選概率:
式(2)中,表示概率係數;
步驟2.11、定義變量k,並初始化k=1;
步驟2.12、初始化m=1;
步驟2.13、利用隨機數函數生成第m個隨機值rm;
步驟2.14、比較是否成立,若成立,則執行步驟2.15;否則,執行步驟2.17;
步驟2.15、以第t+1代種群中第m個蜜蜂個體為中心,並在鄰域內隨機生成第t+1代種群的第m個新蜜蜂個體,記為用新蜜蜂個體和所述歸一化後的訓練樣本集v′對svm分類器進行訓練,從而得到第t+1代種群的第m個新蜜蜂個體的分類模型;
用所述第t+1代種群的第m個新蜜蜂個體的分類模型對所述歸一化後的訓練樣本集v′進行分類,得到第t+1代種群的第m個新蜜蜂個體的分類精度比較是否成立,若成立,則將第t+1代種群中第m個蜜蜂個體作為第t+2代種群的第k個蜜蜂個體,若不成立,則將第t+1代種群的第m個新蜜蜂個體作為第t+2代種群的第k個蜜蜂個體;
步驟2.16、將k+1賦值給k,判斷k=m是否成立,若成立,則表示已生成第t+2代種群的m個蜜蜂個體,執行步驟2.18;否則,執行步驟2.17;
步驟2.17、將m+1賦值給m後,判斷m>m是否成立,若成立,則返回步驟2.12;否則返回步驟2.13;
步驟2.18、根據步驟2.3和步驟2.4,得到第t+2代種群的m個分類精度,記為比較max(at+2)>max(at+1)是否成立;若成立,則令lim=0,否則,令lim+1賦值給lim;
步驟2.19、判斷lim>limit是否成立,若成立,則將max(at+2)對應的蜜蜂個體存放到蜜蜂個體集合e中,並返回步驟2.2執行,否則,執行步驟2.20;
步驟2.20、將t+2賦值給t後,判斷t>len是成立,若成立,則執行步驟2.21;否則,執行步驟2.5;
步驟2.21、將第len代種群和所述蜜蜂個體集合e合併為一個種群z,根據步驟2.3和步驟2.4得到種群z中所有蜜蜂個體的分類精度,並將分類精度最大的蜜蜂個體作為支持向量機的最優輸入,利用所述最優輸入和所述歸一化後的訓練樣本集v′對svm分類器進行訓練,從而得到葡萄酒質量鑑別的最優分類模型,以所述葡萄酒質量鑑別的最優分類模型實現對葡萄酒的質量鑑別。
與現有技術相比,本發明的有益效果在於:
1、本發明使用reabc-svm的葡萄酒質量鑑別方法,通過改進人工蜂群優化算法對支持向量機的懲罰因子和核函數參數進行動態調整,輸出最優參數,利用最優參數建立葡萄酒鑑別模型;從而使得模型具有泛化能力強,效果穩定,分類精度高優點。
2、由於在葡萄酒質量分類問題中存在著參數效果大致呈梯度分布,即只有在當前最優個體附近才有可能生成更有個體,因此本發明中通過將傳統的算法中的新個體生成方式改為「從當前最優點生成種群」的方式,節省了搜索時間,增加了搜索能力。
3、本發明中通過設置蜜源放棄限制值來判斷種群迭代過程中是否陷入局部最優,以及時放棄種群,避免了浪費搜索精力,幫助跳出局部最優。
附圖說明
圖1是本發明方法流程圖。
具體實施方式
本實施例中,如圖1所示,一種基於reabc-svm的葡萄酒質量鑑別方法,目的在於將改進人工蜂群支持向量機方法應用於葡萄酒質量鑑別中,具體的說,是按如下步驟進行:
步驟1:獲取n個葡萄酒的特徵向量集合構成訓練樣本集,記為v=[v1,v2,…,vi,…,vn],其中vi為第i個葡萄酒的特徵向量,並有為第i個葡萄酒的第j個特徵值,yi為第i個葡萄酒的質量,且yi=1表示第i個葡萄酒的質量為優,yi=0表示第i個葡萄酒的質量為劣;1≤i≤n,1≤j≤n;
步驟2:基於所述訓練樣本集v,利用改進的人工蜂群優化算法對支持向量機的懲罰係數c和rbf核函數的參數g進行動態調整,從而建立葡萄酒質量鑑別的最優分類模型;
步驟2.0:利用式(1)對訓練樣本集v進行歸一化,得到歸一化後的訓練樣本集v′=[v′1,v′2,…,v′i,…,v′n],並有
式(1)中,為第i個葡萄酒的特徵向量vi中的最小特徵值,為第i個葡萄酒的特徵向量vi中的最大特徵值;
對訓練樣本集進行歸一化,得到如圖所示的樣本集,對訓練樣本進行歸一化,可以排除個別數據對整體數據的效果影響,使得到的分類模型產生更高的分類精度。
步驟2.1:定義種群大小為m、最大迭代次數為len、當前迭代次數為t,蜜源放棄限制為limit,計數器為lim,蜜蜂個體集合為e;初始化t=0、e為空集,此步驟為如圖所示step1。
步驟2.2:初始化lim=0;
由第m個懲罰係數cm和第m個參數gm構成第m個蜜蜂個體gm,從而由m個蜜蜂個體構成蜜蜂種群;並在所設置的範圍內隨機初始化所述蜜蜂種群作為第t代種群;
步驟2.3:利用所述第t代種群中的第m個蜜蜂個體和所述歸一化後的訓練樣本集對svm分類器進行訓練,得到第t代種群的第m個分類模型,從而得到第t代種群的m個分類模型;
步驟2.4、利用所述第t代種群的m個分類模型對所述歸一化後的訓練樣本集v′進行分類,得到第t代種群的m個分類模型的分類精度,記為表示第t代種群的第m個分類精度,1≤m≤m;
以上步驟均為圖中step1的操作。
步驟2.5、從第t代種群的m個分類精度at中選取最大值所對應的蜜蜂個體作為第t+1代種群的中心,記為ft+1;
步驟2.6、令m=1;
步驟2.7、在第t+1代種群的中心ft+1的鄰域內生成第t代種群的第m個新蜜蜂個體,記為用新蜜蜂個體和所述歸一化後的訓練樣本集v′對svm分類器進行訓練,從而得到第t代種群的第m個新蜜蜂個體的分類模型;
用所述第t代種群的第m個新蜜蜂個體的分類模型對所述歸一化後的訓練樣本集v′進行分類,得到第t代種群的第m個新蜜蜂個體的分類精度比較是否成立,若成立,則將第t代種群中的第m個蜜蜂個體作為第t+1代種群的第m個蜜蜂個體,若不成立,則將新蜜蜂個體作為第t+1代種群的第m個蜜蜂個體;
因為要保持種群中個體的優越性,所以每產生一個新個體,就要對其對應的原個體比較進行替換,從而保持種群整體的優越性,讓種群不斷進化。
步驟2.8、將m+1賦值給m,判斷m>m是否成立,若成立,則執行步驟2.9,否則,返回步驟2.7;
如果m>m成立,則代表已生成m個新個體,即種群已更新完成。步驟2.5,步驟2.6,步驟2.7,步驟2.8,即為圖1中的step2的操作。
步驟2.9、根據步驟2.3和步驟2.4,得到第t+1代種群的m個分類精度,記為比較max(at+1)>max(at)是否成立,若成立,則令lim=0,否則,令lim+1賦值給lim;
該步驟是在對種群是否進步進行判斷,即若max(at+1)>max(at)成立,則認為種群進步,否則,認為種群沒有進步,即停滯。同時還要記錄下種群連續停滯次數,以配合後面判斷種群是否陷入局部最優。
步驟2.10、利用式(2)獲得第t+1代種群中第m個蜜蜂個體的被選概率從而得到第t+1代種群中m個蜜蜂個體的被選概率:
式(2)中,表示概率係數;被選概率,既是每個個體被選擇在其附近生成新個體的概率。
步驟2.11、定義變量k,並初始化k=1;
步驟2.12、初始化m=1;
步驟2.13、利用隨機數函數生成第m個隨機值rm;
步驟2.14、比較是否成立,若成立,則執行步驟2.15;否則,執行步驟2.17;
步驟2.15、以第t+1代種群中第m個蜜蜂個體為中心,並在鄰域內隨機生成第t+1代種群的第m個新蜜蜂個體,記為用新蜜蜂個體和所述歸一化後的訓練樣本集v′對svm分類器進行訓練,從而得到第t+1代種群的第m個新蜜蜂個體的分類模型;
用所述第t+1代種群的第m個新蜜蜂個體的分類模型對所述歸一化後的訓練樣本集v′進行分類,得到第t+1代種群的第m個新蜜蜂個體的分類精度比較是否成立,若成立,則將第t+1代種群中第m個蜜蜂個體作為第t+2代種群的第k個蜜蜂個體,若不成立,則將第t+1代種群的第m個新蜜蜂個體作為第t+2代種群的第k個蜜蜂個體;
步驟2.16、將k+1賦值給k,判斷k=m是否成立,若成立,則表示已生成第t+2代種群的m個蜜蜂個體,執行步驟2.18;否則,執行步驟2.17;
步驟2.17、將m+1賦值給m後,判斷m>m是否成立,若成立,則返回步驟2.12;否則返回步驟2.13;
以上步驟2.10至步驟2.17為圖1中的step3的具體操作。首先按照個體的被選概率選擇個體,在其鄰域內生成新個體,並對兩個個體的進行比較替換。由於按照式(2)計算被選概率,可以使種群中優越的個體得到更多的被選擇地機會。避免浪費搜索時間。
對於第t代種群的生成方式,即以最優個體為中心,在其鄰域內產生心中群,在這裡並不適用。其原因是,在產生第t代種群時,已經保證全部個體都在最優個體的鄰域內,已經保證種群整體的優越性。如果繼續在此範圍內搜索,種群將會陷入局部最優,此時應該擴大搜索範圍,在種群附近進行精確查找。
步驟2.18、根據步驟2.3和步驟2.4,得到第t+2代種群的m個分類精度,記為比較max(at+2)>max(at+1)是否成立;若成立,則令lim=0,否則,令lim+1賦值給lim;此步驟與步驟2.9相同,為記錄種群連續停滯次數。
步驟2.19、判斷lim>limit是否成立,若成立,則將max(at+2)對應的蜜蜂個體存放到蜜蜂個體集合e中,並返回步驟2.2執行,否則,執行步驟2.20;
如果lim>limit成立,則說明種群一陷入局部最優。在這種情況下,不應該浪費搜索盡力讓種群繼續迭代更新,而是應該放棄當前種群,重新初始化種群。
步驟2.20、將t+2賦值給t後,判斷t>len是成立,若成立,則執行步驟2.21;否則,執行步驟2.5;
步驟2.21、將第len代種群和所述蜜蜂個體集合e合併為一個種群z,根據步驟2.3和步驟2.4得到種群z中所有蜜蜂個體的分類精度,並將分類精度最大的蜜蜂個體作為支持向量機的最優輸入,利用所述最優輸入和所述歸一化後的訓練樣本集v′對svm分類器進行訓練,從而得到葡萄酒質量鑑別的最優分類模型,以所述葡萄酒質量鑑別的最優分類模型實現對葡萄酒的質量鑑別。
以上步驟2.19,步驟2.20,步驟2.21即為圖1中的step4中的操作,由於在放棄種群時,不能確定下一次迭代完成的種群會比要被放棄的種群效果更優越,所以在放棄種群時,要先記錄下其中的最優個體。最後在種群e和最後一代種群中挑選最優個體,作為最後的svm的參數,以保證得到最有分類模型。