发布网友 发布时间:2022-09-08 14:44
共1个回答
热心网友 时间:2024-11-19 01:21
尽管我个人非常不喜欢人们被划分圈子,因为这样就有了歧视、偏见、排挤和矛盾,但“物以类聚,人以群分”确实是一种客观的现实——这其中就蕴含着聚类分析的思想。
前面所提到的机器学习算法主要都是 分类 和 回归 ,这两类的应用场景都很清晰,就是对分类型变量或者数值型变量的预测。 聚类分析 是一种根据样本之间的距离或者说是相似性(亲疏性),把越相似、差异越小的样本聚成一类(簇),最后形成多个簇,使同一个簇内部的样本相似度高,不同簇之间差异性高。
有人不理解 分类 和 聚类 的差别,其实这个很简单:分类是一个已知具体有几种情况的变量,预测它到底是哪种情况;聚类则是尽量把类似的样本聚在一起,不同的样本分开。举个例子,一个人你判断他是男是女这是分类,让男人站一排女人站一排这是聚类。
聚类分析算法很多,比较经典的有 k-means 和 层次聚类法 。
k-means的k就是最终聚集的簇数,这个要你事先自己指定。k-means在常见的机器学习算法中算是相当简单的,基本过程如下:
k-means的聚类过程演示如下:
k-means聚类分析的原理虽然简单,但缺点也比较明显:
值得一提的是,计算距离的方式有很多种,不一定非得是笛卡尔距离;计算距离前要归一化。
尽管k-means的原理很简单,然而层次聚类法的原理更简单。它的基本过程如下:
层次聚类不指定具体的簇数,而只关注簇之间的远近,最终会形成一个树形图。
通过这张树形图,无论想划分成几个簇都可以很快地划出。
以下以癌细胞细据为例,演示K-means和层次聚类法的过程。
可见选择不同的距离指标,最终的聚类效果也不同。其中最长距离和类平均距离用得比较多,因为产生的谱系图较为均衡。
图中一条红线将簇划分成4类,很容易看出哪些样本各属于哪一簇。
以上是层次聚类法的结果,但如果用k-means聚类的话,结果很可能就不一样了。