机器学习-聚类算法详解

news/2024/5/20 7:28:35 标签: 算法, 聚类, 机器学习

K-maens & DBSCAN
与分类、回归任务不同,聚类任务事先并不知道任何样本标签,通过数据之间的内在关系把样本划分为若干类别,使得同类别之间的相似度高,不同类别之间的样本相似度低。
K-means
基本思想
K-means算法的基本思想是,通过迭代寻找K个簇(Clusterd)的一种划分方案,使得聚类结果对应的损失函数最小。
其中,损失函数可以定义为各个样本距离所属簇中心点的误差平方和:
J ( c , μ ) = ∑ i = 1 M ∣ ∣ x i − μ c i ∣ ∣ 2 J(c,\mu) = \sum_{i=1}^M|| x_i -\mu_{c_i} || ^2 J(c,μ)=i=1M∣∣xiμci2
其中Xi代表第i个样本,Ci是Xi所属的簇,U代表簇对应的中心点,M是样本的总数
具体步骤
K-means的核心目标是将数据集划分为K个簇,并给出的每个簇的中心点。具体步骤分为四步:

  • 数据预处理。主要将数据标准化、异常点过滤
  • 随机选取K个中心点
    μ 1 ( 0 ) , μ 2 ( 0 ) , . . . , μ k ( 0 ) \mu_1^{(0)},\mu_2^{(0)},...,\mu_k^{(0)} μ1(0),μ2(0),...,μk(0)
  • 定义损失函数
    J ( c , μ ) = ∑ i = 1 M ∣ ∣ x i − μ c i ∣ ∣ 2 J(c,\mu) = \sum_{i=1}^M|| x_i -\mu_{c_i} || ^2 J(c,μ)=i=1M∣∣xiμci2
  • 令t=0,1,2。。。为迭代步数,重复以下步骤直到损失函数收敛:
    • 对于每一个样本xi,将其分配到距离最近的中心
      c i t < − a r g m i n k ∣ ∣ x i − μ k t ∣ ∣ 2 c_i^t <- argmin_k|| x_i - \mu_k^t||^2 cit<argmink∣∣xiμkt2
    • 对于每一个类中心k,重新计算该类的中心
      μ k t + 1 < − a r g m i n μ ∑ i : c i t = k b ∣ ∣ x i − μ ∣ ∣ 2 \mu_k^{t+1} <- argmin_{\mu} \sum_{i:c^t_i=k}^b|| x_i - \mu||^2 μkt+1<argminμi:cit=kb∣∣xiμ2
      DBSCAN
  1. 寻找核心点形成临时聚类簇。
    扫描全部样本点,如果某个样本点R半径范围内点数目>=MinPoints,则将其纳入核心点列表,并将其密度直达的点形成对应的临时聚类簇。
  2. 合并临时聚类簇得到聚类簇。
    对于每一个临时聚类簇,检查其中的点是否为核心点,如果是,将该点对应的临时聚类簇和当前临时聚类簇合并,得到新的临时聚类簇。
    重复此操作,直到当前临时聚类簇中的每一个点要么不在核心点列表,要么其密度直达的点都已经在该临时聚类簇,该临时聚类簇升级成为聚类簇。
    继续对剩余的临时聚类簇进行相同的合并操作,直到全部临时聚类簇被处理。
    聚类算法的各自缺点:
    K-means 问题:
  • 第一个就是对簇的数量的选择,我们希望指定一个簇数K,以使每个点和其最近的簇的距离之和最小。但是在实际情况中,我们很难找到一个合适的K值,因为我们不知道应该将数据分为几类。
  • Kmeans 算法会把所有的数据点都进行分类,但是很多情况下,会有一些离群点,这些点应该被剔除的,但是 Kmeans 算法还是会把它们归为某一类。
  • k均值聚类假设对每个簇来说,所有的方向都同等重要。这也就意味着k均值聚类主要适用于球形分布的数据,对于其他分布的数据分类可能不好。
    DBSCAN缺点:
  • 如果样本集的密度不均匀、聚类间距差相差很大时,聚类质量较差,这时用DBSCAN聚类一般不适合。
  • 如果样本集较大时,聚类收敛时间较长,此时可以对搜索最近邻时建立的KD树或者球树进行规模限制来改进。
  • 调参相对于传统的K-Means之类的聚类算法稍复杂,主要需要对距离阈值ϵϵ,邻域样本数阈值MinPoints联合调参,不同的参数组合对最后的聚类效果有较大影响。
    聚类算法的优点:
    K-means:
  • 高效可伸缩,计算复杂度接近于线性(N是数据量,K是聚类总数,t是迭代轮数)。
  • 收敛速度快,原理相对通俗易懂,可解释性强。
    BDSCAN:
  • 可以对任意形状的稠密数据集进行聚类,相对的,K-Means之类的聚类算法一般只适用于凸数据集。
  • 可以在聚类的同时发现异常点,对数据集中的异常点不敏感。
  • 聚类结果没有偏倚,相对的,K-Means之类的聚类算法初始值对聚类结果有很大影响

http://www.niftyadmin.cn/n/5311443.html

相关文章

css学习之路:sass学习基础篇

SCSS 一、动态的样式语言 让CSS有变量的概念css有很多的缺点 语法不够强大&#xff0c;没有变量和合理的样式复用机制&#xff0c;导致难以维护&#xff0c;我们就可以使用动态样式语言&#xff0c;赋予CSS新的特性。常见的动态样式语言 scss/sass&#xff08;scss兼容sass&am…

腾讯云免费服务器申请1个月攻略,亲测可行教程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云服务器网txyfwq.com分享2024年最新腾讯云免费…

uniapp使用tcp和udp的区别和例子

在Node.js中&#xff0c;主要有三种socket&#xff1a;TCP&#xff0c;UDP和Unix域套接字。以下分别介绍这TCP/UDP的使用方法和示例&#xff1a; TCP socket TCP socket提供了可靠的、面向连接的通信流&#xff0c;适用于需要可靠传输的应用&#xff0c;例如Web浏览器的HTTP请…

FineBI实战项目一(4):指标分析之每日订单总额/总笔数

1 明确数据分析目标 统计每天的订单总金额及订单总笔数 2 创建用于保存数据分析结果的表 use finebi_shop_bi;create table app_order_total(id int primary key auto_increment,dt date,total_money double,total_cnt int ); 3 编写SQL语句进行数据分析 selectsubstring(c…

vue3 修饰符大全(近万字长文)

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、事件修饰符&#xff08;Event Modifiers&#xff09;1、.stop&#xff08;阻止事件冒泡&#xff09;2、.prevent&#xff08;阻止事件的默认行为&#xff09;3、.capture&#xff08;使用事件捕获模式…

前端-基础 常用标签-超链接标签( 锚点链接 )

锚点链接 &#xff1a; 点击链接&#xff0c;可以快速定位到 页面中的某个位置 如果不好理解&#xff0c;讲一个例子&#xff0c;您就马上明白了 >>> 这个是 刘德华的百度百科 &#xff0c;可以看到&#xff0c;页面里面有很多内容&#xff0c;那就得有个目录了 …

C 语言文件处理全攻略:创建、写入、追加操作解析

C 语言中的文件处理 在 C 语言中&#xff0c;您可以通过声明类型为 FILE 的指针&#xff0c;并使用 fopen() 函数来创建、打开、读取和写入文件&#xff1a; FILE *fptr; fptr fopen(filename, mode);FILE 基本上是一个数据类型&#xff0c;我们需要创建一个指针变量来使用它…

计算机毕业设计----SSM场地预订管理系统

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 用户角色包含以下功能&#xff1a; 按分类查看场地,用户登录,查看网站公告,按分类查看器材,查看商品详情,加入购物车,提交订单,查看订单,修改个人信息等功能。 管理员角…