渠暢
摘 要:為了解決數(shù)據(jù)挖掘課程建設(shè)中存在的不足之處,培養(yǎng)符合時(shí)代要求的大數(shù)據(jù)挖掘人才,引入R語(yǔ)言作為課程的實(shí)踐軟件。R語(yǔ)言作為目前流行的數(shù)據(jù)分析軟件,有著簡(jiǎn)單易學(xué)、功能強(qiáng)大、可擴(kuò)展性強(qiáng)等特點(diǎn),在教學(xué)過程中可以充分利用其功能包生成各種算法的過程示意圖或動(dòng)畫來(lái)提高教學(xué)效果,同時(shí)便于開展課程的實(shí)踐教學(xué)環(huán)節(jié)。文章對(duì)基于R語(yǔ)言的大數(shù)據(jù)挖掘課程建設(shè)進(jìn)行研究。
關(guān)鍵詞:大數(shù)據(jù)挖掘;R語(yǔ)言;實(shí)踐;課程建設(shè)
1 R語(yǔ)言簡(jiǎn)介
R語(yǔ)言是一種用于統(tǒng)計(jì)計(jì)算的編程語(yǔ)言和環(huán)境,它是由S語(yǔ)言發(fā)展而來(lái)的。R語(yǔ)言擅長(zhǎng)統(tǒng)計(jì)建模和解決數(shù)據(jù)分析相關(guān)的問題,是一種為數(shù)據(jù)而生的程序設(shè)計(jì)語(yǔ)言。不同于其他主流的計(jì)算機(jī)編程語(yǔ)言,R語(yǔ)言使用命令加回車的方式進(jìn)行操作,以人機(jī)對(duì)話模式進(jìn)行交互,使用起來(lái)較為簡(jiǎn)單。R的核心要素是數(shù)據(jù)和函數(shù),任何數(shù)據(jù)分析都可以理解為通過函數(shù)來(lái)操作數(shù)據(jù),學(xué)習(xí)R語(yǔ)言無(wú)需掌握復(fù)雜的語(yǔ)法。R語(yǔ)言可以很方便地和幾乎市面上所有的數(shù)據(jù)庫(kù)系統(tǒng)相連接,再加上諸多的R數(shù)據(jù)庫(kù)支持包,使R能夠方便地對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫操作,實(shí)現(xiàn)的技術(shù)包括ODBC和JDBC兩大方面(其中RJDBC和RpgSQL需要Java的支持)。R語(yǔ)言中提供了大量數(shù)據(jù)挖掘相關(guān)的函數(shù)及功能包[1]。
通過以上R語(yǔ)言的簡(jiǎn)介可以總結(jié)出選用R語(yǔ)言作為數(shù)據(jù)挖掘課程的實(shí)踐軟件有以下5個(gè)優(yōu)點(diǎn):(1)R語(yǔ)言是免費(fèi)的,相比多數(shù)價(jià)格不菲的商業(yè)統(tǒng)計(jì)軟件而言,其優(yōu)勢(shì)顯而易見。(2)通過數(shù)據(jù)挖掘課程的學(xué)習(xí)使得學(xué)生認(rèn)識(shí)并掌握R語(yǔ)言的數(shù)據(jù)分析方法,為學(xué)生今后的職業(yè)發(fā)展提供更加廣闊的選擇空間。(3)R語(yǔ)言有著強(qiáng)大的圖形和動(dòng)畫功能,在教學(xué)過程中可以方便地通過R語(yǔ)言生成各種數(shù)據(jù)挖掘算法的過程示意圖和過程演示動(dòng)畫,能有效提高教學(xué)效果并增加學(xué)生的學(xué)習(xí)興趣。(4)R語(yǔ)言的簡(jiǎn)單、易操作性可以使得擁有不同計(jì)算機(jī)編程基礎(chǔ)的學(xué)生都能在較短時(shí)間內(nèi)學(xué)會(huì)利用R語(yǔ)言進(jìn)行數(shù)據(jù)挖掘?qū)嵺`操作,便于開展課程的實(shí)踐教學(xué)。(5)R語(yǔ)言能支持各種數(shù)據(jù)庫(kù)系統(tǒng),因此對(duì)于先修課程數(shù)據(jù)庫(kù)系統(tǒng)所使用的實(shí)踐軟件無(wú)特別要求,方便銜接形成課程體系。
2 教學(xué)大綱設(shè)置
美國(guó)計(jì)算機(jī)學(xué)會(huì)數(shù)據(jù)挖掘?qū)iT興趣小組(ACMSIGKDD)曾在2006年擬定了一套公認(rèn)的標(biāo)準(zhǔn)數(shù)據(jù)挖掘課程的教學(xué)大綱[2]。大綱建議將數(shù)據(jù)挖掘的教學(xué)內(nèi)容分為基礎(chǔ)和高級(jí)專題兩部分,其中基礎(chǔ)部分包括數(shù)據(jù)挖掘?qū)д?,?shù)據(jù)預(yù)處理,數(shù)據(jù)倉(cāng)庫(kù)與聯(lián)機(jī)分析處理(Online Analytical Processing,OLAP),關(guān)聯(lián)規(guī)則與頻繁模式挖掘、分類、聚類與孤立點(diǎn)分析,時(shí)間序列與序列模式,文本與Web挖掘,數(shù)據(jù)挖掘的可視化,數(shù)據(jù)挖掘應(yīng)用十章內(nèi)容。高級(jí)部分主要是對(duì)基礎(chǔ)部分進(jìn)行進(jìn)一步的深入擴(kuò)展,對(duì)不同的挖掘算法進(jìn)行比較分析,并增加了數(shù)據(jù)流挖掘、多媒體數(shù)據(jù)挖掘等內(nèi)容。
考慮到本科階段該課程的教學(xué)總學(xué)時(shí)一般為32~48學(xué)時(shí),且學(xué)生的理論背景知識(shí)有限,因此需要對(duì)標(biāo)準(zhǔn)大綱的內(nèi)容作一定的調(diào)整,對(duì)理論部分可以做一定刪減而增加一些大數(shù)據(jù)相關(guān)的背景知識(shí),讓學(xué)生對(duì)數(shù)據(jù)挖掘的大環(huán)境有一個(gè)完整的認(rèn)識(shí)。同時(shí)為了突出培養(yǎng)學(xué)生的實(shí)踐能力,課時(shí)安排以實(shí)踐教學(xué)為主,理論教學(xué)為輔。實(shí)踐教學(xué)中以學(xué)生為主體,教師利用實(shí)踐任務(wù)引導(dǎo)學(xué)生學(xué)習(xí)相關(guān)知識(shí),在實(shí)踐環(huán)節(jié)中鞏固理論教學(xué)[3]。可以先安排2~4個(gè)學(xué)時(shí)來(lái)講解R語(yǔ)言的基礎(chǔ)知識(shí),讓學(xué)生掌握R語(yǔ)言在數(shù)據(jù)挖掘過程中的應(yīng)用方法,并通過介紹一些大數(shù)據(jù)挖掘的案例讓學(xué)生了解數(shù)據(jù)挖掘技術(shù)的主要應(yīng)用領(lǐng)域及當(dāng)前的研究熱點(diǎn)問題,增強(qiáng)學(xué)生對(duì)數(shù)據(jù)挖掘課程的學(xué)習(xí)興趣。在充分調(diào)動(dòng)了學(xué)生對(duì)數(shù)據(jù)挖掘的興趣后,可以通過增加課外學(xué)習(xí)學(xué)時(shí)來(lái)彌補(bǔ)課內(nèi)學(xué)時(shí)的不足。教師可以充分利用網(wǎng)絡(luò)上的大量有關(guān)數(shù)據(jù)挖掘的學(xué)習(xí)資源,例如一些國(guó)外大學(xué)的在線課程,教學(xué)案例等。對(duì)這些資料進(jìn)行分類整合,并通過郵件、微信公眾號(hào)等方法推送給學(xué)生,提高學(xué)生的課后學(xué)習(xí)效果。
3 基于R語(yǔ)言的數(shù)據(jù)挖掘課程教學(xué)
以下以數(shù)據(jù)挖掘中常用的聚類算法為例,介紹如何利用R語(yǔ)言作為數(shù)據(jù)挖掘?qū)嵺`軟件來(lái)開展教學(xué)。聚類分析是數(shù)據(jù)挖掘中一個(gè)非常重要的領(lǐng)域,將數(shù)據(jù)劃分成有意義或有用的組(簇),使同一類別內(nèi)的個(gè)體具有盡可能高的同質(zhì)性,而不同類別之間的個(gè)體則應(yīng)具有盡可能高的異質(zhì)性[4]。聚類算法有多種,一般分為兩大類:基于原型的聚類和基于密度的聚類。本科教材中主要介紹基于原型的K-means算法,在課時(shí)充足時(shí)也可補(bǔ)充介紹基于密度的Dbscan算法。
在介紹完聚類算法的基本概念后,可以通過加載一個(gè)名為animation的R包來(lái)演示K-means算法的運(yùn)算過程。該R包中提供了許多關(guān)于統(tǒng)計(jì)、數(shù)據(jù)分析類的動(dòng)畫功能,對(duì)教學(xué)可以起到輔助作用[5]。教師只要調(diào)用該包中的相應(yīng)函數(shù)就能生成算法的執(zhí)行過程動(dòng)畫,并可以通過轉(zhuǎn)換函數(shù)將動(dòng)畫轉(zhuǎn)換為GIF和FLASH等格式或者利用LaTeX將動(dòng)畫嵌入到PDF文件中。利用animation包中的生成的K-means算法的動(dòng)畫截圖如圖1—2所示,該動(dòng)畫直觀地展示了從最初的隨機(jī)中心開始,一步一步迭代計(jì)算距離并更新中心直到結(jié)果不再變化,完成聚類。通過算法動(dòng)畫的演示可以在很大程度上幫助學(xué)生來(lái)理解枯燥的挖掘算法原理。
在介紹完K-means算法的原理之后,就可以通過一些實(shí)例來(lái)展示如何利用R語(yǔ)言來(lái)完成聚類。R語(yǔ)言可以很方便地利用read函數(shù)讀入TXT或者CSV格式的數(shù)據(jù),命令行如下:
data1 <- read.table("data/dataSample.txt", header = TRUE)
data1 <- read.csv(file = "data/dataSample.csv")
如果要讀入EXCEL文件也可以通過調(diào)用readxl包來(lái)實(shí)現(xiàn),命令行如下:
library(readxl)
data1 <- read_excel("data/dataSample.xlsx", sheet = 1)
除了可以導(dǎo)入外部數(shù)據(jù)進(jìn)行挖掘,R語(yǔ)言還有另一個(gè)便利之處:其基礎(chǔ)包和其他擴(kuò)展包中都自帶了許多數(shù)據(jù)集,教師可以充分利用這些數(shù)據(jù)作為數(shù)據(jù)挖掘的挖掘?qū)ο蟆Mㄟ^輸入命令:data( )就能列出所有自帶的數(shù)據(jù)集的名字和簡(jiǎn)介,再通過數(shù)據(jù)集的名稱就能直接調(diào)用相應(yīng)的數(shù)據(jù)集。以UCI數(shù)據(jù)集中的一個(gè)的iris數(shù)據(jù)集為例,該數(shù)據(jù)集中包含了4個(gè)鳶尾花的測(cè)量數(shù)據(jù)和一個(gè)分類數(shù)據(jù)。以下為利用K-means算法將iris數(shù)據(jù)集中前四個(gè)測(cè)量數(shù)據(jù)聚成三大類的命令行:
data("iris") #讀取iris數(shù)據(jù)
data1<-iris[,1:4] #將iris數(shù)據(jù)集中的前4列數(shù)據(jù)賦給data1變量
data2<-kmeans(data1,3) #利用K-means算法將數(shù)據(jù)聚為3類
最后的聚類結(jié)果存放在data2中,查看該變量可以看到聚類產(chǎn)生的三大類的大小、每個(gè)聚類中各個(gè)列值的平均值、每個(gè)記錄所屬的聚類等信息。講解完最為經(jīng)典的K-means算法,教師還可以在課時(shí)允許的情況下適當(dāng)補(bǔ)充介紹其他聚類算法。對(duì)于不同的數(shù)據(jù)集不同算法可能得到不同的聚類結(jié)果,在一些情況下,K-means算法并不能得到較好的結(jié)果,例如它不能識(shí)別非球形的簇,這時(shí)可以考慮使用基于密度的聚類方法。DBScan算法是將所有點(diǎn)標(biāo)記為核心點(diǎn)、邊界點(diǎn)或噪聲點(diǎn),將任意兩個(gè)距離小于eps的核心點(diǎn)歸為同一個(gè)簇。任何與核心點(diǎn)足夠近的邊界點(diǎn)也放到與之相同的簇中。R語(yǔ)言中同樣提供了DBScan算法的實(shí)現(xiàn)函數(shù),用戶可以調(diào)用fpc包中的DBScan函數(shù)進(jìn)行聚類。在講解DBScan算法時(shí),教師可以通過對(duì)同一個(gè)數(shù)據(jù)集同時(shí)使用K-means算法和DBScan算法,并將兩個(gè)聚類結(jié)果以圖形方式對(duì)比展示出來(lái)。例如教師可以人為構(gòu)造一組數(shù)據(jù),這些數(shù)據(jù)是基于sin函數(shù)和cos函數(shù)構(gòu)成的兩組點(diǎn)。對(duì)該數(shù)據(jù)集分別利用K-means算法和DBScan算法的不同結(jié)果示意如圖3—4所示??梢院苊黠@地看出對(duì)于該數(shù)據(jù)集,DBScan算法能得到更好的聚類結(jié)果。
4 課程實(shí)踐與考核方式設(shè)計(jì)
教師可以將實(shí)踐內(nèi)容分成兩大類:驗(yàn)證實(shí)踐和案例實(shí)踐。驗(yàn)證實(shí)踐主要是對(duì)教材和教師的理論講解部分作重復(fù)性驗(yàn)證,主要目的是幫助學(xué)生理解并鞏固理論部分的知識(shí)。案例實(shí)踐則是學(xué)生在掌握基本的數(shù)據(jù)挖掘方法后,獨(dú)立完成教師布置的案例作業(yè),從而進(jìn)一步提高學(xué)生的獨(dú)立解決數(shù)據(jù)分析問題的能力。針對(duì)課程內(nèi)容的不同特點(diǎn),開展課程實(shí)踐時(shí)可以分為3步走。(1)熟悉挖掘工具:該部分的主要任務(wù)是讓學(xué)生學(xué)會(huì)R語(yǔ)言的基本操作。(2)學(xué)習(xí)數(shù)據(jù)挖掘基本算法:該部分主要任務(wù)是讓學(xué)生學(xué)會(huì)使用R語(yǔ)言的數(shù)據(jù)挖掘相關(guān)的函數(shù)和功能包。(3)綜合數(shù)據(jù)挖掘技術(shù)的訓(xùn)練:該部分主要任務(wù)是讓學(xué)生學(xué)會(huì)數(shù)據(jù)挖掘的整套流程操作,能獨(dú)立解決數(shù)據(jù)挖掘相關(guān)的實(shí)際問題。
課程的考核方式應(yīng)該能夠客觀地反映學(xué)生對(duì)數(shù)據(jù)挖掘的基本原理和算法應(yīng)用的掌握程度。由于完成數(shù)據(jù)挖掘任務(wù)往往需要較大規(guī)模的原始數(shù)據(jù),且如果沒有計(jì)算機(jī)的支持,一次數(shù)據(jù)挖掘可能需要數(shù)小時(shí),紙質(zhì)試卷無(wú)法勝任,因此傳統(tǒng)的筆試只能考查學(xué)生對(duì)于一些基本概念的記憶程度,無(wú)法全面反映學(xué)生的真實(shí)水平。因此課程考核應(yīng)以能力測(cè)試為中心,將實(shí)踐操作在總成績(jī)中的占比提高到50%以上??梢詥⒂秒娮涌季韀6],讓學(xué)生在規(guī)定時(shí)間內(nèi)利用R語(yǔ)言對(duì)給定的原始數(shù)據(jù)進(jìn)行數(shù)據(jù)挖掘,并將挖掘結(jié)果整理成報(bào)告上傳至指定服務(wù)器。實(shí)踐成績(jī)從兩方面進(jìn)行評(píng)定:通過查看結(jié)果報(bào)告判斷挖掘結(jié)果是否真實(shí)有效;通過調(diào)取并查看學(xué)生所使用過的R語(yǔ)言的命令行判斷挖掘過程是否合理。當(dāng)然這種電子考卷需要教師在考試前充分準(zhǔn)備電子試題庫(kù),并且對(duì)于挖掘過程部分的判定需要教師花費(fèi)較多精力,因此還需不斷地摸索改進(jìn)。
[參考文獻(xiàn)]
[1]卡巴科弗.語(yǔ)言實(shí)戰(zhàn)[M].王小寧,譯.北京:人民郵電出版社,2016.
[2]石向榮.基于TDC模式的數(shù)據(jù)挖掘課程教學(xué)新方法[J].經(jīng)濟(jì)師,2015(5):311.
[3]黃劍.任務(wù)驅(qū)動(dòng)探究式教學(xué)模式在數(shù)據(jù)挖掘課程中的應(yīng)用研究[J].電腦知識(shí)與技術(shù),2014(10):1253-1255.
[4]陳封能,斯坦巴赫,庫(kù)瑪爾.數(shù)據(jù)挖掘?qū)д揫M].范明,范宏建,譯.北京:人民郵電出版社,2013.
[5]岳強(qiáng),胡中玉,文瑾,等.基于R語(yǔ)言的數(shù)據(jù)挖掘課程實(shí)驗(yàn)設(shè)計(jì)[J].微型電腦應(yīng)用,2016(32):31-34.
[6]夏晶暉.應(yīng)用型本科教學(xué)中技能型課程考核方式的改革[J].西南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),2013(38):193-196.