无监督学习:线性降维

  无监督学习可以大概分为两类:一类是化繁为简,主要是聚类和降维;另一类是无中生有,主要是生成算法。在这里我们主要介绍聚类和降维部分。

1. 聚类算法

1.1 K-means聚类

  略

1.2 层次聚合聚类(Hierarchical Agglomerative Clustering,HAC)

  略

1.3 分布式表征

  有的时候仅仅用一类标签没有办法将数据的类别完整的表达出来,这个时候需要进行分布式表征,比如说某一类特征是百分之多少。如下图所示

无监督学习:线性降维_第1张图片

2. PCA降维

2.1 原理及过程

  略。

2.2 使用神经网络实现类似于PCA的功能

  计算PCA的过程实际上是将向量与矩阵相乘的过程,而神经网络中的神经元实际上也可以表示为向量与矩阵相乘的关系,因此PCA的结构可以化简为如下所示的网络结构

无监督学习:线性降维_第2张图片

中间层与以往的神经元不同,没有非线性的激活函数。左边的权重实际上是将右侧的等式表达出来了,而右侧的权重是将左侧的公式表达出来了。训练的过程中应该保证网络的输入与输出相同,所以这实际上就是一个自编码器。但是需要注意的是,通过随机梯度下降训练得到的神经网络无法获得与PCA相同的参数,因为PCA中各个向量之间是正交的,而训练得到的权重无法满足正交性。

2.3 PCA的缺点

  PCA的缺点主要集中在两个方面,首先它是一种无监督的学习方法,其次它是一种线性的方法。如下图所示

无监督学习:线性降维_第3张图片

  如果数据实际上的标签如上图左边的图所示,那么虽然按PCA的方法可以获得最大的方差,但是这种方法实际上使得不同的数据之间出现了重合,针对这种情况应该采用LDA的方法,这是一种有监督学习的方法。

  另外如果数据是非线性的,那么无论怎么投影都不能很好的将数据分开。

2.4 PCA的应用

  下面是PCA在手写数字和人脸图像上的应用。

无监督学习:线性降维_第4张图片

无监督学习:线性降维_第5张图片

观察上面两组实验可以看到,数字很少能看成是组成数字的一部分,但是人脸却可以,这主要是因为进行PCA分解的过程中会有负的系数产生,所以主成分之间不仅仅是相加的关系,还有相减的关系,所以不能将每个主元看作是数字的一部分。

  如果像将主元变成类似可以组成一部分一部分的,可以利用非负矩阵分解(Non-negative matrix factorization ,NMF),如下所示

无监督学习:线性降维_第6张图片

无监督学习:线性降维_第7张图片

3. 矩阵分解

  矩阵分解常常用于找到两种变量之间的关系。

无监督学习:线性降维_第8张图片

在上面的矩阵中,每一行是一个人(A,B,C,D,E分别代表着5个不同的人),每一列是买了这个手办的个数(1,2,3,4代表着4个不同的手办)。我们通过矩阵分解得到两个矩阵分别代表着人的向量和手办的向量,这些向量实际上刻画了这个变量本身的性质,但具体是什么性质需要自己进行分析。

  但是有的时候不能直接分解,因为矩阵中有些值是不存在的。这个时候可采用下面的方法解决。

无监督学习:线性降维_第9张图片

在这里计算这样的一个损失函数,这个损失函数刻画了向量积与实际矩阵之的差距,在这里只将矩阵中已经出现的值进行计算。通过计算可以得到下图所示的结果

无监督学习:线性降维_第10张图片

根据计算出的结果还可以将空缺的值进行补充。这种方法常常用于推荐系统之中。

参考文献

[1]Machine Learning (2016,Fall)-National Taiwan University (NTU)

你可能感兴趣的:(机器学习_课程笔记_完结)