聚类分析
-
数据聚类及离群点检测:什么是聚类分析:聚类的功能 聚类的分类:基于划分的方法(k-means) 基于层次的方法(agens,dina) 基于密度的方法(dbscan) 基于网格的方法
- 聚类:就是将数据分个簇,使得在同一个簇内对象之间具有较高的相似度,而不同簇之间的对象差别较大
- 无监督学习
- 聚类分析的目的是:寻找数据中潜在的自然分组结构
- 聚类的分类:
- 基于划分方法
- 给定一个有n个对象的数据集,划分聚类技术将构造数据k个划分,每一个划分就代表一个簇,k ≤ \leq ≤n.
- 基本思路:对于给定的k,算法首先给出一个初始的划分方法,以后通过反复迭代的方法改变划分,使得没一次改进之后的划分方案都较前一次更好
- 经典的算法有:k-means(k-均值)、k-medoids(k-中心点)
- 基于层次的方法
- 层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止
- 凝聚的层次聚类:是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,知道某个终结条件被满足,agnes算法
- 分裂的层次聚类:采用自顶向下的策略,它首先将所有对象置于一个簇中然后逐渐细分为越来越小的簇,直到达到了某个终止条件,diana算法
- 基于密度的方法
- 密度聚类的指导思想:只要一个区域中的点的密度大于某个阈值,就把它加到与之相近的聚类中去
- 算法的优点:能克服基于距离的算法只能发现”类圆形“的聚类的缺点,可发现任意形状的聚类,且对噪声数据不敏感,dbscan算法
- 基于网络的方法
- 将对象空间量化为有限数目的单元,形成一个网络结构,所有聚类都在这个网格结构中上进行
- 基于划分方法
-
k-means算法 a.初始中心点 簇分配 更改中心值
-
任意选取k个点作为类中心点(簇的平均值)【一般是数据集中随机抽取】
-
将每个点分配到最近的类中心点,这样就形成了k个类,然后重新计算每个类的中心点【即更新簇的平均值】
- 可用欧氏距离计算,用每个维度的平均值重新计算每个类的中心点
-
重复第二步,直至类不发生变化,【或者可设置最大迭代次数,这样及时类中心点发生变化,但是达到最大迭代次数就会结束】
-
-
kmeans算法优点:简单,快速 缺点:对k值敏感,对初始中心敏感 无法发生非高斯簇,对离群点敏感。
- 优点:
- 经典算法,简单、快速
- 对处理大数据集,该算法是相对可伸缩和高效率的
- 缺点:
- k值敏感,要事先主观给出
- 初值敏感
- 不适合非球形状或者大小差别很大的簇
- 对于孤立点和噪声敏感
- 优点:
-
dbscan算法:基本思想:密度相连
-
dbscan流程:(了解)
- 从数据库中抽取一个未处理的过的点
- 如果抽出的点是核心点,找出从该点密度可达的对象形成一个簇
- 如果抽出的点是边缘点,重复第1、2步
- 当所有点都被处理结束
-
dbscan优点:可以发现任意形状的簇,可以检测噪声无需设置k的个数 ,缺点:很难设置参数。
- 缺点:
- 对参数eps和minspt非常敏感,但是这两个参数选取主要依靠主管判断
- 如果数据库比较大的时候要进行大量的i/o开销
- 缺点:
-
离群点检测:什么是离群点。
-
离群点是一个数据对象,它显著不同于其它数据对象,好像它是被不同机制产生的一样
-
-
离群点的分类:全局离群点,局部离群点,集体离群点。
- 全局离群点:跟别的点一点关系都没有
- 局部离群点:对全局来说不是离群点,但是对某个簇说是离群点
- 集体离群点:某一个集体和其他不同
-
检测方法:基于统计的方法 基于距离的方法 基于偏差的方法 基于密度的方法(lof算法)。
-
基于统计学的孤立点检测
-
基于距离的孤立点的检测
-
基于偏离的孤立点检测
-
基于密度判断
-
发表评论