K-means 算法是无监督的 聚类算法,算法简单,有效。

K-means算法:

输入参数:

  指定聚类数目 k,训练集 X

输出 :

  k 个聚类

算法描述:

  K-means 算法 是一个 迭代算法,每次迭代分成两个步骤:

    1)指定聚类步骤:

      计算每个样本到 k 个 聚类中心的 距离,将样本归类到 距离 聚类中心 最小的那个类别

    2)移动聚类中心步骤:

      根据每个聚类所拥有的样本点,重新计算每个聚类的中心

伪代码描述:

  随机初始化 k 个聚类的 中心 u(1), u(2)... u(k)

  repeat {

    for i = 1 to m # 假设有m 个样本

      c(i) = 聚类中心 离 X(i) 最近的那个聚类的下标索引 #(1,2... k)

    for i = 1 to k # k 个类别

      u(i) =  属于 i 聚类所有 点的 平均值,即 中心  

  }

  注意:停止条件可以自己设定,比如 归类不再发生变化,或者最多 N次迭代 等

K-means算法 = 优化问题:

  K-means的优化目标:

    J(c(1), c(2)...c(m), u(1), u(2)...u(k)) = 1/2 * sum( ||x(i) - uc(i) || ^2)

    min J

  对应到算法:

    1)指定聚类步骤时,保持聚类中心不变,通过改变每个样本所属聚类来最小化 J;

    2)移动聚类中心步骤时,通过移动调整聚类中心 来 最小化 J。

    

K-means算法存在问题:

  往往K-means算法的解空间存在多个满足 J 局部最小值,因此K-means算法得到的解,很有可能只是满足 J 局部最小的那个解,而不是全局最小的那个解。

一种避免方案:

  运行 K-means 算法 n 次,比如 n = 100 次,每次 都是 随机初始化 k 个 聚类中心, 然后迭代最后收敛得到 k 个 聚类。

  最后,依此计算 这 n 次 J 值,选择 J 值 最小那次 得到的 k 个 聚类

如何选择 k?:

  计算 J 随着 k 数目变化 而 如何变化,k = 1, 2 ..

  如果选择的 k 是 发生比较明显转折的那个点,就叫做 elbow method

K-means算法简介的更多相关文章

  1. 李航统计学习方法(第二版)(五):k 近邻算法简介

    1 简介 k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类.k近邻法假设给定一个训练数据集,其中的实例类别已定.分类时,对新的实例,根据其k个最近邻的训练实例的类别,通 ...

  2. KNN 与 K - Means 算法比较

    KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...

  3. K-means算法

    K-means算法很简单,它属于无监督学习算法中的聚类算法中的一种方法吧,利用欧式距离进行聚合啦. 解决的问题如图所示哈:有一堆没有标签的训练样本,并且它们可以潜在地分为K类,我们怎么把它们划分呢?  ...

  4. 排列熵算法简介及c#实现

    一.   排列熵算法简介: 排列熵算法(Permutation Entroy)为度量时间序列复杂性的一种方法,算法描述如下: 设一维时间序列: 采用相空间重构延迟坐标法对X中任一元素x(i)进行相空间 ...

  5. 机器学习——KNN算法(k近邻算法)

    一 KNN算法 1. KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分 ...

  6. 【算法】K最近邻算法(K-NEAREST NEIGHBOURS,KNN)

    K最近邻算法(k-nearest neighbours,KNN) 算法 对一个元素进行分类 查看它k个最近的邻居 在这些邻居中,哪个种类多,这个元素有更大概率是这个种类 使用 使用KNN来做两项基本工 ...

  7. <转>从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转自 http://blog.csdn.net/likika2012/article/details/39619687 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经 ...

  8. 《算法图解》——第十章 K最近邻算法

    第十章    K最近邻算法 1 K最近邻(k-nearest neighbours,KNN)——水果分类 2 创建推荐系统 利用相似的用户相距较近,但如何确定两位用户的相似程度呢? ①特征抽取 对水果 ...

  9. PageRank 算法简介

    有两篇文章一篇讲解(下面copy)< PageRank算法简介及Map-Reduce实现>来源:http://www.cnblogs.com/fengfenggirl/p/pagerank ...

  10. 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    转载自:http://blog.csdn.net/v_july_v/article/details/8203674/ 从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 前言 前两日,在微博上说: ...

随机推荐

  1. Spring Boot 系列教程6-全局异常处理

    @ControllerAdvice源码 package org.springframework.web.bind.annotation; import java.lang.annotation.Ann ...

  2. php 四种基础算法 ---- 插入排序法

    3.插入排序法 插入排序法思路:将要排序的元素插入到已经 假定排序号的数组的指定位置. 代码: function insert_sort($arr) {    //区分 哪部分是已经排序好的    / ...

  3. android 检测是否插入U盘方法之一

    本方法是检测文件/proc/partitions. import java.io.*; File Usbfile = new File("/proc/partitions");if ...

  4. 解决IOS safari在input focus弹出输入法时不支持position fixed的问题

    该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position ...

  5. java super关键字

    子类用super操作被隐藏的成员变量和方法 Example5_7.java class Sum { int n; float f() { float sum=0; for(int i=1;i<= ...

  6. SVM支持向量机算法

    支持向量机(SVM)是另一类的学习系统,其众多的优点使得他成为最流行的算法之一.其不仅有扎实的理论基础,而且在许多应用领域比大多数其他算法更准确.  1.线性支持向量机:可分情况 根据公式(1)< ...

  7. Universal-Image-Loader分析:

    Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示.权限: <uses-permission ...

  8. [LeetCode] Magical String 神奇字符串

    A magical string S consists of only '1' and '2' and obeys the following rules: The string S is magic ...

  9. 在window系统下搭建基于ssh的git服务器

    以下是基于window server 2012搭建的,学习搭建过程需要很多问题,找了许多文章做了一下总结. 1.所需的软件 Git for Windows: MsysGit(Git-1.7.4-pre ...

  10. nginx slab内存管理

    本来这一篇作为nginx系列的开头是不合适的,不过由于nginx进程框架自己的梳理还没完成,这部分又刚好整理完了,就从这开始吧.这儿谈的是nginx的slab的内存管理方式,这种方式的内存管理在ngi ...