机器学习理论与实践:聚类与关联规则挖掘
1. 聚类算法
1.1 基于分布的聚类
基于分布的聚类方法是一种迭代方法,通过优化数据集中各簇的分布,将数据集划分为不同的簇。以高斯分布(即正态分布)为例,该方法的步骤如下:
1. 随机选择高斯参数,并将其拟合到一组数据点上。
2. 迭代优化分布参数,使其尽可能拟合更多的数据点。
3. 当收敛到局部最小值时,将更接近该分布的数据点分配到相应的簇中。
虽然这种算法会创建复杂的模型,但它能够捕捉属性之间的相关性和依赖性。不过,该方法通常存在过拟合问题。以下是使用房屋价值数据进行聚类的示例代码:
library(EMCluster, quietly =TRUE)
ret <-init.EM(Data_House_Worth[,2:3], nclass =3)
ret
ret.new <-assign.class(Data_House_Worth[,2:3], ret, return.all =FALSE)
#This has assigned a class to each case
str(ret.new)
# Plot results
plotem(ret,Data_House_Worth[,2:3])
通过绘制散点图可以发现,该算法对低价值和高价值房屋的聚类效果较好,但对中等价值房屋的聚类效果不佳,且与层次聚类(hclust)或K-means聚类相比,不同簇之间的数据点重叠更多。
1.2 基于密度的聚类
基于密度的空间聚类应用与噪声(DBSCA