当前位置: 首页 > article >正文

聚类算法概念、分类、特点及应用场景【机器学习】【无监督学习】

概念

机器学习聚类算法‌是一种无监督学习方法,旨在将数据集分割成不同的类或簇,使得同一簇内的数据对象相似性尽可能大,而不同簇之间的数据对象差异性也尽可能大。聚类算法广泛应用于新闻自动分组、用户分群、图像分割等领域。‌

主要聚类算法及其特点

‌层次聚类算法‌

层次法(hierarchical methods)

   通过构建数据点之间的层次结构来进行聚类,可以是自底向上的凝聚方法或自顶向下的分裂方法。代表算法包括CURE和ROCK,适用于任意形状和属性的数据集,但执行时间较长。‌

‌分割聚类算法‌

又叫划分法(partitioning methods)

   基于密度的聚类‌:如DBSCAN和OPTICS,能够识别任意形状的簇,并对噪声和离群点具有较好的鲁棒性。代表算法包括DENCLUE和DBCLASD,主要用于空间数据的聚类。
‌   基于网格的聚类‌:如STING和CLIQUE,利用属性空间的多维网格数据结构,适用于大规模数据集,但可能降低聚类质量。
‌   基于图论的聚类‌:将聚类问题转换为组合优化问题,利用图论和相关启发式算法解决,适用于复杂数据结构。

密度算法

基于密度的方法(density-based methods),基于密度的方法与其它方法的一个根本区别是:它不是基于各种各样的距离的,而是基于密度的。这样就能克服基于距离的算法只能发现“类圆形”的聚类的缺点。
这个方法的指导思想就是,只要一个区域中的点的密度大过某个阈值,就把它加到与之相近的聚类中去。
代表算法有:DBSCAN算法、OPTICS算法、DENCLUE算法等;

图论聚类法

图论聚类方法解决的第一步是建立与问题相适应的图,图的节点对应于被分析数据的最小单元,图的边(或弧)对应于最小处理单元数据之间的相似性度量。因此,每一个最小处理单元数据之间都会有一个度量表达,这就确保了数据的局部特性比较易于处理。图论聚类法是以样本数据的局域连接特征作为聚类的主要信息源,因而其主要优点是易于处理局部数据的特性。

网格算法

基于网格的方法(grid-based methods),这种方法首先将数据空间划分成为有限个单元(cell)的网格结构,所有的处理都是以单个的单元为对象的。这么处理的一个突出的优点就是处理速度很快,通常这是与目标数据库中记录的个数无关的,它只与把数据空间分为多少个单元有关。
代表算法有:STING算法、CLIQUE算法、WAVE-CLUSTER算法;

模型算法

基于模型的方法(model-based methods),基于模型的方法给每一个聚类假定一个模型,然后去寻找能够很好的满足这个模型的数据集。这样一个模型可能是数据点在空间中的密度分布函数或者其它。它的一个潜在的假定就是:目标数据集是由一系列的概率分布所决定的。
通常有两种尝试方向:统计的方案和神经网络的方案。

其他聚类算法‌

   ‌谱聚类‌:使用数据的相似性矩阵进行聚类,适用于复杂形状的数据集。‌
   ‌高斯混合模型‌:基于概率模型的聚类方法,适用于估计子群体的分布。
‌   模糊C-means‌:与K-means相似,但允许一个数据点属于多个簇,每个簇有一定的隶属度或概率。
  K-medoids‌:使用数据点(medoids)而不是均值作为簇的中心,类似于K-means但更稳健。
‌   Mean Shift‌:通过迭代更新候选簇中心点来寻找数据点密度最高的区域。
‌   BIRCH‌:专为大型数据集设计的层次聚类方法。

具体方法

K-MEANS

k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。
k-means 算法的工作过程说明如下:
首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;
然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。
一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

K-MEDOIDS

K-MEANS有其缺点:产生类的大小相差不会很大,对于脏数据很敏感。
改进的算法:k—medoids 方法。这儿选取一个对象叫做mediod来代替上面的中心的作用,这样的一个medoid就标识了这个类。K-medoids和K-means不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值,在 K-medoids算法中,我们将从当前cluster 中选取这样一个点——它到其他所有(当前cluster中的)点的距离之和最小——作为中心点。 [2]
步骤:
1,任意选取K个对象作为medoids(O1,O2,…Oi…Ok)。
以下是循环的:
2,将余下的对象分到各个类中去(根据与medoid最相近的原则);
3,对于每个类(Oi)中,顺序选取一个Or,计算用Or代替Oi后的消耗—E(Or)。选择E最小的那个Or来代替Oi。这样K个medoids就改变了,下面就再转到2。
4,这样循环直到K个medoids固定下来。
这种算法对于脏数据和异常数据不敏感,但计算量显然要比K均值要大,一般只适合小数据量。

Clara

上面提到K-medoids算法不适合于大数据量的计算。Clara算法,这是一种基于采样的方法,它能够处理大量的数据。
Clara算法的思想就是用实际数据的抽样来代替整个数据,然后再在这些抽样的数据上利用K-medoids算法得到最佳的medoids。Clara算法从实际数据中抽取多个采样,在每个采样上都用K-medoids算法得到相应的(O1, O2 … Oi … Ok),然后在这当中选取E最小的一个作为最终的结果。

Clarans

Clara算法的效率取决于采样的大小,一般不太可能得到最佳的结果。
在Clara算法的基础上,又提出了Clarans的算法,与Clara算法不同的是:在Clara算法寻找最佳的medoids的过程中,采样都是不变的。而Clarans算法在每一次循环的过程中所采用的采样都是不一样的。
与上面所讲的寻找最佳medoids的过程不同的是,必须人为地来限定循环的次数。

应用

聚类算法在多个领域有广泛应用,例如:
  ‌ 商业领域‌:市场研究、商品归类、广告推荐等。
‌   社会科学领域‌:犯罪区域分析等。
   ‌生物信息学‌:基因片段识别等。
‌   图像处理‌:图像分割、降维等。
   通过这些应用场景,聚类算法在数据处理和分析中发挥了重要作用。

附件

附件一:聚类分析

聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法,同时也是数据挖掘的一个重要算法。

聚类(Cluster)分析是由若干模式(Pattern)组成的,通常,模式是一个度量(Measurement)的向量,或者是多维空间中的一个点。

聚类分析以相似性为基础,在一个聚类中的模式之间比不在同一聚类中的模式之间具有更多的相似性。

相关文章:

聚类算法概念、分类、特点及应用场景【机器学习】【无监督学习】

概念 机器学习聚类算法‌是一种无监督学习方法,旨在将数据集分割成不同的类或簇,使得同一簇内的数据对象相似性尽可能大,而不同簇之间的数据对象差异性也尽可能大。聚类算法广泛应用于新闻自动分组、用户分群、图像分割等领域。‌ 主要聚类算…...

Oracle数据连接 Dblink

拓展: oracle远程登陆数据库 1.oracle客户端或者服务端 2.修改你的电脑如下路径文件(服务器IP,服务器的数据库名,服务器的数据库端口号) c:\oracle\product\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora orcl_109 (DESCRIPTION …...

Deepseek系列从v3到R易背面经版

deepseek v3 base要点 MTP : Multi-Token Prediction 训练时: 1. 把前一个block中input tokens经过embedding layer和transformer block的输出,进入output head之前的内容记为h,与下一个block的input tokens经过embedding layer输出的内容都…...

Maven入门核心知识点总结

Maven 1. POM(Project Object Model)2. 坐标(Coordinates)3. 依赖管理(Dependency Management)4. 常用五个生命周期(Life Circle)5. Maven 仓库(Maven Repository&#x…...

Blocked aria-hidden on an element because its descendant retained focus.

在使用el-popover和el-radio-group实现弹窗选择数据后调用el-popover的doClose()方法时一直报错! 经过分析发现el-popover及el-radio__original有aria-hidden属性,具体aria-hidden属性应用自行搜索了解。既然是这个玩意引起的,则在显示时将a…...

JavaScript 基础语法:变量、数据类型、运算符、条件语句、循环

JavaScript 是一种动态类型的脚本语言,广泛用于前端开发。以下是 JavaScript 基础语法的核心内容,包括变量、数据类型、运算符、条件语句和循环。 --- ### 1. 变量 变量用于存储数据。JavaScript 中有三种声明变量的方式: - **var**&…...

ElementUI的常用组件及使用技巧

1. 引言 项目背景与目标 随着前端技术的快速发展,构建高效、美观的用户界面变得越来越重要。ElementUI作为一款基于Vue.js的组件库,提供了丰富的组件和工具,帮助开发者快速构建高质量的Web应用。本文旨在介绍ElementUI的常用组件及其使用技巧,帮助开发者更好地利用Elemen…...

python爬虫--简单登录

1,使用flask框架搭建一个简易网站 后端代码app.py from flask import Flask, render_template, request, redirect, url_for, sessionapp Flask(__name__) app.secret_key 123456789 # 用于加密会话数据# 模拟用户数据库 users {user1: {password: password1}…...

三次握手,四次挥手,服务器模型(多进程并发,线程),基于套接字的UDP通信

三次握手: 第一次握手:客户端向服务器发送SYN待确认数据x, 客户端进入SYN_SEND状态​ 第二次握手:服务器向客户端回传一条ACK应答数据x1, 同时发送一条SYN待确认数据y,服务器进入SYN_RECV状态​ 第三次握手:客户端向服…...

Linux TCP 编程详解与实例

一、引言 在网络编程的领域中,TCP(Transmission Control Protocol)协议因其可靠的数据传输特性而被广泛应用。在 Linux 环境下,使用 C 或 C 进行 TCP 编程可以实现各种强大的网络应用。本文将深入探讨 Linux TCP 编程的各个方面&…...

Vue.js 如何自定义主题和样式

Vue.js 如何自定义主题和样式 今天我们来聊聊如何在 Vue 项目中自定义主题和样式。无论是你想让自己的应用看起来独一无二,还是想快速适配设计稿,自定义主题和样式都是必不可少的一环。下面我将和大家分享几种常见的自定义方法和技巧。 为什么要自定义…...

Elasticsearch 开放推理 API 增加了 Azure AI Studio 支持

作者:来自 Elastic Mark Hoy Elasticsearch 开放推理 API 现已支持 Azure AI Studio。在此博客中了解如何将 Azure AI Studio 功能与 Elasticsearch 结合使用。 作为我们持续致力于为 Microsoft Azure 开发人员提供他们选择的工具的一部分,我们很高兴地宣…...

提示工程:少样本提示(Few-shot Prompting)

少样本提示(Few-shot Prompting)是一种利用大语言模型从少量示例样本中学习并处理任务的方法。它的核心思想是利用大语言模型的上下文学习能力,通过在提示中增加“示例样本”来启发大语言模型达到举一反三的效果。这种方法避免了重新训练或者…...

封装descriptions组件,描述,灵活

效果 1、组件1&#xff0c;dade-descriptions.vue <template><table><tbody><slot></slot></tbody> </table> </template><script> </script><style scoped>table {width: 100%;border-collapse: coll…...

数据中台是什么?:架构演进、业务整合、方向演进

文章目录 1. 引言2. 数据中台的概念与沿革2.1 概念定义2.2 历史沿革 3. 数据中台的架构组成与关键技术要素解析3.1 架构组成3.2 关键技术要素 4. 数据中台与其他平台的对比详细解析 5. 综合案例&#xff1a;金融行业数据中台落地实践5.1 背景5.2 解决方案5.3 成果与价值 6. 方向…...

Android FCM推送及通知栏展示

需求&#xff1a; 实现FIrebase Cloud Message推送功能&#xff0c;用户收到通知后&#xff0c;可以悬浮通知&#xff0c;自定义的大/小通知展示在通知栏&#xff0c;判断前台/后台&#xff0c;点击后进行跳转。 步骤&#xff1a; 一、配置及接入依赖库 1.下载 google-serv…...

【Matlab优化算法-第14期】基于智能优化算法的VMD信号去噪项目实践

基于智能优化算法的VMD信号去噪项目实践 一、前言 在信号处理领域&#xff0c;噪声去除是一个关键问题&#xff0c;尤其是在处理含有高斯白噪声的复杂信号时。变分模态分解&#xff08;VMD&#xff09;作为一种新兴的信号分解方法&#xff0c;因其能够自适应地分解信号而受到…...

4. Go结构体使用

1、结构体的简介 结构体&#xff08;Struct&#xff09;是编程语言中常见的一种复合数据类型&#xff0c;它将不同类型的数据元素&#xff08;成员&#xff09;组合成一个单一的实体。通过结构体&#xff0c;程序员可以将具有不同类型和性质的信息绑定到一个对象中&#xff0c…...

ubuntu20使用tigervnc远程桌面配置记录

一、安装tigervnc sudo apt install tigervnc-common sudo apt install tigervnc-standalone-server二、增加配置文件 安装完后新增配置文件&#xff1a;vim ~/.vnc/xstartup #!/bin/sh #Uncomment the following two lines for normal desktop: #unset SESSION_MANAGER #ex…...

【WB 深度学习实验管理】使用 PyTorch Lightning 实现高效的图像分类实验跟踪

本文使用到的 Jupyter Notebook 可在GitHub仓库002文件夹找到&#xff0c;别忘了给仓库点个小心心~~~ https://github.com/LFF8888/FF-Studio-Resources 在机器学习项目中&#xff0c;实验跟踪和结果可视化是至关重要的环节。无论是调整超参数、优化模型架构&#xff0c;还是监…...

编译spring 6.2.2

如何编译Spring 6.2.2 下载spring 6.2.2 首先&#xff0c;下载spring 6.2.2&#xff0c;地址&#xff1a;下载 解压到你的目录下。 下载gradle 下载gradle&#xff0c;这是spring项目的依赖管理工具&#xff0c;本文下载的是8.12.1。 gradle idea配置如下&#xff1a;在你的…...

【centOS】搭建公司内网git环境-GitLab 社区版(GitLab CE)

1. 安装必要的依赖 以 CentOS 7 系统为例&#xff0c;安装必要的依赖包&#xff1a; sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix sudo systemctl start postfix sudo systemctl enable postfix2. 添加 GitLab 仓库 curl -sS https:/…...

MHTML文件如何在前端页面展示

MHTML文件如何在前端页面展示 需求背景&#xff1a; 目前在给证券公司做项目&#xff0c;但是在使用新系统的过程中&#xff0c;甲方还希望之前之前系统的历史记录可以看到。 最初制定的计划是项目组里面做数据的把原系统页面爬取下来&#xff0c;转成图片&#xff0c;直接给…...

Spring Boot的常用注解

Spring Boot 常用注解 主要分为以下几类&#xff1a; Spring 核心注解Spring Boot 相关注解Spring MVC 相关注解Spring Data JPA 相关注解Spring 事务管理Spring Security 相关注解Spring AOP 相关注解Spring 其他常用注解 下面是详细分类和表格展示&#x1f447;&#xff1a…...

【R语言】plyr包和dplyr包

一、plyr包 plyr扩展包主要是实现数据处理中的“分割-应用-组合”&#xff08;split-apply-combine&#xff09;策略。此策略是指将一个问题分割成更容易操作的部分&#xff0c;再对每一部分进行独立的操作&#xff0c;最后将各部分的操作结果组合起来。 plyr扩展包中的主要函…...

《XSS跨站脚本攻击》

一、XSS简介 XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击&#xff0c;为了避免和CSS层叠样式表名称冲突&#xff0c;所以改为了XSS&#xff0c;是最常见的Web应用程序安全漏洞之一&#xff0c;位于OWASP top 10 2013/2017年度分别为第三名和第七名&…...

Golang:精通sync/atomic 包的Atomic 操作

在本指南中&#xff0c;我们将探索sync/atomic包的细节&#xff0c;展示如何编写更安全、更高效的并发代码。无论你是经验丰富的Gopher还是刚刚起步&#xff0c;你都会发现有价值的见解来提升Go编程技能。让我们一起开启原子运算的力量吧&#xff01; 理解Go中的原子操作 在快…...

代码随想录_二叉树

二叉树 二叉树的递归遍历 144.二叉树的前序遍历145.二叉树的后序遍历94.二叉树的中序遍历 // 前序遍历递归LC144_二叉树的前序遍历 class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> result new ArrayList<Integer&g…...

详解Swift中 Sendable AnyActor Actor GlobalActor MainActor Task、await、async

详解Swift中 Sendable AnyActor Actor GlobalActor MainActor 的关联或者关系 及其 各自的作用 和 用法 以及与 Task、await、async&#xff1a; Sendable 协议 作用&#xff1a; Sendable 是一个协议&#xff0c;它用于标记可以安全地跨线程或异步任务传递的数据类型。符合 S…...

【C语言标准库函数】浮点数分解与构造: frexp() 和 ldexp()

目录 一、头文件 二、函数简介 2.1. frexp(double x, int *exp) 2.2. ldexp(double x, int exp) 三、函数实现&#xff08;概念性&#xff09; 3.1. frexp 的概念性实现 3.2. ldexp 的概念性实现 四、注意事项 五、示例代码 在C语言标准库中&#xff0c;frexp() 和 ld…...