Skip to content
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
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
上篇主要介绍了几种常用的聚类算法,首先从距离度量与性能评估出发,列举了常见的距离计算公式与聚类评价指标,接着分别讨论了K-Means、LVQ、高斯混合聚类、密度聚类以及层次聚类算法。K-Means与LVQ都试图以类簇中心作为原型指导聚类,其中K-Means通过EM算法不断迭代直至收敛,LVQ使用真实类标辅助聚类;高斯混合聚类采用高斯分布来描述类簇原型;密度聚类则是将一个核心对象所有密度可达的样本形成类簇,直到所有核心对象都遍历完;最后层次聚类是一种自底向上的树形聚类方法,不断合并最相近的两个小类簇。本篇将讨论机器学习常用的方法--降维与度量学习。

#**11、降维与度量学习**
# **11、降维与度量学习**

样本的特征数称为**维数**(dimensionality),当维数非常大时,也就是现在所说的“**维数灾难**”,具体表现在:在高维情形下,**数据样本将变得十分稀疏**,因为此时要满足训练样本为“**密采样**”的总体样本数目是一个触不可及的天文数字,谓可远观而不可亵玩焉...**训练样本的稀疏使得其代表总体分布的能力大大减弱,从而消减了学习器的泛化能力**;同时当维数很高时,**计算距离也变得十分复杂**,甚至连计算内积都不再容易,这也是为什么支持向量机(SVM)使用核函数**“低维计算,高维表现”**的原因。
样本的特征数称为**维数**(dimensionality),当维数非常大时,也就是现在所说的“ **维数灾难** ”,具体表现在:在高维情形下,**数据样本将变得十分稀疏**,因为此时要满足训练样本为“**密采样**”的总体样本数目是一个触不可及的天文数字,谓可远观而不可亵玩焉...**训练样本的稀疏使得其代表总体分布的能力大大减弱,从而消减了学习器的泛化能力**;同时当维数很高时,**计算距离也变得十分复杂**,甚至连计算内积都不再容易,这也是为什么支持向量机(SVM)使用核函数 **“低维计算,高维表现”** 的原因。

缓解维数灾难的一个重要途径就是**降维,即通过某种数学变换将原始高维空间转变到一个低维的子空间**。在这个子空间中,样本的密度将大幅提高,同时距离计算也变得容易。这时也许会有疑问,这样降维之后不是会丢失原始数据的一部分信息吗?这是因为在很多实际的问题中,虽然训练数据是高维的,但是与学习任务相关也许仅仅是其中的一个低维子空间,也称为一个**低维嵌入**,例如:数据属性中存在噪声属性、相似属性或冗余属性等,**对高维数据进行降维能在一定程度上达到提炼低维优质属性或降噪的效果**。

##**11.1 K近邻学习**
## **11.1 K近邻学习**

k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学习方法,同时也实力担当入选数据挖掘十大算法。其工作机制十分简单粗暴:给定某个测试样本,kNN基于某种**距离度量**在训练集中找出与其距离最近的k个带有真实标记的训练样本,然后给基于这k个邻居的真实标记来进行预测,类似于前面集成学习中所讲到的基学习器结合策略:分类任务采用投票法,回归任务则采用平均法。接下来本篇主要就kNN分类进行讨论。

Expand All @@ -17,7 +17,7 @@ k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学
> 如果K=3,那么离绿色点最近的有2个红色三角形和1个蓝色的正方形,这3个点投票,于是绿色的这个待分类点属于红色的三角形。
> 如果K=5,那么离绿色点最近的有2个红色三角形和3个蓝色的正方形,这5个点投票,于是绿色的这个待分类点属于蓝色的正方形。

可以发现:**kNN虽然是一种监督学习方法,但是它却没有显式的训练过程**,而是当有新样本需要预测时,才来计算出最近的k个邻居,因此**kNN是一种典型的懒惰学习方法**,再来回想一下朴素贝叶斯的流程,训练的过程就是参数估计,因此朴素贝叶斯也可以懒惰式学习,此类技术在**训练阶段开销为零**,待收到测试样本后再进行计算。相应地我们称那些一有训练数据立马开工的算法为“**急切学习**”,可见前面我们学习的大部分算法都归属于急切学习。
可以发现:**kNN虽然是一种监督学习方法,但是它却没有显式的训练过程**,而是当有新样本需要预测时,才来计算出最近的k个邻居,因此**kNN是一种典型的懒惰学习方法**,再来回想一下朴素贝叶斯的流程,训练的过程就是参数估计,因此朴素贝叶斯也可以懒惰式学习,此类技术在**训练阶段开销为零**,待收到测试样本后再进行计算。相应地我们称那些一有训练数据立马开工的算法为“ **急切学习** ”,可见前面我们学习的大部分算法都归属于急切学习。

很容易看出:**kNN算法的核心在于k值的选取以及距离的度量**。k值选取太小,模型很容易受到噪声数据的干扰,例如:极端地取k=1,若待分类样本正好与一个噪声数据距离最近,就导致了分类错误;若k值太大, 则在更大的邻域内进行投票,此时模型的预测能力大大减弱,例如:极端取k=训练样本数,就相当于模型根本没有学习,所有测试样本的预测结果都是一样的。**一般地我们都通过交叉验证法来选取一个适当的k值**。

Expand All @@ -26,9 +26,9 @@ k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学
对于距离度量,**不同的度量方法得到的k个近邻不尽相同,从而对最终的投票结果产生了影响**,因此选择一个合适的距离度量方法也十分重要。在上一篇聚类算法中,在度量样本相似性时介绍了常用的几种距离计算方法,包括**闵可夫斯基距离,曼哈顿距离,VDM**等。在实际应用中,**kNN的距离度量函数一般根据样本的特性来选择合适的距离度量,同时应对数据进行去量纲/归一化处理来消除大量纲属性的强权政治影响**。


##**11.2 MDS算法**
## **11.2 MDS算法**

不管是使用核函数升维还是对数据降维,我们都希望**原始空间样本点之间的距离在新空间中基本保持不变**,这样才不会使得原始空间样本之间的关系及总体分布发生较大的改变。**“多维缩放”(MDS)**正是基于这样的思想,**MDS要求原始空间样本之间的距离在降维后的低维空间中得以保持**。
不管是使用核函数升维还是对数据降维,我们都希望**原始空间样本点之间的距离在新空间中基本保持不变**,这样才不会使得原始空间样本之间的关系及总体分布发生较大的改变。 **“多维缩放”(MDS)** 正是基于这样的思想,**MDS要求原始空间样本之间的距离在降维后的低维空间中得以保持**。

假定m个样本在原始空间中任意两两样本之间的距离矩阵为D∈R(m*m),我们的目标便是获得样本在低维空间中的表示Z∈R(d'*m , d'< d),且任意两个样本在低维空间中的欧式距离等于原始空间中的距离,即||zi-zj||=Dist(ij)。因此接下来我们要做的就是根据已有的距离矩阵D来求解出降维后的坐标矩阵Z。

Expand All @@ -46,7 +46,7 @@ k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学

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

##**11.3 主成分分析(PCA)**
## **11.3 主成分分析(PCA)**

不同于MDS采用距离保持的方法,**主成分分析(PCA)直接通过一个线性变换,将原始空间中的样本投影到新的低维空间中**。简单来理解这一过程便是:**PCA采用一组新的基来表示样本点,其中每一个基向量都是原来基向量的线性组合,通过使用尽可能少的新基向量来表出样本,从而达到降维的目的。**

Expand All @@ -69,7 +69,7 @@ k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学

另一篇博客给出更通俗更详细的理解:[主成分分析解析(基于最大方差理论)](http://blog.csdn.net/u011826404/article/details/57472730)

##**11.4 核化线性降维**
## **11.4 核化线性降维**

说起机器学习你中有我/我中有你/水乳相融...在这里能够得到很好的体现。正如SVM在处理非线性可分时,通过引入核函数将样本投影到高维特征空间,接着在高维空间再对样本点使用超平面划分。这里也是相同的问题:若我们的样本数据点本身就不是线性分布,那还如何使用一个超平面去近似表出呢?因此也就引入了核函数,**即先将样本映射到高维空间,再在高维空间中使用线性降维的方法**。下面主要介绍**核化主成分分析(KPCA)**的思想。

Expand All @@ -85,11 +85,11 @@ k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学

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

##**11.5 流形学习**
## **11.5 流形学习**

**流形学习(manifold learning)是一种借助拓扑流形概念的降维方法**,**流形是指在局部与欧式空间同胚的空间**,即在局部与欧式空间具有相同的性质,能用欧氏距离计算样本之间的距离。这样即使高维空间的分布十分复杂,但是在局部上依然满足欧式空间的性质,基于流形学习的降维正是这种**“邻域保持”**的思想。其中**等度量映射(Isomap)试图在降维前后保持邻域内样本之间的距离,而局部线性嵌入(LLE)则是保持邻域内样本之间的线性关系**,下面将分别对这两种著名的流行学习方法进行介绍。

###**11.5.1 等度量映射(Isomap)**
### **11.5.1 等度量映射(Isomap)**

等度量映射的基本出发点是:高维空间中的直线距离具有误导性,因为有时高维空间中的直线距离在低维空间中是不可达的。**因此利用流形在局部上与欧式空间同胚的性质,可以使用近邻距离来逼近测地线距离**,即对于一个样本点,它与近邻内的样本点之间是可达的,且距离使用欧式距离计算,这样整个样本空间就形成了一张近邻图,高维空间中两个样本之间的距离就转为最短路径问题。可采用著名的**Dijkstra算法**或**Floyd算法**计算最短距离,得到高维空间中任意两点之间的距离后便可以使用MDS算法来其计算低维空间中的坐标。

Expand All @@ -104,7 +104,7 @@ k近邻算法简称**kNN(k-Nearest Neighbor)**,是一种经典的监督学
> 若**邻域范围指定过大,则会造成“短路问题”**,即本身距离很远却成了近邻,将距离近的那些样本扼杀在摇篮。
> 若**邻域范围指定过小,则会造成“断路问题”**,即有些样本点无法可达了,整个世界村被划分为互不可达的小部落。

###**11.5.2 局部线性嵌入(LLE)**
### **11.5.2 局部线性嵌入(LLE)**

不同于Isomap算法去保持邻域距离,LLE算法试图去保持邻域内的线性关系,假定样本xi的坐标可以通过它的邻域样本线性表出:

Expand All @@ -128,7 +128,7 @@ M特征值分解后最小的d'个特征值对应的特征向量组成Z,LLE算

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

##**11.6 度量学习**
## **11.6 度量学习**

本篇一开始就提到维数灾难,即在高维空间进行机器学习任务遇到样本稀疏、距离难计算等诸多的问题,因此前面讨论的降维方法都试图将原空间投影到一个合适的低维空间中,接着在低维空间进行学习任务从而产生较好的性能。事实上,不管高维空间还是低维空间都潜在对应着一个距离度量,那可不可以直接学习出一个距离度量来等效降维呢?例如:**咋们就按照降维后的方式来进行距离的计算,这便是度量学习的初衷**。

Expand Down