一 聚类算法简介
1.聚类和分类的区别
聚类 - 利用算法将相似或者相近的样本聚成一簇,这些样本都是无标签的,是一种无监督学习算法。
分类 - 首先需要从有标签样本学习出打标签逻辑,再利用学习出的逻辑对无标签样本进行分类,是一种有监督学习算法。
2.聚类的使用
聚类算法可以帮助我们认识数据,比如一批新闻文本,通过几次聚类的尝试,你可能就会知道这一批新闻文本主要分类几个类别。
聚类算法可以用于离群点检测,离群点检测可以应用在信用卡欺诈检测上 - “数据挖掘概念与技术”。
3.聚类的种类
划分法,将Ñ组数据划分到ķ个簇内。常用的算法包括K-均值,K-均值++,K-中心法等等。
层次发,自下而上或者自上而下的将Ñ组数据一步一步的划分,每一次划分的结果都将保存。
基于密度,将领域内包含超过阈值(大于设定密度)的数据点组合成可增长的簇,常用算法DBSCAN。
下面分别介绍这几种算法,并用Python的实现。
二 划分法
1.K均值
1).算法简介
算法的核心思想是将Ñ组样本划分成ķ簇(K是需要人输入的,该算法并不能自动判定要聚成几类),簇和簇之间的距离和最大。这样的一个问题直接求解的难度太大,实践中经常使用迭代(EM)的思路去求解。
如何迭代求解呢?
第一步:随机选择ķ个样本作为ķ簇的中心点
第二步:计算每个样本点到ķ中心点个的距离,将样本点归到离它最近的簇中
第三步:计算每个新簇的中心点
第四步:重复第二和第三步,直到簇的中心点不再变化,中心点的变动很少或者达到你定的最大迭代次数三个条件满足任何一个迭代就会停止。
通过迭代计算出的结果,通常是一个局部最优解,该结果依赖于初始中心点的选取。