dbscan聚类算法matlab_机器学习——Hierarchical and Density Clustering层次密度聚类

Hierarchical and Density Clustering 基于层次和密度的聚类

Created: Apr 24, 2020 4:56 PM

K-Means的弊端

K-Meas算法并不是使用所以情况,K均值算法综述试图寻找高维领域呈原形、球形或超球面的类,对与下图三个类别,K-Means算法就无法正确区分三个类别,

b9360f4495fd19ae410bba493e257f95.png
6c06c97e9d748d5ea30eecef43a61f3d.png

Hierarchical Clustering 层次聚类

agglomerative clustering 凝聚聚类

AgglomerativeClustering是层次聚类的一种,使用自底向上方法执行分层聚类:每个观察都从其自己的聚类开始,并且聚类被连续合并在一起,分为单链接聚类、全链接聚类、平均距离链接、word'method离差平方和

单链单链接聚类

层次聚类的结果能让我们直观的了解类之间的关系。我们通过示例来分析

假如一家披萨店想对它的客户位置做一个聚类处理,以便更好的确定在哪里开分店,

84901012997b7cdb265ed2044b89f6d2.png

我们使用单链接聚类法将它做聚类处理。

第一步,我们假设每一个点是一个类,并为每个点标记。

第二步,计算任意两点之间的距离,然后选择两个类之间的最短距离(4,5),并用括号把它们链接起来,然后继续寻找(1,2)(6,8),这样我们就得到三个类,并把它标记在右边。

09f8a47ed027b97f9fa773d3bad7b8ce.png

现在问题就有点不同,7号点和黄色的类的距离是多少呢,是7到6的距离还是到8的距离?还是平均距离?这是区分不同层次聚类的方法的一个标准,单连接聚类关注的是类的最短距离,也就是6到7的距离,因为6是距离7最近的点,所以这个新类中含有另外一个类作为子类,然后就可以据此生成系统树图。

4c19e0cdda46808b7ee8332f839548d8.png

那么我们分为几个类别呢,如果我们输入的类的数量是2,我们就可以从最上边切割。

7d791848da26b3dfa8580afbb1283b8c.png

衡量类之间的距离,是区分不同层次聚类的一种方法,单连接聚类法关注的是两个类之间的最短聚类,然后比较,选择最短聚类,然后把这两个类放到一个类中,这容易导致形成狭长的类,大多数情况下,我们还是想要紧凑的类。

0aee6ef82065738e1a5bc0df66f02ea2.png

我们可以看以下K-Means和单链接层次聚类的对比:

b4ad9135e652b92b2cef04151259c30a.png

全链接聚类

ec233c713af964c53d828057ed6e7b46.png

在上图的情况下,全连接聚类法关注的是两个类中两点之间的最远距离,全连接聚类法中,这样的距离衡量方法使得产生的类比较紧凑。

平均值聚类

平均值,计算两类中任意两点的聚类,然后取平均值,

Ward' Method离差平方和

先计算出两个类所有点的中心点,也就是计算两个类所有点的平均值,然后计算出两个类距离中心点的距离C,再减去两个类分别距离其的中心点距离A、B

35c871a840d2b9d5c1bbf7bdd2f3bceb.png
bc583f53ca51518be952503bde2c66e2.png

优缺点

优点

  • - 得到的层次表达信息丰富
  • - 把数据集的聚类结构视觉化
  • - 数据内部有层次关系时,更有用,例如生物学

缺点

  • - 对噪音和离群值很敏感,所以需要提前清理噪音、离群值
  • - 计算量大

Density Clustering 密度聚类

指的是具有噪声的基于密度的聚类方法,对于有噪声的数据有很强的使用性,它一般是将密集分布的点聚类,其它剩余的点标记为噪音

DBSCAN在开始时任意选择一点,周围没有一个点,所以标记为噪声点。

ff970b26a1099f4a69165300f19aad46.png

在选择下一个点,周围只有两个点,这个数量不够我们定义为一个类(5个点),所以标记为噪声点。

c90d3e75a10eacbe855876afa366f141.png

我们看下一个点,周五有5个点,所以我们就把它标记为第一个类,并标记中心点。

e3ab14c95b2f0bf1c2d4c18acd91d26f.png

继续执行此步骤,找到类后继续以它的边界点作为核心点寻找,并标记最后的边界点。

32a2c9ffd23be3e5b64a0f330de6b789.png

K-Means和DBSCAN对比

a8b1ba89132b7bcd7c407920f79c9ff2.png

DBSCAN可视化

https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/

优缺点

优点:

  • - 不需要指明类的数量
  • - 能灵活的找到并分离各种形状和大小的类
  • - 可以处理噪声点和离散点

缺点:

  • - 第一个是将两个聚类中可到达的边界点分配给首先找到它们的聚类,并且由于以任意顺序访问了这些点,因此在这种情况下,不能保证DBSCAN返回相同的聚类
  • - 找到不同密度的类方面有一些困难

示例

dataset_2 = pd.read_csv('varied.csv')[:300].valueshelper.plot_dataset(dataset_2, xlim=(-14, 5), ylim=(-12, 7))
56d7ec6a84d67408d85fa2598e943d47.png
eps_values = [0.3, 0.5, 1, 1.3, 1.5]min_samples_values = [2, 5, 10, 20, 80]helper.plot_dbscan_grid(dataset_2, eps_values, min_samples_values)
6ece8ede6b0e373dffb39a9dd9145c8c.png

参数调整方法

cb9b24d06a16a021ba786585e7311aa8.png

许多小集群。 超出了数据集的预期。可以增加min_samples和epsilon

508f84aaa41349cec134d3719706c159.png

大多数点属于一个类,减少epsilon并增加min_samples

f43acb66d5bd7ba570c2d257b414a38d.png

大多数/所有数据点都标记为噪声,增加epsilon并减少min_samples

280c53170abb3234713fee322f5f1f22.png

除了极度密集的区域外,大多数/所有数据点都是标记为噪音。 (或者所有点都标记为噪声)。减少min_samples和epsilon

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值