這里以學校的學生成績進行聚類分析為案例
1、背景
隨著我國經濟的發展,網絡已被應用到各個行業,人們對網絡帶來的高效率越來越重視,然而大量數據信息給人們帶來方便的同時,也隨之帶來了許多新問題,大量數據資源的背后隱藏著許多重要的信息,人們希望能對其進行更深入的分析,以便更好地利用這些數據,從中找出潛在的規律。那么,如何從大量的數據中提取并發現有用信息以提供決策的依據,已成為一個新的研究課題。
目前普遍使用的成績分析方法一般只能得到均值、方差等一類信息,且僅僅是從一門課程獨立數據進行的分析,但在實際教學中,比如學生在學習某一門課程時,是哪一門或者幾門課程對其影響很大,包括教學以外的哪些因素對學生成績造成了較大的影響等各種有價值的信息往往無法獲知。
2、聚類分析
在數據庫中的知識發現和數據挖掘(KDDM)受到目前人工智能與數據庫界的廣泛重視。KDDM的目的是從海量的數據中提取人們感興趣的、有價值的知識和重要的信息,聚類則是KDDM領域中的一個重要分支。所謂聚類是將物理或抽象的集合分組成為類似的對象組成的多個類的過程。
聚類分析就是將一組數據分組,使其具有最大的組內相似性和最小的組間相似性。簡單的說就是達到不同聚類中的數據盡可能不同,而同一聚類中的數據盡可能相似,它與分類不同,分類是對于目標數據庫中存在哪些類這一信息是知道的,所要做的就是將每一條記錄分別屬于哪一類標記出來;而聚類是在預先不知道目標數據庫到底有多少類的情況下,希望將所有的記錄組成不同的簇或者說“聚類”,并且使得在這種分類情況下,以某種度量為標準的相似性,在同一聚類之間最小化,而在不同聚類之間最大化。事實上,聚類算法中很多算法的相似性都基于距離而且由于現實數據庫中數據類型的多樣性,關于如何度量兩個含有非數值型字段的記錄之間的距離的討論有很多,并提出了相應的算法。聚類分析的算法可以分為以下幾類:劃分方法、層次方法、基于密度方法等。這里只描述一種:K-means算法,如下
3、K-means算法
K均值聚類,即數據挖掘中的C均值聚類,屬于聚類分析方法中一種基本的且應用最廣泛的劃分算法。
K-means算法是J.B.MacQueen在1967年提出的,是聚類方法中一個基本的劃分方法,也是目前諸多聚類算法中極有影響的一種技術。K-均值算法以k為參數,把N個對象分為k個簇,以使簇內具有較高的相似度。相似度的計算根據一個簇中對象的平均值來進行。
算法首先隨機地選擇K個對象,每個對象初始地代表了一個簇的平均值或中心。對剩余的每個對象根據其與各個簇中心的距離,將它賦給最近的簇。然后重新計算每個簇的平均值。這個過程不斷重復,直到準則函數收斂。K-Means算法的準則函數定義為:
即E是數據庫所有對象的平方誤差的總和。其中x是空間中的點,表示給定的數據對象,是簇的平均值。
K-means算法描述為:
輸入:簇的數目k和包含n個對象的數據庫
輸出:k個簇,使平方誤差準則最小
(1)assigninitial value for means;
//任意選擇k個對象作為初始的簇中心
(2)REPEAT
(3)FOR j=ito n DO assign each xj to the cluster which has the closest mean;
//根據簇中對象的平均值,將每個對象賦給最類似的簇
(4)FORi=1 to k DO
//更新簇的平均值,即計算每個對象簇中對象的平均值
(5)ComputeE;
//計算準則函數E
(6)UNTILE 不再明顯地發生變化;
從上面的算法思想和算法框架,我們不難看出,K個初始聚類中心點的選取對聚類結果具有較大的影響,因為在該算法中是隨機地選取任意K個點作為初始聚類中心。如果有先驗知識,可以選取具有代表性的點作為初始中心點。在上面這個算法中,一次迭代中把每一個數據對象分到離它最近的聚類中心所在的類中,這個過程的時間復雜度為O(nkd),這里n指的是總的數據對象的個數,k是指定的聚類數也叫簇數,d是數據對象的維數;新的分類產生以后需要計算新的聚類中心,這個過程的時間復雜度為0(nd)。所以這個算法一次迭代需要的總的時間復雜度為O(nkd)。
4、數據準備與數據預處理(1)聚類數據的預處理
現實世界中的數據庫存在大量的噪聲數據、空缺數據和不一致數據。基因表達數據也存在這種情況。有很多數據預處理技術可以去掉數據中的噪聲,糾正不一致。為了提高涉及距離度量的聚類算法的精度和有效性,可以采用數據規范化的一些方法。
(2)數據清理
在實際數據庫中往往存在著一些空缺值和噪音數據。對于空缺值,可以采用以下方法填寫空缺值。
1)人工填寫空缺值。這種方法對操作人員要求較高。并且,該方法很費時,當數據集很大時,該方法可能行不通。
2)使用該空缺值所在屬性的平均值來填充。比如當進行樣本聚類時,如果某個樣本在某個指標值上的值空缺,可使用其它樣本在該指標上的平均值來填充該空缺值。對于噪聲數據,我們可以采用一些數據平滑技術來平滑數據。
3)數據規范化。如果數據庫中的各屬性的量綱和單位不同,在計算機對象間的距離之前,必須把不同的度量單位統一成相同的度量單位。由于屬于不同概念范疇的屬性具有不同的含義,把所有的屬性轉化成某個特定的度量單位是不可能的。常用的方法是把屬性的值域映射為一個相同的區間(通常是[0,1]區間),這個過程成為屬性的標準化或規范化。準備500學生的成績包含:數學、英語、語文、物理、化學、歷史、地理等
5、RapidMiner聚類分析
分析流程:讀取數據庫---->聚類分析---->存儲csv文件---->結束
1、打開RapidMiner工具,進入白板界面
2、讀取數據庫:拖曳---左側中的Database--->Read Database標簽,讀取數據庫,然后設置數據庫的基本條件,點擊白板中的Read Database,查看右側信息
1)數據庫連接條件:點擊Connection右邊的數據庫連接配置按鈕,輸入相關信息如:數據庫名稱、用戶名、密碼、Host等,然后點擊下方的測試一下連接是否成功。
2)讀取數據庫中表以及相關屬性數據配置:點擊query右側的圖標,選擇數據庫下的表--屬性--以及條件,可以篩選出來對應的數據
3、聚類算法:拖曳---左側中的Modeling--->segmentation--->K-Means標簽到白板中,聚類算法插件,用于數據的聚類分析
1)配置聚類算法的參數:簇數、迭代次數等
4、存儲文件:拖曳---左側中的Data Access--->Files--->Write標簽到白板中,存儲文件插件,用于分析結果的存儲
然后在右側csv file配置存儲路徑
5、分析流程圖---規劃,通過連接線連接整個的執行流程,并點擊執行按鈕
如圖所示
6、執行結果
1)、分析具體結果數據
2)、統計數據:最大、最小、平均值、聚類
3)、聚類分析圖
7、結果分析:
第一個圖可以看出:
1)每科目的最低分、最高分、平均分等信息
2)聚類:三簇數據,每簇數據的學生個數
第二個圖可以看出:
1)每科分值的分布情況,看出大部分學生的成績分布在【70-80】之間,90分以上的偏少
第三個圖可以看出:
1)聚類按三簇進行聚類,也就是說分為了三類學生
2)cluster_0結合第一個圖有378個學生實例,從成績上分析學習情況:地理成績不及格;語文、化學成績偏差;物理、英語較好;數學最好
cluster_1結合第一個圖有136個學生實例,從成績上分析學習情況:地理成績不及格;歷史、化學成績偏差;語文較好;物理、英語、數學最好
cluster_2結合第一個圖有26個學生實例,從成績上分析學習情況:地理成績不及格;歷史、化學成績偏差;語文、數學、物理較好;英語最好
因此,根據分析的數據來看,這三類的學生,老師可以根據不同的情況,進行分類著重輔導。