聚类
- 无监督学习,标记信息未知,通过对无标记训练样本的学习来揭示数据的内在性质及规律
- 聚类将数据集中的样本划分为若干个不相交的子集(簇)
- 潜在概念(类别)
- 可作为单独过程,寻找分布结构,也可作为分类等其他学习任务的前驱过程
性能度量
- 簇内相似度高,簇间相似度低
- 一类是与某个参考模型进行比较,外部指标
- a=|SS|,在C中属于相同簇在C*中也属于相同簇的样本对
- b=|SD|,在C中属于相同簇在C*中不属于形同簇的样本对
- c=|DS|,在C中不属于,C*中属于
- d=|DD|,在C中不属于,在C*中不属于
- Jaccard系数
- FM指数
- RAND指数,
- 上述度量越大越好
- 第二类是直接考察聚类结果,内部指标
- dmin(Ci,cj), Ci和Cj间最近样本距离
- dcen(Ci,Cj),Ci和Cj中心点距离
- DB指数,越小越好
- 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)})}
距离度量
闵科夫斯基距离,有序属性
-
- p=2 欧式距离,p=1 曼哈顿距离
无序属性, {飞机,火车,轮船}
- p=2 欧式距离,p=1 曼哈顿距离
- VDM距离
原型聚类
假设聚类结构能通过一组原型刻画,常用。算法先对原型进行初始化,然后对原型进行迭代更新求解,采用不同的原型、不同的求解方式,产生不同的聚类结果。
k均值算法
- 最小化平方误差
- NP难问题,采用贪心策略通过迭代优化来近似求解。
- local minimun, 高度依赖初始中心
- 随机选择k个样本作为初始均值向量。
- 计算样本与各均值的距离,根据最近的均值向量,将当前样本归入该簇
- 对于每个簇,重新计算向量均值
- 重复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个原型向量,每个代表一个聚类簇
- 假设数据样本带有类别标记,这些监督信息来辅助聚类
- 通过监督信息来初始化一组原型向量,给定最大迭代次数,学习率
- 选取样本,找出最近原型向量p_i,根据两者是否标记一致来更新原型向量
- 一致则向当前样本x靠拢,不一致则远离x,
- 重复2,3直到迭代次数满或者,不再更新、
- 对所有,根据距学习得到的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
- 自底向上
- 每个样本看做初始聚类簇,
- 每一步找出两个相同的聚类簇进行合并,
- 直至达到预设的聚类簇个数
- 单链接,使用簇间最小距离,
- 全连接,使用簇间最大距离
- 均链接,使用簇间平均距离
DIANA 自顶向下
tips
- 聚类继承通过对多个聚类学习器进行集成,有效降低聚类假设与真实聚类结构不符,聚类过程中的随机性等因素带来的影响。
- 异常检测场借助聚类或距离进行计算。
来源:51CTO
作者:ossorry
链接:https://blog.csdn.net/qq_32172061/article/details/100895920