[摘 要] 數(shù)據(jù)挖掘?qū)嵺`課程作為數(shù)據(jù)挖掘理論課之后開(kāi)設(shè)的一門(mén)實(shí)踐課,對(duì)學(xué)生動(dòng)手能力的培養(yǎng)、編程思維的養(yǎng)成、算法的理解等具有重要的支撐作用。而在教學(xué)過(guò)程中,如何充分發(fā)揮學(xué)生的主觀能動(dòng)性,讓學(xué)生的能力得到全方位鍛煉,是任課教師需要認(rèn)真思考的問(wèn)題。以?xún)?nèi)蒙古師范大學(xué)的數(shù)據(jù)挖掘?qū)嵺`課程為例,闡述課程教學(xué)過(guò)程中教學(xué)改革的方法和舉措,為相關(guān)課程的任課教師提供參考和借鑒。
[關(guān)鍵詞] 數(shù)據(jù)挖掘?qū)嵺`;課程銜接;監(jiān)督與考核
[基金項(xiàng)目] 2016年度國(guó)家自然科學(xué)基金項(xiàng)目“面向中文口語(yǔ)理解的非參數(shù)貝葉斯分析方法的研究和應(yīng)用”(61562068)
[作者簡(jiǎn)介] 李艷玲(1978—),女,博士,副教授,碩士生導(dǎo)師,研究領(lǐng)域?yàn)樽匀徽Z(yǔ)言處理、口語(yǔ)理解、機(jī)器學(xué)習(xí)等。
[中圖分類(lèi)號(hào)] G642 ? ?[文獻(xiàn)標(biāo)識(shí)碼] A ? ?[文章編號(hào)] 1674-9324(2020)36-0153-03 ? ?[收稿日期] 2020-02-24
一、引言
數(shù)據(jù)挖掘課程作為計(jì)算機(jī)以及相關(guān)專(zhuān)業(yè)的核心課程受到了廣大師生的重視。各個(gè)高校開(kāi)設(shè)的數(shù)據(jù)挖掘理論課和實(shí)驗(yàn)(實(shí)踐)課程的教學(xué)內(nèi)容以及考核評(píng)價(jià)形式有所不同。劉波等人[1]對(duì)數(shù)據(jù)挖掘課程的實(shí)踐教學(xué)給出了完整的教學(xué)內(nèi)容以及詳細(xì)的評(píng)價(jià)考核方式,并在教學(xué)中獲得較好的效果。關(guān)鵬等人[2]探索了統(tǒng)計(jì)學(xué)專(zhuān)業(yè)的數(shù)據(jù)挖掘課程實(shí)驗(yàn)教學(xué)模式,以R語(yǔ)言進(jìn)行數(shù)據(jù)挖掘?qū)嶒?yàn),通過(guò)項(xiàng)目式學(xué)習(xí)提升學(xué)生分析問(wèn)題和解決問(wèn)題的能力。黃浩等人[3]提出在數(shù)據(jù)挖掘課程中通過(guò)案例貫穿教學(xué)和能力拓展比賽等教學(xué)方法提升學(xué)生的數(shù)據(jù)挖掘?qū)嵺`和創(chuàng)新能力。盡管一線(xiàn)教師在教學(xué)過(guò)程中對(duì)數(shù)據(jù)挖掘?qū)嵺`課進(jìn)行了某些探索和改進(jìn),但是仍存在一些問(wèn)題。
本文對(duì)數(shù)據(jù)挖掘課程教學(xué)存在的問(wèn)題進(jìn)行梳理,有針對(duì)性地提出了以下教學(xué)改革方法:①注重前導(dǎo)課、理論課和實(shí)踐課的銜接;②加強(qiáng)過(guò)程中的監(jiān)督和考核;③實(shí)踐內(nèi)容抓重點(diǎn)算法,切忌面面俱到。通過(guò)以上方法可以有效促進(jìn)課程平穩(wěn)過(guò)渡,全面提升學(xué)生的自信心、主動(dòng)性以及動(dòng)手能力。
二、數(shù)據(jù)挖掘?qū)嵺`課程的教學(xué)模式
數(shù)據(jù)挖掘?qū)嵺`課程有兩大難點(diǎn),一是數(shù)據(jù)挖掘課程本身難度較大,這門(mén)課涉及較多的數(shù)學(xué)和算法,而且相對(duì)枯燥,原來(lái)只有研究生才學(xué)習(xí)的課程現(xiàn)在給本科生開(kāi)設(shè),可以想象其難度;二是實(shí)踐課程需要編程語(yǔ)言來(lái)實(shí)現(xiàn),對(duì)于大三的學(xué)生而言,他們僅僅掌握了編程語(yǔ)言的基本語(yǔ)法,綜合實(shí)踐能力還比較欠缺,現(xiàn)在要對(duì)高難度算法進(jìn)行實(shí)現(xiàn),更可謂難上加難。
筆者以2019—2020學(xué)年第一學(xué)期所教授的課程為例,教學(xué)計(jì)劃為數(shù)據(jù)挖掘48學(xué)時(shí),實(shí)踐課程32學(xué)時(shí),分別是一周4節(jié)課,理論課程12周,實(shí)踐課程8周。實(shí)踐課比理論課滯后4周。對(duì)于計(jì)算機(jī)及相關(guān)專(zhuān)業(yè)來(lái)說(shuō),實(shí)踐課主要通過(guò)Python語(yǔ)言進(jìn)行編寫(xiě)。
(一)注重前導(dǎo)課、理論課和實(shí)踐課的銜接
如果讓學(xué)生順利進(jìn)入實(shí)踐課的角色,需要做好兩個(gè)銜接,即編程語(yǔ)言基礎(chǔ)與實(shí)際應(yīng)用的銜接和理論算法與編程實(shí)現(xiàn)的銜接。
1.編程語(yǔ)言基礎(chǔ)與實(shí)際應(yīng)用的銜接。對(duì)于第一種銜接,本實(shí)踐課采取的辦法是增加了兩個(gè)數(shù)據(jù)處理題目作為過(guò)渡。數(shù)據(jù)處理能力是從事機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘相關(guān)工作的基本功,是實(shí)現(xiàn)算法編程之前需要掌握的技能。兩個(gè)數(shù)據(jù)處理題目及要求如下。
(1)用python處理文本數(shù)據(jù)。數(shù)據(jù)來(lái)自2015年第十五屆中國(guó)機(jī)器學(xué)習(xí)會(huì)議的評(píng)測(cè)數(shù)據(jù),為文本數(shù)據(jù),任務(wù)是根據(jù)給定的新聞標(biāo)題、兩個(gè)人名以及關(guān)系類(lèi)型,確認(rèn)兩個(gè)人物關(guān)系是否屬于給定關(guān)系類(lèi)型。要求:第一步從訓(xùn)練集數(shù)據(jù)中提取前五列;第二步在第一步得到數(shù)據(jù)的基礎(chǔ)上根據(jù)類(lèi)別出現(xiàn)的順序?qū)?9類(lèi)關(guān)系數(shù)據(jù)進(jìn)行歸類(lèi),分別存儲(chǔ)到train文件夾下以1.txt到19.txt命名的文件中;第三步按照訓(xùn)練集19個(gè)類(lèi)別的順序?qū)y(cè)試集數(shù)據(jù)歸類(lèi),即相同關(guān)系類(lèi)型的數(shù)據(jù)放到一個(gè)文本文件中,同樣生成19個(gè)類(lèi)別的測(cè)試文件,保存到test文件夾下,文件命名和訓(xùn)練數(shù)據(jù)一樣,但是關(guān)系類(lèi)型必須保持一致;第四步對(duì)每條數(shù)據(jù)在原測(cè)試集中出現(xiàn)的位置進(jìn)行記錄,和19個(gè)測(cè)試文件一一對(duì)應(yīng)起來(lái),比如第一類(lèi)“傳聞不和”的每個(gè)樣本在原文中處于第幾行,在索引文件中進(jìn)行記錄,保存在文件index1.txt,index2.txt….
(2)用python處理數(shù)值型數(shù)據(jù)。數(shù)據(jù)來(lái)自2016年中國(guó)高校第一屆大數(shù)據(jù)挑戰(zhàn)賽的數(shù)據(jù),任務(wù)是通過(guò)給定的歷史數(shù)據(jù)預(yù)測(cè)未來(lái)兩個(gè)月歌曲的播放量。要求:第一步對(duì)歌曲藝人數(shù)據(jù)表進(jìn)行處理,統(tǒng)計(jì)出藝人的個(gè)數(shù)以及每個(gè)藝人的歌曲數(shù)量。輸出文件命名為xp2_1.csv,格式第一列是藝人的ID,第二列是該藝人的歌曲數(shù)目,最后一行輸出藝人的個(gè)數(shù);第二步將用戶(hù)行為表和歌曲藝人表以歌曲song_id作為關(guān)聯(lián),合并為一個(gè)大表,各列名稱(chēng)為第一到第五列與用戶(hù)行為表的列名一致,第六到第十列為歌曲藝人表中的第二列到第六列的列名,輸出文件命名為exp2_2.csv;第三步統(tǒng)計(jì)每個(gè)藝人每天所有歌曲的播放量,輸出文件命名為exp2_3.csv,其中各個(gè)列名分別為藝人ID,日期Ds,歌曲播放總量。結(jié)果文件需要首先對(duì)藝人的ID進(jìn)行排序,然后對(duì)日期DS進(jìn)行排序輸出。注意這里只統(tǒng)計(jì)歌曲的播放量,不包括下載和收藏的數(shù)量。
這兩個(gè)題目對(duì)于僅有python語(yǔ)言基礎(chǔ)的初學(xué)者還是有難度的,但是只有經(jīng)過(guò)這個(gè)過(guò)渡階段,學(xué)生才有能力進(jìn)行后面算法的編程。
2.理論算法與編程實(shí)現(xiàn)的銜接。有了前面兩個(gè)題目做鋪墊,接下來(lái)稍微容易點(diǎn),但是有些算法比較復(fù)雜,如果讓學(xué)生自己設(shè)計(jì)、編寫(xiě)算法的所有部分非常困難。以關(guān)聯(lián)規(guī)則算法Apriori為例,這個(gè)實(shí)踐題目要求學(xué)生完成兩個(gè)任務(wù),一是實(shí)現(xiàn)Apriori算法;二是利用該算法進(jìn)行電影推薦。任務(wù)一需要掃描事務(wù)數(shù)據(jù)庫(kù)獲取k_項(xiàng)目集進(jìn)而得到關(guān)聯(lián)規(guī)則。算法的難點(diǎn)是需要遞歸操作,此時(shí)筆者采取的方法是將程序模塊化,對(duì)每個(gè)模塊(即函數(shù))的功能進(jìn)行約束,給定輸入輸出參數(shù)和功能描述,引導(dǎo)學(xué)生完成每個(gè)模塊,進(jìn)而完成整個(gè)算法。實(shí)際中,設(shè)計(jì)了7個(gè)函數(shù)實(shí)現(xiàn)Apriori算法[4]。關(guān)聯(lián)規(guī)則主要是從事務(wù)數(shù)據(jù)庫(kù)中挖掘出經(jīng)常在同一購(gòu)物籃中出現(xiàn)的商品,嚴(yán)格講是挖掘出符合一定支持度和置信度的關(guān)聯(lián)規(guī)則。這種方法可以應(yīng)用到電影推薦上,利用用戶(hù)對(duì)已經(jīng)觀看過(guò)電影的評(píng)分?jǐn)?shù)據(jù)對(duì)用戶(hù)進(jìn)行新電影的推薦。這是對(duì)關(guān)聯(lián)規(guī)則實(shí)際應(yīng)用的典型案例。通過(guò)完成這兩個(gè)任務(wù),學(xué)生既熟悉了算法細(xì)節(jié),又了解了算法用途,進(jìn)而提升了對(duì)課程的興趣度。
(二)加強(qiáng)過(guò)程中的監(jiān)督和考核
當(dāng)前多數(shù)實(shí)踐課為了增強(qiáng)學(xué)生的團(tuán)隊(duì)協(xié)作能力,采取分小組合作的方式[1],一個(gè)小組由多人組成,每人有不同的分工,最后交一份實(shí)驗(yàn)報(bào)告,任課教師根據(jù)報(bào)告給小組每個(gè)同學(xué)打分。但是這種方式會(huì)導(dǎo)致部分學(xué)生渾水摸魚(yú),蒙混過(guò)關(guān)。鑒于此,筆者采取學(xué)生單獨(dú)完成實(shí)驗(yàn)并對(duì)每個(gè)題目進(jìn)行答辯的方式。每位同學(xué)只要完成了一個(gè)題目,就可以找老師進(jìn)行答辯。答辯過(guò)程分為學(xué)生講解和教師提問(wèn)階段,并且記錄答辯分?jǐn)?shù)。教師在學(xué)生講解代碼的過(guò)程中可以任意打斷并提問(wèn),主要考查學(xué)生的編程思維是否清晰、Python的數(shù)據(jù)結(jié)構(gòu)使用是否合理和高效、對(duì)算法的細(xì)節(jié)是否掌握等。這種監(jiān)督和考核機(jī)制非常有效,每位學(xué)生為了通過(guò)答辯會(huì)努力完成任務(wù),如果自己無(wú)法完成就會(huì)求助其他同學(xué)。答辯過(guò)程中確實(shí)存在代碼相似的現(xiàn)象,但只要學(xué)生對(duì)代碼做到充分理解,也可以通過(guò)答辯。因?yàn)閷?duì)于相對(duì)簡(jiǎn)單的編程題目,能做出新意而且代碼簡(jiǎn)捷是非常不容易的。答辯過(guò)程中教師需要把握的一點(diǎn)就是對(duì)學(xué)生編程思維方式的指導(dǎo)。筆者發(fā)現(xiàn),有些學(xué)生總是喜歡用特別復(fù)雜的方法解決問(wèn)題,這時(shí)任課教師需要對(duì)學(xué)生進(jìn)行及時(shí)糾正,指出算法的問(wèn)題,引導(dǎo)學(xué)生思考更加簡(jiǎn)便的方法。
(三)實(shí)踐內(nèi)容抓重點(diǎn)算法,切忌面面俱到
數(shù)據(jù)挖掘算法一般涉及關(guān)聯(lián)規(guī)則、分類(lèi)算法和聚類(lèi)算法,而分類(lèi)算法又包括決策樹(shù)、支持向量機(jī)、樸素貝葉斯等。由于算法本身比較抽象難以理解,全部實(shí)現(xiàn)所有的算法不太現(xiàn)實(shí)。因此,筆者從設(shè)計(jì)的8個(gè)題目中挑選了其中4個(gè)必做的題目:包括上面提到的兩個(gè)數(shù)據(jù)處理題目,一個(gè)關(guān)聯(lián)規(guī)則題目,還有一個(gè)是樸素貝葉斯進(jìn)行文本分類(lèi)的題目。數(shù)據(jù)挖掘?qū)嵺`主要是經(jīng)典算法的實(shí)現(xiàn),這部分以算法細(xì)節(jié)實(shí)現(xiàn)為主,不建議學(xué)生調(diào)用庫(kù)函數(shù)完成。盡管庫(kù)函數(shù)非常方便,但是學(xué)習(xí)初期,打下扎實(shí)的基本功是非常重要的。
樸素貝葉斯進(jìn)行文本分類(lèi),理論課上介紹了貝葉斯方法的推導(dǎo)過(guò)程以及文本分類(lèi)的流程。這部分理論不是很復(fù)雜,但是程序?qū)崿F(xiàn)時(shí)卻會(huì)遇到各種問(wèn)題:如停用詞如何選擇,特征如何選擇,特征如何表示,平滑怎么做,如何評(píng)價(jià)性能等。盡管這僅是個(gè)實(shí)踐題目,但卻非常綜合,包含了文本處理的每個(gè)環(huán)節(jié)。如果學(xué)生把這個(gè)題目完整自己做一遍,收獲是非常大的。
三、數(shù)據(jù)挖掘?qū)嵺`課程的教學(xué)效果以及后續(xù)改進(jìn)
筆者對(duì)實(shí)踐課進(jìn)行全程監(jiān)督和考核,學(xué)生們反映本課程增加了數(shù)據(jù)處理題目,對(duì)于溫習(xí)和熟悉編程語(yǔ)言非常有必要。另外,學(xué)生們普遍認(rèn)為增加答辯環(huán)節(jié)可以有效促進(jìn)實(shí)踐題目的完成率。這種表面上看似學(xué)生單獨(dú)完成編程、缺乏以小組為單位進(jìn)行協(xié)作的方式,恰恰是增加了學(xué)生之間的溝通和交流。因?yàn)閷W(xué)生們?yōu)榱藢?shí)現(xiàn)代碼并完全理解透徹,需要互相討論和學(xué)習(xí)。
考慮到答辯有先后,筆者為了公平,對(duì)每個(gè)學(xué)生的提問(wèn)也不盡相同,除了程序中放映出的編程思維和效率問(wèn)題,還會(huì)提問(wèn)幾個(gè)開(kāi)放性的思考題。答辯不僅使學(xué)生獲得平時(shí)成績(jī),也讓他們從老師的提問(wèn)中獲得啟示和提升。
盡管經(jīng)過(guò)一個(gè)學(xué)期的嘗試取得了一些效果,但是仍存在一些可以改進(jìn)的地方。首先,該實(shí)踐課是第一次進(jìn)行改革,兩個(gè)題目的預(yù)處理題目根據(jù)筆者之前參加比賽時(shí)的前期數(shù)據(jù)處理工作編制而成,學(xué)生們無(wú)法從網(wǎng)上或者其他渠道獲得代碼。而接下來(lái)第二輪的實(shí)踐題目,如果繼續(xù)使用該題目,就存在學(xué)生找高年級(jí)同學(xué)獲取代碼的可能。采取的辦法是發(fā)現(xiàn)新的比賽題目和數(shù)據(jù)進(jìn)行題目編制,或者繼續(xù)在原有比賽數(shù)據(jù)的基礎(chǔ)上修改或者增加任務(wù)。當(dāng)然也可以將比賽題目作為一個(gè)完整案例。其次,掌握調(diào)用庫(kù)函數(shù)完成算法也是學(xué)生需要鍛煉的技能,可以考慮把本實(shí)踐題目分成三個(gè)階段,數(shù)據(jù)處理、不調(diào)用庫(kù)函數(shù)完成和調(diào)用庫(kù)函數(shù)完成,必做題目擴(kuò)充到6~8個(gè)。數(shù)據(jù)挖掘?qū)嵺`課應(yīng)該與時(shí)俱進(jìn),任課教師應(yīng)每學(xué)期更新實(shí)踐題目,以激發(fā)學(xué)生的學(xué)習(xí)熱情和興趣。最后,該課程也應(yīng)該做好與后續(xù)課程的銜接工作,提前將所需的理論知識(shí)或者實(shí)踐所需知識(shí)告知學(xué)生,做到課程之間無(wú)縫銜接。
四、總結(jié)
本文主要探索了數(shù)據(jù)挖掘?qū)嵺`課程的教學(xué)模式,并提出了三點(diǎn)改革方法,實(shí)踐證明以上方法可以有效促進(jìn)學(xué)生對(duì)該課程算法的理解和掌握,規(guī)范學(xué)生的編程思維和編程習(xí)慣。而且這些方法可以推而廣之,應(yīng)用到其他類(lèi)似的實(shí)踐課上。
參考文獻(xiàn)
[1]劉波,蔡燕斯,鐘少丹.大數(shù)據(jù)背景下數(shù)據(jù)挖掘課程實(shí)踐教學(xué)的探索[J].高教學(xué)刊,2019(18):124-128.
[2]關(guān)鵬,錢(qián)云,張海永.統(tǒng)計(jì)學(xué)專(zhuān)業(yè)數(shù)據(jù)挖掘課程實(shí)驗(yàn)教學(xué)模式探索[J].赤峰學(xué)院學(xué)報(bào)(自然科學(xué)版),2018,34(10):167-170.
[3]黃浩,余琍,劉樹(shù)波.以實(shí)踐和創(chuàng)新能力培養(yǎng)為導(dǎo)向的數(shù)據(jù)挖掘課程教學(xué)方法研究[J].教育教學(xué)論壇,2019,49(12):130-132.
[4]郝志峰.數(shù)據(jù)科學(xué)與數(shù)學(xué)建模[M].武漢:華中科技大學(xué)出版社,2019:71-79.