关于聚类与曲线相似度评价指标

聚类通常是一种非监督学习方法,对大量的未标注数据集按照数据内在的相似性划分为若干个类别。比如对客户进行价值分析,根据不同客户群体制定不同的营销策略,需要准确的将客户分成"重点客户"、"潜在客户"、"一般客户",就会用到聚类的算法。下面介绍3种常用聚类算法和1种判断曲线相似度的算法。此外还有层次聚类,密度最大值聚类等。

PS:算法只是整个数据挖掘过程中的很小一部分,而根据先验知识去选择指标,建立模型,数据预处理才是平时工作中耗时的部分

K-means++

简单介绍

K-means++是对K-means算法的升级,在初值选择时更佳合理。由于K-means聚类对初始质心的选择非常敏感,因此选择恰当的质心对算法的优劣很关键。K-means++算法在选择初始质心时,选择彼此距离尽可能远的K个点

算法过程

1、选择初值与簇的个数:

通常情况下,簇的个数是根据先验知识来选择的。

初始质心选择彼此距离尽可能远的K个点:首先随机选择一个点作为第一个初始类簇中心点(也可以根据图像自己指定),记作A;然后选择距离A点最远的那个点作为第二个初始类簇中心点,记作B;然后再选择距离A,B的最近距离最大的点作为第三个初始类簇的中心点,记为C,以此类推,直至选出K个初始类簇中心点。

解释一下C点的选择,"距离A,B的最近距离最大的点":假设已经有了A,B两个点,用d(3,A)表示3号点到A点的距离,假设:

d(3,A)=5,d(3,B)=6,那么3号点距离A,B的最近距离是5;

d(4,A)=10,d(4,B)=20,那么4号点距离A,B的最近距离是10;

d(5,A)=2,d(5,B)=3,那么4号点距离A,B的最近距离是2;

在5,10,2中选择最大的距离是10,那么C点就是4号节点,C点是离A,B都很远的那个点。

2、k-means算法过程

a.选取k个簇的质心c1,c2...ck

b.对于每个样本xi,分别计算d(xi, ci),将其标记为距离簇最近的类别

c.如果当前结果与上次分类结果相同,那么跳出循环。终止条件也可以换位其他条件,比如迭代次数,MSE,簇中心变化率

d.将每个簇中心更新为新分类后所有样本的均值

e.循环b,c,d过程。

适用范围

适用于类似圆形的聚类。

适用:

关于聚类与曲线相似度评价指标_第1张图片

不适用:

关于聚类与曲线相似度评价指标_第2张图片

DBSCAN

简单介绍

dbscan是基于密度的聚类,密度聚类算法通常可以把紧密相连,不断接触延伸的数据汇聚到一起。可以不指定K值。

算法过程

1、先给出若干定义

对象的ε邻域:样本在半径ε的区域。

核心对象:给定数目m,如果一个样本的ε邻域内至少包含m个样本,则称此样本为核心对象。

直接密度可达:如果p在q的ε邻域内,并且q是一个核心对象,那么就说p从对象q出发是密度可达的。

密度可达:如果存在一个对象链p1p2...pn,p1 = q,pn = p,对于1≤i≤n,p[i+1]是p[i]关于ε和m直接密度可达,那么p是从对象q出发关于ε和m密度可达的。

密度相连:如果集合中存在一个对象o,p和q是从o出发关于ε和m密度可达,那么p和q是关于ε和m密度相连。

噪声:不包含在任何簇中的样本,称为噪声。注:如果m值选的过小,那么包含过少对象的簇也可以被认为是噪声。

2、dbscan算法过程:

a.人工给定ε邻域距离和数值m,如果一个点p的ε邻域内包含多余m个对象,则创建一个p为核心对象的新簇。

b.寻找并合并核心对象直接密度可达的对象。

c.没有新点更新时,算法结束

适用范围

可以发现任何形状的聚类


谱聚类

简单介绍

谱聚类是求拉普拉斯矩阵的特征向量后,对特征向量的特征值进行聚类。对数据分布的适应性更强

算法过程

1、先给出若干定义

关于聚类与曲线相似度评价指标_第3张图片
关于聚类与曲线相似度评价指标_第4张图片
关于聚类与曲线相似度评价指标_第5张图片

拉普拉斯矩阵:L = D - W

2、谱聚类算法过程

a、计算相似度矩阵W和度矩阵D

b、计算拉普拉斯矩阵L = D - W

c、计算L的特征值和特征向量Lu = λu,因为L是n*n的对称矩阵,所以L有n个特征值和特征向量。

d、对特征值λ从小到大排序,取前K个特征值的特征向量u1,u2...uk,组成特征向量矩阵U(n行k列)。

e、1号样本的特征认为是U矩阵的第一行u11,u12...u1k

      n号样本的特征认为是U矩阵的第一行un1,un2...unk

f、有了样本,样本也选好了特征,使用k-means将n个样本做聚类,得到K个簇。

g、这个聚类的最终结果就是谱聚类的结果。

适用范围

适用于各种距离,处理稀疏数据会比其他算法更有效

弗雷歇距离

度量点之间的距离有很多,这里介绍一种度量曲线相似度的方法,Frechet distance。

网上常见的描述方式是

Fréchet distance就是狗绳距离:主人走路径A,狗走路径B,各自走完这两条路径过程中所需要的最短狗绳长度。

下面更直白的表述一下

两条曲线L1,L2。a表示L1上的点,b表示L2上的点d(a,b)表示两点间的距离

当a在0号点时,计算d(0,1),d(0,2)...d(0,n)各个距离,记为集合s0,D0 = max(s0)

当a在1号点时,计算d(1,1),d(1,2)...d(1,n)各个距离,记为集合s1,D1 = max(s1)

以此类推得到D2,D3...Dn

frechet_distance = min(D0,D1,...,Dn)

弗雷歇距离的参考文献

https://zhuanlan.zhihu.com/p/2015996

题外话:是否能够根据曲线相似度去判断两支股票的k线趋势是否相同,从而去挑选趋势相同的股票呢?

你可能感兴趣的:(关于聚类与曲线相似度评价指标)