宋國(guó)琴+何春+章三妹
摘要:KDDcup2015數(shù)據(jù)集提供了學(xué)堂在線半年內(nèi)39門課程的部分時(shí)段學(xué)習(xí)行為信息,主要用于學(xué)生翹課行為預(yù)測(cè)研究。翹課行為反映了幕課的質(zhì)量問(wèn)題,也是在線教育的核心問(wèn)題之一。該文通過(guò)對(duì)數(shù)據(jù)集的詳細(xì)分析,解讀了KDDcup2015數(shù)據(jù)集的格式和內(nèi)容,介紹了數(shù)據(jù)分析的工具和平臺(tái),并通過(guò)實(shí)例展示如何將原始數(shù)據(jù)轉(zhuǎn)化為有機(jī)的字典數(shù)據(jù),以利于進(jìn)一步的特征建立和機(jī)器學(xué)習(xí)??偨Y(jié)了數(shù)據(jù)集的不足和可能的影響,為同類數(shù)據(jù)集的建立和應(yīng)用提供了依據(jù)。
關(guān)鍵詞:KDDcup2015;幕課;翹課;Python
中圖分類號(hào):TP181 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)35-0005-03
KDD是數(shù)據(jù)挖掘與知識(shí)發(fā)現(xiàn)(Data Mining and Knowledge Discovery)的簡(jiǎn)稱,KDD CUP是由ACM(Association for Computing Machiner)的 SIGKDD(Special Interest Group on Knowledge Discovery and Data Mining)組織的年度競(jìng)賽。
學(xué)生的高輟學(xué)率成為MOOC平臺(tái)最核心的問(wèn)題,也是在線教育的核心問(wèn)題之一[1-3]。對(duì)輟學(xué)的了解和預(yù)測(cè)可以很好的維護(hù)和促進(jìn)學(xué)生的學(xué)習(xí)活動(dòng)。因此,KDDCup2015的題目為:對(duì)中國(guó)最大的MOOC平臺(tái)之一學(xué)堂在線的輟學(xué)行為進(jìn)行預(yù)測(cè)。通過(guò)對(duì)數(shù)據(jù)集的解讀,根據(jù)用戶之前的行為,對(duì)他在接下來(lái)的10天內(nèi)是否會(huì)翹課進(jìn)行預(yù)判。
由于在線教育的盈利要求,目前極少有完整的系統(tǒng)的在線教育公開(kāi)數(shù)據(jù),在線教育公開(kāi)數(shù)據(jù)極其稀缺, KDDcup2015[4]數(shù)據(jù)集有極高的研究和應(yīng)用價(jià)值。通過(guò)對(duì)KDDcup2015數(shù)據(jù)集的分析和研究,提出了數(shù)據(jù)的分析方法和手段,為進(jìn)一步的數(shù)據(jù)挖掘[5]或機(jī)器學(xué)習(xí)[6]過(guò)程做鋪墊。
1 數(shù)據(jù)集基本情況
數(shù)據(jù)資源有五個(gè)文件,均為CSV格式,如表1所示。CSV是一種通用的、相對(duì)簡(jiǎn)單的文件格式,被用戶、商業(yè)和科學(xué)廣泛應(yīng)用。最廣泛的應(yīng)用是在程序之間轉(zhuǎn)移表格數(shù)據(jù),而這些程序本身是在不兼容的格式上進(jìn)行操作的(往往是私有的和/或無(wú)規(guī)范的格式)。因?yàn)榇罅砍绦蚨贾С帜撤NCSV變體,因此在實(shí)踐中,CSV文件還是非常方便的。
下面分別解釋關(guān)鍵表中字段的含義:
1)object.csv -在這個(gè)文件中的每一行描述了一個(gè)課程中的模塊,包括它的類別,它的子模塊,以及發(fā)布時(shí)間。這些模塊可能代表的課程的不同部分,例如章,節(jié),在線視頻材料、習(xí)題等。模塊被組織成樹(shù)型結(jié)構(gòu),每個(gè)課程包含幾個(gè)章節(jié);每章包含幾個(gè)部分,每個(gè)部分包含幾個(gè)對(duì)象(視頻、習(xí)題等)。
- course_id -課程號(hào)
- module_id -模塊號(hào)
- category –模塊種類
- children -模塊的子模塊
- start -模塊向?qū)W生開(kāi)放的時(shí)間
2)enrollment_train.csv –每一行表明某用戶參加了某課程。
- enrollment_id –注冊(cè)號(hào)
- username -學(xué)號(hào)
- course_id -課程號(hào)
3)log_train.csv –每一行都是一個(gè)“事件”的日志行為記錄。每條記錄包含以下信息:
- enrollment_id -注冊(cè)號(hào)
- time - Time of the event.(事件)操作發(fā)生的時(shí)間
- source - Event source (server or browser).(事件)操作的資源
- event -在事件類型方面,定義了7種不同的事件類型:
problem -做作業(yè)
video -看視頻
access -讀取課程的除了視頻和作業(yè)外的其它對(duì)象
wiki -讀取課程的維基百科
discussion -論壇討論
navigate -瀏覽課程其它部分
page_close –關(guān)閉網(wǎng)頁(yè)
- object -讀取或?yàn)g覽的對(duì)象
4)true_trian.csv –每行包含一個(gè)注冊(cè)號(hào)是否翹課的信息。
-第1列 –注冊(cè)號(hào)
-第2列 –是否輟學(xué)(離散類型,0表示輟學(xué)事件,1表示持續(xù)學(xué)習(xí))
這些文件中的主要對(duì)象及關(guān)系如圖1所示。
2 樣本分析
KDD2015數(shù)據(jù)集一共包含的39門課程,每門課程的學(xué)習(xí)信息都是開(kāi)課后的一個(gè)月,總的時(shí)間跨度為半年。圖2和圖3顯示了訓(xùn)練集和測(cè)試集中不同時(shí)間點(diǎn)上的日志分布。通過(guò)比較可以看出,在春節(jié)期間的日志數(shù)量極少,說(shuō)明放假后學(xué)生基本不參與學(xué)習(xí)。另外,訓(xùn)練集和測(cè)試集的數(shù)據(jù)分布高度相似,使訓(xùn)練集上的應(yīng)用可以有效地應(yīng)用于測(cè)試集。
3 數(shù)據(jù)分析及處理
3.1 工具和平臺(tái)
Python[7]- [8]是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議。Python語(yǔ)法簡(jiǎn)潔清晰,特色之一是強(qiáng)制用空白符(white space)作為語(yǔ)句縮進(jìn)。它使你能夠?qū)W⒂诮鉀Q問(wèn)題而不是去搞明白語(yǔ)言本身。
本文基于64位的windows7平臺(tái),使用基于Python2.7解釋器的64位Anaconda2軟件讀取和分析數(shù)據(jù)。Python2.7是目前為止最穩(wěn)定使用最廣泛的python版本,而Anaconda2集成了完備的python科學(xué)計(jì)算的第三方庫(kù),安裝方便,簡(jiǎn)化了數(shù)據(jù)分析和科學(xué)計(jì)算的很多程序設(shè)置工作。
3.2 程序?qū)崿F(xiàn)
Python字典是另一種可變?nèi)萜髂P停铱纱鎯?chǔ)任意類型對(duì)象,如字符串、數(shù)字、元組等其他容器模型。字典由鍵和對(duì)應(yīng)值成對(duì)組成。字典也被稱作關(guān)聯(lián)數(shù)組或哈希表。字典設(shè)置實(shí)例如下:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
通過(guò)對(duì)字典的鍵的訪問(wèn)或遍歷,可以很方便地實(shí)現(xiàn)數(shù)據(jù)表的訪問(wèn)、聯(lián)結(jié)或存儲(chǔ)。
以下程序使用字典方式處理enrollment_train.csv內(nèi)容。
class Enrollment:
def __init__(self, filename):
fin = open(filename)
fin.next()
self.enrollment_info = {}
self.user_info = {}
self.user_enrollment_id = {}
self.course_info = {}
self.ids = []
for line in fin:
enrollment_id,username,course_id = line.strip().split(",")
if enrollment_id == "enrollment_id":
continue
self.ids.append(enrollment_id)
self.enrollment_info[enrollment_id] = [username, course_id]
if username not in self.user_info:
self.user_info[username] = [course_id]
self.user_enrollment_id[username] = [enrollment_id]
else: self.user_info[username].append(course_id) self.user_enrollment_id[username].append(enrollment_id)
if course_id not in self.course_info:
self.course_info[course_id] = [username]
else: self.course_info[course_id].append(username)
print "load Enrollment info over!", len(self.course_info), len(self.enrollment_info)
print self.enrollment_info.get("1")
if __name__ == "__main__":
enrollment = Enrollment("../data/train1/enrollment_train.csv")
通過(guò)上面程序,enrollment_train.csv文件中的信息分別存入了course_info{},enrollment_info{},user_info{},user_enrollment_id{}4個(gè)字典中,如表2所示。這4個(gè)字典中,分別使用不同關(guān)鍵字存儲(chǔ)信息,可以通過(guò)不同鍵值查詢信息,實(shí)現(xiàn)了信息的歸類與存儲(chǔ)。
4 KDDcup2015存在的問(wèn)題及應(yīng)用研究方向
KDDcup2015的預(yù)測(cè)問(wèn)題為翹課,它的主題任務(wù)是預(yù)測(cè)某個(gè)注冊(cè)號(hào)未來(lái)是否翹課,界定原則為某個(gè)時(shí)間點(diǎn)后面10天是否有日志記錄。實(shí)際上,如果注冊(cè)號(hào)10天后回來(lái)繼續(xù)學(xué)習(xí),這是翹課行為;如果注冊(cè)號(hào)10天后再也不繼續(xù)學(xué)習(xí),這是輟學(xué)行為。這兩種行為的性質(zhì)大不一樣,而數(shù)據(jù)集并不沒(méi)有有效區(qū)分。
KDDcup2015數(shù)據(jù)集樣本具有不平衡性。從數(shù)據(jù)分析中可以看出,訓(xùn)練集中絕大部分是負(fù)樣本,即大部分樣本都有翹課行為,這會(huì)導(dǎo)致正樣本代表性不足,使預(yù)測(cè)結(jié)果的泛化性降低。另一方面,數(shù)據(jù)集缺乏用戶及課程特征數(shù)據(jù),也缺乏一些細(xì)節(jié)信息,如觀看視頻的進(jìn)度,使得整個(gè)數(shù)據(jù)集不夠完整,也會(huì)使機(jī)器學(xué)習(xí)的結(jié)果不具有代表性。
KDDcup2015數(shù)據(jù)集包含了大量的實(shí)際行業(yè)數(shù)據(jù),未來(lái)可以作進(jìn)一步的數(shù)據(jù)挖掘研究,機(jī)器學(xué)習(xí)試驗(yàn)性研究,以及特征自動(dòng)建立[9]的探索研究。
參考文獻(xiàn):
[1] JOSEP G, JULIA M. Rethinking dropout in online higher education: The case of the Universitat Oberta de Catalunya[J], The International Review of Research in Open and Distributed Learning, 2014, 15(1).
[2] DANIELl F O O, JANE S, RUSSELL B. Dropout rates of massive open online courses :behavioral patterns,6th International Conference on Education and New Learning Technologies[C]. EDULEARN14 Proceedings, IATED, 2014.
[3] TAN M, SHAO P. Prediction of Student Dropout in E-Learning Program Through the Use of Machine Learning Method[J]. International Journal of Emerging Technologies in Learning. 2015, 10(1).
[4] SIGKDD, KDD Cup 2015-Predicting dropouts in MOOC[EB/OL].(2015-8-4). http://www.KDDCup2015.com/information.html
[5] HAN J W, KAMBER M. 數(shù)據(jù)挖掘:概念與技術(shù)[M]. 范明,孟小峰譯. 2版. 北京: 機(jī)械工業(yè)出版社, 2007.
[6] 周志華. 機(jī)器學(xué)習(xí)[M]. 北京: 清華大學(xué)出版社, 2016.
[7] (美)BILL LUBANOVIC著. 丁嘉瑞, 梁杰, 禹常隆譯. PYTHON語(yǔ)言及其應(yīng)用[M]. 北京: 人民郵電出版社, 2016.
[8] 張若愚. Python科學(xué)計(jì)算第2版[M]. 北京: 清華大學(xué)出版社, 2016.
[9] JAMES M K, KALYAN V. Deep Feature Synthesis: Towards Automating Data Science[C]. Proceedings of the The 3rd IEEE International Conference on Data Science and Advanced Analytics(DSAA). IEEE, 2015.