Hierarchical clustering
业务分析中经常遇到的一个挑战是如何对不同的数据进行分组。这些数据可以是用户,用户的使用行为,用户的态度,产品的价格,等等。常用的一种分组方法是 hierarchical clustering。
hierarchical clustering的基本思想是:距离较近的数据应该被分为一组,并保证每个组内的数据足够相似,而组和组之间的数据足够不同。
任意挑选两个数据,计算这两个数据之间的距离,以这个距离作为baseline,然后计算其中一个数据和第三个数据之间的距离,如果距离大于baseline,则说明1、2两个数据之间距离更近,应该被分为一组;如果小于baseline,则说明1、3两个数据之间距离更近,应该被分为一组。
例子:我们先生成一组数据:
> set.seed(1234)
> par(mar = c(0,0,0,0))
> x <- rnorm(12, mean = rep(1:3, each = 4), sd = 0.2)
> y <- rnorm(12, mean = rep(c(1,2,1), each = 4), sd = 0.2)
> plot(x,y,col = "blue", pch = 19, cex = 2)
> text(x+0.05, y+0.05, labels = as.character(1:12))
> dataframe <- data.frame(x=x, y=y)
采用dist 命令计算这些数据之间的距离
> distxy <- dist(dataframe)
> hClustering <- hclust(distxy)
> plot(hClustering)
结果如下图
dendrogram并不能告诉分析人员现有的数据有多少cluster,所以,需要分析人员能够learn your business in and out! 然后做出判断。