本周学习内容:
- 继续学习高斯混合聚类、学习向量量化算法等聚类算法
- 学习降维与度量学习部分的内容
1 聚类算法
1.1学习向量量化算法(LVQ learning vectorquantization)
该算法试图找到一组原型向量来刻画聚类结构,LVQ假设数据样本带有类别标记,学习过程利用样本的这些监督信息来辅助聚类。该算法的学习流程如下:
依旧使用西瓜数据集4.0,并假设第9-21号样本的类别标记为c2,其余数据类别标记为c1。这里是要找到q=5个原型向量来对数据进行聚类划分。具体代码如下所示:
for i in range(400):
# 从样本集中随机选取一个样本
j = random.randint(0, len(midu) - 1)
dis = [np.linalg.norm(np.array([midu[j], hantanglv[j]]) - p[0]) for p in P]
# 找出最近的原型向量
minDis = dis.index(min(dis))
# 更新原型向量
if P[minDis][1] == mark[j]:
p_ = P[minDis][0] + learningRate * (np.array([midu[j], hantanglv[j]]) - P[minDis][0])
else:
p_ = P[minDis][0] - learningRate * (np.array([midu[j], hantanglv[j]]) - P[minDis][0])
P[minDis][0] = p_
部分轮迭代后的结果如图1所示:

图1 LVQ算法迭代400轮后
1.2 高斯混合聚类(GMM Gaussian Mixture Model)
从原型聚类的角度来看,高斯混合聚类时采用概率模型(高斯分布)对原型进行刻画,簇划分由原型对应后验概率确定。基本思想是用多个高斯分布函数去近似任意形状的概率分布,所以GMM就是由多个单高斯密度分布(Gaussi an)组成的,这些单高斯密度分布线性加和即为 GMM 的概率密度函数。
该算法聚类过程:1)首先确定K值(模型的个数),并随机初始化每个簇的高斯分布参数。2)计算每个数据点属于每个高斯模型的概率。3)计算相应参数使得数据点的概率最大化,使用数据点概率的加权来计算新的参数,权重即为属于该簇的概率。4)重复迭代2和3直到收敛。
依旧使用西瓜数据集4.0来进行k=3的聚类,其中通过EM算法对参数进行更新的代码如下:
# EM算法, 迭代更新 alpha
for i in range(self.iter):
gamma = computeGamma(data, miu, sigma, alpha, multiGaussian)
alpha = np.sum(gamma, axis=0) / n_samples # 纵向求和再除以样本数,即在每个聚类中,概率的平均值
# 更新 miu
for j in range(self.n_clusters):
miu[j] = np.sum(data * gamma[:, j].reshape((n_samples, 1)), axis=0) / np.sum(gamma, axis=0)[j]
sigma[j] = 0
# 更新 sigma
for k in range(n_samples):
sigma[j] += (data[k].reshape((1, n_features)) - miu[j]).T.dot(
(data[k] - miu[j]).reshape((1, n_features))) * gamma[k, j]
sigma[j] = sigma[j] / np.sum(gamma, axis=0)[j]
在迭代50轮后的聚类结果如图2所示,其中各高斯混合成分的均值向量用x来表示。
图2 高斯混合聚类50轮后的聚类结果
1.3 密度聚类(density-based clustering DBSCAN)
从样本密度的角度来考察样本之间的可连接性,并基于可连接样本不断扩展聚类簇以获得最终的聚类结果。DBSCAN
聚类与降维算法详解:LVQ、GMM、DBSCAN与层次聚类

本文深入探讨了四种聚类算法——向量量化(LVQ)、高斯混合模型(GMM)、DBSCAN和层次聚类(AGNES),并介绍了它们在不同数据集上的应用和效果。同时,提到了降维方法,如k近邻(KNN)、主成分分析(PCA)以及流形学习中的Isomap和LLE。通过对半圆形数据集的实验,展示了不同聚类算法的性能差异,其中DBSCAN在发现任意形状聚类和异常点检测方面表现出优势。
最低0.47元/天 解锁文章
12

被折叠的 条评论
为什么被折叠?



