1 Star 0 Fork 11

木子王大可/聚类算法

forked from 张亚飞/聚类算法 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
聚类总结.txt 4.09 KB
一键复制 编辑 原始数据 按行查看 历史
张亚飞 提交于 2019-04-12 21:36 . first
聚类概念:
无监督学习:无标签
聚类:相似的东西分到一组
难点:如何评估(没有目标值比较),如何调参(没有标准答案)
K-means算法:
K值:要得到簇的个数,需要指定
质心:均值,即向量各维取平均即可
距离的度量:常用欧几里得距离和余弦相似度(先标准化)
优化目标:min(sum1,k:(sum(dis(ci,x)^2)) 每个样本点到簇中心点的距离之和最短
工作流程:1.随机初始化K个点
2.算样本中各个点到这K个点的距离,与距离最近者归为一类,共K类
3.找出这K类中心点(质心:各维平均值)的位置,
4.重复第二步,直到计算得出的新中心点与原中心点的位置一样,结束
优点:简单,快速,适合常规数据集
劣势:K值难确定,复杂度与样本呈线性关系,很难发现任意形状的簇
k-means迭代可视化:https://www.naftaliharris.com/blog/visualizing-k-means-clustering/
dbscan可视化:https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/
dbscan(Density-Based Spatial Clustering of Applications with Noise)算法:
核心对象:若某个点的密度达到算法设定的阈值则其为核心点*即r领域内点的数量不小于minPts)
领域的距离阈值:设定的半径r
直接密度可达:若某个点p在点q的r领域内,且q是核心点则p-q直接密度可达
密度可达:若有一个点的序列q0,q1,...qk,对任意qi-qi-1是直接密度可达的,则称q0到qk密度可达,这实际上是直接密度可达的‘传播'.
密度相连:若从某核心点P出发,点q和点k都是密度可达的,则称点q和点k是密度相连的
边界点:属于某一个类的非核心点,不能发展下线了
噪声点(离群点):不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的
工作流程:参数D:输入数据集
参数r:指定半径
MinPts:密度阈值
1.标记所有对象为unvisited
2.随机选择一个unvisted对象p
3.标记p为visited
4.如果p的r邻域至少有MinPts个对象,执行第五步,否则执行第6步
5.创建一个新簇C,并把p添加到C;令N为p的r邻域中的对象集合;遍历N中每个点p,如果点p是unvisited,标记p为visited;如果p的r邻域至少有
MinPts个对象,把这些对象添加到N;如果p还不是任何簇的成员,把p添加到C
6.标记p为噪声
7.重复执行步骤2,直到没有标记为unvisited对象
参数选择:半径r:可以根据K距离设定;找突变点
K距离:给定数据集P={p(i);i=0,1,..n},计算点p(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离
MinPts:k-距离中k的值,一般取的小一些,多次尝试
优势:不需要指定簇的个数
可以发现任意形状的簇
擅长找到离群点(检测任务)
两个参数就够了
劣势:高维数据有些困难(可以做降维)
参数难以选择(参数对结果的影响比较大)
sklearn中效率很慢(数据削减策略)
注:若找离群点epsilon和minPoints可以小一些
模型评估方法:轮廓系数
s(i) = (bi-ai) / max(ai,bi)
计算样本i到同簇其他样本的平均距离ai。ai 越小,说明样本i越应该被聚类到该簇。将ai 称为样本i的簇内不相似度。
计算样本i到其他某簇Cj 的所有样本的平均距离bij,称为样本i与簇Cj 的不相似度。定义为样本i的簇间不相似度:bi =min{bi1, bi2, ..., bik}
si接近1,则说明样本i聚类合理
si接近-1,则说明样本i更应该分类到另外的簇
若si 近似为0,则说明样本i在两个簇的边界上。
特征增强:BIRCH,DBSCAN,K-MEANS,MEAN-SHIFT
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/muziwangdake/clustering_algorithm.git
git@gitee.com:muziwangdake/clustering_algorithm.git
muziwangdake
clustering_algorithm
聚类算法
master

搜索帮助