【数据挖掘】KNN K-means

小白学数据,只为记录学习进程,对每个问题有新的理解会及时更正。

一、KNN
KNN(K临近算法),是有监督的分类算法,用于把未知分类的样本点,通过计算附近K个,最近的,已分类的样本点,通过这K个样本点的投票决定,将未知样本点分类到哪一类的样本群中。

步骤:
1.选择合适的距离(欧氏距离,曼哈顿距离)
2.计算未分类样本点到其他已分类样本点的距离(当样本量较小,可以计算出距离,当样本点过大,可以使用K-d树来选择需要计算的样本点)
3.针对计算出来的距离,将样本点升序排列
4.选择最近的K个点
【数据挖掘】KNN K-means_第1张图片
当K过分小时,比如K=1,会非常受最近几个点的影响,受到噪声影响较大,一发生过拟合;
当K过分大时,会使现有训练集的误差增大,输入不相似的训练集,会导致预测错误。

5.通过K个最近已知样本,进行投票分类,来决定位置样本的所属类。

优点:
1.简单易实现
2.对噪声不敏感,适合分类问题

缺点:
1.当数据量较大,计算距离会有很大的复杂度(改进:用K-d树结构,代替一般的距离,进行选择)
2.当样本分布不均匀时,会出现预测偏差(改进:在每个样本前加上权重,距离未分类样本越远的点,权重越小,一般权值选择距离的倒数)

二、K-Means
K-Means是一个无监督,聚类算法。对一群簇,把有相似特征的样本聚在一起。

步骤:
1.确定分类的簇的个数(K)(K值选取的方法:k-means最优K值的选取)
2.选取K个初始质心(尽量不要选择很偏远的点作为初始质心,容易陷入局部最优)
3.计算每个样本点到K个质心的距离
4.将样本点划分到距离最近的质心的簇当中
5.更新每个簇的质心
6.重复3-5,直到样本点的划分不再改变为止

优点:
1.原理简单,容易实现
2.对高斯分布的数据的聚类效果很好

缺点:
1.K值选取不好把握
2.依赖于初始质心的选取,若初始质心选取不好,容易陷入局部最优
3.对圆环类数据聚类效果比较差
(圆环数据:【数据挖掘】KNN K-means_第2张图片

你可能感兴趣的:(数据挖掘)