聚类算法笔记

1.聚类算法

1.1 聚类算法概念

⼀种典型的⽆监督学习算法,主要⽤于将相似的样本⾃动归到⼀个类别中。
在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算⽅法,会得到不同的聚类结
果,常⽤的相似度计算⽅法有欧式距离法。

1.1.1 聚类算法·api

  • sklearn.cluster.KMeans(n_clusters=8
    • 参数
      • n_clusters:开始的聚类中⼼数量
        • 整型,缺省值=8,⽣成的聚类数,即产⽣的质⼼(centroids)数。
    • 方法
      • estimator.fit(x)
      • estimator.predict(x)
      • estimator.fit_predict(x)
        • 计算聚类中⼼并预测每个样本属于哪个类别,相当于先调⽤fit(x),然后再调⽤predict(x)

1.2 K-means 聚类算法实现流程

  • k-means其实包含两层内容:
    • K : 初始中⼼点个数(计划聚类数)
    • means:求中⼼点到其他数据点距离的平均值

k-means聚类步骤

1、随机设置K个特征空间内的点作为初始的聚类中⼼
2、对于其他每个点计算到K个中⼼的距离,未知的点选择最近的⼀个聚类中⼼点作为标记类别
3、接着对着标记的聚类中⼼之后,重新计算出每个聚类的新中⼼点(平均值)
4、如果计算得出的新中⼼点与原中⼼点⼀样(质⼼不再移动),那么结束,否则重新进⾏第⼆步过程

通过下图解释实现流程:
在这里插入图片描述

1.3 模型评估

1.3.1 误差平⽅和(SSE \The sum of squares due to error):

举例:(下图中数据-0.2, 0.4, -0.8, 1.3, -0.7, 均为真实值和预测值的差)
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.3.2 “肘”⽅法 (Elbow method) — K值确定

在这里插入图片描述
(1)对于n个点的数据集,迭代计算k from 1 to n,每次聚类完成后计算每个点到其所属的簇中⼼的距离的平⽅和;
(2)平⽅和是会逐渐变⼩的,直到k==n时平⽅和为0,因为每个点都是它所在的簇中⼼本身。
(3)在这个平⽅和变化过程中,会出现⼀个拐点也即“肘”点,下降率突然变缓时即认为是最佳的k值。

1.3.2 轮廓系数法(Silhouette Coefficient)

在这里插入图片描述取值为[-1, 1],其值越⼤越好

1.3.3 CH系数(Calinski-Harabasz Index)

类别内部数据的协⽅差越⼩越好,类别之间的协⽅差越⼤越好(换句话说:类别内部数据的距离平⽅和越⼩越好,类别
之间的距离平⽅和越⼤越好),这样的Calinski-Harabasz分数s会⾼,分数s⾼则聚类效果越好

在这里插入图片描述
tr为矩阵的迹, B 为类别之间的协⽅差矩阵,W 为类别内部数据的协⽅差矩阵;
m为训练集样本数,k为类别数。

在这里插入图片描述

1.4 算法优化

1.4.1 Canopy算法配合初始聚类

在这里插入图片描述
在这里插入图片描述
优点:
1.Kmeans对噪声抗⼲扰较弱,通过Canopy对⽐,将较⼩的NumPoint的Cluster直接去掉有利于抗⼲扰。
算法优化
213
2.Canopy选择出来的每个Canopy的centerPoint作为K会更精确。
3.只是针对每个Canopy的内做Kmeans聚类,减少相似计算的数量。
缺点:
1.算法中 T1、T2的确定问题 ,依旧可能落⼊局部最优解

1.4.2 K-means++

  • 在数据集中随机选择一个样本点作为第一个初始化的聚类中心
  • 选择出其余的聚类中心:
    • 计算样本中的每一个样本点与已经初始化的聚类中心之间的距离,并选择其中最短的距离,记为d_i
    • 选择一个新的数据点作为新的聚类中心,选择的原则是:距离较大的点,被选取作为聚类中心的概率较大
    • 重复上述过程,直到k个聚类中心都被确定
      对k个初始化的聚类中心,利用K-Means算法计算最终的聚类中心。

1.4.3 ⼆分k-means

实现流程:
1.所有点作为⼀个簇
2.将该簇⼀分为⼆
3.选择能最⼤限度降低聚类代价函数(也就是误差平⽅和)的簇划分为两个簇。
4.以此进⾏下去,直到簇的数⽬等于⽤户给定的数⽬k为⽌。
在这里插入图片描述
因为聚类的误差平⽅和能够衡量聚类性能,该值越⼩表示数据点越接近于他们的质⼼,聚类效果就越好。所以需要对误
差平⽅和最⼤的簇进⾏再⼀次划分,因为误差平⽅和越⼤,表示该簇聚类效果越不好,越有可能是多个簇被当成了⼀个
簇,所以我们⾸先需要对这个簇进⾏划分。

1.4.4 k-medoids(k-中⼼聚类算法)

K-medoids和K-means是有区别的,不⼀样的地⽅在于中⼼点的选取
K-means中,将中⼼点取为当前cluster中所有数据点的平均值,对异常点很敏感!
K-medoids中,将从当前cluster 中选取到其他所有(当前cluster中的)点的距离之和最⼩的点作为中⼼点。

算法流程:

( 1 )总体n个样本点中任意选取k个点作为中心点
( 2 )按照与中心点最近的原则,将剩余的n-k个点分配到当前最佳的中心点代表的类中
( 3 )对于第i个类中除对应中心点外的所有其他点,按顺序计算当其为新的中心点时,代价函数的值,遍历所
有可能,选取代价函数最⼩时对应的点作为新的中心点
( 4 )重复2-3的过程,直到所有的中心点不再发⽣变化或已达到设定的最⼤迭代次数
( 5 )产出最终确定的k个类

1.5 特征降维

1.5.1 定义

降维是指在某些限定条件下,降低随机变量(特征)个数,得到⼀组“不相关”主变量的过

1.5.2 降维的两种⽅式

  • 特征选择
  • 主成分分析(可以理解⼀种特征提取的⽅式)
1.5.2.1 特征选择定义

数据中包含冗余或⽆关变量(或称特征、属性、指标等),旨在从原有特征中找出主要特征。

下面说一下下面两种方法

  • ⽅差选择法:低⽅差特征过滤
  • 相关系数
1.5.2.1.1 低⽅差特征过滤

删除低⽅差的⼀些特征,前⾯讲过⽅差的意义。再结合⽅差的⼤⼩来考虑这个⽅式的⻆度。
特征⽅差⼩:某个特征⼤多样本的值⽐较相近
特征⽅差⼤:某个特征很多样本的值都有差别

  • sklearn.feature_selection.VarianceThreshold(threshold = 0.0)
    • 删除所有低⽅差特征
    • Variance.fit_transform(X)
      • X:numpy array格式的数据[n_samples,n_features]
      • 返回值:训练集差异低于threshold的特征将被删除。默认值是保留所有⾮零⽅差特征,即删除所有样本中
        具有相同值的特征。
1.5.2.1.2 相关系数
  • 主要实现⽅式:
    • ⽪尔逊相关系数
    • 斯⽪尔曼相关系数
1.5.2.2 主成分分析

定义:⾼维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据、创造新的变量
作⽤:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。

API

  • sklearn.decomposition.PCA(n_components=None)
    • 将数据分解为较低维数空间
    • n_components:
      • ⼩数:表示保留百分之多少的信息
      • 整数:减少到多少特征
    • PCA.fit_transform(X) X:numpy array格式的数据[n_samples,n_features]
  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值