整个强化学习的理论模型可以抽象成马尔可夫决策过程。核心任务是求解使得回报最大的策略。如果直接用动态规划求解,则有策略迭代和价值迭代两类算法。他们都要求有精确的环境模型,即状态转移概率和奖励函数。如果做不到这一点,只能采用随机算法,典型的代表是蒙特卡罗算法和时序差分算法。强化学习与深度学习相结合,诞生了深度强化学习算法,典型代表是深度Q网络(DQN)以及策略梯度算法(策略梯度算法不仅可用神经网络作为策略函数的近似,还可以用其他函数)。

下面我们来分别介绍每种算法的核心知识点以及它们之间的关系。

有监督学习

先看有监督学习算法,它是当前实际应用中使用最广的机器学习算法。进一步可以分为分类问题与回归问题两大类。前面说过,有监督学习算法的预测函数为:

meanshift算法_meanshift算法简介_meanshift算法 局部

即根据输入数据x预测出输出数据y。如果y是整数的类别编号,则称为分类问题;如果y是实数值,则为回归问题。

贝叶斯分类器

分类问题中样本的特征向量取值x与样本所属类型y具有因果关系。因为样本属于类型y,所以具有特征值x。分类器要做的则相反,是在已知样本的特征向量为x的条件下反推样本所属的类别y。根据贝叶斯公式有:

meanshift算法简介_meanshift算法_meanshift算法 局部

只要知道特征向量的概率分布p(x),每一类出现的概率p(y),以及每一类样本的条件概率p(x|y),就可以计算出样本属于每一类的概率p(y|x)。如果只要确定类别,比较样本属于每一类的概率的大小,找出该值最大的那一类即可。因此可以忽略p(x),因为它对所有类都是一样的。简化后分类器的判别函数为:

meanshift算法_meanshift算法 局部_meanshift算法简介

训练时的目标是确定p(x|y)的参数,一般使用最大似然估计。如果假设样本特征向量的各个分量之间相互独立,则称为朴素贝叶斯分类器。如果假设特征向量x服从多维正态分布,则称为正态贝叶斯分类器。正态贝叶斯分类器的预测函数为:

meanshift算法 局部_meanshift算法_meanshift算法简介

贝叶斯分类器是一种生成模型,是非线性模型,它天然的支持多分类问题。下图是正态贝叶斯分类器对异或问题的分类结果(来自SIGAI云端实验室):

决策树家族

决策树是基于规则的方法,它用一组嵌套的规则进行预测,在树的每个决策节点处,根据判断结果进入一个分支,反复执行这种操作直到到达叶子节点,得到决策结果。决策树的这些规则通过训练得到,而不是人工制定的。下图是决策树的一个例子:

决策树是一种判别模型,也是非线性模型,天然支持多类分类问题。它既可以用于分类问题,也可以用于回归问题,具有很好的解释性,符合人类的思维习惯。常用的决策树有ID3,C4.5,分类与回归树(CART)等。

分类树对应的映射函数是多维空间的分段线性划分,即用平行于各个坐标轴的超平面对空间进行切分;回归树的映射函数是一个分段常数函数。决策树是分段线性函数但不是线性函数,它具有非线性建模的能力。只要划分的足够细,分段常数函数可以逼近闭区间上任意函数到任意指定精度,因此决策树在理论上可以对任意复杂度的数据进行分类或者回归。

下图是决策树进行空间划分的一个例子。在这里有红色和蓝色两类训练样本,用下面两条平行于坐标轴的直线可以将这两类样本分开(来自SIGAI云端实验室):

这个划分方案对应的决策树如下图所示:

meanshift算法 局部_meanshift算法简介_meanshift算法

对于分类与回归树,训练每个节点时的目标是要让Gini不纯度最小化,这等价于让下面的值最大化:

meanshift算法_meanshift算法简介_meanshift算法 局部

决策树训练求解时采用了枚举搜索和贪婪法的思想,找到的不一定是结构最优的树。如果想要了解决策树的原理,请阅读SIGAI之前的公众号文章“理解决策树”。

kNN算法

kNN算法基于以下思想:要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本,统计这些样本的类别进行投票,票数最多的那个类就是分类结果。因为直接比较样本和训练样本的距离,kNN算法也被称为基于实例的算法,这实际上是一种模板匹配的思想。

下图是使用k近邻思想进行分类的一个例子:

meanshift算法 局部_meanshift算法简介_meanshift算法

在上图中有红色和绿色两类样本。对于待分类样本即图中的黑色点,我们寻找离该样本最近的一部分训练样本,在图中是以这个矩形样本为圆心的某一圆范围内的所有样本。然后统计这些样本所属的类别,在这里红色点有12个,圆形有2个,因此把这个样本判定为红色这一类。上面的例子是二分类的情况,我们可以推广到多类,k近邻算法天然支持多类分类问题,它是一种判别模型,也是非线性模型。下图是kNN算法对异或问题的分类结果(来自SIGAI云端实验室):

kNN算法依赖于样本距离值,常用的距离有欧氏距离,Mahalanobis距离等。这些距离定义中的参数可以通过学习得到,如Mahalanobis距离中的矩阵S,这称为距离度量学习。

线性模型家族

线性模型的预测函数是线性函数,既可以用于分类问题,也可以用于回归问题,这是机器学习算法中的一个庞大家族。从线性模型中衍生出了多种机器学习算法,对于回归问题问题,有岭回归,LASSO回归;对于分类问题,有支持向量机,logistic回归,softmax回归,人工神经网络(多层感知器模型),以及后续的各种深度神经网络。

对于分类问题,线性模型的预测函数为:

meanshift算法 局部_meanshift算法_meanshift算法简介

其中sgn是符号函数。最简单的线性分类器是感知器算法,它甚至无法解决经典的异或问题,不具有太多的实用价值。

对于回归问题,线性模型的预测函数为:

meanshift算法 局部_meanshift算法简介_meanshift算法

训练时的目标是最小化均方误差:

meanshift算法 局部_meanshift算法简介_meanshift算法

可以证明,这是一个凸优化问题,可以得到全局极小值。求解时可以采用梯度下降法或者牛顿法。

岭回归是线性回归的L2正则化版本,训练时求解的问题为:

meanshift算法_meanshift算法 局部_meanshift算法简介

如果系数

,这个问题是一个严格凸优化问题,可用用梯度下降法,牛顿法求解。

LASSO回归是线性回归的L1正则化版本,训练时求解的问题为:

meanshift算法 局部_meanshift算法简介_meanshift算法

同样的,这是一个凸优化问题,可以用梯度下降法和牛顿法求解。

线性判别分析(LDA)是一种有监督的线性投影技术,它寻找向低维空间的投影矩阵W,样本的特征向量x经过投影之后得到的新向量y:

投影的目标是同一类样投影后的结果向量差异尽可能小,不同类的样本差异尽可能大。直观来看,就是经过这个投影之后同一类的样本进来聚集在一起,不同类的样本尽可能离得远。下图是这种投影的示意图:

meanshift算法_meanshift算法 局部_meanshift算法简介

训练时的求解目标是最大化类间差异与类内差异的比值:

meanshift算法简介_meanshift算法 局部_meanshift算法

最后归结为求解矩阵的特征值和特征向量:

meanshift算法简介_meanshift算法 局部_meanshift算法

如果我们要将向量投影到c-1维,则挑选出最大的c-1个特征值以及它们对应的特征向量,组成矩阵W。线性判别分析不能直接用于分类问题,它只是完成投影,投影之后还需要用其他算法进行分类,如kNN。下图是LDA降维之后用最小距离分类器分类的结果:

meanshift算法简介_meanshift算法 局部_meanshift算法

从这张图可以看出,决策面是直线。LDA是一种线性模型,也是判别模型,只能用于分类问题。

logistic回归即对数几率回归,它的名字虽然叫“回归”,但却是一种用于二分类问题的分类算法,它用sigmoid函数估计出样本属于某一类的概率。这种算法可以看做是对线性分类器的改进。

预测函数为:

meanshift算法 局部_meanshift算法简介_meanshift算法

其中为线性映射权向量,由训练算法确定。训练时的优化目标是最大化对数似然函数:

meanshift算法简介_meanshift算法_meanshift算法 局部

这是一个凸优化问题,可以得到全局最优解,求解时可以采用梯度下降法或者牛顿法。分类时的判断规则为:

meanshift算法 局部_meanshift算法简介_meanshift算法

logistic回归是一种判别模型,也是线性模型,它只支持二分类问题。下图是用logistic回归进行分类的结果(来自SIGAI云端实验室):

从上图可以看到,分界面是一条直线,这也说明了它是一个线性模型。

logistic回归只能用于二分类问题,将它进行推广可以得到处理多类分类问题的softmax回归。softmax回归按照下面的公式估计一个样本属于每一类的概率:

meanshift算法_meanshift算法简介_meanshift算法 局部

模型的输出为一个k维向量,其元素之和为1,每一个分量为样本属于该类的概率。训练时的损失函数定义为:

meanshift算法 局部_meanshift算法_meanshift算法简介

上式是对logistic回归损失函数的推广。这个损失函数是凸函数,可以采用梯度下降法求解。Softmax回归是一种判别模型,也是线性模型,它支持多分类问题。

支持向量机

支持向量机是对线性分类器的改进,加上了最大化分类间隔的约束,另外还使用了核技术,通过非线性核解决非线性问题。一般情况下,给定一组训练样本可以得到不止一个可行的线性分类器,下图就是一个例子:

meanshift算法 局部_meanshift算法简介_meanshift算法

在上图中两条直线都可以将两类样本分开。问题是:在多个可行的线性分类器中,什么样的分类器是好的?为了得到好的泛化性能,分类平面应该不偏向于任何一类,并且离两个类的样本都尽可能的远。这种最大化分类间隔的目标就是支持向量机的基本思想。支持向量机在训练时优化的目标是让训练样本尽量分类正确,而且决策面离两类样本尽可能远。原问题带有太多的不等式约束,一般转化为对偶问题求解,使用拉格朗日对偶,加上核函数之后,优化的对偶问题为:

meanshift算法_meanshift算法 局部_meanshift算法简介

预测函数为:

meanshift算法 局部_meanshift算法简介_meanshift算法

这是一个凸优化问题,可以得到全局最优解,求解时一般采用SMO算法,这是一种分治法,每次挑选出两个变量进行优化,对这两个变量的优化问题求公式解。优化变量的选择使用了KKT条件。

支持向量机是一种判别模型,既支持分类问题,也支持回归问题,如果使用非线性核,则是一种非线性模型,这从它的预测函数也可以看出来。标准的支持向量机只能解决二分类问题,通过多个二分类器组合,可以解决多分类问题,另外一种思路是直接构造多类的损失函数来解决多分类问题。下图是用支持向量机对异或问题进行分类的结果(来自SIGAI云端实验室):

神经网络

人工神经网络是一种仿生方法,受启发于人脑的神经网络。从数学上看,它本质上是一个多层复合函数。如果使用sigmoid作为激活函数,它的单个神经元就是logistic回归。假设神经网络的输入是n维向量x,输出是m维向量y,它实现了如向量到向量的映射:

meanshift算法_meanshift算法 局部_meanshift算法简介

将这个函数记为:

meanshift算法_meanshift算法简介_meanshift算法 局部

神经网络第层的变换写成矩阵和向量形式为:

meanshift算法简介_meanshift算法_meanshift算法 局部

如果采用欧氏距离,训练时的优化目标为:

meanshift算法_meanshift算法 局部_meanshift算法简介

这不是一个凸优化问题,因此不能保证得到全局极小值。可以采用梯度下降法求解meanshift算法,因为是一个复合函数,需要对各层的权重与偏置求导,采用了反向传播算法,它从多元函数求导的链式法则导出。误差项的计算公式为,对于输出层:

meanshift算法_meanshift算法简介_meanshift算法 局部

对于隐含层:

meanshift算法_meanshift算法简介_meanshift算法 局部

根据误差项可以得到权重和偏置的梯度值:

meanshift算法简介_meanshift算法 局部_meanshift算法

然后用梯度下降法更新。神经网络是一个判别模型,并且是非线性模型,它既支持分类问题,也支持回归问题,并且支持多分类问题。下图是用神经网络对异或问题的分类结果(来自SIGAI云端实验室):

深度神经网络家族

深度神经网络是对多层感知器模型的进一步发展,它可以完成自动的特征提取,端到端的训练,是深度学习的核心技术。可以分为自动编码器meanshift算法,受限玻尔兹曼机,卷积神经网络,循环神经网络,生成对抗网络这几种类型。

自动编码器用一个单层或者多层神经网络对输入数据进行映射,得到输出向量,作为从输入数据提取出的特征。在这种框架中,神经网络的前半部分称为编码器,用于从原始输入数据中提取特征;后半部分称为解码器,训练时根据提取的特征重构原始数据,它只用于训练阶段。

训练时的做法是先经过编码器得到编码后的向量,然后再通过解码器得到解码后的向量,用解码后的向量和原始输入向量计算误差。如果编码器的映射函数为h,解码器的映射函数为g,训练时优化的目标函数为:

meanshift算法_meanshift算法简介_meanshift算法 局部

在这里同样采用梯度下降法和反向传播算法。自动编码器的改进型有去噪自动编码器,收缩自动编码器,变分自动编码器,稀疏编码等。

单个自动编码器只能进行一层特征提取,可以将多个自动编码器组合起来使用,得到一种称为层叠编码器的结构。层叠自动编编码器由多个自动动编码器串联组成,能够逐层提取输入数据的特征,在此过程中逐层降低输入数据的维度,将高维的输入数据转化成低维的特征。

受限玻尔兹曼机由Hinton等人提出,是一种生成式随机神经网络,这是一种概率模型。在这种模型中,神经元的状态值是以随机的方式确定的,而不像之前介绍的神经网络那样是确定性的。

受限玻尔兹曼机的数据分为可见变量和隐变量两种类型,并定义了它们之间的概率关系。可见变量是神经网络的输入数据,如图像;隐变量是从输入数据中提取的特征。在受限玻尔兹曼机中,可见变量和隐藏变量都是二元变量,即其取值只能为0或1,整个神经网络是一个二部图。

可见节点用向量表示为v,隐藏节点用向量表示为h。任意可见节点和隐藏节点之间都有边连接。(v, h)的联合概率服从玻尔兹曼分布,联合概率定义为:

meanshift算法简介_meanshift算法_meanshift算法 局部

训练时迭代更新权重参数直至网络收敛,这种方法称为Contrastive Divergence。

和自动编码器类似,可以将多个受限玻尔兹曼机层叠加起来使用,在种结构称为深度玻尔兹曼机(Deep Boltzmann Machine),简称DBM。通过多层的受限玻尔兹曼机,可以完成数据在不同层次上的特征提取和抽象。

在DBM中,所有层的节点之间的连接关系是无向的,如果我们限制某些层之间的连接关系为有向的,就得到了另外一种结构,称为深信度网络(Deep Belief Network),简称DBN。在DBN中,靠近输入层的各个层之间的连接关系是有向的,是贝叶斯置信网;靠近输出层的各个层之间的连接关系是无向的,是受限玻尔兹曼机。

在所有深度学习框架中,卷积神经网络应用最为广泛,在机器视觉等具有空间结构的数据问题上取得了成功。标准的卷积神经网络由卷积层,池化层,全连接层构成。可以看做是权重共享的全连接神经网络。

训练时同样采用梯度下降法和反向传播算法。对于卷积层,根据误差项计算卷积核梯度的计算公式为:

meanshift算法_meanshift算法 局部_meanshift算法简介

卷层误差项的递推公式为:

meanshift算法 局部_meanshift算法_meanshift算法简介

也可以用矩阵乘法来实现卷积,这种做法更容易理解,可以方便的计算出对卷积核的梯度值。

循环神经网络是仅次于卷积神经网络的第二大深度神经网络结构,在语音识别、自然语言处理等问题上取得了成功。循环神经网络具有记忆功能,用于时间序列数据预测。循环层实现的映射为:

meanshift算法 局部_meanshift算法_meanshift算法简介

输出层实现的映射为:

meanshift算法简介_meanshift算法 局部_meanshift算法

对单个样本,训练时的损失函数为各个时刻的损失函数之和:

meanshift算法 局部_meanshift算法_meanshift算法简介

这里的反向传播算法称为BPTT(Back Propagation Through Time),在时间轴上进行反向传播。误差项的递推计算公式为:

meanshift算法_meanshift算法 局部_meanshift算法简介

根据误差项计算权重和偏置的公式为:

meanshift算法简介_meanshift算法 局部_meanshift算法

生成对抗网络(Generative Adversarial Network,简称GAN)是用机器学习的方法来解决数据生成问题的一种框架,它的目标是生成服从某种随机分布的数据,由Goodfellow在2014年提出。 这种模型能够找出样本数据内部的概率分布规律,并根据这种规律产生出新的数据。

整个框架由一个生成模型和一个判别模型组成。生成模型用于学习真实数据的概率分布,并生成符合这种分布的数据;判别模型的任务是判断一个输入数据是来自于真实数据集还是由生成模型生成的。在训练时,通过两个模型之间不断的竞争,从而分别提高这两个模型的生成能力和判别能力。

meanshift算法简介_meanshift算法_meanshift算法 局部

生成模型的输入是随机噪声z,输出是产生的数据G(z)。判别模型的输入是真实样本,或者生成网络生成的数据,得到的是它们的分类结果D(x)。

训练的目标是让判别模型能够最大程度的正确区分真实样本和生成模型生成的样本;同时要让生成模型使生成的样本尽可能的和真实样本相似。即:判别模型要尽可能将真实样本判定为真实样本,将生成模型产生的样本判定为生成样本;生成模型要尽量让判别模型将自己生成的样本判定为真实样本。基于以上3个要求,对于生成模型生成的样本,要最小化如下目标函数:

meanshift算法简介_meanshift算法 局部_meanshift算法

这意味着如果生成模型生成的样本和真实样本越接近,被判别模型判断为真实样本的概率就越大,即D(G(z))的值越接近于1,目标函数的值越小。另外还要考虑真实的样本,对真实样本要尽量将它判别成1。这样要优化的目标函数定义为:

在这里判别模型和生成模型是目标函数的自变量,它们的参数是要优化的变量。求解时采用了交替优化的策略,先固定住生成网络,训练判别网络;然后固定住判别网络,训练生成网络。每个网络的训练都采用梯度下降法和反向传播算法。

集成学习家族

集成学习(ensemble learning)是一类机器学习算法,它通过多个模型的组合形成一个精度更高的模型,参与组合的模型称为弱学习器(weak learner)。在预测时使用这些弱学习器模型联合进行预测;训练时需要用训练样本集依次训练出这些弱学习器。随机森林和AdaBoost算法是这类算法的典型代表。

随机森林由多棵决策树组成。用多棵决策树联合预测可以提高模型的精度,这些决策树用对训练样本集随机抽样构造出样本集训练得到。由于训练样本集由随机抽样构造,因此称为随机森林。随机森林不仅对训练样本进行抽样,还对特征向量的分量随机抽样,在训练决策树时,每次分裂时只使用一部分抽样的特征分量作为候选特征进行分裂。下图是随机森林对异或问题的分类结果(来自SIGAI云端实验室):

对应的随机森林如下图所示:

meanshift算法_meanshift算法 局部_meanshift算法简介

随机森林是一种判别模型,也是一种非线性模型,它既支持分类问题,也支持回归问题,并且支持多分类问题,有很好的解释性。

Boosting算法也是一种集成学习算法。它的分类器由多个弱分类器组成,预测时用每个弱分类器分别进行预测,然后投票得到结果;训练时依次训练每个弱分类器,在这里和随机森林采用了不同的策略,不是对样本进行随机抽样构造训练集,而是重点关注被前面的弱分类器错分的样本。弱分类器是很简单的分类器,它计算量小且精度不用太高。

AdaBoost算法由Freund等人提出,是Boosting算法的一种实现版本。在最早的版本中,这种方法的弱分类器带有权重,分类器的预测结果为弱分类器预测结果的加权和。训练时训练样本具有权重,并且会在训练过程中动态调整,被前面的弱分类器错分的样本会加大权重,因此算法会关注难分的样本。

强分类器的计算公式为:

meanshift算法简介_meanshift算法 局部_meanshift算法

分类时的判定规则为:

训练目标是最小化指数损失函数:

meanshift算法 局部_meanshift算法_meanshift算法简介

求解时采用了分阶段优化的策略,先把弱分类器的权重当做常数,优化弱分类器。得到弱分类器之后,再优化它的权重。弱分类器的权重计算公式为:

meanshift算法_meanshift算法简介_meanshift算法 局部

样本权重的更新公式为:

meanshift算法 局部_meanshift算法简介_meanshift算法

AdaBoost算法的原则是关注之前被错分的样本,准确率高的弱分类器有更大的权重。

AdaBoost算法是一个判别模型,也是非线性模型,它只支持二分类问题。下图是用AdaBoost算法对异或问题的分类结果(来自SIGAI云端实验室):

无监督学习

相对于有监督学习,无监督学习的研究进展更为缓慢,算法也相对较少。无监督学习可以分为聚类和降维两大类,下面分别介绍。

聚类算法

聚类属于无监督学习问题,其目标是将样本集划分成多个类,保证同一类的样本之间尽量相似,不同类的样本之间尽量不同。这些类被称为簇(cluster)。与有监督的分类算法不同,聚类算法没有训练过程,直接完成对一组样本的划分从而确定每个样本的类别归属。我们一般将距离算法分为层次距离,基于质心的聚类,基于密度的聚类,基于概率分布的聚类,基于图的聚类这几种类型,它们从不同的角度定义簇。

k均值算法是一种被广为用于实际问题的聚类算法。它将样本划分成k个类,参数k由人工设定。算法将每个样本分配到离它最近的那个类中心所属的类,而类中心的确定又依赖于样本的分配方案。假设样本集有l个样本,给定参数k的值,算法将这些样本划分成k个集合:

最优分配方案是如下最优化问题的解:

meanshift算法_meanshift算法 局部_meanshift算法简介

其中

为类中心向量。这个问题是NP难问题,不易求得全局最优解,只能近似求解。实现时采用迭代法近似求解,只能保证收敛的局部最优解处。每次迭代时,首先计算所有样本离各个类中心的距离,然后将其分配到最近的那个类;接下来再根据这种分配方案更新类中心向量。下图为k均值算法的聚类结果(来自SIGAI云端实验室):

基于概率分布的算法假设每一个簇的样本服从相同的概率分布,这是一种生成模型。经常使用的是多维正态分布,如果服从这种分布,则为高斯混合模型,在求解时一般采用EM算法。

EM算法是一种迭代法,其目标是求解似然函数或后验概率的极值,而样本中具有无法观测的隐含变量z。例如有一批样本分属于3个类,每个类的样本都服从正态分布,均值和协方差未知,并且每个样本属于哪个类也是未知的,需要在这种情况下估计出每个正态分布的均值和协方差。算法在实现时分为两步:

E步,基于当前的参数估计值

,计算在给定x时对z的条件概率的数学期望:

meanshift算法简介_meanshift算法 局部_meanshift算法

M步,求解如下极值问题,更新

的值:

meanshift算法_meanshift算法简介_meanshift算法 局部

实现时

可以按照下面的公式计算:

meanshift算法简介_meanshift算法_meanshift算法 局部

迭代终止的判定规则是相邻两次函数值之差小于指定阈值。

DBSCAN算法是一种基于密度的算法,对噪声鲁棒。它将簇定义为样本密集的区域,算法从一个种子样本开始,反复向密集的区域生长,直至到达边界。

算法首先找出核心点,即周围样本非常密集的那些样本点。然后从某一核心点出发,不断向密度可达的区域扩张,得到一个包含核心点和边界点的最大区域,这个区域中任意两点密度相连。下图是DBSCAN算法的聚类结果(来自SIGAI云端实验室):

OPTICS算法是对DBSCAN算法的改进,对参数更不敏感。它不直接生成簇,而是对本进行排序,这种排序包含了聚类信息。

均值漂移(Mean Shift)算基于核密度估计技术,是一种寻找概率密度函数极值点的算法。在用于聚类任务时,它寻找概率密度函数的极大值点,即样本分别最密集的位置,以此得到簇。

基于图的算法把样本数据看成图的顶点,通过数据点之间的距离构造边,形成带权图。通过图的切割实现聚类,即将图切分成多个子图,这些子图就是对应的簇。基于图的聚类算法典型的代表是谱聚类算法。谱聚类算法首先构造数据的邻接图,得到图的拉普拉斯矩阵。接下来对矩阵进行特征值分解,通过特征值和特征向量构造出簇。

数据降维

在有些应用中,向量的维数非常高。以图像数据为例,对于高度和宽度分别为100像素的图像,如果将所有像素值拼接起来形成一个向量,这个向量的维数是10000。另外向量的各个分量之间可能存在相关性。直接将向量送入机器学习算法中处理效率会很低,也影响算法的精度。为了可视化显示数据,我们也需要把向量变换到低维空间中。

主成分分析(principal component analysis,简称PCA)是一种数据降维和去除相关性的方法,它通过线性变换将向量投影到低维空间。对向量进行投影就是让向量左乘一个矩阵得到结果向量,这也是线性代数中讲述的线性变换:

降维要确保的是在低维空间中的投影能很好的近似表达原始向量,即重构误差最小化。下图是主分量投影示意图:

meanshift算法 局部_meanshift算法_meanshift算法简介

图7.1 主分量投影示意图

在上图中样本用红色的点表示,倾斜的直线是它们的主要变化方向。将数据投影到这条直线上即完成数据的降维,把数据从2维降为1维。

寻找投影矩阵时要优化的目标是使得重构误差最小化:

meanshift算法_meanshift算法简介_meanshift算法 局部

使得该函数取最小值

的为散度矩阵最大的

个特征值对应的单位长度特征向量。即求解下面的优化问题:

meanshift算法 局部_meanshift算法简介_meanshift算法

矩阵W的列

是我们要求解的基向量。散度矩阵是实对称矩阵,因此属于不同特征值的特征向量是正交的。下图是主成分分析对手写数字图像的降维结果(来自SIGAI云端实验室):

meanshift算法简介_meanshift算法_meanshift算法 局部

虽然都是线性投影算法,但主成分分析和线性判别分析有本质的不同,前者是无监督的,后者是有监督的,计算过程中使用了类别标签信息。

主成分分析是一种线性降维技术,对于高度非线性的数据具有局限性,而在实际应用中很多时候数据是非线性的。此时可以采用非线性降维技术,流形学习(manifold learning)是非线性降维技术的典型代表。

流形是微分几何中的一个概念,它是高维空间中的几何结构,即空间中的点构成的集合,可以简单的理解成二维空间的曲线,三维空间的曲面在更高维空间的推广。下图是三维空间中的一个流形,这是一个卷曲的曲面:

假设有一个N维空间中的流形M,即:

流形学习降维要实现的是如下映射:

其中n

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688