目录
之前博客中讲的模型基本上都是分类以及回归模型,他们都是属于有监督学习的,意为所有的样本都有一个结果值提供,我们所要做的就是在原有结果值的指导(监督)下使机器拟合结果,从而学习规律。而聚类是无监督学习,就是指没有一个结果值的提供。聚类本身需要做的是对大量未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较大而类别间的数据相似度较小。
相似度/距离
那么如何判断两个样本之间的距离或者是相似度呢。
最简单想法就是
闵可夫斯基距离(Minkowski):
当p为1时即曼哈顿距离,也就是L1norm。p为2时为欧氏距离,也就是L2norm
闵可夫斯基距离主要是以空间中两点的距离作为度量。而如果我们想把样本表达成向量以他们的角度为相似性的度量,我们就可以用
余弦相似度(cosine similarity):
在实际的应用时,我们经常会把数据做标准化,
皮尔逊相似系数(Pearson)就是把两组数据标准化处理之后的向量夹角的余弦。
而当样本可以表达为集合的时候(比如推荐清单,购买清单等),我们则可以使用
杰卡德相似系数(Jaccard) 来表达样本间的相似性:
对于分类问题我们通常使用相对熵(K-L距离)
k-Means算法
k-Means算法,也被称为k-平均或k-均值,是一种广泛使用的聚类算法,或者成为其他聚类算法的基础。
假定输入样本为,则算法步骤为:
选择初始的k