无监督学习:简介
    无监督学习与监督学习形成对比,因为它使用未标记的训练集而不是标记的训练集。
    换句话说,我们没有预期结果的向量 y,我们只有一个可以找到结构的特征数据集。
    聚类适用于:
    市场细分
    社交网络分析
    组织计算机集群
    天文数据分析

    K均值算法
    K-Means 算法是最流行和最广泛使用的算法,用于自动将数据分组为相干子集。
    1、随机初始化数据集中的两个点,称为聚类质心。
    2、集群分配:根据示例最接近的集群质心将所有示例分配到两个组中的一组。
    3、移动质心:计算两个聚类质心组中每一个内的所有点的平均值,然后将聚类质心点移动到这些平均值。
    4、重新运行 (2) 和 (3) 直到我们找到我们的集群。
    主要变量为:
    捕获.PNG
    算法如下图所示:
    捕获.PNG
    第一个 for 循环是“集群分配”步骤。 我们制作了一个向量 c,其中表示分配给 Part 13 聚类 - 图3的质心。
    我们可以更数学地编写集群分配步骤的操作如下:
    Part 13 聚类 - 图4
    也就是说,每个Part 13 聚类 - 图5都包含到Part 13 聚类 - 图6 的距离最小的质心的索引。
    按照惯例,我们对右侧进行平方,这使得我们试图最小化的函数急剧增加。 这主要只是一个约定。 但是一个有助于减少计算负载的约定,因为欧几里德距离需要平方根,但它被取消了。
    没有平方:
    Part 13 聚类 - 图7
    有平方:
    Part 13 聚类 - 图8
    所以平方约定有两个目的,更锐利地最小化和更少的计算。第二个 for 循环是“移动质心”步骤,我们将每个质心移动到其组的平均值。更正式地,这个循环的方程如下:
    Part 13 聚类 - 图9
    其中每个Part 13 聚类 - 图10都是分配给组Part 13 聚类 - 图11的训练示例
    如果您有一个分配了 0 个点的簇质心,您可以随机地将该质心重新初始化为一个新点。 您也可以简单地消除该集群组。经过多次迭代后,算法将收敛,新的迭代不会影响集群。关于非分离集群的注意事项:一些数据集没有真正的内部分离或自然结构。 K-means 仍然可以将您的数据均匀地分割成 K 个子集,因此在这种情况下仍然很有用。

    优化目标
    回想一下我们在算法中使用的一些参数:
    捕获.PNG
    我们的优化目标是使用上述成本函数最小化所有参数:
    Part 13 聚类 - 图13
    也就是说,我们在集合 c 中找到所有值,代表我们所有的集群,μ 代表我们所有的质心,这将最小化每个训练示例到其相应集群质心的距离的平均值。上述成本函数通常称为训练示例的失真。
    在集群分配步骤中,我们的目标是:
    Minimize J(…) with Part 13 聚类 - 图14 (holding Part 13 聚类 - 图15 fixed)
    在移动质心步骤中,我们的目标是:
    Minimize J(…) with Part 13 聚类 - 图16
    使用 k-means,成本函数有时不可能增加。 它应该总是下降。

    随机初始化
    有一种特别推荐的方法来随机初始化您的集群质心。
    1、有 K2、随机选取 K 个训练样本。
    3、设置Part 13 聚类 - 图17等于这 K 个示例。
    K-means 可能会陷入局部最优。 为了减少这种情况发生的可能性,您可以在许多不同的随机初始化上运行该算法。 在 K<10 的情况下,强烈建议运行随机初始化循环。
    捕获.PNG

    选择簇数
    选择 K 可能非常随意和模棱两可。
    肘部方法:绘制成本 J 和集群数量 K。成本函数应该随着集群数量的增加而减小,然后变平。 在成本函数开始变平的点选择 K。
    然而,通常情况下,曲线是非常平缓的,所以没有明显的肘部。
    注意:J 总是随着 K 的增加而减少。 一个例外是如果 k-means 陷入糟糕的局部最优。
    选择 K 的另一种方法是观察 k-means 在下游目的上的表现如何。 换句话说,您选择的 K 被证明对您试图通过使用这些集群实现的某些目标最有用。