机器学习(六)K-means聚类、密度聚类、层次聚类、谱聚类
本文主要简述聚类算法族。聚类算法与前面文章的算法不同,它们属于非监督学习。
1、K-means聚类
记k个簇中心,为\(\mu_{1}\),\(\mu_{2}\),...,\(\mu_{k}\),每个簇的样本数为\(N_{i}\)
假设每个簇中的数据都满足分布\(N(\mu_{i},\sigma)\),即方差相同,均值不同的GMM。
则每一个样本点的分布函数为:\[\phi_{i}=\dfrac{1}{\sqrt{2\pi\sigma^2}}exp(-\dfrac{({x_{i}-\mu})^2}{2\sigma^2})\]
可求出其似然函数
\[L_{\mu}=\phi_{1}\times\phi_{2}\times...\]
且可求其对数似然为(以三个点为例)
\[l_{\mu}=\dfrac{1}{2}\sum^{k}_{j=1}\sum^{i=1}_{N_{j}}(x_{I}-\mu_{j})^2\]
求驻点有:\[\mu_{j}=\dfrac{1}{N_{j}}\sum^{N}_{i=1}x_{i}\]
因此,以均方误差为目标函数的时候肯定是收敛的。用其他函数作为目标函数不一定收敛。
注:\(k\)的选择采用“手肘法”,注意不是交叉验证,它连标签都没有!
2、密度聚类
代表算法:DBSCAN
K-means对噪声敏感,密度聚类对噪声不敏感。
3、层次聚类
按层次聚类,由上至下或由下至上,优点是可以任意选择聚类数
4、谱聚类
Step1:对样本点俩俩计算相似度\(S_{ij}\),组成相似度矩阵,又称权值矩阵\[W_{n\times n}=[S_{ij}]\]
Step2:将\(W_{n\times n}\)的主对角线元素全部置为0,把每行元素的值相加,第\(i\)行的和为\(d_{i}\)。将\(d_{i}\)作为主对角线元素组成\(D_{n\times n}\)
Step3:令\[L_{n\times n}=D_{n\times n}-W_{n\times n}\],称为拉普拉斯矩
阵。这个\(L\)是半正定的,它最小的特征值为0。
Step4:求L矩阵的特征值和特征向量,将所有特征值从小大排列,取出前k个(聚类数为k),将其对应的特征向量如下排列:\[[u_{1},u{2},...,u_{k}]\]该矩阵的第一行即为第一个样本点转换后的特征,第二行为第二个样本点转换后的特征。将这些特征扔入K_means,其聚类结果即是谱聚类结果。
机器学习(六)K-means聚类、密度聚类、层次聚类、谱聚类的更多相关文章
- 聚类——密度聚类DBSCAN
Clustering 聚类 密度聚类——DBSCAN 前面我们已经介绍了两种聚类算法:k-means和谱聚类.今天,我们来介绍一种基于密度的聚类算法——DBSCAN,它是最经典的密度聚类算法,是很多算 ...
- [zz]谱聚类
了凡春秋USTC 谱聚类 http://chunqiu.blog.ustc.edu.cn/?p=505 最近忙着写文章,好久不写博客了.最近看到一个聚类方法--谱聚类,号称现代聚类方法,看到它简洁的公 ...
- 谱聚类(Spectral Clustering)详解
谱聚类(Spectral Clustering)详解 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似 ...
- 谱聚类(Spectral Clustring)原理
谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...
- 基于谱聚类的三维网格分割算法(Spectral Clustering)
谱聚类(Spectral Clustering)是一种广泛使用的数据聚类算法,[Liu et al. 2004]基于谱聚类算法首次提出了一种三维网格分割方法.该方法首先构建一个相似矩阵用于记录网格上相 ...
- 机器学习六--K-means聚类算法
机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...
- 100天搞定机器学习|day54 聚类系列:层次聚类原理及案例
几张GIF理解K-均值聚类原理 k均值聚类数学推导与python实现 前文说了k均值聚类,他是基于中心的聚类方法,通过迭代将样本分到k个类中,使每个样本与其所属类的中心或均值最近. 今天我们看一下无监 ...
- 【机器学习】聚类算法:层次聚类、K-means聚类
聚类算法实践(一)--层次聚类.K-means聚类 摘要: 所谓聚类,就是将相似的事物聚集在一 起,而将不相似的事物划分到不同的类别的过程,是数据分析之中十分重要的一种手段.比如古典生物学之中,人们通 ...
- 【Python机器学习实战】聚类算法(1)——K-Means聚类
实战部分主要针对某一具体算法对其原理进行较为详细的介绍,然后进行简单地实现(可能对算法性能考虑欠缺),这一部分主要介绍一些常见的一些聚类算法. K-means聚类算法 0.聚类算法算法简介 聚类算法算 ...
随机推荐
- IntelliJ Idea 第一次使用
概括 程序员每次电脑重新安装或者新的电脑上进行开发时都会安装一些开发软件,这时候基本都是去官网下载,然后破解(中国程序员啊哈哈)进行快乐使用,为了让自己方便小编也写一个,不用去别人那里找来找去 安装I ...
- redis缓存雪崩、缓存穿透、数据库和redis数据一致性
一.缓存雪崩 回顾一下我们为什么要用缓存(Redis):减轻数据库压力或尽可能少的访问数据库. 在前面学习我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设 ...
- Timeline扩展功能实践指南
转载于http://forum.china.unity3d.com/forum.php?mod=viewthread&tid=32842,介绍了timeline的轨道扩展 Timeline功能 ...
- nyoj 633 幂
幂 nyoj 633 应用数学 幂 时间限制:3000 ms | 内存限制:65535 KB 描述 在学习循环的时候,我们都练习过利用循环计算a的k次方.现在给定整数k和一个整数m,请你求出对 ...
- Asp.Net Core配置Swagger
本文主要参考:Using Swagger with ASP.net Core 1.创建WebApi项目 本文使用ASP.Net Core Web API项目模板演示Swagger到使用,首先创建Web ...
- PHP 两数组循环组合
- MySQL ERROR 1054(42S22)
修改用户的密码,网上搜到的命令为如下 执行后报错 ERROR 1054(42S22) Unknown column 'password' in ‘field list’ 错误的原因是 5.7版本下的m ...
- listagg within group
oracle 多行合并成一行: listagg within group 可以和递归方法一起使用查询路径: 例如: SELECT LISTAGG(t.FOLDER_NAME, '/') WITHIN ...
- 设计模式 — 简单工厂模式(staticFactory)
这篇博文介绍简单工厂模式,设计模式并不是固定的二十三种,不同的书介绍的可能有出入,这篇介绍的简单工厂模式在有些书上就忽略不介绍了.设计模式是一套被反复使用的.多数人知晓的.经过分类编目的.代码设计经验 ...
- Python-数据类型之元组
一:元组 元组是一个只读列表,可以使用count,index等,但是元组里的元素不能更改,也不能增加,删除 元祖的一级元素不可更改,当一级元素有可变数据类型时,如列表,列表中的元素可变 tup = ( ...