- 大数据分析教程
- 大数据分析 - 首页
- 大数据分析 - 概述
- 大数据分析 - 特征
- 大数据分析 - 数据生命周期
- 大数据分析 - 架构
- 大数据分析 - 方法论
- 大数据分析 - 核心交付成果
- 大数据采用与规划考虑因素
- 大数据分析 - 关键利益相关者
- 大数据分析 - 数据分析师
- 大数据分析 - 数据科学家
- 大数据分析有用资源
- 大数据分析 - 快速指南
- 大数据分析 - 资源
- 大数据分析 - 讨论
大数据分析 - K均值聚类
k均值聚类旨在将n个观测值划分为k个聚类,其中每个观测值属于具有最近均值的聚类,该均值作为聚类的原型。这导致数据空间被划分为Voronoi单元。
给定一组观测值(x1, x2, …, xn),其中每个观测值都是一个d维实数向量,k均值聚类旨在将n个观测值划分为k组G = {G1, G2, …, Gk},以最小化如下定义的聚类内平方和 (WCSS):
$$argmin \: \sum_{i = 1}^{k} \sum_{x \in S_{i}}\parallel x - \mu_{i}\parallel ^2$$
后面的公式显示了为了找到k均值聚类中的最佳原型而最小化的目标函数。该公式的直觉是我们希望找到彼此不同的组,并且每个组的每个成员都应该与每个聚类的其他成员相似。
以下示例演示了如何在R中运行k均值聚类算法。
library(ggplot2) # Prepare Data data = mtcars # We need to scale the data to have zero mean and unit variance data <- scale(data) # Determine number of clusters wss <- (nrow(data)-1)*sum(apply(data,2,var)) for (i in 2:dim(data)[2]) { wss[i] <- sum(kmeans(data, centers = i)$withinss) } # Plot the clusters plot(1:dim(data)[2], wss, type = "b", xlab = "Number of Clusters", ylab = "Within groups sum of squares")
为了找到K的一个好值,我们可以绘制不同K值的组内平方和。该指标通常随着添加更多组而减少,我们希望找到组内平方和的减少开始缓慢减少的点。在图中,该值最好由K = 6表示。
现在K的值已经确定,需要使用该值运行算法。
# K-Means Cluster Analysis fit <- kmeans(data, 5) # 5 cluster solution # get cluster means aggregate(data,by = list(fit$cluster),FUN = mean) # append cluster assignment data <- data.frame(data, fit$cluster)
广告