我们首先选择簇的数量(如K-Means所做的),并随机初始化每个簇的高斯分布参数。也可以通过快速查看数据来尝试为初始参数提供一个好的猜测。但是请注意,正如图6-33中所看到的,这不是100%必要的。给定每个簇的高斯分布,计算每个数据点属于一个特定簇的概率。一个点越靠近高斯的中心,它就越可能属于该簇。这应该是很直观的,因为对于高斯分布,我们假设大部分数据更靠近簇的中心。基于这些概率,计算一组新的高斯分布参数,使得簇内的数据点的概率最大化。我们使用数据点位置的加权和来计算这些新参数,其中权重是数据点属于该特定簇的概率。为了用可视化的方式解释它,我们可以看一下图6-33,特别是黄色的簇,以此为例。分布在第一次迭代时随即开始,我们可以看到大部分黄点都分布在右侧。当我们计算一个概率加权和时,即使中心附近有一些点,但它们大部分都在右侧。因此,分布的均值自然会接近这些点。我们也可以看到大部分点分布在“从右上到左下”。因此改变标准差来创建更适合这些点的椭圆,以便最大化概率加权和。
重复步骤直到收敛,其中分布在迭代中的变化不大。
使用GMMs有两个关键的优势。首先,GMMs比K-Means在簇协方差方面更灵活,因为标准差参数,簇可以呈现任何椭圆形状,而不是被限制为圆形。K-Means实际上是GMM的一个特殊情况,这种情况下,每个簇的协方差在所有维度都接近0。其次,因为GMMs使用概率,所以每个数据点可以有很多簇。因此,如果一个数据点在两个重叠的簇的中间,我们可以简单地通过说它百分之X属于类1,百分之Y属于类2来定义它的类,即GMMs支持混合资格。
6.7.5 凝聚层次聚类
层次聚类算法实际上分为两类:自上而下或自下而上。自下而上的算法首先将每个数据点视为一个单一的簇,然后连续地合并(或聚合)两个簇,直到所有的簇都合并成一个包含所有数据点的簇。因此,自下而上层次聚类被称为凝聚式层次聚类或HAC。这个簇的层次用树(或树状图)表示。树的根是收集所有样本的唯一簇,叶是仅仅具有一个样本的簇。在进入算法步骤前,请看图6-34的例子。
第6章 机器学习算法
189