无监督学习:简介
无监督学习与监督学习形成对比,因为它使用未标记的训练集而不是标记的训练集。
换句话说,我们没有预期结果的向量 y,我们只有一个可以找到结构的特征数据集。
聚类适用于:
市场细分
社交网络分析
组织计算机集群
天文数据分析
K均值算法
K-Means 算法是最流行和最广泛使用的算法,用于自动将数据分组为相干子集。
1、随机初始化数据集中的两个点,称为聚类质心。
2、集群分配:根据示例最接近的集群质心将所有示例分配到两个组中的一组。
3、移动质心:计算两个聚类质心组中每一个内的所有点的平均值,然后将聚类质心点移动到这些平均值。
4、重新运行 (2) 和 (3) 直到我们找到我们的集群。
主要变量为:
算法如下图所示:
第一个 for 循环是“集群分配”步骤。 我们制作了一个向量 c,其中表示分配给 的质心。
我们可以更数学地编写集群分配步骤的操作如下:
也就是说,每个都包含到
的距离最小的质心的索引。
按照惯例,我们对右侧进行平方,这使得我们试图最小化的函数急剧增加。 这主要只是一个约定。 但是一个有助于减少计算负载的约定,因为欧几里德距离需要平方根,但它被取消了。
没有平方:
有平方:
所以平方约定有两个目的,更锐利地最小化和更少的计算。第二个 for 循环是“移动质心”步骤,我们将每个质心移动到其组的平均值。更正式地,这个循环的方程如下:
其中每个都是分配给组
的训练示例
如果您有一个分配了 0 个点的簇质心,您可以随机地将该质心重新初始化为一个新点。 您也可以简单地消除该集群组。经过多次迭代后,算法将收敛,新的迭代不会影响集群。关于非分离集群的注意事项:一些数据集没有真正的内部分离或自然结构。 K-means 仍然可以将您的数据均匀地分割成 K 个子集,因此在这种情况下仍然很有用。
优化目标
回想一下我们在算法中使用的一些参数:
我们的优化目标是使用上述成本函数最小化所有参数:
也就是说,我们在集合 c 中找到所有值,代表我们所有的集群,μ 代表我们所有的质心,这将最小化每个训练示例到其相应集群质心的距离的平均值。上述成本函数通常称为训练示例的失真。
在集群分配步骤中,我们的目标是:
Minimize J(…) with (holding
fixed)
在移动质心步骤中,我们的目标是:
Minimize J(…) with
使用 k-means,成本函数有时不可能增加。 它应该总是下降。
随机初始化
有一种特别推荐的方法来随机初始化您的集群质心。
1、有 K
3、设置等于这 K 个示例。
K-means 可能会陷入局部最优。 为了减少这种情况发生的可能性,您可以在许多不同的随机初始化上运行该算法。 在 K<10 的情况下,强烈建议运行随机初始化循环。
选择簇数
选择 K 可能非常随意和模棱两可。
肘部方法:绘制成本 J 和集群数量 K。成本函数应该随着集群数量的增加而减小,然后变平。 在成本函数开始变平的点选择 K。
然而,通常情况下,曲线是非常平缓的,所以没有明显的肘部。
注意:J 总是随着 K 的增加而减少。 一个例外是如果 k-means 陷入糟糕的局部最优。
选择 K 的另一种方法是观察 k-means 在下游目的上的表现如何。 换句话说,您选择的 K 被证明对您试图通过使用这些集群实现的某些目标最有用。