聚类算法是一种无监督学习算法,它的目的是将数据集中的对象按照相似性分组,使得同一组内的对象尽可能相似,不同组内的对象尽可能不同。聚类算法有很多种,根据不同的划分标准和相似性度量,可以分为以下几类:基于划分的聚类算法:这类算法需要预先指定簇的个数或者聚类中心,然后通过迭代优化目标函数,使得簇内距离最小化,簇间距离最大化。
基于密度的聚类算法:这类算法不需要预先指定簇的个数,而是根据数据点的密度来划分簇。当邻近区域的密度超过某个阈值,则继续聚类,否则停止。这样可以发现任意形状的簇,并且对噪声不敏感。典型的算法有DBSCAN、OPTICS、HDBSCAN等。基于层次的聚类算法:这类算法不需要预先指定簇的个数,而是根据数据点之间的距离或相似度来构建一个层次结构,然后根据某种准则来划分层次。
1、聚类算法(上
这篇文章的整体排版主要是根据个人的博客来哒,如果感兴趣的话可以去我的自己搭建的个人博客看这篇文章。聚类算法很多,所以和讲回归算法一样,分成了上下,上中主要讲了传统的KMeans算法以及其相应的优化算法入KMeans++,KMeans||和Canopy等。下中主要讲了另外两种的思路的聚类算法,即层次聚类和密度聚类。聚类算就是怼大量未知标注的数据集,按照数据内部存在的数据特征将数据集划分为多个不同的类别,使类别内的数据比较相似,类别之间的数据相似度比较小,属于无监督学习。
说到聚类算法,那肯定核心就是计算距离的公式了,目前常用的有以下几种。闵可夫斯基距离(Minkowski):公式2.1KL距离(相对熵):思考下条件熵的定义,简单的来说就是在放生一件事情的时候,发生另一件事的概率。公式如下公式2.7.注:这里书的概率不是实指概率,而是熵表达的含义。这个公式其实就是条件熵的公式。
2、k-means算法是聚类算法还是分类算法
kmeans聚类算法原理kmeans算法接受参数k;然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小.聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的.kmeans算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.kmeans算法的基本思想是:以空间中k个点为中心进行聚类,
逐次更新各聚类中心的值,直至得到最好的聚类结果.假设要把样本集分为c个类别,算法描述如下:(1)适当选择c个类的初始中心;(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;(3)利用均值等方法更新该类的中心值;(4)对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后。