陶姿邑
(陜西中醫藥大學 信息化建設管理處, 陜西 咸陽 712046)
隨著數據挖掘技術不斷發展,每天都會出現大量的數據,為了對這些數據進行有效管理,出現了數據管理系統,由于數據的規模越來越大,數量也急劇增大,出現了一些大型數據庫[1]。在數據庫管理系統的實際應用中,由于數據庫本身的冗余特性,存在一些重復的記錄,當重復記錄數量過大時,導致數據庫存儲的空間變大,成本增加,同時對數據庫中的記錄查詢和檢索產生不利影響,無法在有效的時間內找到用戶真正需要的記錄,因此如何減少重復記錄是當前數據庫管理系統中的一個關鍵研究問題[2-3]。
數據庫重復記錄檢測是減少重復記錄數量的關鍵技術,為此,許多學者和研究機構對其進行分析,最初學者們引入文本分析方法實現數據庫重復記錄檢測,但是相對于普通文本,數據庫記錄有自身的特殊性,因此數據庫重復記錄檢測錯誤率比較高[4]。近年來,一些學者將數據庫重復記錄檢測問題看作是一種二分類問題,即將數據庫記錄劃分為重復和不重復兩類,通過引入灰色模型、人工神經網絡、支持向量機等建立數據庫重復記錄檢測的分類器[5-7],灰色模型是一種線性建模方法,而數據庫重復記錄檢測具有較高的非線性變化特點,使得數據庫重復記錄檢測時間長,而且數據庫重復記錄檢測精度低,人工神經網絡雖然是一種非線性學習算法,但是其易收斂到局最優解,使得數據庫重復記錄檢測結果出現過擬合或者欠學習現象,導致數據庫重復記錄檢測結果不可靠[8]。支持向量機是一種深度學習算法,具有學習速度快、擬合精度高等優點,在數據庫重復記錄檢測中得到了廣泛的應用,但是其參數直接影響數據庫重復記錄檢測結果,目前參數優化問題還沒有得到有效的解決[9]。
為了提高數據庫重復記錄檢測效果,提出了基于深度學習的數據庫重復記錄檢測算法。引入支持向量機對數據庫重復記錄檢測進行建模,并采用量子粒子群算法優化支持向量機參數,最后通過數據庫重復記錄檢測仿真實驗驗證了本文算法的性能。
支持向量機是新型的深度學習算法,相對于傳統深度學習算法,其泛化能力更強,學習結果更加可靠,根據工作原理,支持向量機可以劃分為兩類:一類是支持向量分類機,其用于對一些分類問題進行求解;另一類是支持向量回歸機,主要用于預測問題的建模與分析,而數據庫重復記錄檢測是一種分類問題,因此采用支持向量分類機進行。支持向量機的分類原理,如圖1所示。
在圖1中,中間粗線為所有樣本的最優分類平面,黃色矩形的兩邊為樣本和最優分類平面之間的最近距離,兩類樣本應該處于黃色矩形之外。

圖1 支持向量分類機的工作原理
設數據庫重復記錄檢測訓練樣本集合為:{xi,yi},xi∈Rn,i=1,2,…,l,xi為數據庫重復記錄檢測的輸入向量,yi為數據庫重復記錄檢測的輸出,那么基于支持向量機的數據庫重復記錄檢測的最優分類平面,如式(1)。
y=ωTΦ(x)+b=ω·φ(x)+b
(1)
式中,ω和b為權值和偏向量。
要找到數據庫重復記錄檢測的最優分類平面,首先確定最合理的ω和b值,通常情況下,對式(1)無法求解,因為求解的時間相當長,有時難以實現。為了簡化ω和b值的求解過程,通過采用松弛因子ξi對式(1)進行相應的轉換,得到式(1)的等價形式,如式(2)。
s.t.yi(ω·Φ(xi)+b)≥1-ξi
ξi≥0,i=1,2…,n
(2)
式中,C表示支持向量機的懲罰參數,主要用于評價數據庫重復記記錄檢測結果誤差和計算時間的復雜度。
為了進一步優化式(1)求解過程,引入拉格朗日乘子(αi)對式(2)進行變換,如式(3)。
s.t.
(3)
式中,l表示數據庫重復記錄檢測的訓練樣本數量。
通過對式(3)的求解,可以得到ω的計算公式,如式(4)。
ω=∑αiyi(Φ(xi)·Φ(x))
(4)
支持向量機的數據庫重復記錄檢測分類形式,如式(5)。
f(x)=sgn(αiyi(Φ(xi)·Φ(x))+b)
(5)
式中,Φ(xi)·Φ(x)表示點積運算,sgn()表示符號函數。
當數據庫重復記錄檢測具有隨機性、非線性變化特點,Φ(xi)·Φ(x)運行過程十分復雜,這樣影響數據庫重復記錄檢測效率,為此采用核函數k(x,xi)代替Φ(xi)·Φ(xj),加快數據庫重復記錄檢測的速度,如式(6)。
f(x)=sgn(αiyik(x,xi)+b)
(6)
式中,k(x,xi)的表達式,如式(7)。
(7)
式中,σ表示核寬度。
支持向量機的數據庫重復記錄檢測過程中,參數C和σ直接影響建模效果,傳統方法采用經驗方式確定它們的值,這樣難以獲得高正確率的數據庫重復記錄檢測結果,為此本文引入量子粒子群算法確定參數C和σ的最優值。
量子粒子群算法是一種改進粒子群算法,量子粒子群的當前最優位置為mbest,式(8)[10]。
(8)
第i個粒子的d維坐標,如式(9)。
(9)
式中,uid為一個隨機數,Kid計算方式,如式(10)
Kid(t)=2β(t)|mbestid(t)-xid(t)|
(10)
式中,t表示迭代次數。
粒子位置更新方式,如式(11)。
xid(t+1)=rid±β(t)×|mbest(t)-Xid(t)|×
ln(1/uid(t))
(11)
式中,β為收縮擴張系數。
當前粒子的最優位Ri,如式(12)。
(12)
式中,f()為目標函數。
Setp1:初始量子粒子群算法的量子,將參數C和σ的初始值作為粒子;
Setp2:確定量子粒子群的適應度函數值,并根據適應度函數值確定當前粒子和量子粒子群的最優位置;
Setp3:迭代次數增加,并對量子粒子群的個體位置進行更新;
Setp4:計算新種群個體的適應度函數值,并根據適應度函數值對當前粒子和量子粒子群的最優位置進行更新操作;
Setp5:如果達到最大迭代次數,就終止近代,不然返回到Setp3;
Setp6:根據量子粒子群的最優位置得到參數C和σ的最優值。
深度學習的數據庫重復記錄檢測算法的工作原理為:首先采用數據庫重復記錄檢測數據,并從中提取記錄的特征,采用人工方法對數據庫記錄類型進行標記,產生數據庫重復記錄檢測的學習樣本;然后引入量子粒子群算法確定參數C和σ的最優值,最后采用支持向量機對數據庫重復記錄檢測的學習樣本進行訓練,建立數據庫重復記錄檢測模型,如圖2所示。

圖2 深度學習的數據庫重復記錄檢測原理
為了分析本文設計的數據庫重復記錄檢測算法的有效性,采用仿真實驗環境為CPU(AMD 銳龍R5-3550),內存為16 GB,硬盤為512 GB SSD,操作系統為Win10,編程軟件為Matlab 2017。采用一個大型數據庫作為實驗對象,共進行5次仿真實驗,隨機從中選擇部分記錄進行仿真測試,它們均存在一定數量的重復記錄,記錄總數量,如表1所示。

表1 五次仿真實驗的記錄數量
在相同實驗環境下,選擇量子粒子算法優化BP神經網絡(QPSO-BP)、支持向量機(SVM),其參數采用隨機方式確定,作為參比模型,將表1中的數據庫記錄根據5∶1的方式劃分為訓練樣本集和測試樣本集,統計3種算法的數據庫重復記錄檢測正確率,如圖3所示。

圖3 數據庫重復記錄檢測正確率對比
對圖3進行分析可以得到如下結論。
(1) QPSO-BP的數據庫重復記錄檢測正確率要低于本文算法,這是因為雖然兩者都采用量子粒子群算法對參數進行了優化,但是由于BP神經網絡本身的缺陷,使得QPSO-BP無法建立最優的數據庫重復記錄檢測模型,導致QPSO-BP的數據庫重復記錄檢測錯誤率較高。
(2) SVM的數據庫重復記錄檢測正確率同樣低于本文算法,這是因為SVM采用隨機方式確定參數,而本文算法采用量子粒子群算法對參數進行了優化,建立了更優的數據庫重復記錄檢測模型,減少了數據庫重復記錄檢測錯誤率,對比實驗結果體現了本文算法的優越性。
由于當前數據庫向超大規模方向進行發展,重復記錄數量相當大,使得數據庫重復記錄檢測效率十分關鍵,成為算法的一個重要評價標準,統計3種算法的數據庫重復記錄檢測時間,如圖4所示。

圖4 數據庫重復記錄檢測效率對比
從圖4的數據庫重復記錄檢測時間可以看出,本文算法的數據庫重復記錄檢測時間要明顯少于對比算法,大幅度提升了數據庫重復記錄檢測效率,可以用于大型數據庫重復記錄檢測,具有更高的實際應用價值。
重復記錄檢測對于提升數據庫檢索效率,找到用戶真正需要的數據具有重要意義,針對當前方法檢測重復記錄時檢測結果不理想的問題,提出基于深度學習的數據庫重復記錄檢測和優化方法,仿真實驗結果表明,本文算法是一種精度高、效率快的數據庫重復記錄檢測算法,為解決大型數據庫重復記錄問題提供了一種新的研究工具。