K-means 作为广义 EM 算法的特例
K-means as specialized case of generalized EM Algorithm
我正在使用数据集使用 EM 和 K-means 创建 2 个集群。我已经分别实现了 K-means 和 EM 算法。现在我正在尝试从我的 EM 算法实现中导出 k-means 来进行聚类。我有两个问题。
K-means 被视为广义 EM 算法的特例。但是我们需要做哪些假设才能从 EM 算法中推导出 k-means?
此外,从编码的角度来看,我们需要在 EM 算法的实现中进行哪些更改才能使其开始表现得与 k-means 算法完全一样?我假设我们需要在两个集群之间共享相同的协方差矩阵。这样假设对吗?
这就是我使用 k-means 得到的结果。
这是使用 EM 进行聚类。
K-means 和 EM 聚类非常相关,但不完全相同。对 EM 的两个更改将使其与 K-means 非常非常相似:
- EM 使用多维分布。将分布的标准差约束为在所有维度上都相同。
- 修改 EM 的输出以仅生成最有可能的集群。 EM 产生软聚类(一个点在每个聚类中的单独概率),而 K-means 产生硬聚类(单个聚类选择)。
我不知道这些“修复”如何转化为您的特定代码。
我不能 100% 确定在所有情况下,这种 EM 方法都会收敛到与 K-means 完全相同的集群。我相信这两种方法在大多数情况下会产生非常可比的结果。
我正在使用数据集使用 EM 和 K-means 创建 2 个集群。我已经分别实现了 K-means 和 EM 算法。现在我正在尝试从我的 EM 算法实现中导出 k-means 来进行聚类。我有两个问题。
K-means 被视为广义 EM 算法的特例。但是我们需要做哪些假设才能从 EM 算法中推导出 k-means?
此外,从编码的角度来看,我们需要在 EM 算法的实现中进行哪些更改才能使其开始表现得与 k-means 算法完全一样?我假设我们需要在两个集群之间共享相同的协方差矩阵。这样假设对吗?
这就是我使用 k-means 得到的结果。
这是使用 EM 进行聚类。
K-means 和 EM 聚类非常相关,但不完全相同。对 EM 的两个更改将使其与 K-means 非常非常相似:
- EM 使用多维分布。将分布的标准差约束为在所有维度上都相同。
- 修改 EM 的输出以仅生成最有可能的集群。 EM 产生软聚类(一个点在每个聚类中的单独概率),而 K-means 产生硬聚类(单个聚类选择)。
我不知道这些“修复”如何转化为您的特定代码。
我不能 100% 确定在所有情况下,这种 EM 方法都会收敛到与 K-means 完全相同的集群。我相信这两种方法在大多数情况下会产生非常可比的结果。