首页 > 编程语言 >机器学习-聚类算法

机器学习-聚类算法

时间:2024-06-07 17:58:11浏览次数:10  
标签:机器 迭代 样本 eps 距离 算法 聚类

1.有监督学习与无监督学习

有监督:在训练集中给的数据中有X和Y,根据这些数据训练出一组参数对预测集进行预测

无监督:在训练集中给的数据只有X没有Y,根据X数据找相似度参数来对预测集进行预测

2.数据间的相似度

2.1距离相似度:

每一条数据可以理解为一个n维空间中的点,可以根据点点之间的相似度来评价数据间的相似度

欧氏距离:欧式距离就是两个点之间的直线距离

 曼哈顿距离:以二维空间为例,这种距离是计算两点之间的直角边距离,相当于城市中出租汽车沿城 市街道拐直角前进而不能走两点连接间的最短距离。

 闵可夫斯基距离:p=1的时候就是曼哈顿距离,p=2的时候就是欧式距离,P = 无穷,切比雪夫距离 ,哪个维度差值最大就是哪个差值作为距离。根据极限的思想p无穷大的时候x-y的值小的肯定远小于x-y大的值,那么就是最大的一个x-y占主要距离

余弦距离:高中都学过

 

3.Kmeans算法

1.聚类原理:

 将N个样本映射到K个簇中,每个簇至少有一个样本,先给定K个划分,迭代样本与簇的隶属关系,每次都比前一次好一些,迭代若干次就能得到比较好的结果。也就是先给你一堆球,但是不告诉你这些球的颜色,然后你自己去分,分成几种颜色是比较好的结果

2.Kmeans算法原理:

1.先随机生成k个初始的簇中心,也就是先随机挑几个球

2.逐个计算每个样本到这些簇中心的距离,将样本归属到距离最小的那个簇中心的簇中,也就是计算其他球到这些呗选择的球的距离,离那个球近就归那个球

3.每个簇内部计算平均值,跟新簇中心。也就是第二步选出来的k个簇,每一个簇中的每个球都计算它到其他球的距离的平均值,然后选择最小的一个球当作簇中心

一直迭代更新簇中心,直到不再改变 ,最后分好的k个簇就是分k种颜色的球的比较好的结果(这里只是局部最优,如果要全局最优需要迭代k的值,也就是要找到分多少种颜色才能让这些球每种颜色距离最远)

KMeans的优点:简单。缺点:对异常值敏感,对初始值敏感,对某些分布聚类效果不好。

4.Kmeans损失函数:

5.kmeans执行过程

 

6.Kmeans聚类算法k值的选择

样本点的轮廓系数:

 按照公式每一个样本点都有一个轮廓系数,那么该样本的总的轮廓系数为:

SC=(\sum_{i=1}^{n}si)/n  也就是每一个样本点的轮廓系数的平均值。而聚类总的轮廓系数SC是该聚类是否合理,有效的度量

所以,我们在迭代k值的时候不用盲目的去迭代了,而是要看这个聚类总的轮廓系数SC。我们将k从2开始迭代,一直迭代到SC沿下降趋势的时候就可以了,找到SC最大的时候的k的值,就是结果了

4.DBSCAN算法

1.算法介绍:

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类 方法)是一种基于密度的空间聚类算法。 该算法将具有足够密度的区域划分为簇,并在具有噪声的空间 数据库中发现任意形状的簇,它将簇定义为密度相连的点的最大集合。

2.DBSCAN算法原理

1.先随机找一个点,通过欧式距离计算附近点的距离

2.如果距离小于阈值(自己定义的eps)就属于同一类

3.每一次迭代还有一个阈值,min_samples,也就是每次迭代最少要找到的同类数

4.将第二步找到的同类点进行2,3步迭代

5.当所有点都不满足第三步时,重新从第一步进行迭代,直到所有样本结束

动画详情地址:Visualizing DBSCAN Clustering (naftaliharris.com)

参数详细:

参数一eps: DBSCAN算法参数,即我们的eps邻域的距离阈值,和样本距离超过eps的样本点不在eps邻域内。默认 值是0.5.一般需要通过在多组值里面选择一个合适的阈值。eps过大,则更多的点会落在核心对象的eps 邻域,此时我们的类别数可能会减少, 本来不应该是一类的样本也会被划为一类。反之则类别数可能会 增大,本来是一类的样本却被划分开。

参数二min_samples: DBSCAN算法参数,即样本点要成为核心对象所需要的eps邻域的样本数阈值。默认值是5。一般需要通 过在多组值里面选择一个合适的阈值。通常和eps一起调参。在eps一定的情况下,min_samples过大, 则核心对象会过少,此时簇内部分本来是一类的样本可能会被标为噪音点,类别数也会变多。反之 min_samples过小的话,则会产生大量的核心对象,可能会导致类别数过少。

 参数与三metrics:点和点之间的距离计算公式,一般为欧式距离,当然也可以是曼哈顿距离等等

4.分层聚类:

1.算法介绍:

分层聚类输出层次结构,这种结构比平面聚类返回的非结构化聚类集更具信息性。 分层聚类法(hierarchical cluster method)一译“系统聚类法”。聚类分析的一种方法。其做法是开始时 把每个样品作为一类,然后把最靠近的样品(即距离最小的群品)首先聚为小类,再将已聚合的小类按 其类间距离再合并,不断继续下去,最后把一切子类都聚合到一个大类。

 

2.算法原理

 层次聚类(Hierarchical Clustering)是聚类算法的一种,通过计算不同类别数据点间的相似度来创建一棵 有层次的嵌套聚类树。在聚类树中,不同类别的原始数据点是树的最低层,树的顶层是一个聚类的根节 点。创建聚类树有自下而上合并和自上而下分裂两种方法。 我们着重看一下自底向上的合并算法:

 两个组合数据点间的距离:

第一种:Single Linkage 方法是将两个组合数据点中距离最近的两个数据点间的距离作为这两个组合数据点的距离。这 种方法容易受到极端值的影响。两个很相似的组合数据点可能由于其中的某个极端的数据点距 离较近而组合在一起。也就是两种球,我们以这两种球中距离最的两个球的距离当作这两种球的距离

第二种:Complete Linkage 的计算方法与Single Linkage相反,将两个组合数据点中距离最远的两个数 据点间的距离作为这两个组合数据点的距离。Complete Linkage的问题也与Single Linkage相 反,两个不相似的组合数据点可能由于其中的极端值距离较远而无法组合在一起。也就是两种球,我们以这两种球中距离最的两个球的距离当作这两种球的距离

 第三种:Average Linkage的计算方法是计算两个组合数据点中的每个数据点与其他所有数据点的距 离。将所有距离的均值作为两个组合数据点间的距离。这种方法计算量比较大,但结果比前两 种方法更合理。 我们使用Average Linkage计算组合数据点间的距离。下面是计算组合数据点(A,F)到(B,C)的距 离,这里分别计算了(A,F)和(B,C)两两间距离的均值。也就是两种球,我们以这两种球中所有球的距离的平均值当作这两种球的距离

 

标签:机器,迭代,样本,eps,距离,算法,聚类
From: https://blog.csdn.net/m0_73426548/article/details/139454395

相关文章

  • 机器学习-支持向量机
    目录一支持向量机1.支持向量机SVM2构建svm目标函数3.拉格朗日乘法,kkt条件拉格朗日乘法:kkt条件 对偶问题 4.最小化SVM目标函数kkt条件: 对偶转换: 5软间隔及优化优化svm目标函数 构造拉格朗日函数对偶转换关系:求解结果:总结:都看到这里了点个赞吧! 一支持......
  • 代码随想录算法训练营第三十天 | 51.N 皇后
    51.N皇后题目链接文章讲解视频讲解递归三部曲递归函数参数需要传入当前chessBoard和棋盘大小n,以及当前要放置皇后的行数rowvoidbacktracking(vector<string>&chessBoard,intn,introw);递归终止条件当最后一个皇后放置好后结束if(row==n){result.push_b......
  • 安防监控平台智能边缘分析一体机视频监控系统室内消防通道占用检测算法
    随着城市化进程的加速,高层建筑如雨后春笋般涌现。这些建筑的消防安全问题日益凸显,尤其是消防通道的占用问题。为了解决这一问题,智能边缘分析一体机被引入到室内消防通道占用检测中,以提高检测效率和准确性。本文将探讨这一技术的应用及其重要性。智能边缘分析一体机是一种集成......
  • 开山之作!Python数据与算法分析手册,登顶GitHub!
    若把编写代码比作行军打仗,那么要想称霸沙场,不能仅靠手中的利刃,还需深谙兵法。Python是一把利刃,数据结构与算法则是兵法。只有熟读兵法,才能使利刃所向披靡。只有洞彻数据结构与算法,才能真正精通Python。今天给小伙伴们分享的这份手册,是用Python描述数据结构与算法的开山之作,......
  • 程序分享--常见算法/编程面试题:罗马数字转整数
    关注我,持续分享逻辑思维&管理思维&面试题;可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导;推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容,持续上传中。一顿烧烤不到的费用,让人能紧跟时代的浪潮。从普通网站,到公众号、小程序,再到AI大模型网站。干货满满......
  • FPGA数字信号处理之:PID调节算法的实现
    一、定义        PID控制是经典控制理论中控制系统的一种基本调节方式,是具有比例、积分和微分作用的一种线性调节规律,它基于对被控对象的测量值与设定值之间的差异进行调整来实现稳定和精确的控制。        PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成,......
  • 在虚拟机上搭建 Docker Kafka 宿主机器程序无法访问解决方法
    1、问题描述在虚拟机CentOS-7上搭建的DockerKafka,docker内部可以创建Topic、可以生产者数据、可以消费数据,而在宿主机开发程序无法消费Docker Kafka的数据。1.1、运行情况[docker@localhost~]$dockerps-aCONTAINERIDIMAGECOMMAND......
  • 螺旋转动,矩阵的舞蹈:JavaScript中实现螺旋矩阵遍历算法
    螺旋转动,矩阵的舞蹈:JavaScript中实现螺旋矩阵遍历算法基础概念:什么是螺旋矩阵?核心算法解析示例一:基础螺旋矩阵遍历算法解析进阶技巧示例二:动态生成螺旋矩阵技巧点实战与性能优化问题与解决:大矩阵处理结语与讨论在编程的奇幻世界里,数组与矩阵是构筑数字城堡的基石......
  • 爬山算法的详细介绍
    引言在计算机科学领域,优化问题的求解一直是一个重要的研究方向。对于很多复杂的优化问题,经典的求解方法如动态规划、回溯法和分支限界法可能不太适用,因为它们的时间复杂度非常高。爬山算法作为一种启发式搜索算法,提供了一种相对简单且高效的解决方案。本文将详细介绍爬山算......
  • 机器学习算法(一):1. numpy从零实现线性回归
    系列文章目录机器学习算法(一):1.numpy从零实现线性回归机器学习算法(一):2.线性回归之多项式回归(特征选取)@目录系列文章目录前言一、理论介绍二、代码实现1、导入库2、准备数据集3、定义预测函数(predict)4代价(损失)函数5计算参数梯度6批量梯度下降7训练8可视化一下损失总结前......