zoukankan      html  css  js  c++  java
  • K-均值聚类(chap10)Machine Learning In Action学习笔记

    优点:容易实现。
    缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢。
    适用数据类型:数值型数据。
     
    k均值是发现给定数据集的k个簇的算法。簇个数k是用户给定的,每一个簇通过其质心(centroid),即簇中所有点的中心来描述。
    工作流程:首先,随机确定k个初始点作为质心。然后将数据集中的每个点分配到一个簇中,具体来讲,为每个点找距其最近的质心,并将其分配给该质心所对应的簇。这一步完成之后,每个簇的质心更新为该簇所有点的平均值。
    上述过程伪代码:
    创建k个点作为起始质心(经常是随机选择
    当任意一个点的簇分配结果发生改变时
         对数据集中的每个数据点
              对每个质心
                   计算质心与数据点之间的距离
              将数据点分配到距其最近的簇
         对每一个簇,计算簇中所有点的均值并将均值作为质心
     
    K均值聚类的一般流程 
    收集数据:使用任意方法。
    准备数据:需要数值型数据来计算距离,也可以将标称型数据映射为二值型数据再用于距离计算。
    分析数据:使用任意方法。
    训练算法:不适用于无监督学习,即无监督学习没有训练过程
    测试算法:应用聚类算法、观察结果。可以使用量化的误差指标如误差平方和(后面会介绍)来评价算法的结果。
    使用算法:可以用于所希望的任何应用。通常情况下,簇质心可以代表整个簇的数据来做出决策
     
    k均值算法收敛到了局部最小值,而非全局最小值(局部最小值指结果还可以但并非最好结果,全局最小值是可能的最好结果)。
    SSE(Sum of Squared Error,误差平方和):一种用于度量聚类效果的指标。SSE值越小表示数据点越接近于它们的质心,聚类效果也越好。因为对误差取了平方,因此更加重视那些远离中心的点。
     
    两种后处理来提高聚类性能:合并最近的质心,或者合并两个使得SSE增幅最小的质心。
     
    二分k均值(bisecting K-means):
    为克服k均值算法收敛于局部最小值的问题。
    该算法首先将所有点作为一个簇,然后将该簇一分为二。之后选择其中一个簇继续进行划分,选择哪一个簇进行划分取决于对其划分是否可以最大程度降低SSE的值。上述基于SSE的划分过程不断重复,直到得到用户指定的簇数目为止。
     
    二分k均值算法的伪代码形式如下:
    将所有点看成一个簇
    当簇数目小于k时
        对于每一个簇
            计算总误差
            在给定的簇上面进行K均值聚类(K=2)
            计算将该簇一分为二之后的总误差
        选择使得误差最小的那个簇进行划分操作
     
     





  • 相关阅读:
    解决一起web 页面被劫持的案例
    django rest framwork教程之外键关系和超链接
    django restframwork 教程之authentication权限
    Puppet nginx+passenger模式配置
    Django restframwork教程之类视图(class-based views)
    使用emplace操作
    C++中的显示类型转换
    整数加法
    在不知道学生人数和每个学生课程数量的情况下对学生的平均成绩排序
    树的高度
  • 原文地址:https://www.cnblogs.com/woaielf/p/5533942.html
Copyright © 2011-2022 走看看