聚类算法

聚类

  • 无监督学习,标记信息未知,通过对无标记训练样本的学习来揭示数据的内在性质及规律
  • 聚类将数据集中的样本划分为若干个不相交的子集(簇)
  • 潜在概念(类别)
  • 可作为单独过程,寻找分布结构,也可作为分类等其他学习任务的前驱过程
性能度量
  • 簇内相似度高,簇间相似度低
  • 一类是与某个参考模型进行比较,外部指标
    • a=|SS|,在C中属于相同簇在C*中也属于相同簇的样本对
    • b=|SD|,在C中属于相同簇在C*中不属于形同簇的样本对
    • c=|DS|,在C中不属于,C*中属于
    • d=|DD|,在C中不属于,在C*中不属于
    • Jaccard系数 J C = a a + b + c JC=\frac{a}{a+b+c} JC=a+b+ca
    • FM指数 F M I = a a + b a a + c FMI=\sqrt{\frac{a}{a+b}\frac{a}{a+c}} FMI=a+baa+ca
    • RAND指数, R I = 2 ( a + b ) m ( m − 1 ) RI=\frac{2(a+b)}{m(m-1)} RI=m(m1)2(a+b)
    • 上述度量越大越好
  • 第二类是直接考察聚类结果,内部指标
    • avg© 平均距离,
    • diam©, 直径,簇内最远距离
    • dmin(Ci,cj), Ci和Cj间最近样本距离
    • dcen(Ci,Cj),Ci和Cj中心点距离
    • DB指数,越小越好
    • D B I = 1 k ∑ i = 1 k max ⁡ j ≠ i ( a v g ( C i ) + a v g ( C j ) d c e n ( u i , u j ) ) DBI=\frac1k\sum_{i=1}^{k}\max_{j\neq i}(\frac{avg(C_i)+avg(C_j)}{d_{cen}(u_i,u_j)}) DBI=k1i=1kj̸=imax(dcen(ui,uj)avg(Ci)+avg(Cj))
    • Dunn指数,值越大越好。
    • $$DI=\min_{1\leq i\leq k}{\min_{j\neq i}(\frac{d_{min}(C_i,C_j)}{max_{1\leq l \leq k}diam(C_l)})}
距离度量

闵科夫斯基距离,有序属性

  • d i s m k ( x i , x j ) = ( ∑ u = 1 n ∣ x i u − x j u ∣ p ) 1 p dis_{mk}(x_i,x_j)=(\sum_{u=1}^{n}|x_{iu}-x_{ju}|^p)^{\frac1p} dismk(xi,xj)=(u=1nxiuxjup)p1
    • p=2 欧式距离,p=1 曼哈顿距离
      无序属性, {飞机,火车,轮船}
  • VDM距离
原型聚类

假设聚类结构能通过一组原型刻画,常用。算法先对原型进行初始化,然后对原型进行迭代更新求解,采用不同的原型、不同的求解方式,产生不同的聚类结果。

k均值算法
  • 最小化平方误差
  • E = ∑ i = 1 k ∑ x ⊆ C i ∣ ∣ x − u i ∣ ∣ 2 2 E=\sum^{k}_{i=1}\sum_{x\subseteq C_i}||x-u_i||_2^2 E=i=1kxCixui22
  • NP难问题,采用贪心策略通过迭代优化来近似求解。
  • local minimun, 高度依赖初始中心
  1. 随机选择k个样本作为初始均值向量。
  2. 计算样本与各均值的距离,根据最近的均值向量,将当前样本归入该簇
  3. 对于每个簇,重新计算向量均值
  4. 重复2,3直到均值向量不再更新。
class sklearn.cluster.KMeans(n_clusters=8, init=’k-means++, n_init=10, max_iter=300,
tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=’auto’)
  • init
    • ‘k-means++’,default,确保初始中心距离尽量远,kmeans随机选取
    • ‘random’
    • an ndarray
  • n_int
    算法运行的次数
    • 10,default
  • max_iter
    每一次运行的最大迭代次数
    • 300,default
  • tol
    收敛的容忍度
    • 1e-4,default
  • precomputer_distance
    • 提前计算距离,更快但是消耗更多内存
    • ‘auto’,n_sample*n_clusters >12 million时不计算。
    • ‘True’,'False
  • random—state
    • None
    • int ,RandomState instance
  • algorithm
    • ‘auto’,defalut, choose elkan for dense data and full for sparse data
    • ‘full’,正常的迭代算法
    • ‘elkan’ ,更有效率,使用三角不等式,不支持系数数据
mini-batch
  • 相比kmeans来减少计算复杂度,目标函数是一样的
  • 在每次迭代选择子集,结果比k-means差一点
学习向量量化 LVQ Learning Vector Quantization

学得一组n维q个原型向量,每个代表一个聚类簇

  • 假设数据样本带有类别标记,这些监督信息来辅助聚类
  1. 通过监督信息来初始化一组原型向量,给定最大迭代次数,学习率
  2. 选取样本,找出最近原型向量p_i,根据两者是否标记一致来更新原型向量
  3. 一致则向当前样本x靠拢 p 、 = p i + η ( x j − p i ) p^、=p_i+\eta(x_j-p_i) p=pi+η(xjpi),不一致则远离x, p 、 = p i − η ( x j − p i ) p^、=p_i-\eta(x_j-p_i) p=piη(xjpi)
  4. 重复2,3直到迭代次数满或者,不再更新、
  5. 对所有,根据距学习得到的q个原型向量的距离,划分簇
  • 对于3,更新的是最近的原型,可更新多个原型向量来提高收敛速度
高斯混合聚类
  • 用概率模型表示聚类,得到某个点属于某个类的概率
密度聚类

基于密度的聚类,聚类结构能通过样本分布的紧密程度确定。

DBSCAN
  • ‘领域’来刻画样本分布的紧密程度,
  • 由密度可达关系到处的最大密度相连样本集合。
class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, metric_params=None,
algorithm=’auto’, leaf_size=30, p=None, n_jobs=None)
  • eps
    • 两个样本作为邻居的最大距离 (important)
  • min_samples
    • 作为核心节点,所需的邻居节点的最小数目
  • metric
  • algorithm
    • 用于计算节点距离的方法
    • ‘auto’
    • ‘ball_tree’
    • ‘kd_tree’
    • ‘brute’
  • leaf_size
    • pass to BallTree or KDtree
    • 30,default
  • p
    • 闵可夫斯基距离中的p
层次聚类

在不同层次进行聚类,形成树形的聚类结构。

AGNES
  • 自底向上
  1. 每个样本看做初始聚类簇,
  2. 每一步找出两个相同的聚类簇进行合并,
  3. 直至达到预设的聚类簇个数
  • 单链接,使用簇间最小距离,
  • 全连接,使用簇间最大距离
  • 均链接,使用簇间平均距离
DIANA 自顶向下
tips
  • 聚类继承通过对多个聚类学习器进行集成,有效降低聚类假设与真实聚类结构不符,聚类过程中的随机性等因素带来的影响。
  • 异常检测场借助聚类或距离进行计算。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值