大数据分析笔记 (3) - 聚类(clustering)

大数据分析笔记 - 聚类

  • 监督学习和无监督学习
  • K-mean 聚类算法
    • 用例
    • 应用
    • 步骤
    • 确定k的值(簇类的个数)
    • 诊断
    • 注意事项
  • 基于密度的聚类 (Density based Clustering)
    • DBSCAN
      • 步骤
      • 特点
      • 什么情况下表现不佳?
  • 层次聚类 (Hierarchical Clustering)
    • 步骤

监督学习和无监督学习

标记数据(labelled data)与未标记数据(unlabelled data)

无监督学习(unsupervised techniques):和寻找未标记数据中的隐藏结构的问题相关。
例子:聚类(clustering), 密度估计(density estimation), 降维(dimensionality reduction)

K-mean 聚类算法

给定m个对象的集合,每个对象拥有n个可衡量的属性。每个对象都是n维空间中的一个点。
对于选定的k值 (即聚类的数量),根据对象与第k组质心的临近度(proximity)来确定k个对象簇。
簇质心为每个簇中对象的n维向量的算术平均值。

用例

通常作为分类(classification)的引导。
一旦识别出簇类,则可以将标签应用于每个簇类以进行分类。

应用

  • 图像处理
  • 医疗 (聚类患者)
  • 客户分组 (查找相似的客户)

步骤

  1. 选择k的值,并且选择k的质心初始猜测值 (initial guess for the centroids)。
  2. 计算从每个数据点(xi, yi)到每个质心的距离。将每个点分配给离其最近的质心。
  3. 计算并更新步骤2中新形成定义的每个簇类的质量中心。
  4. 重复步骤2和步骤3的操作,直到算法收敛(convergence)。
    大数据分析笔记 (3) - 聚类(clustering)_第1张图片
    计算两点的欧几里得距离(Euclidean distance):
    大数据分析笔记 (3) - 聚类(clustering)_第2张图片
    计算多个点的质心:
    大数据分析笔记 (3) - 聚类(clustering)_第3张图片

确定k的值(簇类的个数)

使用内平方和(Within Sum of Sqaure, WSS)的启发式(heuristic)算法。WSS是所有数据点与其最近质心之间距离的平方和。如果这些点相对靠近它们各自的质心,那么WSS将相对较小。因此,如果k+1聚类没有显著降低k聚类中的WSS值,那么增加一个簇意义可能不大。
大数据分析笔记 (3) - 聚类(clustering)_第4张图片

诊断

在结果生成之后,应该考虑以下问题

  • 聚类之间是否较好地相互分离?
  • 是否存在只有几个点的簇?
  • 是否有靠得很近得质心?

如果多的簇数量并没有形成簇之间更好的区分,那么更少的簇应该是更好的选择。

必须做出以下决定

  • 聚类分析应包括哪些对象属性(object attributions)?
  • 每个属性应该采用什么计量单位(unit of measure)?(例如,选择英里还是公里)
  • 是否需要缩放(rescaled)属性?
  • 一种属性可能会产生不成比例的影响。

对象属性:
在选择对象属性的时候,需要知道新对象的哪些属性在其被分配簇时是已知的。(比如当前的客户拥有满意度或购买频率属性,但是潜在客户可能没有这些信息)
尽量减少属性的数量:

  • 避免使用太多的变量。太多的属性可能会将最重要变量的影响最小化。
  • 避免使用多个类似的变量。可能会突出一类属性的重要性。
  • 识别任何高度相关的属性,然后在聚类分析中使用相关属性中的一种或者两种。(可以使用散点图矩阵)
  • 特征选择:信息增益,PCA。

度量单位(unit of measure)可能会影响聚类结果。
大数据分析笔记 (3) - 聚类(clustering)_第5张图片
重新缩放属性(rescaling attributes)会影响聚类结果。(将每个属性除以其标准差 standard deviation)
大数据分析笔记 (3) - 聚类(clustering)_第6张图片

注意事项

K-mean聚类算法对初始质心(initial centroids)的开始位置是敏感的。因此,针对一个特定的k值运行多次k-mean分析是非常重要的,以确保聚类结果具有整体上最小的WSS。
除了欧几里得距离,还可以用曼哈顿距离(Mantattan distance)来分析聚类,此时,使用中位数(median)作为质心会比使用均值作为质心更好。

K-mean聚类算法适用于可以通过具有测量意义的数值属性来描述的对象。(区间和比率属性也是适用的)
但是,k-mean并不能很好地处理分类变量(categorical variable)。
此时,k-mode算法便可以作为针对分类变量地聚类方法使用了。比如,(a, b, c, d) 到 (d, d, d, d)之间距离是3,k-mode能感知得到。
有时候将分类变量转化为数值变量会更好。比如,{hot, warm, cold} -> {1, 0, -1}

k-mean 在以下情况表现不佳

  • 当数据集包含噪声(noise)或者离群值(outliers)。
  • 当簇具有非球形形状(non-globular shapes)时。
  • 当每个簇的密度(densities)不同时。
  • 当簇的大小明显不同时。
  • 有时候会找到“空”簇 (empty cluster)。

基于密度的聚类 (Density based Clustering)

基于密度的聚类 定位 高密度区域(regions of high density)。这些区域彼此之间由低密度区域(regions of low density)分隔开。
换句话说,簇是数据中间中的密集区域,由较低对象密度的区域分割。
主要功能

  1. 能发现任意形状(arbitrary shape)的簇。
  2. 能够处理噪声(handle noise)。
  3. 需要密度参数(density parameters)作为终止条件。

DBSCAN

通过对数据集特定点的密度进行计数,方法是对该点的指定半径Eps内的点进行计数,这包括了当前点本身。
大数据分析笔记 (3) - 聚类(clustering)_第7张图片
如图所示,在点A的Eps半径范围内,包括点A本身,点的数量是7。因此,A的密度就是7了。

给定密度阈值 density threshold(MinPts)和半径 radius(Eps), 数据集中的点分为三种类型:核心点(core point),边界点(boarder point)和噪声点(noise point)。
大数据分析笔记 (3) - 聚类(clustering)_第8张图片

  • 核心点:密度大于密度阈值MinPts的点。核心点位于基于密度的聚类的内部。
  • 边界点:边界点不是核心点,但是落在核心点附近。(图中B点,B点不是核心点,但其落在A点的相邻位置)
  • 噪声点:既不是核心点,也不是边界点的点。(图中C点,自己不是核心点,同时也不是任何核心点的邻点)

步骤

  1. 将每个点标记为核心点,边界点或噪声点。
  2. 将每组Eps连接的核心点标记为一个单独的簇。
  3. 将每个边界点分配给其关联核心点的簇之一。
    大数据分析笔记 (3) - 聚类(clustering)_第9张图片

特点

  • 抗噪声和离群值(Resistent to noise and outliers)
  • 可以处理不同形状和大小的集群
  • 计算复杂度类似于K-mean

什么情况下表现不佳?

  • 变化的密度。(可以通过采样 sampling 克服)
  • 稀疏和高维的数据。(可以通过使用拓扑保留降维技术 - topology preserving dimension reduction technology 来克服)

层次聚类 (Hierarchical Clustering)

分层聚集聚类 (Hierarchical agglomerative clustering)
分层分裂聚类 (Hierarchical divisive clustering)

步骤

  1. 每个对象最初都被视为一个簇。
  2. 然后在每个步骤中将群集与最相似的簇合并。
  3. 重复此过程,直到存在一个包含了所有对象的簇。
    大数据分析笔记 (3) - 聚类(clustering)_第10张图片
    该算法计算非常昂贵,O(n2)到O(n3),因此在大数据分析中很少使用。

你可能感兴趣的:(大数据,聚类,算法,大数据)