7.k-means,k-mean++,ISODATA

k-means,k-mean++,ISODATA

一、k-means

    步骤:

    1)k-means算法在开始的时候就首先固定K个类别,并且随机选出对应的K个点,作为K个类。

    2)然后对剩余所有的点进行分类,再对每个类中所有的点对应维度相加取平均值求质心,把该求得到的质心作为新的k个类别中心。

    3)再对所有点进行分类,循环执行上述操作,直到每个类中所有点所属的类别不再发生变化(或者质心不再发生变化),则停止,算法结束。

    具体的算法如下:

7.k-means,k-mean++,ISODATA_第1张图片

    优点:容易实现

    缺点:K需要提前确定好,难估计;可能收敛到局部最小值;数据量太大的话,计算量太大,收敛的速度会很慢。

二、k-means++

7.k-means,k-mean++,ISODATA_第2张图片

    k-means++对比k-means,在一开始指定K个聚类中心的时候有所改进,如图中Step2所示,首先随便指定一个点为聚类中心,然后计算所有点与所有聚类中心的距离,选定最近的距离为D(x)。图中意思也就是选取所有点中D(x)取值最大的点,作为新的聚类中心,直到指定K个聚类中心为止。初始好K个聚类中心后,其余操作和K-mean一样。

三、ISODATA(迭代自组织数据分析算法Iterative Self-organizing Data Analysis Techniques Algorithm)

7.k-means,k-mean++,ISODATA_第3张图片 7.k-means,k-mean++,ISODATA_第4张图片 7.k-means,k-mean++,ISODATA_第5张图片

    ISODATA算法,通过分裂和合并操作进行调整聚类个数K,因此需要预先指定大量的参数,如:预期的聚类中心数目K0、每个类所要求的最少样本数目Nmin、最大方差Sigma(用方差来表示数据之间的离散程度)、两个类别对应聚类中心之间所允许最小距离dmin。也正是因为需要太多的参数,这些参数很难指定一个合理的值,因此ISODATA并没有K-means++受欢迎。但是该算法的好处是可以动态的调整聚类中心的数目,如果一个样本分散程度太大(通过方差得到)并且样本数量太多的话,就对其进行分裂操作。如果两个类别靠的太近(通过聚类中心的距离判定)则对其进行合并操作。

四、聚类算法有“软聚类”算法和“硬聚类”算法,其中软聚类可以理解为每个样本有一定的概率被分到某一个类中。而“硬聚类”算法指某个样本100%的属于某一个类。其中k-means,k-mean++,ISODATA都为“硬聚类”。

五、参考

    https://www.cnblogs.com/yixuan-xu/p/6272208.html,并且该链接中有具体的代码实现(matlab)

你可能感兴趣的:(传统的机器学习算法)