聚类算法及其评价

姓名:Jyx
描述:人工智能学习笔记

聚类

  1. 聚类是一种非监督学习,聚类需要将一系列样本输入到聚类算法中,学习样本的内在结构。聚类往往不单独存在,而是作为一个大的监督学习算法的一部分存在
  2. 聚类的原则。 类内散度最小,类间散度最大
  3. 聚类的用途
    3.1 减少计算量。通过对样本分类,以分类标签代替原始向量,大大减少计算量
    3.2 识别离群点。
    3.3 可视化
  4. 聚类的要素。特征选择,近邻测度,聚类准则,聚类算法,结果验证,结果判定

##近邻测度

  1. 距离测度
    d ( x , y ) = ∣ ∣ x − y ∣ ∣ p 1 p d(x,y) = || x - y ||_p^{\frac{1}{p}} d(x,y)=xypp1
  2. 余弦相似度
    d ( x , y ) = x T y ∣ x ∣   ∣ y ∣ d(x,y) = \frac{x^T y}{|x| \ |y|} d(x,y)=x yxTy
  3. 相关系数
    d ( x , y ) = c o v ( x , y ) δ x δ y d(x,y) = \frac{cov(x,y)}{\delta_x \delta_y} d(x,y)=δxδycov(x,y)
  4. 杰卡德相似系数
    d ( x , y ) = ∑ i = 1 k − 1 a i i n x + n y − ∑ i = 1 k − 1 ∑ j = 1 k − 1 a i j w h e r e   n x = ∑ i = 1 k − 1 ∑ j = 0 k − 1 a i j , n y = ∑ i = 0 k − 1 ∑ j = 1 k − 1 a i j d(x,y) = \frac{\sum_{i = 1}^{k - 1} a_{ii}}{n_x + n_y - \sum_{i = 1}^{k - 1} \sum_{j = 1}^{ k - 1}a_{ij}} \\ where\ n_x = \sum_{i = 1}^{k - 1} \sum_{j = 0}^{ k - 1}a_{ij}, n_y = \sum_{i = 0}^{k - 1} \sum_{j = 1}^{ k - 1}a_{ij} d(x,y)=nx+nyi=1k1j=1k1aiji=1k1aiiwhere nx=i=1k1j=0k1aij,ny=i=0k1j=1k1aij
    其中矩阵 { a i j } \{ a_{ij }\} {aij}称为相依表(Contingency table)
    ##聚类算法
  5. 分类
    1.1 基于距离的聚类算法
    1.2 基于密度的聚类算法
    1.3 基于连接的聚类算法
  6. 基于距离的聚类算法
    2.1 KMeans
    对于一个k类问题,KMeans 的优化目标为
    arg ⁡ min ⁡ C ∑ i = 1 k ∑ x ∈ C i ( x − μ i ) 2 , u i = 1 n C i ∑ x ∈ C i x \mathop{\arg \min}_{C} \sum_{i = 1}^k \sum_{ x \in C_i}(x - \mu_i)^2, u_i = \frac{1}{n_{C_i}}\sum_{x \in C_i}x argminCi=1kxCi(xμi)2,ui=nCi1xCix
    这是一个组合优化问题,完全的求解几乎不可能。一般的的思路都是采用贪婪算法,求解局部最优,因此KMeans一般要使用随机初值多尝试几次

    算法描述

    1. 选择随机的聚类中心 μ i \mu_i μi初始化算法
    2. 根据每个样本距离聚类中心的距离对每个样本进行分类, x ∈ C i , arg ⁡ min ⁡ i ( x − u i ) 2 x \in C_i , \mathop{\arg \min} \limits _i(x - u_i)^2 xCi,iargmin(xui)2
    3. 利用分类好的聚类结果更新新的聚类中心 u i = 1 n C i ∑ x ∈ C i x u_i = \frac{1}{n_{C_i}}\sum_{x \in C_i}x ui=nCi1xCix
    4. 重复2,3步直 u i u_i ui基本不变

2.2 层次聚类
层次聚类来源于生物学的生物分类,一级包含一级,形成一个层次聚类。层次算法并不存在一个优化目标。层次聚类有两种,一种是分裂,一种是聚合。分裂是自顶向下,聚合是自底向上
基本算法描述:

1 将每一个样本初始化一个类 C i C_i Ci
2 选取一对 C n e w = C i ∪ C j , arg ⁡ min ⁡ i , j d ( C i , C j ) C_{new} = C_i \cup C_j, \mathop{\arg\min} \limits _{i, j}d(C_i, C_j) Cnew=CiCji,jargmind(Ci,Cj)
3 删除原来的$ C_i , C_j$
4重复2,3直至只有一个类

这样就形成了一个分类树,然后根据某些知识和准则选取每一级作为最后的聚类结果
2.3 吸引力传播
2.4 DBSCAN

你可能感兴趣的:(算法,机器学习,人工智能)