岳強,胡中玉,文瑾,趙卿
?
基于R語言的數據挖掘課程實驗設計
岳強,胡中玉,文瑾,趙卿
摘 要:大數據時代的到來,讓數據挖掘知識和技術得到了快速的發展和應用。針對該課程實驗存在的問題,設計了關聯、分類和聚類實驗方案,研究了Apriori關聯算法、ID3分類算法和K-Means聚類算法,在R語言環境下實現了這些算法并對實驗結果做出分析。通過教學實踐表明,該課程實驗有效地激發了學生的學習興趣,培養了學生使用數據挖掘方法分析和解決問題的能力。
關鍵詞:實驗設計;數據挖掘;R語言;關聯;分類;聚類
數據挖掘是計算機科學與技術、軟件工程等信息技術類專業一門非常重要的專業技術課程,在信息技術類專業的人才培養方案中占有重要地位。數據挖掘技術是一門綜合性非常強的交叉學科,融合了數據庫、人工智能、機器學習、統計學和模式識別等學科的內容[1]。為了讓學生全面掌握數據挖掘原理和技術,必須將理論教學和實驗教學良好結合,既要強調理論知識的講解,更要重視實驗內容的組織和設計,這樣才能讓學生真正掌握數據挖掘的精髓,達到學以致用的目的,提高專業核心技能。
1.1 學生知識結構存在缺陷
由于數據挖掘是一門交叉學科,所以要求學生也要具備多方面的知識和技能結構。一方面學生要具有良好的數理基礎,另一方面也要具備優秀的程序設計能力。數據挖掘中的相關定義會涉及到大量的數學公式,數學基礎比較薄弱的學生容易退縮,失去學習的興趣。算法的實現過程又需要使用遞歸、多重迭代和集合操作等較復雜的編程技術,所以學生普遍感覺該課程內容晦澀難懂,實驗任務難以完成,從而對課程產生畏難情緒[2]。
1.2 實驗內容組織有待改進
數據挖掘是從海量的數據中獲取知識的過程,實驗開展時理想的情況是從大型的數據庫中分析數據和挖掘知識,但受限于課程學時,各高校一般為該課程開設的學時數為32至48,實驗學時只占課程學時的三分之一,所以在實驗中不可能也沒有必要使用海量數據,這就考核到了教師的教學組織能力,課堂教學內容需要優化整合,實驗內容要真正做到“精練”。教師首先需要收集和整理一批數量和維度適中的案例數據,最好是能激發學生學習興趣的,其次設計實驗時應該提高設計性和綜合性實驗的比重,減少驗證性和演示性實驗的數目,讓學生在有限的實驗學時內訓練到最重要的核心技能。另外,實驗環境和軟件工具的選取也非常重要,對時間、人力和實驗資源都起到節約的作用。
R語言是一款優秀的數據挖掘軟件,和其他數據挖掘軟件相比,它是一個免費的開源軟件,簡單實用,語句格式易于理解,只需具備基礎的程序編制能力,就能快速上手,而且提供了功能強大的統計計算和圖形繪制功能,有利于將挖掘結果圖形化顯示,方便學生觀看實驗效果[3]。下面以數據挖掘中最典型的3種關鍵技術關聯分析、分類和聚類為例,使用R語言作為軟件工具,設計了關聯分析、分類和聚類的實驗方案。
2.1 關聯分析實驗設計
關聯是從數據集中發現頻繁出現的項目集合模式,反映一個事件和其他事件的依賴關系,如果兩項或多項屬性間存在關聯,那么其中一項的屬性值就可以對其他屬性值進行預測[4]。常用的關聯算法有Apriori算法。
2.1.1 實驗原理
關聯規則是描述在一個事務中項目之間同時出現的規律的知識模式。一個事務中的關聯規則挖掘可以描述如下:
設I={i1,i2,…,im}是一個項目集合,其中的每個元素i稱為項目。數據集D={T1,T2,…,Tn}是一個事務數據庫,其中每個事務T?I。每個事務都有一個標識符,稱之為TID。
定義1 若A是項目集,當且僅當A?T時,則事務T包含了A。一條關聯規則是形如A=>B的蘊含關系,其中A?I,B?I且A∩B=?。
定義2 支持度表示的是事務集中包含A和B的事務數與所有事務數之比,記為support(A=>B)=P(A∪B)。支持度反映關聯規則在數據集中的重要程度。
定義3 置信度表示的是包含A和B的事務數與包含A的事務數之比,記為confidence(A=>B)=P(A | B)。置信度衡量關聯規則的可信程度。
Apriori算法是一種經典的關聯規則挖掘算法,其他算法均是在此算法基礎上進行改進。算法的核心思想是不斷的掃描事務集,直到找出所有頻繁項集。基于頻繁項目集性質的先驗知識,使用從下至上逐層搜索的迭代方法,k項集用于搜索k+1項集。
2.1.2 Apriori算法描述
輸入:數據集D,最小支持度m in_support。輸出:頻繁項目集L。L1={large 1-itemset};
For (k=2;Lk-1≠?;k++){Ck=Apriori-gen(Lk-1);For all transactions t∈D {Ct=subset(Ck,t);
For all candidates c∈Ctc.count++;}Lk={ c∈Ck| c.count ≥min_support}}Return L=∪Lk。
2.1.3 實驗結果
實驗數據采用模擬某超市的商品銷售記錄事務集,共50條記錄,該事務集的部分數據,數據使用CSV格式存儲,便于讀取和修改[5]。如表1所示:

表1 超市商品銷售事務部分數據
調用apriori()函數來挖掘關聯規則,例如挖掘出支持度最小閾值為0.07,置信度最小閾值為0.5的關聯規則,核心代碼如下,結果如圖1所示:

圖1 關聯規則挖掘結果
rule0=apriori(tr,parameter=list(support=0.07,confidence=0 .5))
從運行結果可以看出,此次共挖掘出11條關聯規則,其中支持度最高的規則為{面包}=>{牛奶}這條規則(支持度為0.22)。
通過控制支持度和置信度來調整顯示規則的數目,如將支持度最小閾值調整為0.1,算法挖掘出6條規則,結果如圖1(b)所示:使用擴展軟件包arulesViz,可以將關聯規則圖形化顯示,關聯規則的散點圖如圖2所示:

圖2 關聯規則散點圖
2.2 分類實驗設計
分類是按照分析對象的屬性、特征,建立不同的組類來描述事物。分類過程分為兩個階段,第一階段通過訓練數據構造模型,可以使用分類規則描述該學習模型。第二階段使用構造的模型進行分類,并評估模型的預測準確率[6]。常用的關聯算法有ID3算法和C4.5算法。
2.2.1 實驗原理
定義4信息熵:信息熵用來描述信息的不穩定程度,定義如公式(1):

定義5 信息增益:假設按屬性A劃分D中的元組,其中屬性A根據訓練數據的觀測具有v個不同值{a1,a2,…,av}??梢杂脤傩訟將D劃分為v個子集{D1,D2,…,Dv},其中Dj包含D中的元組,它們在A上具有值Aj。這個量由下式度量如公式(2):

Gain(A) = Info(D) - InfoA(D) (3)
ID3算法是一種典型的決策樹算法,主要針對如何選取屬性。決策樹算法通常分為兩個步驟:決策樹生成和決策樹剪枝。構造決策樹采用的是自上而下的遞歸方法。首先選擇訓練數據的某個屬性作為根結點,對測試屬性的每個值(離散化)創建一個分支,然后選擇信息增益值最大的屬性做為分裂屬性,并據此劃分樣本。算法使用同樣的過程,遞歸形成每個分支下的子分支。
2.2.2 ID3算法描述
輸入:訓練數據T,類別屬性C,非類別屬性集合R。
輸出:決策樹。
Begin
If (T is Empty) Then Return(null);
If T是由其值均為相同類別屬性值的記錄組成 Then返回一個帶有該值的單節點;
If (R is Empty) Then返回一個單節點,其值為在T的記錄中找出的頻率最高的類別屬性值;
將R中屬性之間具有最大Gain(D)值的屬性賦給D;將屬性D的值賦給{dj∣j=1,2,…,m};
將分別由對應于D的值為dj的記錄組成的T的子集賦給{Tj∣j=1,2,…,m };
返回一棵樹,其根標記為D,樹枝標記為d1,d2,…,dm;
再分別構造以下樹:ID3(T1,C,R-{D}),ID3(T2,C,R-{D}),…,ID3(Tm,C,R-{D});
End
2.2.3 實驗結果
實驗部分數據如表2所示:

表2 樣本數據集部分數據

20..35 High No Fair No 20..35 High No Excellent No 35..50 High No Fair Yes >50 Medium No Fair Yes >50 Low Yes Fair Yes
記錄了用戶的年齡、收入、信用等級和是否有購車意愿等一些信息。以“是否購車”屬性做為類別屬性,通過調用分類算法建立決策樹。
調用J48()函數來產生決策樹,J48()函數實現了C4.5分類算法,C4.5算法的核心函數是ID3分類算法,核心代碼如下,運行結果如圖3所示:

圖3 分類結果圖
formula=class$buy_car~age+income+married+credit
c45=J48(formula,data=class)
結果以縮進的方式顯示決策樹的層次結構,從結果中可以看出此次產生的決策樹共有11個結點。從根結點出發到達葉結點就形成一條形如If…Then結構的分類規則,如第一條分支代表的分類規則是If age>50 and credit=Excellent Then buy_car=No。使用擴展軟件包partykit,將結果決策樹繪制成樹形形狀,如圖4所示:

圖4 決策樹
2.3 聚類實驗設計
聚類是將數據對象分成為多個類或簇,劃分的原則是在同一個類中的對象之間具有較高的相似度,而不同類中的對象差別較大。與分類不同,聚類劃分的類是未知的,類的形成是由數據分析得到的。常用的聚類算法有K-Means算法、K-Medoids算法等。
2.3.1 實驗原理
聚類分析是一個活躍的研究領域,已經涌現出大量的聚類算法,這些算法按照分析思路劃分,可以分為(1)劃分法,如K-Means算法;(2)層次法,如DIANA算法;(3)基于密度的算法,如DBSCAN算法;(4)基于網格的算法,如STRING算法;(5)基于模型的算法,如SOM算法[7]。每類算法本身并無優劣之分,使用者要根據數據特性來選擇合適的聚類算法。
定義6 給定一個有n個對象的數據集,聚類將數據進行k個劃分,每一個劃分乘坐一個簇,k≤n。這k個劃分滿足下列條件:(1)每個簇至少包含一個對象;(2)每一個對象屬于且僅屬于一個簇。
K-Means算法是使用的最廣泛的聚類算法,它將n個對象劃分成k個簇,簇內的對象具有較高的相似度,而簇間的對象的相異度較高 。相似度根據一個簇中所有對象的平均值來計算。算法首先隨機選取k個對象,這些對象被認為是它所在簇的中心,計算剩余對象與各個簇中心的距離,將它歸到最近的簇,然后重新計算每個簇的平均值。重復這個過程,直到準則函數收斂[13-15]。
定義7K-Means算法的準則函數定義為公式(4):

其中x是空間中的點,代表給定的數據對象,xi-是簇Ci的平均值。
2.3.2 K-Means算法描述輸入:數據集D,要劃分的簇的數目k。輸出:k個簇的集合。從D中隨機選取k個對象做為初始簇的中心;Repeat;根據簇中對象的均值,將每個對象分配到最相似的簇中;重新計算每個簇中對象均值;計算準則函數E;Until 準則函數不再發生變化。
2.3.3 實驗結果
實驗數據來自某年我國各省市的出生和死亡情況,數據如表3所示:

表3 全國各省市出生死亡情況統計數據
調用kmeans ()函數將數據進行分類,簇的數目定位3,即將數據分為3類,核心代碼見下,運行結果如圖5所示:

圖5 聚類結果圖
km1=kmeans(pv[,-1],center=3)
以上結果顯示了3個類別所含的樣本數,分別為9、10 和12,每個類別的出生率和死亡率的均值,以及每個樣本所屬的類別。
將每個樣本圖形化顯示,橫坐標為出生率,縱坐標為死亡率,用不同的符號代表不同的聚類,星號“*”代表每個聚類的中心,可以認為3個類別分別代表低、中、高出生率的省市。為使圖中顯示的內容更加直觀,選取每個聚類的樣本點以及出生率最低和最高的樣本點強調顯示,并在樣本點下方顯示出省市名,結果如圖6所示:

圖6 顯示名稱的樣本分布圖
聚類的數目是不確定的,以上實驗的聚類數取值為3,要選擇出最好的聚類數,可以使用聚類優度來度量。聚類優度用下式計算如公式(5):

實現代碼如下:
count=nrow(pv)-1
opt=rep(0,count)
for (i in 1:count)
{
km1=kmeans(pv[,-1],center=i)
opt[i]=km1$betweenss/km1$totss
}
round(opt,2)
運行結果如圖7所示:

圖7 聚類優度結果圖
從結果中可以分析得出,當聚類數小于等于8時,隨著聚類數的增加,聚類優度的值變化明顯,從0.68快速增長到0.97,相應的聚類效果越來越好。但聚類數大于8后,聚類優度變化緩慢,其變化趨勢如圖8所示:

圖8 聚類優度變化趨勢圖
為解決數據挖掘課程教學過程中出現的問題,在收集和組織實驗數據的基礎上,本文設計了關聯、分類和聚類3個重要的數據挖掘實驗方案,分析了Apriori關聯算法、ID3分類算法和K-Means聚類算法,使用R語言實現了這些典型算法,對實驗結果做出分析,并以圖形化的方式直觀顯示實驗結果。通過教學實踐,取得了良好的教學效果,激發了學生學習該課程的興趣,培養了學生知識發現和創新能力。大數據時代的到來,讓數據挖掘技術得到快速發展和應用的良機,高校的師生更應抓住契機,熟練掌握數據挖掘的技能,提升專業核心競爭力。
參考文獻
[1] Jiawei Han,M ichelineKamber.數據挖掘概念與技術[M].北京:機械工業出版社,2003.
[2] 胡中玉,岳強,徐東霞.基于Matlab的方波分解與合成仿真實驗設計[J].實驗技術與管理,2014,31(9):44-46.
[3] 黃文,王正林.數據挖掘:R語言實戰[M].北京:電子工業出版社,2014.
[4] 岳強,劉渝妍.基于主-子表的挖掘模式存儲方法研究[J].昆明大學學報,2006,17(4):44-47.
[5] 岳強,胡中玉,劉渝妍.基于數據挖掘的自適應入侵檢測模型研究[J].軟件,2015,36(9):48-51.
[6] 孫吉貴,劉杰,趙連宇.聚類算法研究[J].軟件學報,2018,19(1):48-61.
[7] 劉猛.一種基于云計算的高效數據挖掘框架研究[J].微型電腦應用,2015,31(6):15-19.
Experiment Design of Data M ining Course Based on R Language
Yue Qiang, Hu Zhongyu, Wen Jin, Zhao Qing
(Kunming University, Kunming 650214,China)
Abstract:With the com ing of Big Data, know ledge and technology of data mining develop very quickly. In view of the problems in the data mining experiments, plans about association, classification and clustering are designed. The Apriori algorithm, ID3 algorithm and K-Means algorithm are researched. These algorithms are realized by using R language, and experimental result is analyzed. Through the teaching practice, the experiments can inspire students' interest in learning effectively, and train ability of students to analyze and solve problems by using data mining method.
Key words:Experiment Design; Data mining; R language; Association; Classification; Clustering
中圖分類號:TP18;TP311
文獻標志碼:A
文章編號:1007-757X(2016)05-0031-04
基金項目:云南省教育廳科學研究基金項目(201Y237)、昆明學院科學研究項目(XJL15013)
作者簡介:岳 強(1977-),男,昆明市,昆明學院,講師,碩士,研究方向:數據挖掘、軟件工程,昆明,650214胡中玉(1981-),女,昆明市人,昆明學院,講師,碩士,研究方向:計算機仿真,昆明,650214 文 瑾(1963-),男,昆明市人,昆明學院,副教授,學士,研究方向:軟件測試技術,昆明,650214 趙 卿(1979-),男,昆明市人,昆明學院,講師,碩士,研究方向:軟件工程,昆明,650214
收稿日期:(2016.02.10)