1. 聚类(Clustering)

1.1 无监督学习: 简介

在一个典型的监督学习中,我们有一个有标签的训练集,我们的目标是找到能够区分正样本和负样本的决策边界,在这里的监督学习中,我们有一系列标签,我们需要据此拟合一个假设函数。与此不同的是,在非监督学习中,我们的数据没有附带任何标签,我们拿到的数据就是这样的:

非监督学习中,我们需要将一系列无标签的训练数据,输入到一个算法中,然后我们告诉这个算法,快去为我们找找这个数据的内在结构给定数据。我们可能需要某种算法帮助我们寻找一种结构。图上的数据看起来可以分成 两个分开的点集(称为簇),一个能够找到我圈出的这些点集的算法,就被称为聚类算法

这将是我们介绍的第一个非监督学习算法。当然,此后我们还将提到其他类型的非监督学习算法,它们可以为我们找到其他类型的结构或者其他的一些模式,而不只是簇。

1.11 聚类算法用途

1.2 K-均值算法

K-均值 是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组。

K-均值 是一个迭代算法,假设我们想要将数据 聚类成n个组,其方法为:

  • 首先选择 K 个随机的点,称为聚类中心cluster centroids);

  • 簇分配:对于数据集中的每一个数据,按照 距离 K个中心点的距离,将其 与距离最近的中心点 关联起来,与 同一个中心点 关联的所有点聚成一类

  • 移动聚类中心:计算每一个组的平均值,将该组 所关联的中心点 移动到 该组平均值的位置

  • 重复步骤2-4直至中心点不再变化。

下面是一个聚类示例:

                           (簇分配)                                             (移动聚类中心)

重复该步骤。

Repeat {

    for i =  to m   # 簇分配

      c(i) := index (form  to K) of cluster centroid closest to x(i)       # 是接近 哪一个聚类中心 k; c(i) = min_k:||x^(i) - u_k||^2

    for k =  to K   # 移动聚类中心

      μk := average (mean) of points assigned to cluster k

}

注意:

  • 没有分配点的聚类中心直接删除;

  • K-均值算法也可以很便利地用于将数据分为许多不同组,即使在 没有非常明显区分的组群 的情况下也可以。

  • 下图所示的数据集包含 身高和体重 两项特征构成的,利用K-均值算法将数据分为三类,用于帮助确定将要生产的T-恤衫的三种尺寸。

1.3 优化目标

K-均值最小化问题:最小化 所有的数据点其所关联的聚类中心点 之间的 距离之和,因此 K-均值的代价函数(又称畸变函数 Distortion function)为:

$$J(c^{(1)},...,c^{(m)},μ_1,...,μ_K)=\dfrac {1}{m}\sum^{m}_{i=1}\left\| X^{\left( i\right) }-\mu_{c^{(i)}}\right\| ^{2}$$

其中 ${{\mu }_{{{c}^{(i)}}}}$ 代表与 ${{x}^{(i)}}$ 最近的聚类中心点。

优化目标

  • 找出使得代价函数最小的 $c^{(1)}$,$c^{(2)}$,...,$c^{(m)}$ 和 $μ^1$,$μ^2$,...,$μ^k$:
  • (代价函数会一直变小,不可能上升)

1.4 随机初始化

在运行K-均值算法的之前,我们首先要 随机初始化 所有的聚类中心点,下面介绍怎样做:

  1. 我们应该选择 $K<m$,即 聚类中心点的个数 要小于 所有训练集实例的数量
  2. 随机选择 $K​$ 个训练实例,然后令 $K​$ 个聚类中心分别与这 $K​$ 个训练实例相等

K-均值 的一个问题在于,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。

尝试多次随机初始化

1.5 选择聚类数

没有所谓最好的 选择聚类数目 的方法,通常是需要根据不同的问题,人工进行选择的。选择的时候思考我们运用K-均值算法聚类的动机是什么,然后选择能 最好 服务于该目的 的聚类数

当人们在讨论,选择聚类数目 的方法时, “肘部法则”

  • 改变 值,也就是 聚类类别数目的总数。我们用一个聚类来运行 K均值聚类方法。

  • 这就意味着,所有的数据都会分到一个聚类里,然后计算成本函数或者计算畸变函数 代表聚类数字。

机器学习课程-第8周-聚类(Clustering)—K-Mean算法的更多相关文章

  1. 机器学习(九)-------- 聚类(Clustering) K-均值算法 K-Means

    无监督学习 没有标签 聚类(Clustering) 图上的数据看起来可以分成两个分开的点集(称为簇),这就是为聚类算法. 此后我们还将提到其他类型的非监督学习算法,它们可以为我们找到其他类型的结构或者 ...

  2. 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)

    1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...

  3. 机器学习课程-第7周-支持向量机(Support Vector Machines)

    1. 优化目标 在监督学习中,许多学习算法的性能都非常类似,因此,重要的不是你该选择使用学习算法A还是学习算法B,而更重要的是,应用这些算法时,所创建的大量数据在应用这些算法时,表现情况通常依赖于你的 ...

  4. Andrew Ng机器学习课程,第一周作业,python版本

    Liner Regression 1.梯度下降算法 Cost Function 对其求导: theta更新函数: 代码如下: from numpy import * import numpy as n ...

  5. Andrew Ng机器学习课程笔记--汇总

    笔记总结,各章节主要内容已总结在标题之中 Andrew Ng机器学习课程笔记–week1(机器学习简介&线性回归模型) Andrew Ng机器学习课程笔记--week2(多元线性回归& ...

  6. SIGAI机器学习第二十四集 聚类算法1

    讲授聚类算法的基本概念,算法的分类,层次聚类,K均值算法,EM算法,DBSCAN算法,OPTICS算法,mean shift算法,谱聚类算法,实际应用. 大纲: 聚类问题简介聚类算法的分类层次聚类算法 ...

  7. 机器学习之&amp;&amp;Andrew Ng课程复习--- 聚类——Clustering

    第十三章.聚类--Clustering ******************************************************************************** ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类

    Lecture 13 聚类 Clustering 13.1 无监督学习简介  Unsupervised Learning Introduction 现在开始学习第一个无监督学习算法:聚类.我们的数据没 ...

  9. Stanford机器学习笔记-9. 聚类(Clustering)

    9. Clustering Content 9. Clustering 9.1 Supervised Learning and Unsupervised Learning 9.2 K-means al ...

随机推荐

  1. how-is-docker-different-from-a-normal-virtual-machine[Docker与VirtualMachine的区别]

    https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-normal-virtual-machine 被 ...

  2. JQuery插件:图片上传本地预览插件,改进案例一则。

    /* *名称:图片上传本地预览插件 v1.1 *作者:周祥 *时间:2013年11月26日 *介绍:基于JQUERY扩展,图片上传预览插件 目前兼容浏览器(IE 谷歌 火狐) 不支持safari *插 ...

  3. taskService 流程任务组件

    act_ru_task:任务表act_ru_identitylink:权限表(流程定义和用户组(用户)之间的权限数据)act_ru_variable:参数表act_hi_attachment:任务附件 ...

  4. Nginx rewrite模块深入浅出详解

    rewrite模块(ngx_http_rewrite_module) nginx通过ngx_http_rewrite_module模块支持url重写.支持if条件判断,但不支持else.另外该模块需要 ...

  5. FuelPHP 系列(六) ------ CURD 增删改查

    一.create $article = new Model_Article(); // 或 $article = Model_Article::forge(); // 保存数据,返回新增数据 id $ ...

  6. Node url模块

    const url = require("url");var u = "https://www.jd.com:443/ad/index?uname=qd";// ...

  7. c#异步编程(三)—ASP.NET MVC 异步控制器及EF异步操作

    ASP.NET MVC 异步控制器及EF异步操作 异步控制器 ASP.NET MVC2后开始了对异步请求管道的支持,异步请求管道的作用是允许web服务器处理长时间运行的请求,比如 那些花费大量时间等待 ...

  8. 【题解】N皇后

    题目描述 相信大家都听过经典的“八皇后”问题吧?这个游戏要求在一个8×8的棋盘上放置8个皇后,使8个皇后互相不攻击(攻击的含义是有两个皇后在同一行或同一列或同一对角线上). 桐桐对这个游戏很感兴趣,也 ...

  9. ceph PG数量调整/PG的状态说明

    优化: PG Number PG和PGP数量一定要根据OSD的数量进行调整,计算公式如下,但是最后算出的结果一定要接近或者等于一个2的指数.调整PGP不会引起PG内的对象的分裂,但是会引起PG的分布的 ...

  10. python -- 面向对象三大特性

    1,继承 1,初识继承 什么是继承? ——继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. 子类会“遗传”父类的属性,从而 ...