本文主要简述聚类算法族。聚类算法与前面文章的算法不同,它们属于非监督学习。

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聚类、密度聚类、层次聚类、谱聚类的更多相关文章

  1. 聚类——密度聚类DBSCAN

    Clustering 聚类 密度聚类——DBSCAN 前面我们已经介绍了两种聚类算法:k-means和谱聚类.今天,我们来介绍一种基于密度的聚类算法——DBSCAN,它是最经典的密度聚类算法,是很多算 ...

  2. [zz]谱聚类

    了凡春秋USTC 谱聚类 http://chunqiu.blog.ustc.edu.cn/?p=505 最近忙着写文章,好久不写博客了.最近看到一个聚类方法--谱聚类,号称现代聚类方法,看到它简洁的公 ...

  3. 谱聚类(Spectral Clustering)详解

    谱聚类(Spectral Clustering)详解 谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似 ...

  4. 谱聚类(Spectral Clustring)原理

    谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也 ...

  5. 基于谱聚类的三维网格分割算法(Spectral Clustering)

    谱聚类(Spectral Clustering)是一种广泛使用的数据聚类算法,[Liu et al. 2004]基于谱聚类算法首次提出了一种三维网格分割方法.该方法首先构建一个相似矩阵用于记录网格上相 ...

  6. 机器学习六--K-means聚类算法

    机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...

  7. 100天搞定机器学习|day54 聚类系列:层次聚类原理及案例

    几张GIF理解K-均值聚类原理 k均值聚类数学推导与python实现 前文说了k均值聚类,他是基于中心的聚类方法,通过迭代将样本分到k个类中,使每个样本与其所属类的中心或均值最近. 今天我们看一下无监 ...

  8. 【机器学习】聚类算法:层次聚类、K-means聚类

    聚类算法实践(一)--层次聚类.K-means聚类 摘要: 所谓聚类,就是将相似的事物聚集在一 起,而将不相似的事物划分到不同的类别的过程,是数据分析之中十分重要的一种手段.比如古典生物学之中,人们通 ...

  9. 【Python机器学习实战】聚类算法(1)——K-Means聚类

    实战部分主要针对某一具体算法对其原理进行较为详细的介绍,然后进行简单地实现(可能对算法性能考虑欠缺),这一部分主要介绍一些常见的一些聚类算法. K-means聚类算法 0.聚类算法算法简介 聚类算法算 ...

随机推荐

  1. zabbix监控ssl证书到期时间

    监控脚本 cat ssl_check.sh #!/bin/bash # #获取ssl证书的过期时间 #menghao #获取证书的有效时间 time=$(echo | openssl s_client ...

  2. mvc路由报错

    1.添加新项目时,把就项目的dll一起拷贝过来.生成项目,编译通过,打开页面时报错:“找到多个与名为“Home”的控制器匹配的类型 ”,网上的解决方案是,加命名空间,解决,但是自己这边删掉bin中原来 ...

  3. layui table 内容为select隐藏问题

    <style> .layui-table-cell,.layui-form,.layui-table-box,.layui-table-body{ overflow: visible; } ...

  4. 安卓获取自有证书的SHA1码

    如果使用自有证书, 请使用 jdk 中自带的 keytool 工具,查看证书信息命令: keytool -list -v -keystore {your_app}.keystore 例如:你的证书为t ...

  5. 屏蔽eslint代码格式报错

    1.在文件中找到node_modules 2.node_modules文件夹下的eslint-config-standard 3.打开eslint-config-standard文件夹下的eslint ...

  6. OpenGL编程指南(第九版) Tiangles 学习笔记

    ////////////////////////////////////////////////////////////////////////////// // // Triangles.cpp / ...

  7. Python爬去有道翻译

    注:传入的类型为POST类型,所以需要使用urllib.parse.urlencode(),将字典转换成URL可用参数: 使用json.loads(),将输出的json格式,转换为字典类型 impor ...

  8. 解决exlipse下 springboot 错误:找不到或无法加载主类

    简单描述:控制台出现了下图 废话不多说,直接上解决办法: 方法一:如果你很有自信,自己的pom 没问题,并且已经加载了所有依赖的jar.ok,这是eclipse的问题,window=>prefe ...

  9. docker启动,重启,停止容器

    docker 启动已经停止的容器 docker start 容器ID或容器名 docker 停止容器 docker stop 容器ID或容器名 docker 启动一个容器 -d:后台运行 -p:端口映 ...

  10. <!特别的一天>

    <!DOCTYPE html> <html> <head> <meta charset="gb2312/"> <title&g ...