聚类算法学习——kernel K-means及实现过程

聚类算法学习

接着上一个博客的学习,这篇对改进算法kernel K-means进行了整理记录。


**第二节 核空间聚类学习**


前言

物以类聚,人以群分。
以下为学习笔记整理


一、kernel是什么?

相信刚接触核空间思想的小伙伴,在搜索帖子学习的过程中,脑海里不止一次会想到“Kernel is a shit!!!”,但是但是但是,核空间太厉害了好吗,它确确实实是低维空间映射到高维的核武器。

“kernel方法是一类用于模式分析或识别的算法,其最知名的使用是在支持向量机(SVM)。模式分析的一般任务是在一般类型的数据(例如序列,文本文档,点集,向量,图像等)中找到并研究一般类型的关系(例如聚类,排名,主成分,相关性,分类)图表等)。内核方法将数据映射到更高维的空间,希望在这个更高维的空间中,数据可以变得更容易分离或更好的结构化。对这种映射的形式也没有约束,这甚至可能导致无限维空间。然而,这种映射函数几乎不需要计算的,所以可以说成是在低维空间计算高维空间内积的一个工具。”------一段高大上的介绍。
下面通俗的讲一下什么是kernel:

在这里插入图片描述
如图所示,左面的图为为原空间,右面的图为映射后的空间,从图中可以看出来,左面图不能线性分割,而右面的图要用一个超平面就可以分割开,原空间点左边为(x1,x2),经过某个函数或者某种计算方法,转化为特征空间上点坐标为(z1,z2,z3),所以说将低维空间转化到高维空间大概率可以对其中的点进行线性分割。

这样,我们第一步就理解了,就是在低维空间上的点通过某一函数转化为高维空间上,更有助于线性分类。

映射关系通常不好找,因此借助核函数来避免这个映射关系。上图所使用的核函数为
在这里插入图片描述
即内积平方,为什么对应的映射是这样呢,这里可以验证:
在这里插入图片描述

目前我还是存在一些困惑,有待进一步理解学习。
首先核函数的选取非常的困难,所举的例子由于数据的特殊性,较容易选择对应的核函数。
在机器学习中常用的核函数,一般有这么几类,也就是LibSVM中自带的这几类:

1)线性:
在这里插入图片描述

2)多项式:
在这里插入图片描述

3)Radial basis function(RBF径向基函数):
在这里插入图片描述

4)Sigmoid:
在这里插入图片描述
更多关于核函数的整理可以参见
https://www.cnblogs.com/infinite-h/p/10723853.html
更详细关于内积解释可以参见
https://www.cnblogs.com/damin1909/p/12955240.html

二、核聚类学习

1.问题描述

首先生成上述图片类似的线性不可分的人工数据集

更新了比前一个更方便的K-means算法(可以实现三维聚类和效果显示)

核函数分别实现了多项式核和高斯核

关于高斯核的解释强烈推荐这篇博客:
https://blog.csdn.net/weixin_42137700/article/details/86756365

2.代码实现

(完整源码可评论我分享)

首先生成人工数据集

def get_data():
    fig = plt.figure()
    x, y1 = make_circles(n_samples=100, factor=0.1, noise=0.1)
    plt.scatter(x[:, 0], x[:, 1], marker='
  • 30
    点赞
  • 99
    收藏
    觉得还不错? 一键收藏
  • 126
    评论
聚类算法是一种无监督学习方法,通过对数据进行分类和分组,将相似的数据分为一组,不同的数据分为不同的组。聚类算法在数据挖掘、模式识别、图像分析等领域都有广泛的应用。 K-means是一种常见的聚类算法,它将数据集划分为K个不同的簇,每个簇包含最接近的数据点。K-means算法的步骤如下: 1. 随机选择K个中心点。 2. 将所有数据点分配到离它们最近的中心点所在的簇中。 3. 重新计算每个簇的中心点。 4. 重复步骤2和3,直到中心点不再发生变化或达到最大迭代次数。 K-means算法的优点是简单快速,适用于大规模数据集。但是它需要预先指定簇的数量K,且对初始化的中心点非常敏感,容易陷入局部最优解。 DBSCAN是一种基于密度的聚类算法,它将数据集分为密度相同的区域,将高密度的区域作为簇的中心点。DBSCAN算法的步骤如下: 1. 随机选择一个未被标记的数据点。 2. 搜索以该点为中心,半径为ε的区域内的所有数据点。 3. 如果该区域内的数据点数量大于等于MinPts,则将该点标记为核心点,并将该区域内的所有数据点加入该簇中。 4. 重复步骤2和3,直到所有的核心点被找到。 5. 将未被标记的数据点归为噪声点或者边缘点,如果它们可以被加入某个簇,则加入该簇。 DBSCAN算法的优点是不需要预先指定簇的数量,可以发现任何形状的簇。但是它对于数据集的密度和参数的选择比较敏感,对于高维数据集效果不佳。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 126
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值