zoukankan      html  css  js  c++  java
  • 【机器学习】K均值算法(I)

    K均值算法是一类非监督学习类,其可以通过观察样本的离散性来对样本进行分类。

    例如,在对如下图所示的样本中进行聚类,则执行如下步骤

    1:随机选取3个点作为聚类中心。

    2:簇分配:遍历所有样本然后依据每个点到最近距离进行分类。(在图 中用不同颜色标出)

    3:移动聚类中心到各个分类样本的平均中心。

    然后再次根据新的聚类中心划分分类簇,原理同步骤2,再执行步骤3 不断循环,直到聚类中心保持不变。

    最后结果:

    如果用μ1 μ2---μ k来表示聚类中心,用c 1 c 2---c m 用来存储第i个实例数据最近的聚类中心索引,k-均值算法如下:

    repeat{

    for i = 1 to m

    c i := index(from1 to K)索引中最接近x(i)的聚类.

    for k = 1 to K

    μ k := 所有该聚类点的几何平均值 

    }

    算法分为两个部分,第一个for循环是赋值的步骤,即就是对于每一个样例i,计算其应该属于的类。

    第二个for循环是聚类中心的移动,即对于每一个类k,重新计算该类的质心。

    K均值算法也可以很便利的用在讲数据分组,即使没有很明显区分的情况下。

    优化目标:

    k均值最小化问题,是要最小化所有的数据点与其说关联的聚类中心点之和,因此K均值函数又称畸变函数。

    如图所示的畸变函数中,μc(i)代表x(i)最近的聚类中心点。我们的优化目标便是找到是的代价函数最小的c1 c2 ...c m和μ1 μ2 ...μk

    回顾刚才所给出的K均值迭代算法,我们知道,第一循环用于减小c i 引起的代价,二第二个循环的作用是用于减小μ i引起的代价。迭代过程中一定是每一次迭代都在减小代价函数,不然便会出现错误。

  • 相关阅读:
    BZOJ2219数论之神——BSGS+中国剩余定理+原根与指标+欧拉定理+exgcd
    Luogu 3690 Link Cut Tree
    CF1009F Dominant Indices
    CF600E Lomsat gelral
    bzoj 4303 数列
    CF1114F Please, another Queries on Array?
    CF1114B Yet Another Array Partitioning Task
    bzoj 1858 序列操作
    bzoj 4852 炸弹攻击
    bzoj 3564 信号增幅仪
  • 原文地址:https://www.cnblogs.com/KID-XiaoYuan/p/7368049.html
Copyright © 2011-2022 走看看