马上就是假期结束了......实际上,从高铁刚进汕头,我便想要回广州啦。有太多的原因不想回到汕头放个假,当然有更多的原因,必须回来待上几天。 层次聚类,或者说其中的一种,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.... |
|