郭玉彬 吳宇航 薄傲峰 鄭淑敏 張曉鵬
1(華南農業大學數學與信息學院 廣東 廣州 510642)2(中山大學數據科學與計算機學院 廣東 廣州 510006)
高校校園網是承載高校學生學習、生活、娛樂等各類活動的基礎性設施。隨著移動互聯網技術的發展,學生對網絡的使用增長迅速,其上網行為也呈現多樣化和復雜化特征。校園網認證數據包含了學生用戶名、上網端口地址、上下線時間等信息。通過對這些數據的分析,可發現學生上網時間、時長等信息及相關的特征分類規律。而這些規律性信息對學生管理、專業課程設置等工作具有較高的參考價值。2016年上網認證數據量約8 000萬條,并以每年約1億條的速度增加。
針對校園網日志數據進行學生行為分析的研究有很多,大多數研究都是采用傳統的K-means算法對在線時長和校園網使用流量進行聚類,利用聚類結果分析每一類用戶的上網行為和優化校園網管理[1-4]。文獻[5]基于一種改進的K-means算法,即SimiClustering算法,對校園網用戶在線時長和流量進行聚類,得出3種用戶行為,并利用聚類結果為校園網用戶個性化需求方面提供理論依據。文獻[6]利用優化層次聚類算法對校園網主干數據流的IP地址進行聚類,得到網絡用戶的訪問地址分布情況,從中了解用戶行為特征。文獻[7]提出結合網絡用戶數據特點的預處理方式,并引入基于圖論的子空間聚類方法、粒子群聚類算法得到校園網用戶網絡行為模式。文獻[8]利用K-means算法和統計技術對校園網用戶日志數據進行分析,發現大部分學生每個月上網時間小于170小時、學生上網時間越長越容易掛科的規律。文獻[9]對Concordia大學Wi-Fi日志數據利用PCA制導的聚類算法進行分析,得到7類行為模式,并給出多天同類型活動的搜索算法。
上述研究中,聚類中采用上網時間都是用戶一天或者一個月為單位的上網時間,大多數研究沒有去除臟數據。本文將學生上網認證數據轉換為24小時時長向量,保留較多細節,更方便分析學生上網時刻及更能反映學生上網時間分布規律;采用改進Canopy算法,即K-canopy算法,去除離群點,提高聚類質量,進而提高分析結論的可靠性。本文首先選擇校園網認證數據并對其進行清洗,去除與研究目標無關的數據;然后進行數據預處理,得到學生上網時長向量集;再對學生工作日和周末的上網時長向量分別進行聚類。最后依據聚類結果分析了各類學生上網時間和時長分布特征,結合年級專業上網規律進行總結,為學生管理、專業課程設置等工作提供參考。
本文選擇校園網2016年11月本科生的認證數據進行實驗分析。因為11月份是正常學期時間,不受開學、期末考試影響,且11月假期較少,更能全面反映學生上網行為分布規律。在數據預處理階段,首先進行數據清洗,去掉與研究目標無關的數據,然后計算每個用戶、每天24小時內每小時的上網時長,得到上網時長向量集合。
本文實驗數據來源于SAM網絡認證計費系統和Syslog網絡設備日志收集系統。主要提供的信息有:用戶帳號、IP地址信息、上線時間、下線時間和離線原因等。表1給出源數據表中關鍵字段說明。
(1) 數據選擇:校園網認證記錄數據量比較大,其中包括本科生、研究生、教職工和住宅區等多種類型賬號的認證數據,也包括了線路故障反復登錄、設備自動登錄等其他與本研究無關的認證數據。針對本文研究目標,下面詳細列出需要清洗的數據及其清洗原因和處理策略。
① 研究生、教職工、辦公區、來訪人員和住宅區等非本科生認證數據。此類數據與本研究無關,依據帳號特征去除該類數據。
② 大學一、五年級學生認證數據。學校規定僅有少量滿足特殊條件的一年級學生可開設校園網帳號,五年級學生是特殊專業或者學籍異動的學生,此類學生不具有代表性,依據帳號特征去除。
③ 去除11日的數據。雙11購物節,按學校規定10-11日夜間不斷網,因此這一天學生的上網行為不是常規工作日行為或者周末行為,屬于異常行為,直接刪除該時間段全部認證記錄。
④ 上下線時間間隔小于或等于60秒的數據。機器故障所產生的,這類數據對分析學生上網行為沒有意義,依據上下線時間計算時長,然后去除該類數據。
⑤ 單次在線時長超過48個小時的數據。可能是設備掛機或者是個人極端行為,這類數據不反映學生上網行為或者不具有代表性。依據上下線時間計算時長,然后去除該類數據。
⑥ 從6點鐘到23點鐘時間段內上網時長都是3 600秒的數據。設備自動認證數據,不反映學生上網行為,依據帳號每小時上網時長去除該類數據。
綜上所述,本文實驗數據范圍:全月原始數據有1 990 396條認證數據,其中工作日數據1 487 914條,周末502 482條。清洗后總數據量201 523條,其中工作日152 007條,周末49 516條。
(2) 實驗數據預處理:本小節對學生每天產生的多條上網認證數據進行處理,得到每個學生每天的上網時長向量。計算每個學生每天24小時上網時長向量,從而將學生一天上網時長細化到每天每小時,更能反映學生上網時間分布。為保護學生隱私,本文對用戶帳號進行了脫敏處理,利用無意義的數字替代敏感信息。
表2給出學號為2013000XXXX的學生在2016年11月2日的認證數據預處理結果,假設其上網時長向量m,那么m值如下:
m=[2013000XXXX,2016/11/2,0,0,0,0,0,0,0,0,876,2 278,0,0,0,2 626,3 600,3 600,3 018,0,2 400,3 600,3 600,3 530,3 600,1 799]

表2 認證數據表
本小節使用K-canopy算法對上網時長向量集進行粗聚類,去除離群點并估計聚類個數。
Canopy算法一般稱為粗聚類算法,它不需要指定聚類個數,算法簡單,運算速度快[10]。Canopy算法原理和實現方法見文獻[11]。本文基于Canopy算法基本原理設計并實現K-canopy聚類算法,用于去除離群點。K-canopy聚類算法的基本思想是首先利用Canopy算法對數據進行一次粗聚類,取數據個數少且聚類中心與其他Canopy中心距離較遠的Canopy作為離群點去掉。重復此操作直到去掉總數據量的2%~5%的離群數據為止。按常規,2%~5%的數據為離群點是合理的,具體數量可依據數據質量、學生實際上網特征異常的人數來設定,以下是K-canopy聚類算法步驟。
(1) 構造原始數據集合List,計算全部數據兩兩之間的歐式距離的均值T,令T1=0.65×T;
(2) 在List中隨機選取一個樣本數據作為基點P,將其從List刪除,并計算List中其他樣本點到基點P的距離d1;
(3) 把d1小于T1的樣本劃到一個Canopy中,同時把這些已劃分好的數據從原始數據集合List中移除;
(4) 重復(2)、(3),直到List為空;
(5) 開始發現異常點,構造由各個Canopy的中心組成的數據集合Center,令T2=0.95×T1;
(6) 從Center中順序選取一個數據C,計算C與Center中其他所有數據的距離d2,統計d2小于T2的次數n,直到遍歷Center;
(7)n小于或者等于2,則將由樣本C生成的Canopy定義為一個異常類,其他Canopy定義為正常類,該異常類中的樣本全部定義為離群點。
該算法中變量T、T1、T2和n是較重要的參數。T是兩兩向量之間距離的平均值,用來劃分Canopy的閾值。對每個向量,若其與選定向量的距離小于T1,則被劃分到選定向量所在的Canopy中,此處取T1=0.65×T是針對本實驗數據經過多次實驗后能有效避免數據傾斜現象而選定的。參數T2和n是劃分離群點所在類的閾值。若一個類與其他類的中心之間的距離小于T2的次數少于或等于2次,則說明此類的中心與其他類的中心距離較遠。如果類包含向量個數少于200,則此類中所有向量為離群點。此處取T2=0.95×T1、n=2、類中向量個數小于200是針對本實驗上網時長向量集多次實驗選定的。對其他數據集,可選擇不同參數。本文為達到更好的粗聚類結果,對向量集循環了20次K-canopy聚類算法。
由于學校工作日和周末的斷網策略不同,本文將工作日和周末分別粗聚類。工作日粗聚類后得到148個Canopy,其中包含6個向量數量明顯較大的Canopy,去除2 323個離群點,占比1.53%;周末粗聚類后得到106個Canopy,其中包含5個向量數量明顯較大的Canopy,去除3 627個離群點,占比7.32%。通過分析發現,去除的向量確實與其他向量差異較大。
K值,即聚類個數,是K-均值聚類算法(K-means算法)中最重要的參數,會極大地影響聚類結果。確定K值的思路有很多種[12-14]。本文采用投票機制,即利用多種指標最終確定K值。在對數據樣本分布缺乏先驗的理解前提下,本文選擇穩定性較好的三種指標,分別是輪廓系數[15]、戴維森堡丁指數(DBI)[16]與誤差平方和系數(SSE)[17]。輪廓系數、戴維森堡丁指數側重于類間間隔性與類內緊密性,輪廓系數越大、戴維森堡丁指數越小說明聚類效果好。誤差平方和系數則是常規K-means算法的損失函數,可以直接表現出聚類效果[18]。
K-means算法是一種簡單、收斂速度快、易實現的經典聚類算法,適用于數值型數據集聚類。該算法的核心思想是找出K個聚類中心,使得每一個樣本點和與其最近的聚類中心的平方距離和被最小化[19]。本文K-means算法流程如下:
(1) 根據K-canopy聚類得到最優K值,并從數據集中隨機選取K個樣本點作為初始中心點;
(2) 計算各個樣本點到各個中心點的距離,并將其歸類到距離最小時對應的類;
(3) 根據聚類結果,重新計算每一個類的中心值;
(4) 重復(2)、(3),直到每一個類的中心值穩定或者迭代次數超過給定閾值。
本文首先依據K-canopy算法計算結果中向量個數明顯較大的Canopy個數,粗略得出K值范圍;然后對范圍內每個K值的每一個指標都進行10次K-means聚類再求均值,以降低隨機性影響;再利用投票原則來選取最優K值;最后通過K-means聚類算法對數據集進行聚類。
綜上,本文最終得到的工作日學生的上網行為聚類個數即K值為6,周末聚類個數即K值為5。通過實驗結果可發現本文對工作日和周末數據聚類所得到的K值可得到較好的聚類效果。
本文實驗使用Java編程語言實現,主機的CPU型號為CPUi7-8700K,內存為8 GB,操作系統為Microsoft Windows 10。
由于工作日和周末的斷網策略不同,且學生課程安排也不一樣,學生的行為也存在較大差異,因此本文將周末和工作日數據分開處理。以下是整體的實驗流程:(1) 選擇校園網2016年11月本科生的認證數據,并對其預處理得到上網時長向量集合;(2) 利用K-canopy算法對得到上網時長向量集進行粗聚類,去除離群點并估計聚類個數;(3) 利用K-means算法和估計聚類個數對去除離群點后的上網時長向量集合進行進一步聚類,并使用三種指標對聚類結果進行評價,選擇出最優的聚類個數和聚類結果。
以下先對工作日12天數據進行聚類分析。圖1給出工作日聚類結果,圖的橫坐標是時間,代表24個時段,縱坐標為平均上網時長。曲線反應各類各時段上網平均時長。表3給出工作日各類中學生人數分布,按學生學號統計每類中學生人數。

圖1 工作日聚類結果
從圖1和表3可總結工作日校園網用戶的上網時間分布規律如下:
(1) a類學生和b類學生上網行為相似,都是白天長時間上網的學生。其中a類學生從早晨6點時段陸續開始上網,8點時段幾乎全部上線,直到當天結束。b類學生在8點時段陸續開始上線,10點時段幾乎全部上線,10點到16點時段有少量下線,16點時段到23點時段在線人數有細微波動,直到0點斷網時全部下線。
a類學生人數少,占比為7.88%。其中,三個年級學生人數差距不大,分別占30.21%、35.84%和33.96%。本類學生工作日全天上網而且人數較少,說明上網應屬個人行為,學生個人有網癮的概率較高。b類學生人數中等,占比16.48%,明顯大四、大二學生較多,分別占43.32%、35.66%。分析原因應該與學校各專業課程設計相關,是大二學生上午有課的較多,而大四學生上午沒課的比例較大。
(2) c類學生在12點時段陸續開始上網,13時段上線在數達到最多,14點時段到22點時段有少量學生下線,22點到23點時段又有少量上線,直到24點斷網。
此類學生人數占比16.54%,同樣大三和大四學生較多,分別占36.70%和39.93%。分析原因同樣應該是大三、大四學生下午沒課的比例較大。
(3) d類學生白天上網較少,峰值出現在13點時段,但此時段時長均值僅1 100秒(約合18分鐘)。13點時段后繼續下線,至16點時段到達最低點,平均上網時間約180秒(約3分鐘)。之后繼續上線,至晚上22點時段時達到峰值,平均上網時長3 437秒(約57分鐘)。之后繼續下線,直到12點斷網。
此類學生使用網絡較少,工作時間基本不使用網絡,上線時間集中在晚上7點-10點時段。此類學生總數點比較高,點18.30%,有10 398人。三四年級學生人數占比稍大,分別占35.85%和38.30%。
(4) e類學生與d類有些相似,白天上網較少,峰值出現在13點時段,該時段平均時長略高于d類學生,1 311秒(約22分鐘)。其主要上網時間從21點時段開始陸續上網,至22點-23點時段達到峰值。其峰值比a-d類學生平均時長都少3 066秒,約51分鐘。
此類學生工作日基本不使用網絡,僅在晚上10點-11點時段上網。對大二、大三學生預計上課、自習時間較長,而對大四學生,可能因為參加實習等原因未在宿舍使用網絡。
(5) f類學生全天在線時間最短,峰值出現在中午13點時段,此時段平均上網時長峰值也僅僅551秒,約9分鐘。
此類學生上網行為與前面5類學生差異較大。此類學生總體占比23.95%,人數最多。在此類學生中同樣大三、大四學生較多。
與工作日分析相類似,本文對周末同樣進行聚類分析。圖2給出周末聚類結果,表4給出周末各類學生人數分布。

圖2 周末聚類結果

分類總體大二大三大四人數百分比/%人數百分比/%人數百分比/%人數百分比/%a9 54834.54241225.26335335.12378339.62b7 08825.641 87126.402 50135.282 71638.32c7 79828.212 26028.982 64533.922 89337.10d1 4995.4245930.6254336.2249733.16e1 7106.1949328.8358734.3363036.84
在周末,學校24小時不會斷網,根據圖2和表4總結出代表周末校園網用戶的上網行為如下:
(1) a類學生周末會熬夜,在0點時段在線時長均值為1 449秒(約24分鐘),說明約一半學生在線。從0點時段開始陸續下線,4點時段差才全部下線。之后上午8點時段開始陸續上線,至14點時段時多數學生上線,上網時長均值達到3 386秒(約56分鐘)。從此時段直到晚23點時段此類學生大部分在線。
此類學生周末主要是白天長時間在線、會熬夜。總學生人數占比34.54%,是人數最多的一類。其中大二、大三、大四學生各占25.26%、35.12%、39.62%。
(2) b類學生周末熬夜,白天上網較少。在0點時段在線時長均值為963秒(約16分鐘),說明有些學生熬夜,但人數比a類少。此類學生熬夜集中在0點-4點時段。白天上網時間不多,峰值出現在中午13點時段,均值512秒,約9分鐘。下午在線人數少,晚上在線人數繼續增加,23點時段達到峰值,平均時長為3 392秒(約57分鐘)。
此類學生白天上網少,有少量學生會熬夜。占總人數的25.64%,其中大二、大三和大四年級學生各占26.40%、35.28%、38.32%。
(3) c類學生在線峰值出現在凌晨0點、中午13點和晚23點時段,但時長均值不大,最高1 587秒(約16分鐘),說明最多約一半學生23點時在線。其他時間在線的學生不超過一半。
此類學生使用網絡時長較短,少量熬夜,白天較少上網,人數占總人數的28.21%,比例較大。各級學生占比分別是28.98%、33.92%和37.10%。
(4) d類學生全部通宵,白天很少上網。這類學生從0點到6點多全部通宵,6點多后陸續下線,至19點時段的在線人數趨近0。22點時段開始又有少量學生開始上線,至23點時段在線時長均值為239秒(約4分鐘)。
此類學生在總體中占比最少,為5.42%,人數1 499人。此類學生中三年級基本均衡,都占30%以上。
(5) e類0點到18點時段幾乎在線上,在線時長均值達到59分鐘。18點時段開始至24點有少量下線。此類學生在總體中占比6.19%,人數較少,約1 700人。且在此類三個年級人數相差不多,大四學生稍多,大二學生略少。
(1) 個人上網時間特征:針對每個學生,依據帳號可統計其上網時間分布所屬的類,從而發現學生個人的上網時間分布。表5給出兩個學生的上網時間分布。第一個學生工作日在線時間較少,有2天屬b類、1天c類、2天d類、1天e類和5天f類。其工作日大約有2天工作時間在線、6天時間晚睡。周末白天上網較多,有2天可能晚睡,但未通宵熬夜。可知,此學生是正常上網的學生。第二個學生15天中有10個工作日上網行為屬于a類,幾乎工作時間都在線,周末又有4天屬于a類,即白天幾乎全在線,晚上有晚睡。此學生使用網絡時間超長,有網癮的可能性較大。此類學生需要統計后提請學生管理部門特別注意。通過聚類結果,可以很容易發現使用網絡過多、過少或具有其他特征的學生,為學生管理部門提供建議。

表5 某學生上網時間特征分布
(2) 各專業學生的上網時間特征:對各專業可統計每年級屬于不同類的學生人數,再對比其他年級專業可發現各專業學生上網時間分布特征。作為示例,表6給出計算機科學技術專業學生總人數、上網人數、工作日和周末上網人數分布。

表6 此校計算機科學技術專業學生上網分布
從表6可知,三個年級總人數相似,大四學生上網人數較多(149人)。總體來看,工作日大二學生使用網絡較少,晚睡、通宵的人數都比較少。大三使用網絡人數有所增加,晚睡、通宵的人數也都有增加。大四學生上網人數增加,在各類中人數占比大,說明學生上網時間差異較大,可能因為課程設置較少,學生不受上課時間約束,自由度高。對于周末人數分布,大四學生使用網絡最多,通宵、熬夜人最多。大二學生周末使用網絡比大三學生多,熬夜通宵人數少于大三人數。
對其他專業可進行類似分析。當然也可通過數據對比獲取各專業學生上網時間分布的差異。限于篇幅,本文未給出各專業對比情況。通過專業對比,可為專業設置、專業各年級課程設置提供參考。
本文選擇2016年11月的校園網上網認證數據,清洗掉與研究目標無關的數據,然后計算得到學生的上網時長向量集合。對上網時長向量的聚類分三步進行,首先利用K-canopy算法選擇并去除離群點數據,提高了數據質量和聚類效率,使聚類結果更具說服力。再用輪廓系數、戴維森堡丁指數與誤差平方和系數三種參數投票確定最優聚類個數。最后利用K-means算法對工作日和周末上網時長向量集分別進行聚類,對聚類結果進行分析,得到工作日、周末不同類型學生上網時長特征。另外,統計單個學生、某專業各年級學生的聚類結果,分別得到對應的上網時長特征。本文分析結果可為專業課程安排、學生管理工作提供參考。
隨著無線網絡認證數據的暴增,學生上網行為信息更為豐富。因此下一步會利用Spark平臺對有線、無線認證數據、網絡流量數據及學生成績等數據進行進一步分析,在校園人員流動規律、學生成績與上網成績關聯性等方面獲取更有價值的分析結果。