第5章 软聚类和高斯混合模型

在本章中,我们将讨论软聚类的概念,它允许我们针对定义的聚类配置,获取数据集每个样本的隶属程度。也就是说,从0到100%的范围,我们想知道xi属于聚类的程度。如果极值为0,这意味着xi完全位于聚类的域外部;如果为1(100%),则表示xi已完全分配给单个聚类。所有中间值意味着两个或更多个不同聚类的部分域。因此,与硬聚类相反,在这里,我们感兴趣的不是固定分配,而是具有相同概率分布(或概率本身)属性的向量。这种方法可以更好地控制边界样本,并帮助我们找出生成过程的适当近似值,而数据集则可在该过程被绘制。

本章将着重讨论以下主题。

  • Fuzzy c-means。
  • 高斯混合。
  • 用AIC和BIC作为性能指标。
  • 贝叶斯高斯混合(简介)。
  • 生成(半监督)高斯混合。

本章中的代码需求如下。

  • Python 3.5+(强烈推荐Anaconda发行版)。
  • 库。
    • SciPy 0.19+。
    • NumPy 1.10+。
    • scikit-learn 0.20+。
    • scikit-fuzzy 0.2。
    • pandas 0.22+。
    • Matplotlib 2.0+。
    • seaborn 0.9+。

示例代码可在本书配套的代码包中找到。

在层次聚类操作中分析的所有算法都属于硬聚类方法。这意味着始终将给定样本分配给单个聚类。软聚类则旨在将每个样本xi与一个向量相关联,该向量通常表示xi属于每个聚类的概率:

c({\bar x_i}) = (p({\bar x_i}\; \in \;{C_1}),p({\bar x_i}\; \in \;{C_2}), \cdots ,p({\bar x_i}\; \in \;{C_k}))

另外,输出可以解释为隶属向量:

同时

从形式上讲,两个解释之间没有区别,但在通常情况下,当算法没有明确地基于概率分布时,我们将采用后者。出于我们的目的,我们总是将 ...

Get Python无监督学习 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.