龔希章 付熙徐
摘 要:采用Visual Basic對學(xué)生管理系統(tǒng)數(shù)據(jù)倉庫進行關(guān)聯(lián)分析,揭示了各科成績之間的聯(lián)系,詳細描述了關(guān)聯(lián)規(guī)則算法及實時優(yōu)化,分析了使用高維數(shù)據(jù)結(jié)構(gòu)在關(guān)聯(lián)分析中的優(yōu)化效果。
關(guān)鍵詞:數(shù)據(jù)挖掘;關(guān)聯(lián)分析;高維數(shù)據(jù)
DOIDOI:10.11907/rjdk.161962
中圖分類號:TP391
文獻標(biāo)識碼:A 文章編號文章編號:16727800(2016)011017303
0 引言
互聯(lián)網(wǎng)及信息技術(shù)的發(fā)展,產(chǎn)生了大量的歷史數(shù)據(jù),這些數(shù)據(jù)迫切需要轉(zhuǎn)換為有用的信息和知識[12],通過這些信息和知識,研究經(jīng)營管理狀況、分析市場、控制生產(chǎn),發(fā)現(xiàn)和挖掘可以改進的地方,甚至預(yù)測將來的發(fā)展和變化,由此產(chǎn)生數(shù)據(jù)倉庫與數(shù)據(jù)挖掘技術(shù)。數(shù)據(jù)挖掘是從大型數(shù)據(jù)庫或數(shù)據(jù)倉庫中發(fā)現(xiàn)并提取隱藏其中的信息的一種技術(shù),目的是幫助決策者尋找數(shù)據(jù)間潛在關(guān)聯(lián),發(fā)現(xiàn)被忽略的要素,這些信息對預(yù)測趨勢和決策十分重要[34]。數(shù)據(jù)挖掘技術(shù)涉及數(shù)據(jù)庫、人工智能(AI)、機器學(xué)習(xí)和統(tǒng)計分析等多種技術(shù)。
數(shù)據(jù)倉庫與數(shù)據(jù)挖掘正越來越多地應(yīng)用到傳統(tǒng)數(shù)據(jù)庫技術(shù)領(lǐng)域[5]。本文介紹了一個關(guān)聯(lián)分析技術(shù)在教育領(lǐng)域的應(yīng)用。學(xué)生某些課程成績比較好會導(dǎo)致另外一門或幾門課程成績比較好,對此進行關(guān)聯(lián)分析可得到其對課程偏好之間的聯(lián)系。本文討論了經(jīng)典頻繁集算法進行關(guān)聯(lián)分析過程,描述了關(guān)聯(lián)分析中發(fā)現(xiàn)多維關(guān)聯(lián)規(guī)則方法,分析了使用高維數(shù)據(jù)結(jié)構(gòu)在關(guān)聯(lián)分析中的優(yōu)化效果。
1 相關(guān)數(shù)據(jù)庫結(jié)構(gòu)與分析
學(xué)生成績關(guān)聯(lián)分析數(shù)據(jù)來自一個學(xué)生管理系統(tǒng)數(shù)據(jù)倉庫,數(shù)據(jù)倉庫中包含學(xué)生成績信息和住宿信息等,由于分析的是各科成績關(guān)系,故相關(guān)的只有成績事實表和學(xué)生、課程兩個維表,表中出生年月、教師、課程類型、學(xué)分、籍貫、考試日期等不相關(guān)屬性可以去掉,相關(guān)數(shù)據(jù)倉庫結(jié)構(gòu)如表1、表2、表3所示。
2 數(shù)據(jù)挖掘準(zhǔn)備工作
數(shù)據(jù)預(yù)處理包括數(shù)據(jù)清理、數(shù)據(jù)集成、數(shù)據(jù)抽取、數(shù)據(jù)變換和數(shù)據(jù)歸約。數(shù)據(jù)清理和數(shù)據(jù)集成在數(shù)據(jù)倉庫構(gòu)建過程中已經(jīng)完成。
對預(yù)處理后數(shù)據(jù)進行統(tǒng)計,以直方圖表示成績的分布情況,直方圖用分箱的方法來表示數(shù)據(jù)的近似分布。圖1以橫坐標(biāo)表示成績,縱坐標(biāo)表示百分比,用Visual Basic 處理數(shù)據(jù)。
從圖1可以看出,考試中成績優(yōu)秀的只占很小一部分,而成績及格和中等卻占比很大。一般意義上成績良好也可以說是成績好,因此將成績良好和優(yōu)秀(score>=3)都定義為成績好。
3 數(shù)據(jù)挖掘算法及改進
3.1 關(guān)聯(lián)分析和經(jīng)典頻繁集算法
關(guān)聯(lián)分析發(fā)現(xiàn)關(guān)聯(lián)規(guī)則,這些規(guī)則展示屬性-值頻繁地在給定數(shù)據(jù)集中一起出現(xiàn)的條件。關(guān)聯(lián)規(guī)則是形如X=>Y的規(guī)則,支持度為在所有交易集中同時符合X與Y的交易數(shù)與所有交易數(shù)之比,可信度指在所有交易集中同時符合X與Y的交易數(shù)與符合X的交易數(shù)之比。關(guān)聯(lián)規(guī)則可表示為:
關(guān)聯(lián)分析主要算法有經(jīng)典頻繁集算法和FP-growth等改進算法,本文采用經(jīng)典頻集算法思想對數(shù)據(jù)進行關(guān)聯(lián)分析。經(jīng)典頻繁集算法思想如下:①找出所有具有超出最小支持度的支持度項集(itemsets),由Apriori算法實現(xiàn);②利用大項集(litemsets)產(chǎn)生所需規(guī)則(rules)。算法實現(xiàn)如下:
3.2 關(guān)聯(lián)分析算法優(yōu)化
根據(jù)上面的歸約,分析學(xué)生某科(幾科)成績與其它科目成績關(guān)系。把一門課程成績好(score>=3)作為一個項,每個學(xué)生的考試可作為一項交易,下面討論進行關(guān)聯(lián)分析時遇到的問題和解決辦法。
3.2.1 關(guān)聯(lián)分析問題
由于數(shù)據(jù)結(jié)構(gòu)關(guān)系,本次關(guān)聯(lián)分析遇到以下問題:①經(jīng)典頻繁集算法理論一般只介紹同一字段值之間的關(guān)系,而考試成績分析涉及到課程和成績兩個字段,屬于多維關(guān)聯(lián)規(guī)則;②課程數(shù)量很多(1 000門左右),但大多數(shù)課程只有部分學(xué)生選修,如果支持度要求太高就得不到有意義的規(guī)則,故頻繁-1項集也會比較多。數(shù)據(jù)倉庫中每次考試都存儲為一條記錄,需要過于頻繁地掃描數(shù)據(jù)量巨大的事實表。
3.2.2 多維關(guān)聯(lián)規(guī)則處理方法和頻繁-1項集找尋
為了簡化多維關(guān)聯(lián)規(guī)則,建立一個頻繁項集表,結(jié)構(gòu)如表4所示。
3.2.3 交易集表產(chǎn)生和算法優(yōu)化
如果直接在事實表中搜尋層次為2以上的頻繁項集,需對每個學(xué)生確認頻繁集組合條件是否符合,對每個學(xué)生都要掃描記錄數(shù)巨大的考試事實表數(shù)次。為解決此問題,建立了專門的交易集表(也可在學(xué)生表中直接加一個字段,但這需要更新數(shù)據(jù)倉庫的學(xué)生表,并影響其它分析),表結(jié)構(gòu)見表5。
3.2.4 層次較高的頻繁集和規(guī)則產(chǎn)生
找出頻繁-1項集并生成交易集表后,即可依次找出頻繁-2項集等層次的頻繁集,其中一個2項集由兩項頻繁-1項集構(gòu)成,一個 n項集由一個頻繁n-1項集和一個頻繁-1項集構(gòu)成。可從頻繁項集表中推出構(gòu)成每個多項集的頻繁-1項集,掃描交易集表即可找出該頻繁多項集的支持度,最終找出所有頻繁項集。以下程序可確定某頻繁項集包含的所有頻繁-1項集:
其中,array()是用于保存該頻繁項集包含的所有頻繁-1項集數(shù)組,也可直接生成查詢條件:將array(i)=rs2(“p2”)改為str1=”$”+cstr(rs2(“p2”))+”$%”,該字符串可直接用于判斷交易集表中的交易是否包含該頻繁項集的所有條件。
通過掃描交易集表找出所有頻繁大項集后生成規(guī)則,若支持度大于給定的支持度即可輸出為關(guān)聯(lián)規(guī)則。
3.2.5 興趣度分析及規(guī)則輸出
關(guān)聯(lián)分析規(guī)則是否有興趣,主要評價標(biāo)準(zhǔn)是可信度和支持度。通常使用固定的可信度和支持度標(biāo)準(zhǔn),但由于本例中頻繁項數(shù)量很多,高層關(guān)聯(lián)規(guī)則產(chǎn)生算法的復(fù)雜度也相對較高。而較高層次頻繁項的支持度要比較低層次頻繁項低很多,可將支持度低的低層次頻繁項不產(chǎn)生高層次頻繁項,予以清除。本例中各層次使用不同的支持度標(biāo)準(zhǔn),該標(biāo)準(zhǔn)從低層到高層遞減。
經(jīng)過最后篩選,輸出部分規(guī)則如下(最小可信度為30%):
(漁業(yè)導(dǎo)論>=3)AND(大學(xué)英語1>=3)=>(法律基礎(chǔ)>=3)支持度5.1% 可信度33.3%
(法律基礎(chǔ)>=3)=>(漁業(yè)法規(guī)>=3) 支持度5.2% 可信度53.1%
(漁業(yè)法規(guī)>=3)=>(法律基礎(chǔ)>=3) 支持度5.2% 可信度61.2%
注:倒過來不一定有足夠可信度,例如由于可信度不到30%的緣故,(法律基礎(chǔ)>=3) =>(大學(xué)英語1>=3)沒有作為規(guī)則輸出。
4 結(jié)語
數(shù)據(jù)挖掘是一項復(fù)雜技術(shù),本文介紹了經(jīng)典頻繁集算法進行多維關(guān)聯(lián)分析的方法,討論了如何將多維關(guān)聯(lián)分析簡化為一維關(guān)聯(lián)分析,將多次掃描龐大的事實表轉(zhuǎn)化為掃描相對較小的交易集表。
課程很多,項集也會很大,而經(jīng)典頻繁集算法的缺點之一正是建立了大量頻繁項集,頻繁掃描事實表。所以對此種關(guān)聯(lián)分析,經(jīng)典頻繁集算法不是最好的算法,但分步優(yōu)化和使用高維數(shù)據(jù)能使算法復(fù)雜度大大降低。
參考文獻:
[1] 張兵令,付熙徐,張丹玨.數(shù)據(jù)倉庫的建立與維護[J].微型電腦應(yīng)用,2006(2):1519.
[2] 朱揚勇.高級數(shù)據(jù)庫應(yīng)用開發(fā)[M].北京:清華大學(xué)出版社,2007.
[3] JIAWEI HAN,MICHELINE KAMBR.數(shù)據(jù)挖掘——概念與技術(shù)[M].影印版.北京:高等教育出版社,2001.
[4] [美]OLIVIA PARR RUD.數(shù)據(jù)挖掘?qū)嵺`[M].朱揚勇,左子葉,張忠平,譯.北京:機械工業(yè)出版社,2003.
[5] 康曉東.基于數(shù)據(jù)倉庫的數(shù)據(jù)挖掘技術(shù)[M].北京:機械工業(yè)出版社,2004.
(責(zé)任編輯:杜能鋼)