- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
臺灣大學計算機及資訊網路中心Computer and Information Networking Center (CINC) of National Taiwan University (NTU)
R軟體資料探勘實務(下)—集群模型
林淑芬
臺灣大學計算機及資訊網路中心教學研究組程式設計師
摘要
資料探勘的主要模型可大致分為分類(Classification)、關聯(Association)、集群(Clustering)三大類型。我們已於「R軟體資料探勘實務」(上) (中)兩篇中說明了分類模型和關聯模型。因此,在這裡我們將繼續說明集群模型的應用,以R軟體的實際操作,找岀資料間同質的集群特性。
前言
資料探勘(Data Mining)是透過自動或半自動化的方式對大量的數據進行探索和分析的過程,從其中發掘出有意義或有興趣的現象,進而歸納出有脈絡可循的模式(model),並藉反覆印證找出意想之外可行的執行方案。
資料探勘的主要模型可大致分為分類(Classification)、關聯(Association)、集群(Clustering)三大類型。我們已於「R軟體??料探勘實務」(上) (中)兩篇中說明了分類模型和關聯模型。因此,在這裡我們將繼續說明集群模型的應用,以R軟體的實際操作,找岀資料間同質的集群特性。
一. 鳶尾花資料集的各種集群模型
集群(clustering)分析是從一大群資料中,獲得知識的基礎過程,目前廣泛應用在各個領域,包含了資料採礦、統計數據分析…等等。集群分析就是將異質的群體區隔,分成一些同質性較高的子群組或集群,使同一集群內之事務具有高度之相似性(homogeneity),不同集群之事務具有高度之異質性(heterogeneity)。也就是說,不需要事先定義好該如何分類,也不需要訓練組資料,而是靠資料自身的相似性集群在一起,最常使用在市場區隔的應用上。
分群注意事項包括要確保Cluster具代表性,各個Cluster的大小原則上以5-10%為最低門檻,總體Cluster的數量建議為2-12個,過多欄位會產生過多的Cluster,造成分析上的困難。集群分析可分為分割式(Partitional)集群:K-Means和K-Medoids clustering,和非分割式(Non-Partitional)集群: Hierarchical和Density-based clustering。以下我們將使用鳶尾花iris資料集,藉由R軟體的實際操作,來說明集群分析的各種模型:
1. K-平均數(K-Means)集群
K-Means演算法是麥昆(J. B. MacQueen)於1967年正式發表,由於原理 簡單、計算快速,很快就成為商用資料採礦軟體中的基本配備。它是屬於前 設式的集群演算法,也就是必須先設定集群的數量,然後根據該設定找出最 佳的集群結構。使同一集群內的資料物件相似性大,不同類別中的資料差異 性大,也就是達到「組內同質,組間異質」的處理方式。
K平均數(K-means)是最受使用者歡迎以及最佳的集群分析法之一,屬 分割式分群法,分群方式是先將原始事物分為k個群體,計算某一資料點到 集群中心之距離(或相適度),將其分配到最接近的群體,重新計算增加集 減少資料點之集群的中心,重複計算直至各資料點不必重新分配其他集群為 止。
以下我們將藉由R軟體的實際操作,來說明K-Means集群分析。執行 kmeans函數及繪製散佈圖的指令如下:
#iris2=iris[,sapply(iris,is.numeric)] 取所有數值資料的指令 或者
iris2=iris[,-5]
set.seed(1234)
kmeans.result=kmeans(iris2,3)
kmeans.result
table(iris$Species,kmeans.result$cluster)
plot(iris2,col=kmeans.result$cluster)
圖1預測分群結果與找出叢集中心
圖2 iris的散佈圖矩陣
接下來我們想利用集群找出離群值並將離群值和集群中心標示出來:
#find 5 largest distances between objects and cluster centers
kmeans.result$centers
centers=kmeans.result$centers[kmeans.result$cluster,]
head(centers)
distances=sqrt(rowSums((iris2-centers)^2))
outliers=order(distances,decreasing=T)[1:5]
outliers
iris2[outlie
文档评论(0)