Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 周志华《Machine Learning》学习笔记(11)--聚类.md #12

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions 周志华《Machine Learning》学习笔记(11)--聚类.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
上篇主要介绍了一种机器学习的通用框架--集成学习方法,首先从准确性和差异性两个重要概念引出集成学习“**好而不同**”的四字真言,接着介绍了现阶段主流的三种集成学习方法:AdaBoost、Bagging及Random Forest,AdaBoost采用最小化指数损失函数迭代式更新样本分布权重和计算基学习器权重,Bagging通过自助采样引入样本扰动增加了基学习器之间的差异性,随机森林则进一步引入了属性扰动,最后简单概述了集成模型中的三类结合策略:平均法、投票法及学习法,其中Stacking是学习法的典型代表。本篇将讨论无监督学习中应用最为广泛的学习算法--聚类。

#**10、聚类算法**
# **10、聚类算法**

聚类是一种经典的**无监督学习**方法,**无监督学习的目标是通过对无标记训练样本的学习,发掘和揭示数据集本身潜在的结构与规律**,即不依赖于训练数据集的类标记信息。聚类则是试图将数据集的样本划分为若干个互不相交的类簇,从而每个簇对应一个潜在的类别。

聚类直观上来说是将相似的样本聚在一起,从而形成一个**类簇(cluster)**。那首先的问题是如何来**度量相似性**(similarity measure)呢?这便是**距离度量**,在生活中我们说差别小则相似,对应到多维样本,每个样本可以对应于高维空间中的一个数据点,若它们的距离相近,我们便可以称它们相似。那接着如何来评价聚类结果的好坏呢?这便是**性能度量**,性能度量为评价聚类结果的好坏提供了一系列有效性指标。

##**10.1 距离度量**
## **10.1 距离度量**

谈及距离度量,最熟悉的莫过于欧式距离了,从年头一直用到年尾的距离计算公式:即对应属性之间相减的平方和再开根号。度量距离还有其它的很多经典方法,通常它们需要满足一些基本性质:

Expand Down Expand Up @@ -41,11 +41,11 @@

若我们定义的距离计算方法是用来度量相似性,例如下面将要讨论的聚类问题,即距离越小,相似性越大,反之距离越大,相似性越小。这时距离的度量方法并不一定需要满足前面所说的四个基本性质,这样的方法称为:**非度量距离(non-metric distance)**。

##**10.2 性能度量**
## **10.2 性能度量**

由于聚类算法不依赖于样本的真实类标,就不能像监督学习的分类那般,通过计算分对分错(即精确度或错误率)来评价学习器的好坏或作为学习过程中的优化目标。一般聚类有两类性能度量指标:**外部指标**和**内部指标**。

###**10.2.1 外部指标**
### **10.2.1 外部指标**

即将聚类结果与某个参考模型的结果进行比较,**以参考模型的输出作为标准,来评价聚类好坏**。假设聚类给出的结果为λ,参考模型给出的结果是λ*,则我们将样本进行两两配对,定义:

Expand All @@ -55,7 +55,7 @@

![8.png](https://i.loli.net/2018/10/18/5bc84ed587438.png)

###**10.2.2 内部指标**
### **10.2.2 内部指标**

内部指标即不依赖任何外部模型,直接对聚类的结果进行评估,聚类的目的是想将那些相似的样本尽可能聚在一起,不相似的样本尽可能分开,直观来说:**簇内高内聚紧紧抱团,簇间低耦合老死不相往来**。定义:

Expand All @@ -65,11 +65,11 @@

![10.png](https://i.loli.net/2018/10/18/5bc84ed582854.png)

##**10.3 原型聚类**
## **10.3 原型聚类**

原型聚类即“**基于原型的聚类**”(prototype-based clustering),原型表示模板的意思,就是通过参考一个模板向量或模板分布的方式来完成聚类的过程,常见的K-Means便是基于簇中心来实现聚类,混合高斯聚类则是基于簇分布来实现聚类。

###**10.3.1 K-Means**
### **10.3.1 K-Means**

K-Means的思想十分简单,**首先随机指定类中心,根据样本与类中心的远近划分类簇,接着重新计算类中心,迭代直至收敛**。但是其中迭代的过程并不是主观地想象得出,事实上,若将样本的类别看做为“隐变量”(latent variable),类中心看作样本的分布参数,这一过程正是通过**EM算法**的两步走策略而计算出,其根本的目的是为了最小化平方误差函数E:

Expand All @@ -79,7 +79,7 @@ K-Means的算法流程如下所示:

![12.png](https://i.loli.net/2018/10/18/5bc84fb9c0817.png)

###**10.3.2 学习向量量化(LVQ)**
### **10.3.2 学习向量量化(LVQ)**

LVQ也是基于原型的聚类算法,与K-Means不同的是,**LVQ使用样本真实类标记辅助聚类**,首先LVQ根据样本的类标记,从各类中分别随机选出一个样本作为该类簇的原型,从而组成了一个**原型特征向量组**,接着从样本集中随机挑选一个样本,计算其与原型向量组中每个向量的距离,并选取距离最小的原型向量所在的类簇作为它的划分结果,再与真实类标比较。

Expand All @@ -90,7 +90,7 @@ LVQ算法的流程如下所示:

![13.png](https://i.loli.net/2018/10/18/5bc84fb9d59f2.png)

###**10.3.3 高斯混合聚类**
### **10.3.3 高斯混合聚类**

现在可以看出K-Means与LVQ都试图以类中心作为原型指导聚类,高斯混合聚类则采用高斯分布来描述原型。现假设**每个类簇中的样本都服从一个多维高斯分布,那么空间中的样本可以看作由k个多维高斯分布混合而成**。

Expand Down Expand Up @@ -118,7 +118,7 @@ LVQ算法的流程如下所示:

![19.png](https://i.loli.net/2018/10/18/5bc84fb9c4fa4.png)

##**10.4 密度聚类**
## **10.4 密度聚类**

密度聚类则是基于密度的聚类,它从样本分布的角度来考察样本之间的可连接性,并基于可连接性(密度可达)不断拓展疆域(类簇)。其中最著名的便是**DBSCAN**算法,首先定义以下概念:

Expand All @@ -130,7 +130,7 @@ LVQ算法的流程如下所示:

![22.png](https://i.loli.net/2018/10/18/5bc8509feb587.png)

##**10.5 层次聚类**
## **10.5 层次聚类**

层次聚类是一种基于树形结构的聚类方法,常用的是**自底向上**的结合策略(**AGNES算法**)。假设有N个待聚类的样本,其基本步骤是:

Expand Down