标签:directly ima 计算 异常 邻居 思想 场景 line 并且
聚类就是对大量未知标注的数据集,按照数据内部存在的数据特征将数据集划分为多个不同的类别,使类别内的数据比较相似,类别之间的数据相似度比较小;属于无监督学习。
聚类算法的重点是计算样本项之间的相似度,有时候也称为样本间的距离
\[ dist(X,Y)=\quad\sqrt[p]{\sum_{i=1}^{n}{|x_i-y_i|^p}} \]
\[ 其中X=(x_1,x_2,...,x_n),Y=(y_1,y_2,...,y_n) \]
当p是1的时候为哈曼顿距离(Manhattan)/城市距离:
当p为2的时候为欧式距离(Euclidean):
当p为无穷大的时候是切比雪夫距离(Chebyshew):
有数学性质可得,当p为无穷大时,有如下:
\[ dist(X,Y)=\quad\sqrt[p]{\sum_{i=1}^{n}{|x_i-y_i|^p}} \]\[ \leq\quad\sqrt[p]{n\times max(|x_i-y_i|^p)}=max(|x_i-y_i|)\times\quad\sqrt[p]{n} \]
\[ ≈max(|x_i-y_i|) \]
标准化欧氏距离是针对欧氏距离的缺点而作的一种改进,即将数据的各维分量都“标准化”到均值、方差相等,即均值为0方差为1 。
\[
现有两个n维向量:a(x_{11}, x_{12}, ...,x_{1n}),b(x_{21}, x_{22}, ...,x_{2n})
\]
\[ 使各维数据满足标志正态分布:x_i^{′}=\frac{x_i-\overline{x_i}}{s_i},i表示维度 \]
\[ 欧式距离计算:dist_{12}=\sqrt{\sum_{i=1}^{n}{(\frac{x_{1i}-x_{2i}}{s_i})^2}} \]
通过计算两个向量的夹角余弦值来评估他们的相似度。
有两个n维向量如下:
\[
a(x_{11}, x_{12}, ...,x_{1n}),b(x_{21}, x_{22}, ...,x_{2n})
\]
\[ cos(θ)=\frac{\sum_{k=1}^{n}{x_{1k}x_{2k}}}{\sqrt{\sum_{k=1}^{n}{x_{1k}^2}}\times\sqrt{\sum_{k=1}^{n}{x_{2k}^2}}}=\frac{a^T\cdot b}{|a||b|} \]
KL距离,也叫做相对熵。它衡量的是相同事件空间里的两个概率分布的差异情况,计算公式如下:
\[
D(P||Q)=\sum_x{P(x)log \frac{P(x)}{Q(x)}}
\]
参考:KL距离
杰卡德相似系数:用于比较有限样本集之间的相似性与差异性,Jaccard系数值越大,样本相似度越高,计算公式如下:
\[
J(A,B)=\frac{|A∩B|}{|A∪B|}
\]
\[ dist(A,B)=1-J(A,B)=\frac{|A∪B|-|A∩B|}{|A∪B|} \]
Pearson相关系数是用来衡量两个数据集合是否在一条线上面,它用来衡量定距变量间的线性关系;
计算公式如下:
\[
ρ_{XY}=\frac{Cov(X,Y)}{\sqrt{D(X)} \sqrt{D(Y)}}=\frac{E[(X-E(X))(Y-E(Y))]}{\sqrt{D(X)} \sqrt{D(Y)}}
\]
\[ =\frac{\sum_i^n{(X_i-μ_X)(Y_i-μ_Y)}}{\sqrt{\sum_i^n{(X_i-μ_X)^2}}\times\sqrt{\sum_i^n{(Y_i-μ_Y)^2}}} \]
\[ dist(X,Y) = 1-ρ_{XY} \]
基本思想:
k-means作为聚类的最广泛,最基础的算法,大致流程如下:
假设有输入样本:
\[
T=X_1,X_2,...,X_m
\]
\[ K个簇中心:a_1, a_2, ..., a_k \]
\[ 每个簇样本数量:N_1, N_2,...,N_k \]
- 使用MSE作为目标函数时,如下:
\[ J(a_1, a_2, ..., a_k)=\frac{1}{2}\sum_{j=1}^{K}{\sum_{i=1}^{N_j}{(\vec{x_i}-\vec{a_j})^2}} \]
- 要获取最优解,也就是使得目标函数要尽可能的小,对J求偏导,可得簇中心点a 的更新公式为:
\[ \frac{?J}{?a_j}=\frac{1}{2}\frac{?\sum_{i=1}^{N_j}{(\vec{x_i}-\vec{a_j})^2}}{?a_j} \]
\[ =-\sum_{i=1}^{N_j}{(\vec{x_i}-\vec{a_j})} \]
\[ 令上式为0,得\vec{a_j}=\frac{1}{N_j}\sum_{i=1}^{N_j}{\vec{x_i}} \]
终止条件:迭代次数、MSE、簇中心点的变化率
K-means在迭代过程中使用所有点的均值作为新的中心点,若簇中存在异常值,将导致均值出现偏差
可通过K-Mediods聚类(K中值聚类)解决
K-means存在初值敏感问题,选择不同的初始值可能会导致最终划分的簇不同
二分K-Means算法是一种弱化初始质心的一种算法,一定程度上解决了K-Means算法对初始簇心比较敏感的问题。
从队列中选择划分聚簇的规则一般有以下两种方式:
\[ SSE=\sum_{i=1}^{n}{w_i(\vec{x_i}-\vec{a_{x_{ui}}})} \]
也是为了解决K-means算法对初始簇心敏感问题,K-means++在选择初始的K个簇心时,并不是和K-means一样随机选择,而是采用以下步骤进行选择:
缺点:
k-means++ 最主要的缺点在于其内在的顺序执行特性,得到 k 个聚类中心必须遍历数据集 k 次,并且当前聚类中心的计算依赖于前面得到的所有聚类中心,这使得算法无法并行扩展,极大地限制了算法在大规模数据集上的应用。
解决了K-means++算法的缺点,其主要思路如下:
实践证明,一般5此重复采样就可以保证一个比较好的聚簇中心点
Canopy算法为一种相对“粗”的聚类算法,执行速度快,但进度较低。
给定样本列表\(L=x_1,x_2,...,x_m\),和先验值\(r_1,r_2(r_1>r_2)\);
从列表L中选择一节点P,计算P到所有簇中心的距离,并选择出最小距离\(D(P, a_j)\);
若此时还不存在簇中心,则该P点为一个新的簇
若距离D小于\(r_1\),表示该节点属于该聚簇,添加到该聚簇列表中;
若距离D小于\(r_2\),表示该节点不仅仅属于该聚簇,还表示和当前聚簇中心非常近,所以将该聚的中心点设置为该簇中所有样本的中心点,并将P从列表L中删除;
如距离D大于\(r_1\),那么该节点P形成一个新的聚簇;
一直迭代到列表L中的元素数据不再有变化/元素个数为0的时候,结束循环操作。
Canopy算法最终得到的结果,聚簇之间是可能存在重叠的,但是不存在某个对象不属于任何聚簇的情况
由于K-means存在初始聚簇中心敏感问题,因此常使用Canopy+K-means算法混合形式进行模型构建
此方法的优点如下:
该算法是K-means的一种变种,采用了mini-batch的方式,即每次训练时使用的数据集是从样本集中随机抽取出来的子集,此方式可以减少计算的时间与收敛时间,而最终的效果只是略差于标准的K-means算法。
一个簇中只包含一个类别的样本,则满足均一性;可认为是正确率(每个聚簇中正确分类的样本占据该聚簇总样本数的比例);
\[
p=\frac{1}{K}\sum_{k=1}^{K}{\frac{N(C_k==K_k)}{N(K_k)}}
\]
同类别样本被归类到相同簇总,满足完整性;每个聚簇中正确分类的样本数占该类型的总样本数比例和
\[
r=\frac{1}{K}\sum_{k=1}^{K}{\frac{N(C_k==K_k)}{N(C_k)}}
\]
均一性和完整性的加权平均
\[
v_\beta=\frac{(1+\beta^2)\cdot pr}{\beta^2\cdot p+r}
\]
计算样本\(X_i\)到同簇其他样本的平均距离,令其为\(a_i\),该值越小,表示该样本越应该被聚类到该簇中;簇\(C_k\)中的所有样本的\(a_i\)均值被称为簇\(C_k\)的簇内不相似度。
计算样本\(X_i\)到其他簇样本的平均距离,记为\(b_ik\),去除最小值:
\[
b_i=min(b_{i1}, b_{i2}, ..., b_{iK})
\]
当\(b_i\)越大,表示样本\(X_i\)越不属于其他簇。
\[ s(i) = \frac{b_i-a_i}{max(a_i,b_i)} \]
\[ =\begin{cases} 1-\frac{a_i}{b_i},a_i<b_i\\ 0, a_i=b_i\\ \frac{a_i}{b_i}-1,a_i>b_i\end{cases} \]
可得当\(s(i)\)的值越接近1表示样本i聚类越合理;越接近-1,表示样本\(X_i\)应该被分类到其他的簇中;近似为0,说明\(X_i\)在边界上;
所有样本的\(s(i)\)的均值为聚类结果的轮廓系数
其他的衡量指标:
- 调整兰德系数(ARI) ,不常见,略
- 调整互信息(AMI) ,不常见,略
层次聚类对于给定的数据集进行层次分解,直到满足某种条件为止,传统层次聚类主要分为两大类算法:
AGNES,agglomerative NESting,凝聚的层次聚类;采用自底向上的策略;
agglomerative:凝聚
nesting:嵌套
在AGNES算法中,在合并簇时,依靠的是某些准则来计算簇间的距离,有如下几种方式:
DIANA,DIvisive ANALysis,分裂的层次聚类,采用自顶向下的策略;
divisive:分裂
analysis:分析
和二分K-Means算法中的划分依据相同,可参考上方相应章节。
简单,容易理解;
合并点/分裂点选择不容易;
合并/分类的操作不能进行撤销;
大数据集不太适合:执行效率较低,其时间复杂度为:\(O(t \times n^w)\)
brich:平衡迭代消减聚类法,聚类特征使用3元祖表示一个簇的相关信息,通过构建满足分支因子和类直径限制的聚类特征树来求聚类;
特点:
树的构建是动态过程,可随时根据数据对模型进行更新
Clustering Using Representatives,使用代表点的聚类法,该算法先把每个数据点看成一个簇,然后合并距离最近的簇直到簇的个数满足要求;这似乎和AGNES的算法相同,当然存在区别:
AGNES:使用所有点/中心点+距离代表一个簇;
CURE:从簇中选择固定的数目的,分布较好的最能代表该簇的点来作为此类簇的代表,并将这些代表点乘上收缩因子,使其更加靠近簇中心;
稍作了解:)
密度聚类思想:只要样本点的密度大于某个阈值,则将该样本添加到最近的簇中。
特点:
DBSCAN,Density-Based Spatial Clustering of Applications with Noise,一个比较有代表性的基于密度的聚类算法,相比于基于划分的聚类方法和层次聚类方法,DBSCAN算法将簇定义为密度相连的点的最大集合,能够将足够高密度的区域划分为簇,并且在具有噪声的空间数据上能够发现任意形状的簇。
核心思想:
? 用一个点的ε领域内的邻居点数衡量该点所在空间的密度,该算法可以找出形状不规则的簇,且不需要事先指定好簇的数量。
\[ N_ε(x)=\{y∈X:dist(x,y)\leq ε \},X样本集 \]
\[ p(x)=|N_ε(x)| \]
\[ 若p(x) \geq M,则称x为X的核心点; \]
\[ 记由X中所有核心点构成的集合为X_c;记X_{nc}=X-X_c表示由X中所有非核心点构成的集合 \]
\[ x∈X_{nc};?y∈X;y∈N_ε(x)∩X_c \]
噪声点(noise point):集合中除了边界点和核心点之外的点都为噪声点,所以的噪声点组成的集合为\(X_{noi}\),即,噪声点对应稀疏区域的点;
\[
X_{noi}=X-(X_c∪X_{bd})
\]
直接密度可达(directly density-reachable):给定一个对象集合X,如果y是在x的ε领域内,且x为核心对象,那么可以说对象y从对象x出发时直接密度可达的;
\[ x,y∈X;x∈X_c,y∈N_ε(x) \]
MDCA(Maximum Density Clustering Application)算法基于密度的思想引入划分聚类中,使用密度而不是初始点作为考察簇归属情况的依据,能够自动确定簇数量并发现任意形状的簇;另外MDCA一般不保留噪声,因此也避免了阈值选择不当情况下造成的对象丢弃情况。
基本思路:寻找最高密度的对象和它所在的稠密区域;MDCA算法在原理上来讲,和密度的定义没有关系,采用任意一种密度定义公式均可,一般情况下采用DBSCAN算法中的密度定义方式。
\[ x_{max}=\{x|x∈X;?y∈X,density(x)\geq density(y)\} \]
\[ S_{x_{max}}=\{x_1,x_2,...,x_n | dist(x_{max},x_1) \leq dist(x_{max},x_2)\leq ... \leq dist(x_{max},x_n) \} \]
密度阈值\(density_0\):当节点的密度值大于密度阈值的时候,认为该节点属于一个比较固定的簇,在第一次构建基本簇的时候,就将这些节点添加到对应簇中,如果小于这个值的时候,暂时认为该节点为噪声节点。
簇间距离:对于两个簇\(C_1\)和\(C_2\)之间的距离,采用两个簇中最近节点之间的距离作为簇间距离:
\[
dist(C_1,C_2)=min(dist(p,q));p∈C_1,q∈C_2
\]
聚簇距离阈值\(dist_0\):当两个簇的簇间距离小于给定阈值的时候,这两个簇的结果数据会进行合并操作;
M值:初始簇中最多数据样本的个数
挖坑,等有需求了再来好好理解一下:)
00_KMeans聚类应用;
01_案例一:K-Means算法聚类;
02_案例二:K-Means算法和Mini Batch K-Means算法比较;
03_案例三:K-Means算法和Mini Batch K-Means算法效果评估;
04_案例四:层次聚类(AGNES)算法采用不同距离计算策略导致的数据合并不同形式;
05_案例五:层次聚类(BIRCH)算法参数比较;
06_案例六:密度聚类(DBSCAN)算法案例;
07_案例七:谱聚类(SC)算法案例;
未运行,未理解
08_综合案例一:不同聚类算法的比较;
09_综合案例二:基于K-Means算法进行图片压缩;
标签:directly ima 计算 异常 邻居 思想 场景 line 并且
原文地址:https://www.cnblogs.com/zhuchengchao/p/11781352.html