zoukankan      html  css  js  c++  java
  • k-means 聚类算法

    《机器学习》周志华 k均值算法学习笔记

    聚类

    无监督学习中的研究最多的应用最广的算法。
    通过对无标记训练样本的学习来获得数据内在的规律。

    “聚类将能够像数据集中的样本划分为通常不相交的子集,每一个子集称为簇。”——《机器学习》周志华

    性能度量

    我们希望“物以类聚”,同一簇的样本尽可能相似,不同簇的样本尽量不同。性能度量就是评估聚类结果的好坏。
    聚类的性能度量的两个指标:外部指标和内部指标。两者的区别在于有没有外界参考模型提供参考。

    常用的聚类性能度量外部指标

    Jaccard系数:
    FM 指数:
    Rand指数:
    这些性能度量结果值在[0,1]且越大约好。

    常用的聚类性能度量内部指标

    DB指数:
    DB指数越小越好。
    Dunn指数:
    Dunn指数越大越好。

    距离计算

    距离度量的函数需要满足4个基本性质:非负性,同一性,对称性,直递性。 直递性不好理解,可以理解为三角形两边之和大于第三边。
    非直递性的例子:人马例子。
    假如人与人马的相似距离为1,马与人马的相似距离也为1,但是人与马的不相似,距离为5。1+1<5,这里不满足直递性,不能作为度量距离。所以要基于具体的数据来决定合适的距离计算式。
    给定两个样本xi, xj,每个样本具有n个特征,计算这两个样本特征的距离(相似度)常用闵可夫斯基距离(Minkowski distance)

    distmb(xi,xj)=(u=1n|xiuxju|p)1p

    p = 1时称为曼哈顿距离;p = 2时称为欧氏距离。
    把直接能在属性上计算距离的属性,如{1, 2, 3},1与2近离3远,称为有序属性
    闵可夫斯基距离用于计算有序属性。
    不能直接在属性上计算距离的属性,如{人,马,鸟},称为无序属性
    无序属性用VDM (Value Difference Metric) 计算,mu,a表示在属性u上取值为a的样本数,mu,a,i表示在第i个样本簇中在属性u上取值为a的样本簇数,k为样本簇数,属性u上的两个离散值a,b之间的VDM距离为
    VDMp(a,b)=i=1k|mu,a,imu,amu,b,imu,b|p

    不同的聚类方法

    • 原型聚类。假设聚类结构可以通过一组原型刻画。
    • 密度聚类。聚类结构可以通过样本分布的紧密程度确定。
    • 层次聚类。在不同层次生对数据进行划分。

    原型聚类

    假设聚类结构能够通过一组原型刻画,不同的原型表示、求解方法会产生不同算法,常用的有:

    • k均值算法
    • 学习向量量化
    • 高斯混合聚类

    k均值算法

    给定样本集D={x1,x2,...,xm},k均值算法针对聚类所的簇C={C1,C2,..,Ck}划分最小平方误差

    E=i=1kxCixui22,

    其中ui=1|Ci|xCix是Ci的均值向量。
    E很难求,实际上式通过迭代优化求解。

    算法流程:
    输入: 样本集和簇数k
    过程:
    (1)随机选择k个样本组成初始均值向量(簇均值);
    (2)计算每一个样本与初始均值向量的距离;
    (3)根据最近原则把样品划入相应的簇;
    (4)计算新的簇均值并更新当前簇均值;
    (5)重复(2)-(5),若迭代更新后聚类结果不变,返回簇分类结果。
    输出:簇划分C={C1,C2,..,Ck}

  • 相关阅读:
    Java BEAN与EJB的区别
    Java设计模式(22)命令模式(Command模式)
    Java设计模式(21)访问模式(Visitor者模式)
    Java设计模式(20)观察者模式(Observer模式)
    Java设计模式(19)状态模式(State模式)
    Java设计模式(18)策略模式(Strategy模式)
    Java设计模式(17)解释器模式(Interpreter模式)
    Java设计模式(16)中介模式(Mediator模式)
    Java设计模式(15)备忘录模式(Memento模式)
    C# SignalR 即时通讯 聊天室
  • 原文地址:https://www.cnblogs.com/siucaan/p/9623217.html
Copyright © 2011-2022 走看看