机器学习-聚类算法-k-means
聚类
聚类算法:(无监督的分类算法,核心是要确定类别(簇或组的个数)和相似性度量方法
聚类分析的作用:
作为一个独立的工具来获取数据集中数据的分布情况
-
首先对数据集进行聚类从而获取所有簇;
-
然后每个簇中样本数目获取数据大体分布情况。
作为其他数据挖掘算法的预处理步骤(可以将数据集细化进行进一步处理)
-
对数据集进行聚类获取粗分类
-
然后分别对每个簇进行特征提取和细分类
yolo中的几种anchor的尺寸就是通过k-means聚类获取的
聚类分析方法:划分法(以距离作为数据集的相似性度量划分簇:k-means,k-medoids)、层次法(对数据集进行层次分解形成一个树形的聚类结果:自顶向下法(分裂算法))、密度法(DBSCAN、谱聚类)
相似性计算方法:
通常使用样本之间的距离,而样本之间的距离是在样的描述属性也就是特征是进行计算的,属性的描述在不同领域会有不同,由连续、二值、多值、混合等。
1 连续性属性的相似性计算方法:
-
欧式距离
-
曼哈顿距离
-
闵可夫斯基距离
2 二值型离散型属性的相似性计算方法(通常只有两个属性,一般取值0和1):
-
属性是对称的情况(取1和取0 的权重是一样的,比如性别):
表中abcd是样本的个数,得到可能性矩阵,然后使用简单匹配系数(Simple Matching Coefficient)进行样本间距离的计算
SMC=(b+c)/(a+b+c+d)
Xi Xj |
1 |
0 |
sum |
1 |
a |
b |
a+b |
0 |
c |
d |
c+d |
sum |
a+c |
b+d |
p |
-
属性不对称:上表使用Jaccard系数计算
JC = (b+c)/(a+b+c)
3 多值离散型属性的相似性计算:
-
简单匹配方法
d(Xi, Xj)=(d-u)/d d为数据集中属性的个数,u为两个样本之间取值相同的属性的个数
-
先将多值离散型属性转换成多个二值离散型属性,然后使用Jaccard系数计算
将每一个属性的取值使用二进制进行转换从而变成0、1取值,转换成二值离散型属性
4 混合类型属性的相似性计算方法
-
对属性值进行预处理,预处理后的样本只包含连续型属性和二值离散型属性
a 对连续型属性,将其各种取值进行规范化处理,使得属性取值在0和1之间
b 将多值离散型属性的取值转换为多个二值离散型属性
-
计算公式:
k-means聚类算法-> 由簇中样本的平均值代表整个簇
:给定n个样本的数据集,以及要生成的k个簇,划分方法将样本组织为k个划分,k小于等于n,每一个划分代表一个簇。为无监督学习算法,n和k是已知。
划分准则:
同一个簇中的样本要尽可 能的接近或者相似,不同簇中的样本尽可能远离或者不相似。
相似度量:
样本间的距离
算法思想:
初始随机给定k个簇中心,按照最邻近原则(knn)及那个待分类的样本点分到各个簇。然后按照平均法重新计算各个簇的质心,从而确定新的簇心,以此为循环迭代,直到簇心的移动距离小于某个给定的值。
随机初始簇中心的选择不同会影响到最终的分类,尤其是数据样本比较少的情况下。