一、聚类概念
1,通俗易懂而言,聚类主要运用于无监督学习中,也就是将没有标签的东西如何分为几堆儿。
2,无监督学习即没有标签,不知道这些玩意到底是啥。当然,有监督学习就是由标签,我们是提前知道这些玩意是啥。
3,聚类问题存在的问题难点:你咋知道这些玩意儿是一类?怕啥?你通过啥进行判断分类的?也就是如何评估和如何调参问题。
二、K-MEANS算法
Ⅰ,基本概念
1,需要得到簇的个数,即需要指定K值。需要划分多少类。
2,质心:均值,即向量各维取平均。例如五个点,其质心坐标为((x1+x2+x3+x4+x5)/5,(y1+y2+y3+y4+y5)/5)
3,距离的度量:常用欧几里得距离和余弦相似度(先标准化)
4,优化目标:,求出每个点到哪个质心距离最近
Ⅱ,算法思路
①首先取得一些数据点
②假设K设置成2,随便找取两个初始化点
③开始迭代所有的绿色点,看看离哪个质心(红色还是蓝色)最近,离谁近就跟谁一个簇
④把所有红色和蓝色的点全部取出来,求取质心,重新获取质心,更新质心参数
⑤重新对所有的数据进行求取离哪个质心最近就跟哪个质心为同一簇
⑥继续将所有的红色和蓝色点再次分别求取质心,再对所有点进行遍历,看离哪个质心距离近就和哪个质心为同一簇
⑦再次将所有的红色和蓝色点分别求取质心,再次遍历所有点,找离哪个质心最近归为一簇,直到所有的点归属簇不再发生变动为止
Ⅲ,优劣势
优点:简单、快速、适合一般情况下的常规数据集
缺点:K值不容易确定、复杂度和样本呈线性关系、很难发现任意形状的簇
Ⅳ,K-Means可视化展示
K-Means可视化展示网站
三、DBSCAN算法
Ⅰ,基本概念
DBSCAN,Density-Based Spatial Clustering of Applications with Noise
画圈--->找点--->发展下线开始洗脑
1,核心对象:若某个点的密度达到算法设定的阈值则其为核心点。即 r 邻域内点的数量不小于 minPts
2,ϵ-邻域的距离阈值:设定的半径r
3,直接密度可达:若某点p在点q的 r 邻域内,且q是核心点则p-q直接密度可达。
4,密度可达:若有一个点的序列q0、q1、…qk,对任意q(i)—q(i-1)是直接密度可达的 ,则称从q0到qk密度可达,这实际上是直接密度可达的“传播”。
5,密度相连:若从某核心点p出发,点q和点k都是密度可达的 ,则称点q和点k是密度相连的。
6,边界点:属于某一个类的非核心点,不能发展下线了
7,噪声点:不属于任何一个类簇的点,从任何一个核心点出发都是密度不可达的
A:核心对象、B,C:边界点、N:离群点
Ⅱ,算法思路
①输入参数D,即你的数据集
输入参数ϵ,即指定半径
输入参数MinPts,密度阈值,也就是画出来的圈内最少得有这么多点才行
②参数选择
1,半径ϵ,可以根据K距离来设定:找突变点K距离:给定数据集P={p(i); i=0,1,…n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。
2,MinPts: k-距离中k的值,一般取的小一些,多次尝试
Ⅲ,优劣势
优势:不需要指定簇个数、可以发现任意形状的簇、擅长找到离群点(检测任务)、两个参数就够了
劣势:高维数据有些困难(可以做降维)、参数难以选择(参数对结果的影响非常大)、Sklearn中效率很慢(数据削减策略)
Ⅳ,DBSCAN可视化展示
DBSCAN可视化展示网站