常见机器学习算法原理+实践系列5(KNN分类+Keans聚类)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见机器学习算法原理+实践系列5(KNN分类+Keans聚类)相关的知识,希望对你有一定的参考价值。
一,KNN分类
K-Nearest Neighbor K临近算法是一种有监督的分类算法,工作原理很简单,存在一个样本集合,也成为训练样本,样本中包含标签,将新数据的每个特征与样本集合的数据对应特征进行比较,然后提取样本最相似的分类标签,k就是选择的最相似的数据点,选择k个点中出现频率最高的分类,就是新数据的分类。一般来说k不会超过20个。Knn有两个细节需要注意,一个是相似度算法,常用包含欧式距离,余弦距离等等,另外一个在计算相似度之前需要归一化特征,比如使用离差标准化(Min-Max),把所有特征都转换到[0,1]之间,转换公式为newx=(x-min)/(max-min)。
KNN分类在很多应用场景都有广泛的应用,比如电影分类,手写字体识别等等。比如在电影分类中,使用两个特征,一个是接吻次数,一个是打斗次数。包含两种分类,一种是爱情片,一种是动作片。
下面使用python简单演示一个KNN例子:
又如在手写识别系统中,首先是把每个手写图片都生成一个像素向量,然后把对应的标签(也就是代表特定的字,如1,2,3,4等等)保存起来作为训练样本,然后求出新手写输入向量的K个临近字,在进行投票判定。
二,K-Means聚类
K均值聚类算法是一个典型的基于距离的非层次聚类算法,属于无监督算法。简单来说就是给定一个数据集和需要划分的数目k后,根据某个距离函数反复把数据划分到k个簇中,直到收敛为止。算法使用簇中对象的平均值来表示划分的每个簇,大致步骤是随机抽取k个数据点作为初始的聚类中心点,然后计算每个数据点到每个种子中心距离,并把每个数据点分配到距离它最近的种子中心,一旦所有的数据点都被分配完成,每个聚类的聚类中心按照本聚类的所有数据点重新计算;这个过程不断重复,直到收敛或者满足某个终止条件,比如误差平方和SSE局部最小。
K均值聚类与k中心点的区别:
K中心点不采用簇中对象的平均值作为簇中心,而是选用簇中距离平均值最近的对象作为中心。
应用场景:
1) 精细化运营,针对不同的分群有不同的对策,或者分别细化建模。
2) 聚类类别可以作为新的字段加入其他模型的搭建中。
3) 数据摸索,发现孤立点,异常值。这些点可能是噪音,需要排除。
K均值聚类有几个细节需要注意:
1)k如何确定
没有最好的办法。可以灵活选择,比如一个有趣的策略就是首先采用层次聚类算法,来初步预估k的数目。
2)初始k个点如何选取
常见的算法就是随机选。但是往往效果不是很好,也可以类似以上的办法,线采用层次聚类算法进行划分k个簇,并用这些簇的质心作为初始质心。
3)计算距离的方法
常用的如欧式距离,余弦夹角相似度。
4)算法停止条件
迭代次数达到最大值,某个目标函数达到最优。
5)特征标准化
如min-max方法,newx=(x-min)/(max-min)
或者z-score方法,newx=(x-means)/S,其中mean是均值,S是样本数据标准差。
6)聚类变量要少而精
可以通过这几种方式来降维,如相关性检测,PCA主成份分析。
7)评价指标
RMSSTD(Root-Mean-Square Standard Deviation)群体中所有变量的综合标准差,越小表明簇中相似度越高,聚类效果越好RMSSTD2,其中Si为第i个变量的标准差之和,P为变量的数量。
以上是关于常见机器学习算法原理+实践系列5(KNN分类+Keans聚类)的主要内容,如果未能解决你的问题,请参考以下文章