分享

你不仅用了一个'假'的kmeans, 还用了一个'假'的hclust

 生信药丸 2021-07-26

    马上就是假期结束了......实际上,从高铁刚进汕头,我便想要回广州啦。有太多的原因不想回到汕头放个假,当然有更多的原因,必须回来待上几天。

    层次聚类,或者说其中的一种,R语言的hclust算法

    相比于前面说的Kmeans, hclust的算法是 直接!粗暴!分分钟可以实现,没有随机化,稳定,其实也挺快的。。。然而看数据量吧...

    逻辑有两种,一种是不断的聚合,一种是不断的分离,常见的是不断的聚合。

    1. 每一个样本作为一个Cluster,声明

    2. 计算所有Cluster之间的距离,合并距离最近的两个Cluster(注:如果要构树的话,那么这两个是最底层的两枝)

    3. 重复2. 直到聚合了所有Cluster

    4. 结束并输出

    其中值得折腾的,只有两个距离

    1) 样本点和样本点之间的距离计算:欧式距离,闵式距离,1-person等,这些比较简单,就不介绍了

    2)Cluster与Cluster之间的距离计算:常用的有

        a. 最长距离法(complete): 两个Cluster的距离 为 两个Cluster中样本点两两间距离的 最大值

        b. 最短距离法(single): 两个Cluster的距离 为 两个Cluster中样本点两两间距离的 最小值

        c. 平均距离法(average): 两个Cluster的距离 为 两个Cluster中样本点两两间距离的 平均值

        d. 中位数距离法(median)...

    其中a. b. 容易受异常值的影响....其实这个和我们用不同均值对样本进行评估的优点和弊端是一致的....所以....似乎average才是相对稳定,然而,大部分时候,比如R语言的hclust函数,

    用的是complete....

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多