做网站需要收付款功能吗,江西移动网站,友情链接交换平台有哪些,厦门网站建设 孚珀科技系列文章目录及链接
上篇#xff1a;机器学习#xff08;五#xff09; -- 监督学习#xff08;7#xff09; --SVM2 下篇#xff1a;机器学习#xff08;五#xff09; -- 无监督学习#xff08;1#xff09; --聚类2 前言
tips#xff1a;标题前有“***”的内容…系列文章目录及链接
上篇机器学习五 -- 监督学习7 --SVM2 下篇机器学习五 -- 无监督学习1 --聚类2 前言
tips标题前有“***”的内容为补充内容是给好奇心重的宝宝看的可自行跳过。文章内容被“文章内容”删除线标记的也可以自行跳过。“”一般需要特别注意或者容易出错的地方。
本系列文章是作者边学习边总结的内容有不对的地方还请多多指正同时本系列文章会不断完善每篇文章不定时会有修改。
由于作者时间不算富裕有些内容的《算法实现》部分暂未完善以后有时间再来补充。见谅
文中为方便理解会将接口在用到的时候才导入实际中应在文件开始统一导入。 一、通俗理解及定义
1、什么叫聚类What
聚类clustering数据没有标签将相似的样本自动分为一类子集簇cluster。 有监督VS无监督 2、聚类的目的Why
通过迭代的方式将数据划分为K个不同的簇并使得每个数据点与其所属簇的质心聚类中心、中心点、均值点之间的距离之和最小。
聚类方法 基于划分距离K-means 基于层次BIRCH (Balanced Iterative Reducing and Clustering using Hierarchies) 基于密度DBSCAN (Density-Based Spatial Clustering of Applications with Noise) 基于网格Statistical Information Grid(STING)算法 基于模型统计和神经网络方法 3、怎么做How
K-means 首先要知道将数据划分成多少类别
随机设置K个特征空间内的点作为初始的聚类中心对于其他每个点计算到K个中心的距离未知的点选择最近的一个聚类中心点作为标记类别接着对着标记的聚类中心之后重新计算出每个聚类的新中心点平均值如果计算得出的新中心点与原中心点一样那么结束否则重新进行第二步过程 聚类的结果是簇评价方式是簇(类)内距离和簇(类)间距离簇内距离越小越好簇间距离越大越好
二、原理理解及公式
1、基本概念
聚类任务根据某种相似性把一组数据划分成若干个簇的过程。
问题
相似性怎么定义-------二、1.3、相似性度量可能存在的划分-------二、1.4、第二类Stirling数若干个簇有多少个簇------其中之一二、2.3.1、“肘”方法 (Elbow method) — K值确定
1.1、簇
簇分组后每个组称为一个簇每个簇的样本对应一个潜在的类别。样本没有类别标签因此是聚类一种典型的无监督学习方法。
簇的条件相同簇的样本之间距离较近不同簇的样本之间距离较远。 明显分离的簇每个点到同簇中任意点的距离比到不同簇中所有点的距离更近。 基于中心的簇每个点到其簇中心的距离比到任何其他簇中心的距离更近。 基于邻近的簇每个点到该簇中至少一个点的距离比到不同簇中任意点的距离更近。 基于密度的簇簇是被低密度区域分开的高密度区域。 概念簇簇中的点具有由整个点集导出的某种一般共同性质。在两个环相交处的点属于两个环 1.2、质心
机器学习中“质心”所有数据的均值u通常被称为这个簇的“质心”x求均值y求均值得到的这个点 1.3、相似性度量
1.3.1、距离
距离度量具体可看机器学习五 -- 监督学习1 -- k近邻
欧式距离公式 曼哈顿距离公式 1.3.2、余弦相似性
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量余弦相似度更加注重两个向量在方向上的差异而非距离或长度上。 1.3.3、Jaccord相似性
Jaccard系数主要用于计算符号度量或布尔值度量的个体间的相似度因为个体的特征属性都是由符号度量或者布尔值标识因此无法衡量差异具 体值的大小只能获得“是否相同”这个结果所以Jaccard系数只关心个体间共同具有的特征是否一致这个问题。 eg 1.4、第二类Stirling数
聚类问题可能的划分
假设我们要把 n 4个不同的数据点放入不相同 的 k 2 个无差别的盒子里有几种方案 集合的一个划分表示将n 个不同的元素拆分成 k 个集合的方案数, 记为S(n,k)。 随着集合元素和子集个数的增加方案数(,)呈爆炸式增长
2、K-meas
2.1、理解
K-means 是我们最常用的基于距离的聚类算法其认为两个目标的距离越近相似度越大。
目标最小化类内间距
K-means算法针对聚类所得簇划分最小化平方误差平方误差刻画了簇内样本围绕均值向量的紧密程度平方误差值越小则簇内样本相似度越高。
2.2、步骤
随机设置K个特征空间内的点作为初始的聚类中心对于其他每个点计算到K个中心的距离未知的点选择最近的一个聚类中心点作为标记类别接着对着标记的聚类中心之后重新计算出每个聚类的新中心点平均值如果计算得出的新中心点与原中心点一样那么结束否则重新进行第二步过程 2.3、公式
对于给定数据x以及簇的个数k c_i第 i 个簇
m_i第 i 个簇的中心 SSE随着聚类迭代,其值会越来越小,直到最后趋于稳定
如果质心的初始值选择不好,SSE只会达到一个不怎么好的局部最优解。
2.3.1、“肘”方法 (Elbow method) — K值确定 对于n个点的数据集迭代计算 k from 1 to n每次聚类完成后计算每个点到其所属的簇中心的距离的平方和平方和是会逐渐变小的直到kn时平方和为0因为每个点都是它所在的簇中心本身。在这个平方和变化过程中会出现一个拐点也即“肘”点下降率突然变缓时即认为是最佳的k值。
在决定什么时候停止训练时肘形判据同样有效数据通常有更多的噪音在增加分类无法带来更多回报时我们停止增加类别。
2.3.2、轮廓系数法Silhouette Coefficient K-means性能指标评估--轮廓系数【机器学习四 -- 模型评估4】
公式S的范围在[-1,1]越大越好 a样本 i 到同一簇内其他点不相似程度的平均值
b样本 i 到其他簇的平均不相似程度的最小值 对于每一个样本 1、计算蓝1到自身类别的点距离的平均值a 2、计算蓝1分别到红色类别绿色类别所有的点的距离求出平均值b1, b2取其中最小的值当做b ba: 1完美 ab:-1最差
如果s小于0说明a 的平均距离大于最近的其他簇。聚类效果不好 如果s越大说明a的平均距离小于最近的其他簇。聚类效果好 轮廓系数的值是介于 [-1,1] 越趋近于1代表内聚度和分离度都相对较优
超过0.1说明聚类效果很好
轮廓系数API
sklearn.metrics.silhouette_score导入
from sklearn.metrics import silhouette_score语法
silhouette_score(X, labels)X特征值labels被聚类标记的目标值
2.4、eg
step1随机设置3个初始聚类中心 step2每一个点根据到每个聚类中心的距离分类 step3重新计算每个新的聚类中心 step4重复2、3步如下3个点被重新分配直到聚类中心不在变化 2.5、K-means
2.5.1、理解
K-means算法得到的聚类结果严重依赖与初始簇中心的选择如果初始簇中心选择不好就会陷入局部最优解因此提出了K-means算法它改进了K-means算法初始中心点的选取。
核心思想是再选择一个新的聚类中心时距离已有聚类中心越远的点被选取作为聚类中心的概率越大。
2.5.2、步骤
从数据集中随机选择第一个质心。对于每个数据点x计算其到已选择的所有质心的最短距离D(x)。选择一个新的数据点作为下一个质心选择的概率与D(x)成正比即概率P(x) D(x) / ΣD(x)。重复步骤2和3直到选择了K个质心。
这种选择策略确保了质心之间的分散性从而提高了聚类效果。
2.5.3、eg 3、K-Medoidsk-中心
3.1、理解 k-中心和k-均值很像不同的是形心的更新选择k-均值是通过求得均值进行更新形心的而k-中心是随机选择k个对象作为初始的k个簇的代表点反复用非代表点来代替代表点直到找到误差平方和最小的那个点来作为数据中心点。这样划分方法是基于最小化所有对象与其参照点之间的相异度之和的原则来执行的,这是 k-medoids 方法的基础。
3.2、步骤
随机选择 k 个数据点作为初始聚类中心将每个剩余的数据点分配在临近的聚类中心的类中当中去每个类中计算每个数据点为聚类中心时的代价函数的值选取最小值成为新的聚类中心重复2、3过程直到所有的聚类中心不再发生变化或达到设定的最大迭代次数
4、层次聚类
4.1、理解
把每一个单个的观测都视为一个类而后计算各类之间的距离选取最相近的两个类将它们合并为一个类。新的这些类再继续计算距离合并到最近的两个类。如此往复最后就只有一个类。然后用树状图记录这个过程这个树状图就包含了我们所需要的信息。 4.2、方法 凝聚的层次聚类AGNES算法 (AGglomerative NESting) 分裂的层次聚类DIANA算法 (DIvisive ANALysis) 层次聚类优化算法CF-Tree(Cluster Feature Tree)、BIRCH算法 (平衡迭代削减聚类法)、CURE算法(使用代表点的聚类法) 4.2.1、AGNES
采用自底向上的策略。
凝聚型层次聚类有多种变体这些变体主要基于不同的距离度量方法和链结标准来定义。以下是一些常见的变体AGNES算法中簇间距离
最近邻链结(SL聚类) 两个聚簇中最近的两个样本之间的距离(single-linkage聚类法) 最终得到模型容易形成链式结构。
最远邻链结(CL聚类) 两个聚簇中最远的两个样本的距离(complete-linkage聚类法) 如果存在异常值那么构建可能不太稳定。
平均链结(AL聚类) 两个聚簇中样本间两两距离的平均值(average-linkage聚类法) 两个聚簇中样本间两两距离的中值(median-linkage聚类法)
Ward链结WL聚类 两个聚簇中样本合并后产生的方差增加值被用作这两个聚类之间的距离。 4.3、eg
一组数据D{a,b,c,d,e}它们之间的距离矩阵为
step1每个样本都是一个类 step2将最近的两个类合并为一个新的类并重新计算类之间的距离然后更新距离矩阵 step3重复选择距离最近的两个类合并为新的类 step4不断重复上述两个步骤最终只剩下一个类的时候停止 5、密度聚类
5.1、理解
密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本他们之间的紧密相连的也就是说在该类别任意样本周围不远处一定有同类别的样本存在。
通过将紧密相连的样本划为一类这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别则我们就得到了最终的所有聚类类别结果。
核心思想是在数据空间中找到分散开的密集区域简单来说就是画圈其中要定义两个参数一个是圈的最大半径一个是一个圈里面最少应该容纳多少个点。
5.2、方法 DBSCAN(Density-Based Spatial Clustering of Applications with Noise具有噪声的基于密度的聚类方法) 5.3、eg
step1设定参数密度阈值N3也就是每个圈里必须满足3个点才能称为一个簇首先我们随机选取一些候选的核心点
这些灰色点为核心点的候选 step2以这些候选的核心点为圆心按照设定的半径画圆圈 step3如果圈内满足三个点那就是一个簇簇内点候选的核心点就是核心点这些红色的点就是核心点而灰色的点因为其圈内点数不满足阈值所以不是核心点 step4合并重合的簇 6、网格聚类
6.1、理解
将数据空间划分为网格单元将数据对象映射到网格单元中并计算每个单元的密度。根据预设阈值来判断每个网格单元是不是高密度单元由邻近的稠密单元组成“类”。 6.2、方法 CLIQUE Clustering in QUEst) STING Statistical Information Grid 统计信息网格) MAFIA Merging of adaptive interval approach to spatial datamining 空间数据挖掘的自适应区间方法的合并) Wave Cluster 小波聚类 O-CLUSTER orthogonal partitioning CLUSTERing 正交分区聚类 Axis Shifted Grid ClusteringAlgorithm轴移动网格聚类算法 Adaptive Mesh Refinement 自适应网格细化 6.3、步骤
将数据空间划分为有限数量的单元格;随机选择一个单元格“”不应该事先遍历计算“”的密度如果“”的密度大于阈值的密度 将单元格“c”标记为新的聚类cluster计算“c”所有邻居的密度如果相邻单元的密度大于阈值密度将其添加到集群中并且重复步骤4.2和4.3直到没有相邻单元的密度大于阈值密度重复步骤234直到遍历所有单元格
6.4、eg
step1选择一定宽度的格子来分割数据空间 step2设置阈值为2将相邻稠密的格子合并形成一个“类” 7、优缺点
7.1、K-means优缺点
7.1.1、优点
属于无监督学习无须准备训练集原理简单实现起来较为容易结果可解释性较好
7.1.2、缺点
需手动设置k值。 在算法开始预测之前我们需要手动设置k值即估计数据大概的类别个数不合理的k值会使结果缺乏解释性可能收敛到局部最小值, 在大规模数据集上收敛较慢对于异常点、离群点敏感非凸形状无法聚类 7.2、K-means优点
减少局部最优解的风险更大概率选择相距较远的初始质心提高聚类质量。理论保证K-means能够给出接近最优解的界。效率虽然初始化复杂度有所增加但整体算法依然保持高效尤其是对于大规模数据集。
7.3、K-Medoids优缺点
7.3.1、优势
噪声鲁棒性比较好。当存在噪音和孤立点时比K-means效果好 7.3.2、缺点
运行速度较慢计算质心的步骤时间复杂度是O(n^2)K-medoids 对于小数据集工作得很好, 但不能很好地用于大数据集
7.4、层次聚类优缺点
7.4.1、优点
距离和规则的相似度容易定义限制少不需要预先制定聚类数可以发现类的层次关系
7.4.2、缺点
计算复杂度太高异常值也能产生很大影响算法很可能聚类成链状
7.5、密度聚类优缺点
7.5.1、优点
不需要指定簇的个数可以对任意形状的稠密数据集进行聚类。相对的K-Means之类的聚类算法一般只适用于凸数据集擅长找到离群点检测任务只有两个参数和MinPts聚类结果没有偏倚。K-Means之类的聚类算法初始值对聚类结果有很大影响。
7.5.2、缺点
高维数据有些困难Sklearn中效率很慢数据削减策略如果样本集的密度不均匀、聚类间距差相差很大时聚类质量较差用DBSCAN聚类一般不适合调参相对于传统的K-Means之类的聚类算法稍复杂主要需要对距离阈值邻域样本数阈值MinPts联合调参不同的参数组合对最后的聚类效果有较大影响。
7.6、网格聚类优缺点
7.6.1、优点
网格聚类算法相对简单易于实现和理解网格聚类算法可以有效地处理大规模数据因为它可以通过网格结构将数据划分为多个小区域从而减少计算量网格聚类算法可以自适应地调整簇的数量和大小从而更好地适应不同的数据分布
7.6.2、缺点
网格聚类算法对于数据的形状和密度比较敏感如果数据分布比较复杂或者存在噪声可能会导致聚类效果不佳网格聚类算法需要手动设置一些参数如网格大小、邻域半径等这些参数的选择可能会影响聚类效果网格聚类算法可能会产生重叠的簇这些簇的边界可能比较模糊难以解释 旧梦可以重温且看机器学习五 -- 监督学习7 --SVM2 欲知后事如何且看机器学习五 -- 无监督学习1 --聚类2