王 柳,張宇敬,安英博
(1.河北金融學(xué)院 信息工程與計(jì)算機(jī)學(xué)院,河北 保定 071000;2.河北金融學(xué)院 金融科技學(xué)院,河北 保定 071000)
我國(guó)高等教育對(duì)創(chuàng)新型工程人才和工程師應(yīng)對(duì)復(fù)雜系統(tǒng)問(wèn)題的能力提出了更高的要求[1]。在人才培養(yǎng)的過(guò)程中,遵循育人規(guī)律,不斷改進(jìn)教學(xué)方法,有助于培養(yǎng)勇于創(chuàng)新和實(shí)踐的高素質(zhì)人才[2]。將以“自主、探究、合作”為特征的探究式教學(xué)法應(yīng)用于“數(shù)據(jù)挖掘原理與應(yīng)用”課程教學(xué)中,以問(wèn)題為線索,讓學(xué)生對(duì)當(dāng)前教學(xué)內(nèi)容中的主要知識(shí)點(diǎn)進(jìn)行自主學(xué)習(xí)、深入探究,可以達(dá)到對(duì)知識(shí)技能較深入的理解與掌握,有利于創(chuàng)新思維與創(chuàng)新能力的形成與發(fā)展。
探究式教學(xué)(Hands-on Inquiry Based Learning,HOIBL)由美國(guó)著名教育家、心理學(xué)家Dewey等[3]提出,他認(rèn)為教學(xué)不應(yīng)直截了當(dāng)?shù)刈⑷胫R(shí),而應(yīng)引導(dǎo)受教育者在活動(dòng)中得到經(jīng)驗(yàn)和知識(shí)。探究式教學(xué)法是一種以提出問(wèn)題、分析問(wèn)題、解決問(wèn)題為基本特征的教學(xué)活動(dòng)形式,通過(guò)自主研究、分析和解決問(wèn)題,激發(fā)學(xué)生的好奇心和探索欲望,培養(yǎng)創(chuàng)新潛能與自我創(chuàng)造力[4]。在“數(shù)據(jù)挖掘原理與應(yīng)用”的教學(xué)實(shí)施過(guò)程中,探究式教學(xué)法分為提出問(wèn)題、探究交流、問(wèn)題解析3步。以下以KNN算法為例,詳細(xì)說(shuō)明3個(gè)步驟的實(shí)施情況。
K最近鄰(K-Nearest Neighbor,KNN)分類(lèi)算法的主要思想:給定測(cè)試樣本,找出訓(xùn)練集中與其距離最近的K個(gè)訓(xùn)練樣本,然后根據(jù)這K個(gè)“鄰居樣本”的信息來(lái)進(jìn)行預(yù)測(cè),當(dāng)然,需要提前定義樣本之間的距離度量方法。對(duì)此,以圖1為例,可以由淺入深地依次列出問(wèn)題:(1)猜猜看,圖1最后一行未知電影屬于什么類(lèi)型的電影?(2)KNN算法的訓(xùn)練過(guò)程是什么?(3)KNN算法當(dāng)中需解決的關(guān)鍵問(wèn)題是什么?(4)你知道哪些距離(相似性)度量方法?這些常用的距離度量方法可以解決所有問(wèn)題嗎?(5)如何選擇合適的K值,K值過(guò)大或者過(guò)小會(huì)有什么問(wèn)題?(6)KNN算法的時(shí)間復(fù)雜度是多少?如何提高效率?

圖1 電影信息數(shù)據(jù)
針對(duì)提出的問(wèn)題,要讓學(xué)生進(jìn)入情境,對(duì)所提出的問(wèn)題積極思考,通過(guò)查閱資料自主探討。自主探討階段完成之后,學(xué)生會(huì)對(duì)問(wèn)題有一定的認(rèn)識(shí)和理解,然后進(jìn)入交流討論階段,在這個(gè)過(guò)程中學(xué)生可以交換思路、觀點(diǎn)。交流討論過(guò)程可以在教師的組織協(xié)調(diào)下分小組進(jìn)行。
針對(duì)KNN算法提出的問(wèn)題由淺入深,學(xué)生若能通過(guò)探究和交流解決以上問(wèn)題,便能深入理解KNN算法的原理,同時(shí),能夠?qū)⑹褂盟惴ń鉀Q實(shí)際問(wèn)題。各問(wèn)題的解釋要點(diǎn)如下:
(1)猜猜看,圖1最后一行未知電影屬于什么類(lèi)型的電影?設(shè)置該問(wèn)題主要目的在于引出KNN算法的主要思想,判斷最后一行未知電影的類(lèi)型,需要從類(lèi)型已知的電影中找到一個(gè)和未知電影最接近的電影,然后通過(guò)該電影的類(lèi)型來(lái)判斷未知電影的類(lèi)型。當(dāng)然,不同的學(xué)生找和未知電影最接近電影的方法有所不同,這正好體現(xiàn)出樣本之間的相似性度量方法實(shí)際上是有多種的。解釋完電影類(lèi)型的判斷過(guò)程之后,再類(lèi)推解釋KNN算法的思想,學(xué)生能夠很容易接受。
(2)KNN算法的訓(xùn)練過(guò)程是什么?在解決第一個(gè)問(wèn)題的過(guò)程中,學(xué)生會(huì)掌握KNN算法的主要思想,不難發(fā)現(xiàn)KNN算法似乎沒(méi)有顯示的訓(xùn)練過(guò)程,學(xué)生通過(guò)探究和討論可以發(fā)現(xiàn)KNN算法的這一特點(diǎn),并與線性回歸和邏輯回歸形成對(duì)比。
(3)KNN算法當(dāng)中需解決的關(guān)鍵問(wèn)題是什么?KNN算法中有兩個(gè)關(guān)鍵問(wèn)題,一方面是距離(相似性)的度量方法,另一方面是K值的選擇。
(4)你知道哪些距離(相似性)度量方法?這些常用的距離度量方法可以解決所有問(wèn)題嗎?學(xué)生通過(guò)探究討論總結(jié)屬性間及樣本間的距離度量方法,引導(dǎo)學(xué)生重點(diǎn)理解并記憶歐幾里得距離等常用的距離度量方法。特別提醒學(xué)生,在KNN分類(lèi)算法中,若采用不同的距離(即相似性)計(jì)算方式,則找出的“近鄰樣本”可能不同,從而也會(huì)導(dǎo)致分類(lèi)結(jié)果有差異。
(5)如何選擇合適的K值,K值過(guò)大或者過(guò)小會(huì)有什么問(wèn)題?K值也是一個(gè)重要參數(shù),K的不同取值會(huì)影響分類(lèi)結(jié)果,特別地,K取值為1時(shí),我們稱之為最近鄰算法。圖2給出了K近鄰分類(lèi)算法的一個(gè)示意圖,當(dāng)K=3時(shí),?判別為▲,當(dāng)K=5時(shí),?判別為■。如果K太小,則最近鄰分類(lèi)器容易受到噪聲影響而產(chǎn)生過(guò)擬合現(xiàn)象;相反,如果K太大,分類(lèi)器可能會(huì)誤分類(lèi)測(cè)試樣例。通常來(lái)說(shuō),應(yīng)該通過(guò)不斷嘗試找到合適的K值。
(6)KNN算法的時(shí)間復(fù)雜度是多少?有什么方法可以提高效率?KNN的絕大部分時(shí)間花費(fèi)在了“近鄰樣本”的查找上,學(xué)生通過(guò)探究討論能夠給出不同的查找算法,讓大家通過(guò)討論給出時(shí)間效率較優(yōu)的查找算法。另外,在數(shù)據(jù)結(jié)構(gòu)課程中介紹過(guò)查找樹(shù),在此基礎(chǔ)上引導(dǎo)學(xué)生考慮構(gòu)建KD樹(shù)。

圖2 K近鄰分類(lèi)算法示意
為了檢驗(yàn)教學(xué)效果,對(duì)實(shí)施教學(xué)改革的班級(jí)以無(wú)記名方式進(jìn)行調(diào)查問(wèn)卷,結(jié)果顯示,90%的同學(xué)覺(jué)得課堂氛圍活躍,70%的同學(xué)對(duì)該課程產(chǎn)生興趣并愿意積極主動(dòng)進(jìn)行學(xué)習(xí),65%的同學(xué)能夠掌握算法的基本原理,60%的同學(xué)能夠順利完成布置的實(shí)驗(yàn),但50%的同學(xué)不知道如何使用已學(xué)習(xí)的算法進(jìn)行實(shí)際應(yīng)用。總體來(lái)說(shuō),該門(mén)課程的教學(xué)改革取得了一定的效果,但用所學(xué)算法解決實(shí)際問(wèn)題對(duì)學(xué)生來(lái)說(shuō),還是有一定難度。
為應(yīng)對(duì)變化、與時(shí)俱進(jìn),多數(shù)高校開(kāi)設(shè)“數(shù)據(jù)挖掘原理與應(yīng)用”課程。為了提高教學(xué)效果,將探究式教學(xué)法運(yùn)用到該課程的教學(xué)中,用學(xué)生主動(dòng)探究、交流合作的教學(xué)模式改變傳統(tǒng)教學(xué)模式。實(shí)際教學(xué)效果顯示,該教學(xué)方法能有效調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性和主動(dòng)性,活躍課堂氣氛的同時(shí)能加深學(xué)生對(duì)知識(shí)的理解,使得教學(xué)效果得到改善,有助于培養(yǎng)學(xué)生的自主學(xué)習(xí)能力,可以在其他核心專(zhuān)業(yè)課程中進(jìn)行推廣。