1. K-Means

1. 原理

K_Means算法的思想很简单,对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇。让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。令数据集中共n个样本,每个样本含m维特征,进行e次迭代,确定k个质心,则时间复杂度为:
聚类方法 - 图1

假设簇划分为聚类方法 - 图2,则我们的目标是最小化平方误差聚类方法 - 图3
聚类方法 - 图4
其中聚类方法 - 图5是簇聚类方法 - 图6的质心:
聚类方法 - 图7
如果我们想直接求上式的最小值并不容易,故K_Means采用启发式方法求解。求解过程如下图:
截屏2020-10-25 下午4.36.42.png

2. 初始化优化:K-Means++

K-Means初始化的质心的位置选择对最后聚类结果和运行时间都有很大影响,如果完全随机的选择,可能导致算法收敛很慢。K-Means++就是对K-Means随机初始化质心方法的优化:

  1. - 从输入的数据点集合中随机选择一个点作为第一个聚类中心![](https://cdn.nlark.com/yuque/__latex/37dc09a2b334eb9f45b15d240ba67472.svg#card=math&code=%5Cmu_1&height=16&width=17)
  2. - 对于数据集中的每一个点![](https://cdn.nlark.com/yuque/__latex/1ba8aaab47179b3d3e24b0ccea9f4e30.svg#card=math&code=x_&height=14&width=15),计算它与已有中心中最近的距离![](https://cdn.nlark.com/yuque/__latex/c12b1b43ef6e8c1528c0b6e9e29ce319.svg#card=math&code=D%28x_i%29%3Darg%20min%7C%7Cx_i-%5Cmu_r%7C%7C%5E2&height=24&width=199)
  3. - 选择一个新的数据点作为新的聚类中心,选择的原则是:![](https://cdn.nlark.com/yuque/__latex/15444eb27adfc21cf2a51f356dc5fa78.svg#card=math&code=D%28x%29&height=20&width=37)较大的点,被选取作为聚类中心的概率较大
  4. - 重复上述步骤,直到选出k个聚类中心

3. 大样本优化:Mini Batch K-Means

如果样本量非常大,此时传统聚类非常耗时,在大数据时代,这样的场景越来越多,因此Mini Batch K-Means应运而生。
Mini Batch K-Means的思想是通过无放回的随机采样得到一个训练子集,计算k个聚类中心。

2. DBSCAN

1. 原理

DBSCAN(Density-based spatial clustering of applications of noise)是一种基于密度的聚类方法,仅需要两个参数聚类方法 - 图9,能够标记出位于低密度区域的局外点(异常检测中的异常点)。

  1. - 如果一个点 p 在距离 ε 范围内有至少 minPts 个点(包括自己),则这个点被称为核心点,那些 ε 范围内的则被称为由 p 直接可达的。同时定义,没有任何点是由非核心点直接可达的。
  2. - 如果存在一条道路 p1, ..., pn ,有 p1 = ppn = q 且每个 pi+1 都是由 pi 直接可达的(道路上除了 q 以外所有点都一定是核心点),则称 q 是由 p 可达的。
  3. - 所有不由任何点可达的点都被称为局外点。

DBSCAN (1).png
上图蓝色圈中的点为局外点

2. 优缺点

  1. 1. 优点:
  2. - 相比k-means聚类,dbscan不需要预声明聚类数量
  3. - 能找出任意形状的聚类
  4. - 对异常数据不敏感
  5. 2. 缺点:
  6. - 对参数![](https://cdn.nlark.com/yuque/__latex/779c70f4e369316f17f326c3616629f9.svg#card=math&code=%28%5Cepsilon%EF%BC%8CMinPts%29&height=24&width=95)的要求较高