机器学习算法综述——有监督学习

机器学习算法综述——有监督学习

  • 一、决策树家族
    • 1. ID3、C4.5、CART之间的区别
  • 二、线性模型家族
    • 1. 线性回归(岭回归和LASSO回归)
    • 2. 线性分类(线性判别分析LDA和感知器算法)
      • 1. 支持向量机SVM
      • 2. Logistic回归
      • 3. MLP多层感知机(人工神经网络)
  • 三、贝叶斯分类器家族
    • 1、朴素贝叶斯分类器
    • 2、正态贝叶斯分类器
    • 3、总结
  • 四、集成学习家族
    • 1、Bagging与随机森林
      • Bagging
      • 随机森林(Random Forest,简称RF)
    • 2、Boosting(AdaBoost和GBDT)
      • AdaBoost
      • GBDT(梯度提升算法)
  • 五、KNN与距离度量学习算法家族

机器学习算法综述——有监督学习_第1张图片

一、决策树家族

决策树优势:为什么业务人喜欢,可以给你决策场景,因为模型可视化高,可以讲故事。
决策树很擅长处理非数值型数据,这与神经网络智能处理数值型数据比较而言,就免去了很多数据预处理工作。

1. ID3、C4.5、CART之间的区别

历史回顾:1984年提出的cart,1986年提出的ID3,1993年提出的c4.5

理论上总的来说:

C4.5是基于ID3优化后产出的算法,主要优化了关于节点分支的计算方式,优化后解决了ID3分支过程中总喜欢偏向取值较多的属性

  • ID3是信息增益分支:
  • 而CART一般是GINI系数分支:
  • C4.5一般是信息增益率分支:

工程上总的来说:
CART和C4.5之间主要差异在于分类结果上,CART可以回归分析也可以分类,C4.5只能做分类;C4.5子节点是可以多分的,而CART是无数个二叉子节点;
以此拓展出以CART为基础的“树群”random forest , 以回归树为基础的“树群”GBDT

样本数据的差异:

  • ID3只能对分类变量进行处理,C4.5和CART可以处理连续和分类两种自变量
  • ID3对缺失值敏感,而C4.5和CART对缺失值可以进行多种方式的处理
  • 只从样本量考虑,小样本建议考虑c4.5、大样本建议考虑cart。c4.5处理过程中需对数据集进行多次排序,处理成本耗时较高,而cart本身是一种大样本的统计方法,小样本处理下泛化误差较大

目标因变量的差异:

  • ID3和C4.5只能做分类,CART(分类回归树)不仅可以做分类(0/1)还可以做回归(0-1)
  • ID3和C4.5节点上可以产出多叉(低、中、高),而CART节点上永远是二叉(低、非低)

样本特征上的差异:

  • 特征变量的使用中,多分的分类变量ID3和C4.5层级之间只单次使用,CART可多次重复使用

决策树产生过程中的优化差异:

  • C4.5是通过枝剪来修正树的准确性,而CART是直接利用全部数据发现所有树的结构进行对比

二、线性模型家族

线性模型恐怕是机器学习中最大的一个家族,从它衍生出了支持向量机,神经网络这两类分别三十年河东,三十年河西,引领机器学习进程的重要算法。

1. 线性回归(岭回归和LASSO回归)

它的预测函数为

h ( x ) = w T x + b h(\mathbf{x})=\mathbf{w}^{\mathrm{T}} \mathbf{x}+b h(x)=wTx+b

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

L ( w , b ) = 1 2 l ∑ i = 1 l ( w T x i + b − y i ) 2 L(\mathbf{w}, b)=\frac{1}{2 l} \sum_{i=1}^{l}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}_{i}+b-y_{i}\right)^{2} L(w,b)=2l1i=1l(wTxi+byi)2

  • 如果加上L2正则化项, 就得到了岭回归

min ⁡ w , b ∑ i = 1 l ( w T x i + b − y i ) 2 + λ 1 2 w T w \min _{\mathbf{w}, b} \sum_{i=1}^{l}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}_{i}+b-y_{i}\right)^{2}+\lambda \frac{1}{2} \mathbf{w}^{\mathrm{T}} \mathbf{w} w,bmini=1l(wTxi+byi)2+λ21wTw

  • 如果加上L1正则化项,就得到了LASSO回归

min ⁡ w , b ∑ i = 1 l ( w T x i + b − y i ) 2 + λ ∥ w ∥ 1 \min _{\mathbf{w}, b} \sum_{i=1}^{l}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}_{i}+b-y_{i}\right)^{2}+\lambda\|\mathbf{w}\|_{1} w,bmini=1l(wTxi+byi)2+λw1

这是线性模型家族的第1个分支,更大的分支是分类问题。

2. 线性分类(线性判别分析LDA和感知器算法)

首先是与数据降维算法的结合,诞生了线性判别分析(LDA),我们在稍后会细讲。另外就是一个在机器学习历史上具有重要启发性意义的线性分类器算法:感知器算法。
机器学习算法综述——有监督学习_第2张图片
感知器算法的目标函数为

min ⁡ w , b ∑ i = 1 l − y i ( w T x i + b ) \min _{\mathbf{w}, b} \sum_{i=1}^{l}-y_{i}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}_{i}+b\right) w,bmini=1lyi(wTxi+b)

此损失函数的意义为对于每个训练样本,如果预测正确即与标签值同号,则会有一个负的损失,否则有一个正的损失。这里的目标是将损失最小化。

下面是关于感知器算法的演变结果。

1. 支持向量机SVM

感知器算法的第一个进化结果是支持向量机,它是最大化分类间隔的线性分类器(这里不考虑核函数)。想法其实很简单:为了得到好的泛化性能,分类平面应该不偏向于任何一类,并且离两个类的样本都尽可能的远。
机器学习算法综述——有监督学习_第3张图片
支持向量机训练时的优化目标是:

min ⁡ 1 2 w T w y i ( w T x i + b ) ≥ 1 \begin{aligned} &\min \frac{1}{2} \mathbf{w}^{\mathrm{T}} \mathbf{w} \\ &y_{i}\left(\mathbf{w}^{\mathrm{T}} \mathbf{x}_{i}+b\right) \geq 1 \end{aligned} min21wTwyi(wTxi+b)1

加上核函数之后,支持向量机可以解决复杂的非线性分类问题。
机器学习算法综述——有监督学习_第4张图片

2. Logistic回归

第2条进化路线是logistic回归,想法同样很简单:用logistic函数直接预测出样本属于正样本的概率

h ( x ) = 1 1 + exp ⁡ ( − w T x + b ) h(\mathbf{x})=\frac{1}{1+\exp \left(-\mathbf{w}^{\mathrm{T}} \mathbf{x}+b\right)} h(x)=1+exp(wTx+b)1

logistic回归简单,当年得到了广泛的应用,但是它只能解决二分类问题。对它进行扩展,用类似的方法可以计算出样本输入每个类的概率,这就是softmax回归

h θ ( x ) = 1 ∑ i = 1 k e θ i T x [ e θ 1 T x … e θ k T x ] h_{\theta}(\mathrm{x})=\frac{1}{\sum_{i=1}^{k} e^{\boldsymbol{\theta}_{i}^{\mathrm{T}} \mathbf{x}}}\left[\begin{array}{c} e^{\boldsymbol{\theta}_{1}^{\mathrm{T}} \mathbf{x}} \\ \ldots \\ e^{\boldsymbol{\theta}_{k}^{\mathrm{T}} \mathbf{x}} \end{array}\right] hθ(x)=i=1keθiTx1eθ1TxeθkTx

训练时同样采用最大似然估计,等价于最小化交叉熵
这是两个多项分布的交叉熵。

L ( θ ) = − ∑ i = 1 l ∑ j = 1 k ( y i j ln ⁡ exp ⁡ ( θ j T x i ) ∑ t = 1 k exp ⁡ ( θ t T x i ) ) L(\boldsymbol{\theta})=-\sum_{i=1}^{l} \sum_{j=1}^{k}\left(y_{i j} \ln \frac{\exp \left(\boldsymbol{\theta}_{j}^{\mathrm{T}} \mathbf{x}_{i}\right)}{\sum_{t=1}^{k} \exp \left(\boldsymbol{\theta}_{t}^{\mathrm{T}} \mathbf{x}_{i}\right)}\right) L(θ)=i=1lj=1kyijlnt=1kexp(θtTxi)exp(θjTxi)

3. MLP多层感知机(人工神经网络)

logistic回归是如此的弱,以至于它不能处理简单的异或问题-它不能解决那些不是线性可分的问题。于是出现了另外一条进化路线,也是现在的大杀器:人工神经网络。对于全连接神经网络(多层感知器模型,MLP),如果采用logistic激活函数,人工神经网络的单个神经元就是logistic回归,也就是说神经网络是由多个logistic回归模型复合构成的。
机器学习算法综述——有监督学习_第5张图片
由此,我们让这一家族的机器学习模型有了处理非线性问题的能力。如果最后一个层使用softmax回归层,神经网络可以预测出样本属于每个类的概率,解决多分类问题。
机器学习算法综述——有监督学习_第6张图片
人工神经网络现在以深度学习的身份自居,从它派生出了各种神经网络结构

CNN
RNN
GNN
自动编码器
RBM
深度生成模型

首先想到的是如何处理图像这样的数据,神经网络与图像处理中的卷积运算结合,出现了卷积神经网络(CNN)。之前的卷积核是人工设计的,而卷积神经网络中的卷积核是通过学习得到。这样,我们可以有效的处理2维空间,或者更高维空间的数据。用于图像分类,目标检测,图像分割等问题时,卷积神经网络衍生出了众多的结构。
机器学习算法综述——有监督学习_第7张图片
既然有空间,那就有时间,在机器学习领域,我们经常需要处理时间序列问题,这需要神经网络具有记忆能力,由此诞生了循环神经网络(RNN)。这种神经网络会保存上一个时刻的某些数据,用作下一个时刻的输入数据,从而实现了记忆功能。在语音识别、自然语言处理等时间序列预测问题上,循环神经网络取得了成功。
机器学习算法综述——有监督学习_第8张图片
计算机系的同学一定对图不陌生,数据结构里花了大量的篇幅介绍这种数据结构。现实生活中的很多问题也可以用图来进行建模,比如社交网络中各个人之间的关系;知识图谱中的知识结构图。于是我们又想到了把神经网络与图结合起来,诞生了图神经网络(GNN)这种结构。

神经网络与编码器-解码器结构相结合,诞生了自动编码器这种神经网络,这是一种无监督的神经网络结构。它的训练目标是最小化重构误差。

min ⁡ 1 2 l ∑ i = 1 l ∥ x i − g θ ′ ( h θ ( x i ) ) ∥ 2 2 \min \frac{1}{2 l} \sum_{i=1}^{l}\left\|\mathbf{x}_{i}-g_{\boldsymbol{\theta}^{\prime}}\left(h_{\boldsymbol{\theta}}\left(\mathbf{x}_{i}\right)\right)\right\|_{2}^{2} min2l1i=1lxigθ(hθ(xi))22

自动编码器又出现了一些变种,包括去噪自动编码器,稀疏自动编码器,收缩自动编码器,以及后面将要介绍的变分自动编码器。
机器学习算法综述——有监督学习_第9张图片
去噪自动编码器对自动编码器的主要改进是在训练样本中加入随机噪声,重构的目标是不带噪声的样本数据,用自动编码器学习得到的模型重构出来的数据可以去除这种噪声,获得没有被噪声污染过的数据,这也意味着自动编码器能从有噪声的数据学习出特征。

min ⁡ 1 2 l ∑ i = 1 l ∥ x i − g θ ′ ( h θ ( x ~ i ) ) ∥ 2 2 \min \frac{1}{2 l} \sum_{i=1}^{l}\left\|\mathbf{x}_{i}-g_{\boldsymbol{\theta}^{\prime}}\left(h_{\boldsymbol{\theta}}\left(\tilde{\mathbf{x}}_{i}\right)\right)\right\|_{2}^{2} min2l1i=1lxigθ(hθ(x~i))22

稀疏自动编码器的主要改进在于训练时的目标函数中加入了稀疏性惩罚项,使得编码器的输出向量中各个分量的值尽可能接近于0,得到稀疏的编码结果。这里用KL散度作为稀疏性惩罚项,假设神经元是否活跃服从伯努利分布。

min ⁡ 1 2 l ∑ i = 1 l ∥ x i − g θ ( h θ ( x i ) ) ∥ 2 2 + β ∑ i = 1 n ( ρ ln ⁡ ρ ρ ^ i + ( 1 − ρ ) ln ⁡ 1 − ρ 1 − ρ ^ i ) \min \frac{1}{2 l} \sum_{i=1}^{l}\left\|\mathbf{x}_{i}-g_{\mathbf{\theta}}\left(h_{\boldsymbol{\theta}}\left(\mathbf{x}_{i}\right)\right)\right\|_{2}^{2}+\beta \sum_{i=1}^{n}\left(\rho \ln \frac{\rho}{\hat{\rho}_{i}}+(1-\rho) \ln \frac{1-\rho}{1-\hat{\rho}_{i}}\right) min2l1i=1lxigθ(hθ(xi))22+βi=1n(ρlnρ^iρ+(1ρ)ln1ρ^i1ρ)

收缩自动编码器对自动编码器的改进是训练时在损失函数中加上正则化项,使得编码器函数的导数尽可能小。

L C A E ( θ ) = ∑ x ∈ D ( L ( x , g ( h ( x ) ) ) + λ ∥ L h ( x ) ∥ 2 ) L_{\mathrm{CAE}}(\boldsymbol{\theta})=\sum_{\mathbf{x} \in D}\left(L(\mathbf{x}, g(h(\mathbf{x})))+\lambda\left\|L_{h}(\mathbf{x})\right\|^{2}\right) LCAE(θ)=xD(L(x,g(h(x)))+λLh(x)2)

前面介绍的神经网络都是确定性的,每个神经元的输出值可以根据输入值唯一确定,存在确定函数关系。神经网络还可以和概率论相结合,使得它具有随机性。在这种模型中,神经网络的输出值是随机的而不是确定的,即它们的值服从某种概率分布。如果采用玻尔兹曼分布,且神经网络的结构是一个二部图,就得到了受限玻尔兹曼机(RBM)。
机器学习算法综述——有监督学习_第10张图片
可见变量与隐变量的联合概率为

p ( v , h ) = 1 Z θ exp ⁡ ( − E θ ( v , h ) ) = 1 Z θ exp ⁡ ( v T W h + b T v + d T h ) p(\mathrm{v}, \mathrm{h})=\frac{1}{Z_{\theta}} \exp \left(-E_{\theta}(\mathrm{v}, \mathrm{h})\right)=\frac{1}{Z_{\theta}} \exp \left(\mathrm{v}^{\mathrm{T}} \mathrm{Wh}+\mathrm{b}^{\mathrm{T}} \mathrm{v}+\mathrm{d}^{\mathrm{T}} \mathrm{h}\right) p(v,h)=Zθ1exp(Eθ(v,h))=Zθ1exp(vTWh+bTv+dTh)

模型的参数通过最大似然估计得到。
我们还可以把多个RBM堆叠起来使用,实现逐级的特征抽取。这样就得到了深度玻尔兹曼机(DBM)。在这种结构中,各个层都是无向的。
机器学习算法综述——有监督学习_第11张图片
也可以将RBM与贝叶斯网络(概率有向图模型,将在后面介绍)结合起来,得到深信度网络DBN。在这种结构中,顶部的层是RBM,是无向的;底部的层是贝叶斯网络,是有向的。

神经网络与生成数据生成模型(更准确的说是概率分布变换)相结合,诞生了深度生成模型,典型代表是变分自动编码器(VAE),以及生成对抗网络(GAN),在后面会进一步介绍。

三、贝叶斯分类器家族

贝叶斯分类器是最简单的分类模型之一,也是一种生成式模型。它直接用贝叶斯公式算出样本属于每个类的后验概率

p ( y ∣ x ) = p ( x ∣ y ) p ( y ) p ( x ) p(y \mid \mathbf{x})=\frac{p(\mathbf{x} \mid y) p(y)}{p(\mathbf{x})} p(yx)=p(x)p(xy)p(y)

然后取后验概率最大的那个类作为分类结果

arg ⁡ max ⁡ y p ( x ∣ y ) p ( y ) \arg \max _{y} p(\mathbf{x} \mid y) p(y) argymaxp(xy)p(y)

贝叶斯分类器要知道每类样本所服从的概率分布。对于这个问题,这里衍生出了两种贝叶斯分类器实现:朴素贝叶斯分类器,正态贝叶斯分类器。

1、朴素贝叶斯分类器

假设每个类的样本的特征向量的每个分量相互独立

p ( y = c i ∣ x ) = p ( y = c i ) ∏ j = 1 n p ( x j ∣ y = c i ) Z p\left(y=c_{i} \mid \mathbf{x}\right)=\frac{p\left(y=c_{i}\right) \prod_{j=1}^{n} p\left(x_{j} \mid y=c_{i}\right)}{Z} p(y=cix)=Zp(y=ci)j=1np(xjy=ci)

2、正态贝叶斯分类器

假设每类样本的特征向量服从多维正态分布

p ( x ∣ c ) = 1 ( 2 π ) n 2 ∣ Σ ∣ 1 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) p(\mathbf{x} \mid c)=\frac{1}{(2 \pi)^{\frac{n}{2}}|\Sigma|^{\frac{1}{2}}} \exp \left(-\frac{1}{2}(\mathbf{x}-\boldsymbol{\mu})^{\mathrm{T}} \mathbf{\Sigma}^{-1}(\mathbf{x}-\boldsymbol{\mu})\right) p(xc)=(2π)2nΣ211exp(21(xμ)TΣ1(xμ))

3、总结

无论是哪种贝叶斯分类器,训练时模型的参数都通过最大似然估计得到。贝叶斯分类器可以看做是贝叶斯网络的简单特例,正态可以实现多个变量之间的因果推理。因此,从贝叶斯分类器衍生出了概率有向图模型-贝叶斯网络。

四、集成学习家族

集成学习是机器学习中一类重要的存在,它源于一个朴实的思想:三个臭皮匠,赛过诸葛亮。如果每个机器学习模型很弱,我们把它们联合起来使用,集体做决策,很有可能就可以提升预测精度!即根据多个弱学习器构造一个强学习器。
根据个体学习器的生成方式,目前的集成学习方法大致可以分为两类:

  1. 个体学习器间存在强依赖关系、必须串行生成的序列化方法,代表为Boosting;
  2. 个体学习器间不存在强依赖关系、可同时生成的并行化方法,代表为Bagging和随机森林。

注:所谓串行生成的序列化方法就是除了训练第一个之外,其他的学习器学习都需要依赖于前面生成的学习的结果。

1、Bagging与随机森林

对训练样本集进行采样,每次用采样得到的训练集训练一个机器学习模型。预测时,对于分类问题,将这些模型的据测结果进行投票,得到分类结果。对于回归问题,用它们的均值作为回归结果。如果弱学习器是决策树,那就叫随机森林。随机森林在实现时不光对训练样本进行随机抽样,用抽样得到的样本集训练每一棵决策树,另外还对特征向量的分量进行了抽样,用于训练决策树的每个内部节点。将一片树放在一起,那当然叫森林!

Bagging

bagging 是一种个体学习器之间不存在强依赖关系、可同时生成的并行式集成学习方法。

bagging 基于自助采样法(bootstrap sampling),也叫有放回重采样法.即给定包含m个样本的数据集,先随机从样本中取出一个样本放入采样集中,再把该样本返回初始数据集,使得下次采样时该样本仍可以被选中,这样,经过m次随机采样操作,就可以得到包含m个样本的采样集,初始数据集中有的样本多次出现,有的则未出现,其中,初始训练集中约有63.2%的样本出现在采样集中。

Bagging的优点:

  1. 训练一个 Bagging集成与直接使用基分类器算法训练一个学习器的复杂度同阶,说明Bagging是一个高效的集成学习算法。
  2. 此外,与标准的AdaBoost算法只适用于二分类问题不同,Bagging能不经过修改用于多分类、回归等任务。
  3. 由于每个基学习器只使用63.2%的数据,所以剩下36.8%的数据可以用来做验证集来对泛化性能进行“包外估计”。

随机森林(Random Forest,简称RF)

随机森林是bagging的扩展体。RF在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体地,传统决策树在选择划分属性时是在当前结点的属性集合(假定有d个属性)中选择一个最优属性,而在RF上,对基决策树的每个结点,先从该结点的属性集中随机选择其中的k个属性组成属性集,然后从该属性集中选择最优的划分属性,一般情况下,推荐 k = log ⁡ 2 d 。  k=\log _{2} d_{\text {。 }} k=log2d 
随机森林的优势:

  1. 能够处理很高维度的数据,并且不用做特征选择;
  2. 在训练完成后,可以给出哪些属性比较重要;
  3. 容易做成并行化方法,速度快;
  4. 可以进行可视化展示,便于分析。

随机森林和Bagging比较:
两者的收敛性相似,但RF的起始性能相对较差,特别只有一个基学习器时。随着基学习器数量的增加,随机森林通常会收敛到更低的泛化误差。随机森林的训练效率常优于Bagging,因为Bagging是“确定型”决策树,而随机森林使用“随机型”决策树。

2、Boosting(AdaBoost和GBDT)

AdaBoost

AdaBoost算法为样本设置权重,每次迭代时构造不同的训练样本集,依次训练每个弱学习器,用前向差分的方式拟合强学习器,是广义加法模型与各种损失函数相结合的产物。

AdaBoost算法有4种典型的实现(这里不考虑多分类问题),分别是
离散型AdaBoost

实数型AdaBoost

LogitBoost

Gentle型AdaBoost

离散型AdaBoost是最基本的AdaBoost算法实现,它为训练样本、弱学习器设置了权重,原则是:关注之前被错分的样本即被前面的弱学习器错分的样本权重大,准确率高的弱分类器有更大的权重。

实数型AdaBoost算法弱分类器的输出值是实数值,它是向量到实数的映射。这个实数的绝对值可以看作是置信度,它的值越大,样本被判定为正样本的可信度越高。

无论是离散型还是实数型AdaBoost,都是求解指数损失函数的最小值问题,将之前迭代已经得到的强分类器看作为常数。

广义加性模型没有限定损失函数的具体类型,离散型和实数型AdaBoost采用的是指数损失函数。如果把logistic回归的损失函数应用于此模型,可以得到LogitBoost算法。LogitBoost用牛顿法优化logistic回归的对数似然函数。

Gentle型AdaBoost的弱分类器是回归函数。

GBDT(梯度提升算法)

梯度提升算法是另外一种提升算法,它是广义加法模型与最速下降法相结合的产物。这类算法将学习器的输出值看作变量,计算损失函数对它的导数,用最速下降法进行迭代。结合加法模型,使得学习器每次更新时拟合最速下降法的迭代步长,从而得到最终的学习器。

这里损失函数对强学习器输出值的偏导数该怎么算,要依赖于具体的损失函数和弱学习器类型。对于回归问题,可以使用均方误差,也可以使用Huber损失。

对于二分类问题,通常使用logistic回归的对数似然函数作为损失函数。强分类器的预测函数为对数似然比。多分类问题可以使用softmax回归,损失函数为交叉熵。

由此也可以看出,梯度提升算法与线性回归,logistic回归,softmax回归是有密切的联系的。对梯度提升算法进一步改进,又出现了XGBoost算法,LightGBM算法。

梯度提升法将损失函数进行泰勒展开,然后用最速下降法求解。XGBoost的做法类似,它是牛顿法与加法模型相结合的产物。XGBoost将损失函数泰勒展开到2阶,采用牛顿法求解,弱学习器拟合的是牛顿法的步长。同时它还加入了正则化项,损失函数定义为

L ( ϕ ) = ∑ i l ( y i ′ , y i ) + ∑ k Ω ( f k ) L(\phi)=\sum_{i} l\left(y_{i}^{\prime}, y_{i}\right)+\sum_{k} \Omega\left(f_{k}\right) L(ϕ)=il(yi,yi)+kΩ(fk)

集成学习要求弱学习器是非线性的,且实现简单,因此选择了决策树作为弱学习器。

五、KNN与距离度量学习算法家族

KNN算法是基于实例的机器学习算法,预测时将待预测样本直接与训练样本集进行比较,得到结果。它既可以用于分类问题,也可以用于回归问题。KNN算法的实现依赖于距离函数,除了我们常用的欧氏距离、曼哈顿距离等距离定义,我们还可以用机器学习的方式来确定一个距离函数-可谓是一切皆可学习!具体的,是学习一个距离度量矩阵。

由此引申出了距离度量学习家族,它曾经是种重要的机器学习算法存在,至今还发挥着重要的作用。这里列出了典型的3种实现,分别是

LMNN

ITML

NCA
LMNN是一种有监督的距离度量学习算法,它的目标是:确保每个样本的最近的若干个邻居样本都是自己的同类样本,而不同类的样本离它尽可能远。前者是“拉”,将同类样本拉近;后者是“推”,将不同类样本推远。如下图所示机器学习算法综述——有监督学习_第12张图片
因此目标函数是拉函数与推函数的加权和

ε pull  ( L ) = ∑ j ∼ → i ∥ L ( x i − x j ) ∥ 2 ε push  ( L ) = ∑ i , j ∼ → i ∑ l ( 1 − y i l ) [ 1 + ∥ L ( x i − x j ) ∥ 2 − ∥ L ( x i − x l ) ∥ 2 ] + ε ( L ) = ( 1 − μ ) ε pull  ( L ) + μ ε p u s h ( L ) \begin{gathered} \varepsilon_{\text {pull }}(\mathbf{L})=\sum_{j \sim \rightarrow i}\left\|\mathbf{L}\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right)\right\|^{2} \\ \varepsilon_{\text {push }}(\mathbf{L})=\sum_{i, j \sim \rightarrow i} \sum_{l}\left(1-y_{i l}\right)\left[1+\left\|\mathbf{L}\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right)\right\|^{2}-\left\|\mathbf{L}\left(\mathbf{x}_{i}-\mathbf{x}_{l}\right)\right\|^{2}\right]_{+} \\ \varepsilon(\mathbf{L})=(1-\mu) \varepsilon_{\text {pull }}(\mathbf{L})+\mu \varepsilon_{p u s h}(\mathbf{L}) \end{gathered} εpull (L)=jiL(xixj)2εpush (L)=i,jil(1yil)[1+L(xixj)2L(xixl)2]+ε(L)=(1μ)εpull (L)+μεpush(L)

ITML就是一种基于信息论的方法,算法使用了信息论中的KL散度,因此得名。这是一种有监督的局部度量学习算法。ITML的优化目标是在保证同类样本距离相近,不同类样本之间距离远的约束条件下,迫使度量矩阵所代表的正态分布接近于某一先验概率分布。目标函数为

min ⁡ A D K L ( p ( x ; A 0 ) ∥ p ( x ; A ) ) d A ( x i , x j ) ≤ u ( i , j ) ∈ S d A ( x i , x j ) ≥ l ( i , j ) ∈ D \begin{aligned} &\min _{\mathbf{A}} D_{\mathrm{KL}}\left(p\left(\mathbf{x} ; \mathbf{A}_{0}\right) \| p(\mathbf{x} ; \mathbf{A})\right) \\ &d_{\mathbf{A}}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right) \leq u \quad(i, j) \in S \\ &d_{\mathbf{A}}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right) \geq l \quad(i, j) \in D \end{aligned} AminDKL(p(x;A0)p(x;A))dA(xi,xj)u(i,j)SdA(xi,xj)l(i,j)D

如果假设服从正态分布,目标函数为

min ⁡ A D l d ( A , A 0 ) tr ⁡ ( A ( x i − x j ) ( x i − x j ) T ) ≤ u ( i , j ) ∈ S tr ⁡ ( A ( x i − x j ) ( x i − x j ) T ) ≥ l ( i , j ) ∈ D \begin{array}{ll} \min _{\mathbf{A}} D_{l d}\left(\mathbf{A}, \mathbf{A}_{0}\right) \\ \operatorname{tr}\left(\mathbf{A}\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right)\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right)^{\mathrm{T}}\right) \leq u & (i, j) \in S \\ \operatorname{tr}\left(\mathbf{A}\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right)\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right)^{\mathrm{T}}\right) \geq l & (i, j) \in D \end{array} minADld(A,A0)tr(A(xixj)(xixj)T)utr(A(xixj)(xixj)T)l(i,j)S(i,j)D

与LMNN类似,NCA同样与k近邻算法有关。其优化目标是使得每个样本的同类样本被k近邻算法正确分类的概率最大化,以此构造目标函数。这是一种有监督的局部度量学习算法。样本对邻居概率定义通过softmax归一化进行计算

p i j = exp ⁡ ( − ∥ A x i − A x j ∥ 2 ) ∑ k , k ≠ i exp ⁡ ( − ∥ A x i − A x k ∥ 2 ) p_{i j}=\frac{\exp \left(-\left\|\mathbf{A} \mathbf{x}_{i}-\mathbf{A} \mathbf{x}_{j}\right\|^{2}\right)}{\sum_{k, k \neq i} \exp \left(-\left\|\mathbf{A} \mathbf{x}_{i}-\mathbf{A} \mathbf{x}_{k}\right\|^{2}\right)} pij=k,k=iexp(AxiAxk2)exp(AxiAxj2)

在对样本点进行分类时,如果采用这些邻接作为其标签值,则可以计算出样本点被正确分类的概率。样本点被正确的分类的概率是它所有同类样本成为其邻居的概率之和

p i = ∑ j ∈ C i p i j p_{i}=\sum_{j \in C_{i}} p_{i j} pi=jCipij

NCA的优化目标是所有样本的上述概率之和

L ( A ) = ∑ i p i = ∑ i ∑ j ∈ C i p i j L(\mathbf{A})=\sum_{i} p_{i}=\sum_{i} \sum_{j \in C_{i}} p_{i j} L(A)=ipi=ijCipij

这种思想与后面将要介绍的SNE算法有些类似。

你可能感兴趣的:(机器学习,机器学习,集成学习,分类,回归,boosting)