当前课程知识点:R语言数据分析 >  下部:博术 >  第13章 方以类聚、物以群分 >  13.1 导引

返回《R语言数据分析》慕课在线视频课程列表

13.1 导引在线视频

下一节:13.2 划分方法

返回《R语言数据分析》慕课在线视频列表

13.1 导引课程教案、知识点、字幕

大家好

欢迎来到《R语言数据分析》课程

在前面课程里面我们简单讲解了一下

以分类为代表的有监督学习

从今天开始咱们简单交流一下

以聚类为代表的无监督学习相关的内容

我们通常有句话叫物以类聚

人以群分

假如我们再把这句话再往上追溯一下的话

在这个《易传》里面有一个类似的话叫

方以类聚 物以群分

当然在我们日常生活中说到

物以类聚人以群分的时候

绝大部分都是什么

都是一种定性的判断

他是不是跟我同一类的

非我族类 其心必异

类似这样的

它都是定性的判断

假如是通过定量的判断的话

那我们就是要引入这个聚类的分析

什么是聚类分析

我们先看几张图

先看这个左侧这个图

这是姚明和曾志伟

这个图是在网上流传很广

毫无疑问

假如我是说性别的话

他们是同一类的

都是男人对吧

但假如说身高的话

毫无疑问它们不是一类人

也就说从这个单一的维度来讲

单一的维度

从身高来讲

有些人是一类

另外一些人是另外一类

但是绝大部分情况之下我们在

对某个观测对象

进行判断进行分类的时候

我们不仅仅关注一个维度的信息

而且关注多个维度的信息

比如说我们下面这张图

这是年轻时的姚明

过渡过渡过渡一下过渡到什么

曾经的超女李宇春

假如我们从图像识别的角度来讲

这两张图像毫无疑问是非常非常相似

也就是说从图像本身来讲

他们应该归为同一类

那这种归为一类的话

毫无疑问

我考虑好多因素

它不仅仅说

像我们前面这个身高这一块单一的维度了

这里面可能图像里面很多特征我都得同时考虑

然后我再来判断

他们俩是同一类的 是比较相似的

也就是说 假如说我从定量角度来考虑的话

我需要考虑多个维度

比如说头发 鼻子 眼等等

就在这个张成的数据空间里面

假如我能拿到数据

有几个变量

有几个属性 有几个特征

它就相应的张成了几维的数据空间

那好

它在这个几维的数据空间里面

每一行都是相应的是一个点

也就是说每一个观测对象都是什么

表现为这个数据空间的一个点

那好

在这个数据空间里面

离得比较近的是一簇

离得比较远的是另外一簇

这就形成了一个自然的结构

这其实就是我们接下来要讲的什么

聚类分析

通过聚类来判断

哪一些是物以类聚 人以群分

哪些是人是一群

哪些物 哪些观测对象是一类

当然说到我们这个聚类分析

毫无疑问它还是类

它最终结果还是类 还是类别

因为一旦没有类别的概念的话

很多事情我们是没有办法认识的

我们刚才讲到了

比如说非我族类

其心必异

对吧

类同类似 或者不伦不类等等

都涉及到很多关于类的概念

那聚类分析的话

其实是找到类的一种定量的手段

就是数据分析里面找到类的一种定量手段

它的名字叫cluster analysis

简称聚类

也就说把我的数据对象划分成不同的群

不同的簇 不同的子集的过程

每一个子集是一个簇

大家注意了这个念簇不念族

就是一个cluster就是一个簇

我们聚类的目的是什么

就是使得簇里面的对象彼此相似

不同的簇的对象

彼此相异

就差别比较大

同一个簇比较相近

不同的簇离得比较远

我们说聚类分析是什么

虽然也是得到最终结果也是一类一簇一群

也是一个类别的划分

但它和有监督学习的分类是不一样的

什么意思

我的聚类分析

事先它是不知道我应该分成几类的

它也没有类标签

所以它是一个无监督的学习

不像这个分类

你即便划成数据空间

然后这个数据点还是可以贴上标签的

或者训练集里面已经贴好标签了

像我们这个无监督学习的话

就是只能根据什么这个数据空间

这么一个数据点

在数据空间里面本身距离的远近

它所形成的自然的结构

也就说我们具体分析目的就是什么

捕获这个数据空间本身所呈现的结构

有哪些结构

我们看一下

典型的

比如说有明显分离的簇

有基于中心的簇

有基于邻近的簇

有基于密度的簇等等

当然不仅仅是这些

还有其它一些

这四种是比较典型的

明显分离的簇什么意思

比如说假如我们以这个二维数据空间为例的话

毫无疑问左边是一簇

右边是另外一簇

对吧

这个时候我们可以发现

同一簇里面任意两点之间的距离

都比这个簇一个点到另外一个簇之间的

任何一点

它的距离要近

这个时候说是明显分离的簇

这是第一种

第二种是基于中心的簇

这个簇毫无疑问和左侧这个簇是不一样的

什么意思

毫无疑问

这里面比如说这个这是一个点

这边是另外一个点

那这个它和这个圈毫无疑问它离的其实是

并不是说

这个差

和同一群里面任何一个差相比较

它的距离都会比这个差和这个圈近 那不可能

对吧

但是我们还是认为这两个簇是有意义的

为什么呢

比如这里面一个簇中心 这里面一个簇中心

对吧

然后我这个所有的这个同一个簇里面

到我这个簇中心最近

或者说这个差离这个簇中心比较近

所以我归为这一簇

这个圈离另外这个簇中心比较近

所以归为另外这一簇

这是所谓的基于中心的簇

好 我们再看下面这一种

基于邻近的簇

我们这边一个S

有一个C

还有一个哑铃

我们都认为它是三簇

我们认为它是三簇

为什么这样认为是有意义的

我们看得出来它是联通的

对吧

这是联通的

这也是联通的

这个也是联通的

什么意思

就我的同一簇里面

我总能找到一个最近邻

我在同一簇里面总能找个小伙伴作为最近邻

然后他和他最近邻之间的距离

比到任何其他簇之间的距离都要近(和最近邻在同一簇)

是吧

所以我们是所谓的什么基于邻接的一个簇

也是个联通的一个片

这也是有意义的

再看这一种

我们毫无疑问可以看得出来

这里面一个S

这里面一个O 对不对

毫无疑问

这个时候我们一看

S也好

O也好

它都相对比较密

也就是说它衬托在这个其他的点之间

比较疏散

比较稀疏的点

作为背景

然后我这个S和这个O都是相对比较密集的

也说基于这个密度的簇

这其实我们通过这个二维的一个数据空间里面

一些那个典型的例子

看了一下

所谓的发现我们数据空间里面有意义的簇

它其实有好多类型

当然要发现这些不同的簇的话

需要有不同的方法

对聚类分析而言

它至少有这么一些

比如说划分的方法

层次聚类方法

基于密度的方法

基于网格的 基于模型的等等

因为无监督学习

应该说是未来的一个大的一个趋势

是一个非常有潜力的一个领域

所以它肯定不仅仅限于这么几种

但这几种是相对比较典型的

在咱们这门课里面只能讲

基于划分的方法

基于层次的方法

这两种比较经典的方法

无论是哪种方法

包括这个基于密度的方法

它其实最终都得换成

换算成关于点和点之间的距离关系

或者类和类之间的距离关系

所以我们先在讲具体算法模型之前

我们先讨论一下这个距离的计算的问题

假如我现在拿到的属性特征

它都是数值型变量的话

我们可以采用这个闵可夫斯基距离

我们看一下它怎么计算的

这时候拿到两个向量

Xi和Xj

相当于第i行和第j行

当我们开始学这个数据分析之后

尤其是通过R语言的话

那我们就把它具体想定

具体化一下

特征(向量)其实就是什么 就是行

是不是

就是数据框里面第i行第j行

那好

它具体是怎么算这个距离

大家看k的话就相当于第k列

对吧

第一列之间的差别

P次方

第二列之间的差别

P次方

然后再括符加起来

加起来括符 再求P分之一次方

这个时候就是闵可夫斯基距离

就是不同的分量上的差别

然后再综合这么一个过程

这个闵可夫斯基距离其实是一组

它是一组距离

当我这个P取2的时候

毫无疑问是欧式距离

当我的P取1就是曼哈顿距离

或者街区距离

出租车距离是吧

这个数值型变量的这么一个情况

假如我们对于文本的数据的话

我们一般采用余弦相似性

余弦相似性

这个相似和这个距离是正好对应的

正好是一个相对的关系

相对的关系

我们看这个相似性怎么求

大家看一下

相似性的话

一看这个公式其实就很熟了

上面是什么

上面是个内积

下面是一个规范化的过程

一个标准化的过程

对吧

毫无疑问

当我把这个X第i行和第j行这个内积换一下

比如Xi换成Xi减它的平均值 Xi-mean(Xi)

Xj也减它的平均值的话 Xj-mean(Xj)

毫无疑问这变成什么了

这个时候就变成什么

变成了这个所谓的相关性 Pearson相关系数

同样它和什么协方差等等都结合起来了

毫无疑问这个余弦相似性和我们前面讲到了

这个相关性

这个内积

和这个协方差等等

都是相通的

具体来讲

在R里面要实现这个距离计算的话

前面这个闵可夫斯基距离等等

都可以通过dist()来计算

当然也有可能是一种混合型的

比如说我这个特征里面既有这个数值向量

也有这个有序因子

还有无序因子

这时候怎么办

这时候就需要采用这个混合类型的

这么一种计算方法在这个cluster这个包里面

我们说到这个是R里面

如何实现这个一些最基本的距离的计算

但是在计算这个距离的时候

我们需要注意一点

就是不同的特征它可能量纲不一样

我们需要去量纲

什么意思

我们举个例子

比如说这个丈母娘要选女婿

她既要考虑这个是不是高大英俊

比如考虑这个身高

同时要考虑他工作好不好

比如说看这个年收入

那这个时候 比如说

我这个身高作为一列

然后这个年收入作为另外一列的话

假如我这个年薪用比如说二十万 五十万

这个单位用万来表示的话是20 50

然后这个身高的话是比如一米七一米八

对吧

一点七一点八

那毫无疑问

谁发挥作用大

年薪发挥作用大

假如你把他年薪他单位不用万元用元的话

那毫无疑问这个身高几乎就不发挥作用

正是针对这种所谓的这个量纲的影响

要去除它的话

我们就必须做一个标准化

标准化有哪些方法

标准化的话

就消除不同单位或者量纲的影响

标准化有这么典型有这么三种方法

第一种是最大最小化

这么种方法

我们看一下它怎么求的

每一个值减最小值

然后再除以极差

毫无疑问

变换完之后

这个数据最小值 它相应的取值变成零

最大值相应的取值变成1

这么一个线性的一个映射的过程

就把它放到[0, 1]区间里面去了

这是一种用得比较多的一个方法

另外一种方法是z-score

就这个标准得分

毫无疑问

我们一看

假如我这原始数据是服从正态分布的话

这个数据减掉一个均值

再除一个标准差

就变成标准正态分布了

假如我们那个数据都是正数的话

可以怎么办

可以用这个数除以所有的Xi之和

毫无疑问

这个时候我把所有的这个标准化之后的

这个Xi'加起来

它应该结果应该就是1了

这是不同标准化的方法

有不同的特点

但是它们也有共同点是什么

我们可以用

古代的一个数学的一个术语来表达它

一个说法叫什么

乘以散之 约以聚之

然后齐同以通之

当然以前的齐同跟我们这里面讲的齐同

还有点区别

但我们借用它一下

就我除掉某一个数之后就怎么样

结果这个数据进行缩放了

减掉某个数的话表示

表示这个数据的平移

然后除以某个数表示数据的缩放

然后平移和缩放的目的去除这个所谓的

单位和量纲的影响

在R里面实现这些标准化的过程

其实可以用同一个函数是什么

是scale()这个函数

大家可以看一下这个scale()函数的帮助文档

看如何设置这个

平移以及这个缩放的具体的参数

当然我们可以补充一下

就是在后面一些算法建模的过程中

除了标准化之后还是做一个反变换的过程

先标准化

然后再变回原来的数据

其实变回原来的数据

我们并没有一个什么函数叫unscale()

但是其实这unscale可以通过

可以通过这个scale这个函数来实现的

这个反变换也可以通过这个函数来实现

咱们下去之后可以自己考虑一下

如何实现它

只是参数设置不一样而已

这也讲到了我们那个在不同的聚类方法里面

它数据距离的计算

以及在计算之前

一般要做标准化

在讲正式的这个聚类分析算法之前

我想再补充一下

就是我们所有的数据分析

我得先看看

他有没有这个做这个数据分析的必要和可能

也就是说对这个聚类分析来讲要做

先看看我这个数据是否适合聚类

比如说一个均匀分布的数据的话

毫无疑问它是没必要做聚类的

这里面没有任何的模式

你即便套用某个算法得到一个模式

那其实那个模式也是没有意义的

那这个时候我们可以算

我们可以来算一下这个霍普金斯统计量

我们在前面课程里面已经讲了

咱们就不再做过多的重复

其实就是什么

其实就是从数据空间里面选取N个点

以及我人为的生成N个点

分别计算最近邻的距离

分别作为Y和X

来看看它的取值 霍普金斯统计量

对我们这个成绩表这份数据来讲

我们重复执行一百次之后发现这个数据

它(霍普金斯统计量)的平均值是0.15左右

也就是它没有趋近于0.5

还不怎么均匀

也说这个数据相对还是比较倾斜的

做聚类是有可能的

分析完这个可行性之后

我们还得做什么

就像我们在前面讲分类的算法一样

所有的模型你必须经过评估

大家注意一下

就我们所谓的模型评估

不仅仅针对这个所谓的

准确率正确率这个预测问题而言

针对这个分类问题而言

其实对这个无监督学习

聚类一样

也是需要进行评估的

评估的目的是什么

因为我们前面讲了

所有模型算法都是错的

但有些模型是有用

所以我必须有一个评估的手段

来看看我的模型是否有用

就聚类而言

要做模型评估

其实可以有这么一个理念

就是强内聚松耦合

同一个簇之间它点相互之间

应该离得比较近一点

然后不同簇之间相对比较远一点

基于这么一个思想

我们可以通过什么

通过计算这个轮廓系数

来评估我们这个聚类的效果

它具体来讲是这么一个步骤

我们计算轮廓系数的时候是针对每一个数据点

也就是每一行记录

因为我们刚才说到聚类分析的时候

我们把它想象成一个数据空间

然后每一个行一个数据点

从这个数据点的角度来考虑这个问题

就对于每一个数据点

我都要计算一个轮廓系数

怎么计算第一步

我对某一个数据点

比如说第i个对象

第i个数据点我计算

它到它所属簇的

其他所有数据点之间的平均距离

记为ai

假如说我们这个整个这个数据空间

现在目前被分成了K簇

经过某个聚类算法之后分成了K簇

那毫无疑问

除了它自身所在这一簇之外

还有K-1个簇

是不是

那这个时候我要计算什么

第i个对象到另外K-1个簇里面

每一个对象每个数据点之间的距离

然后计算一下

每个簇到每个簇的所有数据对象

它的平均距离

这是毫无疑问

有多少个有K-1个这个平均值

然后我们将

那个K-1个平均值里面最小的一个

记为bi

记为bi

那所谓的第i个数据点

也就第i行记录 它的轮廓系数多少

是bi减掉ai 然后后面再有一个标准化的过程

再有一个标准化的过程

也就是说我们希望什么

希望这个ai尽量小 bi尽量大

强内聚松耦合吗

或者说

同一个簇里面要凝聚

不同的簇相互之间要分离

是不是

所以我们希望这个轮廓系数尽量大一点

尽量大一点

这是对于每一个数据点来讲

我都可以计算一个轮廓系数

然后对整个这个模型算法来讲

它综合性能怎么评价呢

我就是计算所有对象的轮廓系数的平均值

同样我们是希望

我们希望这个平均值是尽量大一点

具体计算这个轮廓系数的话

在这个cluster包里面有相应的函数

直接可以计算

毫无疑问

假如我要调这个函数进行轮廓系数计算的话

至少我得有两个参数

首先是知道不同对象之间相互之间的距离

或者有一个距离矩阵

同时我都知道每一个数据点它属于哪一类

只要有了这两方面的信息之后

其实就可以计算什么

每一个点的轮廓系数

同时也可以计算什么

整个一个综合的轮廓系数

一个平均值

当然这是个轮廓系数

是聚类分析里面

用得比较多的一种评估的一个指标

在我们R里面其它包里面

比如fpc

或者NbClust

在这些包里面有很多其他一些

计算我们相应的聚类效果的一些指标

尤其是这个NbClust

这个就是强烈推荐的

它里面有30多个指标

来计算我们聚类的效果

以上我们就对聚类分析的一个

最基本的概念

以及一些那个评估的方法

进行了简要的一个介绍

具体的模型算法

我们在后续课程再展开讲

本次课到此结束

谢谢大家

R语言数据分析课程列表:

上部:问道

-第1章 气象万千、数以等观

--第1章 气象万千、数以等观

--第1章 作业

-第2章 所谓学习、归类而已

--2.1 所谓学习、归类而已(I)

--2.2 所谓学习、归类而已(II)

--2.3 所谓学习、归类而已(III)

--2.4 所谓学习、归类而已(IV)

--第2章 作业

-第3章 格言联璧话学习

--第3章 格言联璧话学习

--第3章 作业

-第4章 源于数学、归于工程

--第4章 源于数学、归于工程

--第4章 作业

-讨论题

--如何发挥人工智能的头雁效应

中部:执具

-第5章 工欲善其事、必先利其器

--第5章 工欲善其事、必先利其器

--第5章 作业

-第6章 基础编程——用别人的包和函数讲述自己的故事

--6.1 编程环境

--6.2Mini案例

--6.3 站在巨人的肩膀上

--6.4 控制流

--6.5 函数(I)

--6.6 函数(II)

--第6章 作业

-第7章 数据对象——面向数据对象学习R语言

--7.1 向量与因子(I)

--7.2 向量与因子(II)

--7.3 矩阵与数组(I)

--7.4 矩阵与数组(II)

--7.5 列表与数据框(I)

--7.6 列表与数据框(II)

--第7章 作业

-第8章 人人都爱tidyverse

--第8章 人人都爱tidyverse

--第8章 作业

-第9章 最美不过数据框

--第9章 最美不过数据框

--第9章 作业

下部:博术

-第10章 观数以形

--10.1 一维数据空间(I)

--10.2 一维数据空间(II)

--10.3 二维数据空间

--10.4 高维数据空间

--第10章 作业

-第11章 相随相伴、谓之关联

--11.1 导引

--11.2 关联规则(I)

--11.3 关联规则(II)

--11.4 关联规则(III)

--第11章 作业

-第12章 既是世间法、自当有分别

--12.1 导引

--12.2 近邻法(I)

--12.3 近邻法(II)

--12.4 决策树(I)

--12.5 决策树(II)

--12.6 随机森林

--12.7 朴素贝叶斯

--12.8 逻辑斯蒂回归

--12.9 人工神经网络(I)

--12.10 人工神经网络(II)

--12.11 支持向量机

--第12章 作业

-第13章 方以类聚、物以群分

--13.1 导引

--13.2 划分方法

--13.3 层次方法

--第13章 作业

-第14章 庐山烟雨浙江潮

--第14章 庐山烟雨浙江潮

--第14章 作业

13.1 导引笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。