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