模式识别和机器学习 笔记

来源:互联网 发布:mysql 数据库设计模式 编辑:程序博客网 时间:2024/05/16 04:51

第一章 introduction 

首先举了一个手写识别的例子,介绍了机器学习的基本概念:训练集、测试集合、训练阶段/学习阶段、泛化能力(generalization)、特征选择/抽取、监督式学习:分类、回归;无监督式学习:聚类、密度估计、可视化;增强学习(reinforcementlearning). 


1.1 多项式曲线拟合的例子: 

对sin(2 * PI * x)曲线进行多项式拟合,根据sina函数均匀生成带高斯noise的点,作为训练集合以及测试集合。多项式函数是关于w的线性函数,是一种重要的模型,称为线性模型,在第三、四章会详细介绍,与kernal方法结合,是模式识别和机器学习最重要的方法之一。 
定义了错误函数:预测值和实际值之间的差的平方和,这个也是在高斯noise下后验概率的估计结果,作为最小化优化的目标函数,求出w。错误函数是关于w的二次函数,所以有唯一的全局最优解,求导数即可以得到w。 

书中以多项式的阶次为例说明了模型选择和模型对比的概念。作者以0,1,3,9为例,过度拟合的问题。指出模式识别和机器学习的最重要的问题是模型的泛化能力。 
在测试集上定义了错误函数EMS(root-mean-square error):EMS = sqrt( 2 * E(w) / N ) 绘制了训练集和测试集的错误曲线。 
书中给出了M(阶数)的不同值下,可以发现当M很大的时候,高阶多项式函数可以精确地与数据匹配,为了拟合训练集合的点,系数会出现很大的正数和负数,导致曲线有比较大的波动,从而导致数据点之间的点拟合比较差(sin (2πx) 的幂级数展开包含所有阶数的项,所以我们可能会以为结果会随着 M 的增⼤⽽单调地变好:有着更⼤的 M 值的更灵活的多项式被过分地调参,使得多项式被调节成了与⽬标值的随机噪声相符;也就是当M越大越目标值就越容易产生随机的噪音。 

解决方法:

1.当训练集的规模扩大时,复杂的模型的过度拟合问题就会缓解,并达到更好的效果。一般来说训练集元素的数量要是参数个数的5到10倍以上。当然模型的复杂性不仅仅反映在参数的个数上。同样我们不应该根据训练集的大小来选择模型,而应该根据问题的复杂性来选择合适的模型。 


2.最小平方方法是最大似然估计的一个特例,过度拟合也是最大似然估计的一个固有特点。采用贝叶斯方法,过度拟合的问题就会被克服,因为贝叶斯模型的有效参数是根据 训练集合的大小自动调整的。 

3.采用正则化/规范化(regularization的)方法来解决过度拟合的问题。错误函数中添加了 λ* 1 / 2 * sqr( || W || )来避免W中出现过大或过小的正负数值系数。通过对比 选择合适的λ值来解决过度拟合的问题。 

以下M=9




1.2 概率论 
模式识别的一个核心问题是不确定性,主要是由于测量的误差和数据集大小的有限性导致的。概率论提供了一致性的框架来定量的描述这种不确定性,是模式识别的一个中心的基础。结合决策论,我们可以根据已有的信息,甚至是不完整有歧义的信息,来做出最优的预测。 

书中首先介绍了古典的概率论的基础知识:事件的概率、联合概率、边缘概率、条件概率、加法和乘法法则、先验概率、后验概率、贝叶斯公式、离散型概率、连续型概率、概率密度、期望、方差、协方差。 

贝叶斯概率: 
在古典型概率中, 概率是描述可重复的随机事件发生的频率。基于频率来解释概率被称为古典型或者频率型。贝叶斯概率给出了更一般的视角:定量的描述不确定性。 
使用贝叶斯概率,我们可以描述模型参数比如w的的不确定性或者模型本身的不确定性。贝叶斯理论能够根据已经观察的的数据提供的证据来将先验概率融入到后验概率的计算中。 
后验概率 = 似然函数 * 先验概率 

广泛使用的基于频率型估计的是最大似然估计。w被估计为使似然函数P(D|w)取得最大值的w。 

贝叶斯观点的一个重要的优势是很自然的集成了先验知识:比如一玫均匀的硬币抛掷了三次,都是正面朝上,使用最大似然估计方法,正面朝上的概率为1,但是贝叶斯集成合理的先验概率能够产生不那么极端的结论。 

贝叶斯方法通常被批评先验分布通常是选择基于数学上便利的而不是反应事实的先验信念。基于一个不好的先验可能会给出更差的结果。 
通过交叉验证的技术可以评测模型之间的好坏。 

高斯分布: 
高斯分布又成为正态分布,是一种重要的连续型变量的分布。分布函数、期望和方差。 
D-维高斯分布函数。 

使用最大似然估计μ和σ参数。μ是无偏估计和σ是有偏估计,但当N趋向于无穷时最大似然估计的σ偏差变的不重要,书中给出了σ一个无偏估计。 

曲线拟合revisit: 
假设概率给定的x,相应的值t具有均值为y(x,w)的高斯分布: 
p(t|x, w, β) = N (t|y(x, w), β^−1) 
然后使用ML方法估计w和β的值 

随后引入了一个超参数α然后进行最大后验概率估计,得到的结果发现,最大化后验概率的结果和最小化 regularized sum-of-squares error function方法的结果一样。 

贝叶斯曲线拟合: 
使用贝叶斯理论中的加法和乘法原理,得到 
p(t|x, x, t) = N( t|m(x), s2 (x) ) 

1.3 模型选择: 
从曲线拟合的例子中,我们可以看到有一个最佳的M似的模型具有最好的泛化能力。多项式的阶控制着多项式自由参数的个数,因此控制着模型的复杂性。我们经常会考虑一系列的不同的类型的模型,然后根据特定的应用选择一个最好的模型,这就是模型选择问题。 

书中提出了交叉验证的方法(leave-one-out)来选择模型的参数或者模型。但是存在的问题训练的次数随着参数的增长呈指数级别的增长。 
为了解决最大似然方法的偏差,可以添加补偿因子: 
ln p(D|wML ) − M 
比如Akaike information criterion、AIC 

1.4 维度灾难( The Curse of Dimensionality ) 
在多项式拟合的例子只有一个输入参数x,而在实际中我们可能处理高维的多个输入参数,这将会带来巨大的挑战。 

书中举了一个类似k临近的分类的例子,意思是把输入的空间划分成一个个的格子空间,然后统计要药分类数据所在的格子的点数量最多的类别为该点的类别。这个随着空间的增加,格子的数量程指数级别增加。 

关于多变量的例子:曲线拟合的例子如果输入变量为D个,那么多项式的系数呈D^M增长,其中M为多项式的阶。 

1.5决策论 
结合我们前面说的概率论,决策理论能够然我们在不确定的情况下做出最优的决策。 
介绍了最小化分类错误率、最小化期望损失 
拒绝区间:如果在一个区间内很难做出决策,那么最好别拒绝做出决策,而是让人去做。可以对p(Ck |x)设置一个threshold。 
Inference and decision:给出了三种方式: 
1)生成模型方式:首先建模分布p(x,Ck),然后得到条件概率,然后做出决策。 
2)判别模型:直接对后验概率p(Ck|x)进行建模,然后做出决策。 
3)直接给出判别函数,然后将输入直接映射为分类的label。 
如果直接对于分类决策问题,使用1方法比较浪费计算资源和需要过多的训练数据,因为联合概率分布可能有很多和后验概率不相干的结构。使用2方法是一个比较直接的好方法。组合1和2方法是机器学习方法现在研究 
比较多的。 
方法3无法得到后验概率,这将会有很多问题: 
a)最小化risk:更新loss矩阵,需要重新从训练数据中更新分类问题。 
b)拒绝选择:使用后验概率,我们可以得到一个最小化分类错误的拒绝标准。 
c)先验类别的补偿:类别内数量不对称情况,通常使用平衡的训练集合训练出模型,然后使用先验概率作为补偿。比如类别的先验概率。 
d)组合模型:对于一些复杂的问题,我们可能将这个问题分成小的子问题,比如根据不同的属性做分类: 
p(Ck |xI , xB ) = p(Ck |xI )p(Ck |xB )/p(Ck ) 
回归问题也类似。 

1.6 信息论 
我们给一个离散的随机变量x,当我们观测到这个变量的一些值之后,我们想问我们得到了多少信息。信息的多少可以按照“惊奇度”来度量,越是不可能的事件发生,越能给出更多的信息,一定要发生的事件给的信息量为0. 
所以度量信息两药依赖于概率分布p(x),所以我们希望找到一种度量,他是p(x)的单调的函数。我们观察两个独立的变量x,y,那么他们的信息量应该是单独观察这两个变量信息量的和,即:h(x,y) = h(x) + h(y) 而p(x,y) = p(x) * p(y),满足这种关系的函数h必须是对数形式: 
h(x) = -log p(x) 
在通信模型中,增益代表数据的2进制编码长度,所以取2为底的对数。在其他则可以去其他的对数形式,比如自然对数。 

相对增益和互信息: 
相对增益 
对于一个不知道的分布p(x),我们使用一个近似的分布q(x)来建模,那么如果我们使用q(x)来编码数据,那么对于指定的x,平均需要多传输的信息。 
书中使用了凸函数的性质,证明的KL(p||q) > 0 
可以使用相对增益来描述分布p(x)和q(x)的不相似性。 
互信息: 
描述两个随机变量接近相互独立的程度: 
I[x, y] = KL(p(x, y)||p(x)p(y)) 

H[x] − H[x|y] = H[y] − H[y|x].

第二章 概率分布

 这章主要介绍概率分布及其特性。这些基本的分布可以像堆积木一样形成更复杂的模型。讨论了一些统计学的关键概念,比如 Bayesian inference。概率分布的一个角色是:给定一个随机变量x有限集合的观察值x1,x2….xn,对概率分布p(x)进行建模,即概率密度估计。首先介绍离散型贝努力分布、二项式分布和多项式分布和连续型的Gaussian分布。一个特殊 
的问题就是参数化估计问题,根据观察的值来估计概率分布的参数,frequentist方式,可以采用似然函数的方法,贝叶斯方式,首先引入一个参数的先验分布,然后根据观察数据计算后验分布。本章另一个重要的概念是共轭先验,它让后验分布具有和先验一样的函数形式,这能够极大的简化贝叶斯分析。比如多项式的参数的共轭分布式是Dirichlet分布,高斯分布期望参数的共轭先验仍是高斯分布。这些分布都是指数系列的分布,他们具有很多重要的性质。参数估计的方式的缺陷是首先假定了分布的函数,这在一些应用中并不适用,一种可选择的方式是非参数密度估计,它的分布形式很大程度依赖于现有数据的规模,这些模型仍然有隐含参数,但是它只是用于控制模型的复杂度而不是分布的形式。本章最后介绍了三个非参数的估计histograms,最邻近方法,核方法。 

2.1 二元变量 
    首先介绍二元分布和二项式分布,给出了期望和方差,并通过最大似然函数的方法估计参数u的值。 
2.1.1 
    这节介绍了beta分布,介绍了关于参数引入先验分布,然后通过观察似然函数因子,选择先验的形式使其和似然函数具有相似的形式,然后根据先验概率和似然函数的乘积计算出后验概率,和先验具有一样的形式,这种特性被称为共轭。beta分布是二项分布的共轭先验分布,介绍了超参数的概念。 
       通过共轭分布,可以每次观察一个数据,然后计算后验分布,并将先验分布更新为后验分布,继续观察学习,这种方式被称为顺序学习。 
2.2 多元变量 
    这节首先介绍了使用1 of k的形式表示的多元分布,通过最大似然函数的方法估计参数u,然后引入k个变量的联合分布多项式分布。 
2.2.1 Dirichlet distribution 
    首先通过研究多项式参数分布参数uk的先验分布,引入了Dirichlet distribution。引入一个simplex的概念,关于simplex,二维的就是以(0,1)和(1,0)为端点的线段,三维的就是以(0,0,1),(0,1,0),(0,0,1)为端点的三角形的内部。然后通过将先验和似然函数相乘得到后验分布,仍然是Dirichlet distribution。事实上Dirichlet分布是多项式分布的共轭先验。现在比较火的topic model、LDA就是使用了Dirichlet distribution。 
2.3 高斯分布 
   在第一章已经介绍了高斯分布,引入了D-维变量的高斯分布,给出了期望和协方差矩阵。。高斯分布的最大增益仍然是高斯分布。多个随机变量之和的均值,随着变量的增加,越趋向于高斯分布。 
    随后介绍了高斯分布的几何属性,引入了马氏距离(Mahalanobis distance)。然后考虑协方差矩阵式对称矩阵,通过其特征值和特征矩阵表示特征矩阵及其逆矩阵。引入一个新的坐标系统,被定义为正交矩阵ui从xi坐标移动并做了旋转变换,然后介绍在新的坐标系下高斯分布的形式。 
2.3.1 高斯条件分布 
把一个多维的变量分成两部分,然后通过分块矩阵运算,得到 
μa|b = μa + ΣabΣ^−1bb (xb − μb) 
Σa|b = Σaa − ΣabΣ^−1bb Σba. 
2.3.2 高斯边缘分布 
联合分布p(xa,xb)如果是高斯分布,那么条件分布仍然是高斯分布。边缘分布也是 
高斯分布。根据联合分布的指数二次形式可以有效地得到边缘分布,进而得到均值 
和方差。 
联合分布的二次形式可以使用精度的分块矩阵来表示,我们的目的是对xb进行积分, 
首先考虑和xb相关的项,与xb相关的项是一个标准的二次形式。 
我们通过对指数部分积分,然后进行规范化即可,又由于标准的高斯分布,规范化的 
分母只和方差矩阵相关,和均值无关。我们可以得到很简洁的使用分块精度矩阵表示 
的均值和方差: 
E[xa] = μa 
cov[xa] = Σaa 

2.3.3 关于高斯变量的贝叶斯理论 
给定高斯分布p(x)和条件分布p(y|x) 
p(x) = N(x|μ,Λ^-1) 
p(y|x) = N(y|Ax + b,L^-1) 
关于y的边缘分布和x关于y的条件分布为: 
p(y) = N(y|Aμ + b,L?1 + AΛ^-1AT) 
p(x|y) = N(x|Σ{A^T L(y-b)+Λμ},Σ) 
Σ = (Λ + A^T LA)^1 
2.3.4 高斯分布的最大似然估计(待续) 

第三章 线性回归模型 
    这章主要介绍线性回归模型,回归问题的目标是给一个D-维的输入变量,预测出一个或者多个目标连续 
变量的值。第一章已经介绍了多项式曲线拟合的问题,这个是特殊的回归问题,被称为线性回归模型。 
通过线性组合基本函数,可以获得很有用的一类函数,具有很简单的分析属性,并且由于基本函数 
可以不是线性函数,所以相对于输入来说,具有非线性,可以描述相对复杂的问题。 
    给一个由N个观测值组成的训练集{Xn},包括相应的目标值{tn},一种简单的方式是构建恰当的函数y(x), 
给出一个输入x,可以得到预测的目标值t。然后更一般的,可以从概率的观点,我们的目标是建模预测分布p(t|x), 
表达了我们对给定x预测出的目标值t的不确定性。我们可以通过最小化损失函数,从这个条件分布中得到预测值t。
   3.1 基本线性模型 
   最简单的线性回归模型是输入参数的线性组合。y(x, w) = w0 + w1 x1 + . . . + wD xD 
我们可以扩展它,考虑输入变量非线性函数的线性组合。通过使用非线性基本函数,我们可以得到y(x,w) 
是关于x的非线性函数,但是参数是线性的,这个可以很大程度简化这类模型的分析。通常在模式识别中, 
将最初的变量通过基本函数变换做预处理,被称为特征抽取或者特征选择。 
   第一章多项式拟合的例子,基本函数是{x^j},多项式基本函数,它的缺点是它是相对于输入变量的 
全局函数,在一个区域的变化会影响其他区域。这个可以通过将输入空间划分,然后在不同的空间拟合不同 
的多项式。 
   有很多可以选择的基本函数,比如高斯函数exp{-(x-uj)^2/2s^2},uj控制着基本函数在输入空间的 
的位置,参数s控制这空间中值的大小。sigmoidal基本函数也经常被使用φj(x)=σ( (x-uj)/s )其中σ(x)是 
logistic sigmoid函数σ(x) = 1/(1+exp(-x)),这个函数和tanh函数相关,并且tanh(x)= 2σ(x)-1.另 
外可以选的函数有傅立叶基本函数,每一个基本函数代表了特定的频率和有限的空间,在空间和频率上都具有局部性, 
这对信号处理有很大的用处,比如可用作小波变换的wavelets。本章的内容并不局限于具体的基本函数。 
  3.1.1 最大似然估计和最小二乘法 
第一章我们通过最小化错误平方和函数拟合多项式,并且这个错误函数可以通过高斯噪音模型的最大似然估计来得到 
。我们下面更详细的介绍最小二乘法和最大似然估计的关系。 
假设目标值t为y(x,w)和额外的高斯噪音,即: 
t = y(x,w) + e 
e是均值为0的高斯随机变量,精度为β,所以t|x,w,β满足均值为y(x,w),精度为β的高斯分布: 
p(t|x,w,β) = N(t|y(x,w),β^-1) 

高斯noise的假设隐含着条件分布t|x是单峰的,在一些其他的应用中可能并不适合。一个扩展方式是混合条件高斯分布,它允许多峰值的条件分布。 

似然函数: 
p(t|x,w,β) = Mult(1..N){N(tn|wTφ(xn),β^-1)} 
log形式: 
ln p(t|w, β)=N/2*ln β − N/2*ln(2π) − βED(w) 
其中 
ED(w) = 1/2*Sum(1..N){tn - wTφ(xn)}^2 
计算lnp(t|w,β)梯度,得到wML =ΦT * Φ^−1 * ΦT * t 
Φ是N * M的矩阵,被称为design matrix。 Φnj = φj(xn), 

我们可以得到bias w0是目标值t的平均值和 基本函数权重和的平均值之差。 
公式(3.19)。 

3.1.2 最小二乘法几何属性: 
从几何方面解释最小二乘法,最小二乘回归函数是通过寻找目标集合t向由基本函数φj(x) 
组成的子空间的垂直投影得到,因为这个时候y(x,w)和t距离最近。参考图3.2 

3.1.3 顺序学习(sequence learning) 
最大似然的方法,一次处理需要整个的训练集,如果数据量很大,需要很大的内存和计算。 
在第一章说过如果数据集很大,那么可以采用顺序学习的算法,也被称为在线学习算法。 
这种算法每次考虑一个数据,每次模型参数得到更新。顺序学习也适用于观察的值来自于连续的数据流,在所有的数据流观察完之前能够做出预测。 
我们可以通过随机梯度下降法( stochastic gradient descent)来实现这个算法。 
w(τ+1) = w(τ) − η∇En 
在最小二乘法中可以使用: 
w(τ+1) = w(τ) + η(tn − w(τ)Tφn)φn 
这个被称为least-mean-squares或者LMS算法。η称为学习率。 

3.1.4 规范化的最小二乘化(Regularized least squares) 
在1.1节已经介绍通过给错误函数添加规范化因子来控制过度拟合,所以最小化的错误函数 
具有如下形式: ED(w) + λEW(w) 
λ是规范化因子的系数,控制了依赖于数据的错误函数ED(w)和规范化因子EW(w)。 
最简单的规范化是权重向量w的平方和: 
EW(w) =1/2 * wT w. 
结合最小化二乘法的错误函数: 
E(w) =1/2 sum(1..N){tn − wTφ(xn)}^2 
错误函数为: 
1/2 sum(1..N){tn − wTφ(xn)}^2 + 1/2 * wTw. 
通过使用规范化因子,可以使得参数缩小,趋向于0,这是机器学习和统计学所推荐的, 
能够避免过度拟合。 
使用这个规范化因子,使得错误函数仍然是关于w的二次函数,所以可以得到精确的最小化 
形式。计算其关于w的梯度,使其为0,我们可以解出w 
w = (λI + ΦTΦ)^−1 * ΦT * t. 
一个更一般的规范化因子可以采用: 
sum(1..N){|wj|^q} 
当q为二的时候,就是我们采用的二次规范化因子。使用规范化因子可以在少量训练数据, 
复杂模型的情况下,不至于严重的过度拟合。因为通过它可以限制有效模型的复杂性, 
但是他将选择恰当的基本函数转化成为选择适当参数λ的问题了。 

3.1.5 多输出问题: 
前面我们一直考虑单个目标值t的问题,有些情况下我们需要预测多个目标值。我们可以通过 
对于不同的组件t,引入不同的基本函数来做,这就是多值独立回归问题。然而一个比较有趣和常用的方式是,使用相同的基本函数集合来建模目标向量的多个组件: 
y(x,w) = WTφ(x) 
y被是k维列向量。W是M*K个参数的矩阵,φ(x)是M维的列向量,其元素可以用φj(x)表示 
φ0(x) = 1. 
如果我们将目标向量采用isotropic Gaussian条件分布,那么: 
p(t|x,W, β) = N(t|WTφ(x), β^−1I). 
我们计算其似然函数,和前面的一样,我们可以得到: 
WML =(ΦTΦ)^−1 ΦTT. 
3.2 偏置方差分解(Bias-Variance Decomposition) 
我们到现在为止讨论的线性回归模型,假设它的形式和基本函数都是固定的。我们在第一章 
看到使用最大似然或者等价的最小二乘法,在很少的数量的训练集上训练复杂的模型容易导致过度拟合。然而限制基本函数的数量来避免过度拟合会导致模型只能捕捉到有限的兴趣的和重要的特征。虽然规范化因子可以控制过度拟合,但是这会引起一个问题:我们如何在选择恰当的规范化系数λ。寻求关于权重向量w和规范化因子λ来最小化规范化错误函数并不是 
正确的方法,因为这将导致非规范化的方法λ = 0. 
我们在前面的章节中,过度拟合现象是最大似然方法一个不幸的固有属性,但是在贝叶斯的背景下关于参数边缘化不会引起这个问题。这章我们以贝叶斯的视角深度考虑模型的复杂性问题。在这之前我们先介绍以频率的观点讨论模型的复杂性,即:偏置方差折中。 
在1.5.5节我们得到期望平方损失函数为: 
 
我们将第一部分{y(x;D) − h(x)}^2添加减去ED[y(x;D)]展开 
最后得到 
ED{y(x;D) − h(x)}^2 = {ED[y(x;D)] − h(x)}^2 +ED{y(x;D) − ED[y(x;D)]}^2 
第一部分是bias的平方,第二部分是方差。 
我们的目标是最小化期望损失,最终我们将它分解为bias的平方、variance和常量的噪音。灵活的模型 
会有很低的偏执和很高的方差,而严格的模型具有高bias和低variance。一个具有最有的 
预测能力的模型,需要在偏执和方差之间平衡。 

3.3 贝叶斯线性回归【待续】 

第四章 线性分类模型

在前面的章节,我们已经看到线性回归模型具有很简单的分析性和计算性。我么现在我们讨论这种类似的模型来解决分类问题。分类的目的是给出一个输入向量X,将它赋值为k个离散的类别Ck之一,通常的情景是类别是不想交的,每一个输入只会有一个类别。这样输入空间被分成决策区域,它的边界被称为决策边界。本章我们考虑用于分类的线性模型,也就是说决策边界是关于输入变量x线性函数,它在D维的输入空间中定义了D-1维的超平面。类别可以被线性决策边缘分开的数据集合被称为线性可分。 
在回归问题中,我们可以使用实数的向量来表示预测值t,在分类问题,我们可以采用1-of-K的编码模式,t是一个长度为K的向量,如果类别是Cj,那么除了tj为1,其他的元素tk都是0.比如K=5,C2可以表示为t={0,1,0,0,0)T 
在第一章我们已经学习了三种不同的方法来解决分类问题,一种是简单的判别函数(discriminant function),它直接把输入变量x映射的特定的类别。另一比较强大的方式,建模条件分布p(Ck|x)。建模p(ck|x)的方式有两种:一种是直接建模,比如表示为参数模型,然后用训练数据计算出最优的参数,另一用方法是结合类别条件分布p(x|Ck)和先验概率p(Ck),然后利用贝叶斯公式计算后验概率: 
p(Ck|x) = p(x|Ck)p(Ck) / p(x) 
我们在本章讨论以上三种方式。 

在第三章的线性回归模型中,模型预测函数y(x,w)是一个参数为w的线性函数,在最简单的情况,模型对于输入变量是线性的,具有如下形式: y= wTx + w0,所以y是个实数,对于分类问题我们希望预测离散的类别标签,或者更一般的区间在[0,1]之间的后验概率。我们可以利用一个非线性函数f(.)来将关于w的线性函数进行转换,即y(x) = f(wTx + w0),类别模型y(x)被认为是线性模型的推广,相对于回归模型而言,由于非线性函数f(.),对于参数已经不是线性的了。这会比回归模型具有更复杂的分析和计算性,但是对于一般的非线性的模型,这个模型相对已经比较简单了。 

本章的算法也会讨论想第三章那样固定非线性基本函数,做一个固定的非线性变换。 

4.1 判别函数 
一个判别函数是将输入向量x映射到一个K个类别之一Ck。本章我们仅限于线性判别函数,他们的决策边缘是一个超平面。为了简化我们先看2类的问题,然后扩展到K>2的情景。 
4.1.1 两类问题 
最简单的线性判别函数是关于输入向量x的线性函数,即: 
y(x) = wTx + w0 
w被称为权重向量,w0被称为偏置(bias),偏置的负数被称为阈值。 
对于输入变量x,如果y(x) >= 0那么分类为C1,否则为C2。所以决策边界定义为y(x) = 0, 
为D维输入空间中的D-1维超平面。考虑两个点xA和xB,他们都在决策边缘上,那么 
y(xA) = y(xB) = 0,wT(xA - xB) = 0,所以向量w正交于决策边缘,所以w决定了决策边缘的方向。如果x是决策边缘上的一点,那么y(x) = 0,那么原点到决策边缘的距离 
为wTx/||w|| = - w0 / ||w|| 
所以偏置(bias)参数w0决定了决策边缘的位置。 
任意一点在x和在决策边缘的x_的关系 
x = x_ + r * w / ||w|| 
我们根据及y(x_) = wTx_ + w0 = 0可以得到 
r = y(x) / ||w|| 
可以将向量w和x,进行扩展得到增广向量W=(w0,w) X=(x0,x) 
那么y(x) = WX 

4.1.2 多类问题: 
现在我们考虑K > 2的线性判别函数的扩展。我们可以组合一些两类的判别函数得到K类 
的判别函数,但是这会导致一些困难。 
如果我们使用K-1个分类器,每一个解决2类问题,这被称为one-versus-the-rest分类器。但是有一些区域没有被分类(见图4.2的例子)。 

另一种选择是引入K(k-1)/2个二元分类器,每一个对应一对类别,这被称为one-versus-one分类器。但是仍然有一些区域不能分开(见图4.2) 

我们可以考虑一个单个的k-class的一起函数,他组合了K个线性函数: 
yk(x) = wkTx + wk0 
如果yk(x) > yj(x),j!=k,那么将点x赋值给类Ck。这个在Ck和Cj的决策边界 
由yk(x) = yj(x)给出,因此(D-1)维的超平面被定义为: 
(wk - wj)Tx + (wk0 - wj0) = 0 
这和2-class的决策边缘类似。 
这种判别的决策区域是单联通的,并且是凸。考虑两个点xA和xB,他们都在决策边缘Rk上,任何在连接xA和xB的线上的点x^,可以表示为: 
x^ = λxA + (1 − λ)xB 其中 0=< λ <= 1 
对于线性的判别函数: 
yk(x^) = λyk(xA) + (1-λ)yk(xB) 
由于xA和xB都在决策区域Rk内,那么对于所有的j != k, 
yk(xA) > yj(xA),yk(xB) > yj(xB) 
因此yk(x^) > yj(x^) 
所以x^也在决策区域内Rk内。所以Rk是单连通并且是凸的。 

我们下面将要介绍三种学习线性判别函数的方法:最小二乘法、Fisher线性判别函数, 
感知器算法。 
4.1.3 用于分类的最小二乘法 
我们在第三章看到,我们考虑了关于参数的线性函数的模型,我们使用最小化错误平方函数的方法得到了简单的关于参数的解,因为我们可以可以看一下是否这种方法可以应用于分类问题。 
  考虑一般的分类问题,有k个类别,对于目标向量t使用1-of-k的二元编码方式.一种可以证明可以使用最小二乘法的情形是,给定输入向量x的目标值t逼近条件期望E(t|x)。 
对于二元编码,条件期望由后验分类概率给出。不幸的是这种概率的逼近非常的差,事实上这种逼近可能会超出(0,1)的区间,由于线性模型有限的灵活性导致的。 
  对于每个类Ck都有他们自己的线性模型,所以 
yk(x) = wkTx + w0 k=1,...,k。 
我们可以写成: 
y(x) = WX 
其中W = (wk0,wkT)T, X = (1,XT)T 
对于新的输入x被赋值为ck,如果yk=WkTXT最大。 
我们通过最小化错误平方和,我们可以得出参数矩阵W,就像我们第三章回归中所做的。 
对于训练集{xn,tn),n=1,...,N,我们定义一个矩阵T,他的第n行是向量tnT,矩阵 
X的第n行是xTn。那么平方和错误函数可以写成: 
Ed(W) = 1/2 Tr{(XW-T)^T(XW-T) 
将关于W的导数设置为0,我们得到 
W = (WTW)-1X^TT = X† T 
其中X† 是矩阵X的pseduo-inverse,因为W可能不是方阵。 
这样我们得到了判别函数: 
y(x) = WTX = T^T(X†)^Tx. 
另外一个有趣的特性是多目标变量的最小二乘法的解,如果训练集每一个目标向量满足某个线性约束 aTtn + b = 0
那么对于末个常量a和b,对于任意x的模型预测值也满足相同的约束 
aTy(x) + b = 0 
因此如果我们使用k-class的1-of-k的编码模式,那么模型预测具有以下特性, 
对于任意的x,y(x)的元素之和是1 
但是这个约束并不能将模型的输出解释为概率,因为他们每个值并不一定在(0,1) 
之间。 

最小二乘法给出了精确的判别函数参数的解,然而判别函数存在很严重的问题。我们已经看到最小二乘法对离群点(outliers)缺乏健壮性,这个同样适应于分类的应用程序。在第7.1.2节我们会讨论几种对于分类可选的错误函数,他们不会遭受现在的困难。 

由于我们假设最大似然函数是高斯条件分布,而二元目标向量的分布和高斯分布差别很大。 
所以导致最小二乘法的失败。我们通过采取更恰当的概率模型,会得到比最小二乘法更好的分类技术。然而,现在我们继续介绍可选的非概率的参数化的线性分类模型。 

4.1.4 Fisher's 线性判别函数 
一种线性分类模型的方法被称为降维。首先考虑一下两类问题,假设我们的输入具有D维,我们y=wTx将其映射到一维,那么 
如果对y设置一个阈值:当y >= -w0时分类为C1,否则为C2,我们得到了一个标准的线性分类函数。然而,一般的我们映射到一维会丢失很多信息,在D维能够分开的,在一维空间可能会重叠。然而我们可以通过调整w的权重,选择一个映射能够最大化分类的间隔。 
我们考虑二类问题类C1有N1个点,类C2有N2个点,所以这两个类的均值向量为: 
m1 = 1/N1 * sum(xn) n∈C1 
m2 = 1/N2 * sum(xn) n∈C2 
当我们映射到w上,最简单的测量类别间隔的方法是映射类的期望的偏离程度,这样我们选择w,去最大化 m2 - m1 = wT(M2 - M1) 
其中mk = wT * Mk是类Ck映射的均值。这个表达式可以通过扩大w来任意增大,所以我们限制w具有单位长度,即sum(wi * wi) = 1 
可以使用拉格朗日乘子来解决具有约束条件的最大值。我们发现w∝ M2-M1. 
4.1.5 
4.1.6 
4.1.7 感知机算法 
另一个线性判别模型的例子是感知机,这个在模式识别的历史上占据了重要的地位。对于2类的问题,输入矩阵首先通过一个固定的非线性函数转换为特征向量矩阵,然后用来构建一个更一般的线性模型的形式: 
y(x) = f(wTφ(x)) 
这个非线性的函数f由分段函数形式给出: 
f(a) = if a >= 0 then +1 else -1 end 
向量φ(x)包含偏置组件φ0(x) = 1. 

在概率的模型中,我们对目标次的编码t∈{0,1},对于感知机来说使用 
t = if c1 then +1 else -1 end 
的编码更方便 

感知机的参数w可以通过最小化错误函数来决定,一个很自然的错误函数的选择是错误分类的模式的个数。但是这并不是一个简单的算法,因为这是一个分段不连续的常数函数,这种根据错误函数的梯度来跟新w的算法不能适用,因为梯度几乎处处为0。 

我们考虑另外的错误函数:感知器标准(perceptron criterion)。我们注意到我们在寻找一个权重矩阵w,它能够使类c1的模式xn满足wT * φ(xn) > 0,在c2中的模式xn满足wTφ(xn) < 0,如果我们使用t∈{-1,+1}的编码方式,那么wT * φ(xn) * tn > 0 
如果每一个模式都能够被正确分类,那么错误为0.即努力去最小化 
-wT * φ(xn) * tn 
Ep(w) = - sum(wT * φ(xn) * tn) where n ∈ M 
M表示所有分类错误的模式。 
我们可以对错误函数使用梯度算法(stochastic gradient descent algorithm) 
权重向量w每次跟新由下面的式子给出: 
w(τ +1) = w(τ ) − η∇EP (w) = w(τ ) + ηφn tn 
η是学习率。因为我们将w乘以一个常量,函数y(x,w)不会改变,所以我们可以去η为1 
我们可以看到: 
−w(τ +1)T φn tn = −w(τ )T φn tn − (φn tn )T φn tn < −w(τ )T φn tn 
更新w之后错误分类的模式的贡献将会被减少。但是w的修改可能导致前面正确分类的模式被错误分类,所以在这个学习规则不能够保证每个步骤中都减少错误总和的大小。 

然而感知机收敛的理论证明如果有一个精确的解,那么感知机器可以在有限的步骤中找到它。 
但是有的收敛很慢,我们无法区分不可分的问题和很慢收敛的问题,即使是线性可分的,它也依赖于最初的参数和点的顺序,对于非线性可分的问题,这个算法是不收敛的。 

感知机给出概率输出,也不能泛化成为k > 2的分类,这也是感知机的缺点。 
Large Margin Classification Using the Perceptron Algorithm给出一个基于投票的感知机器: 
训练: 
输入: 标记好的训练集<(x1,y1),...,(xm,ym)>,迭代次数T 
输入: 权重感知机<(v1,c1),...,(vk,ck)>列表 
1.初始化 k = 0, v1 = 0, c1=0 
2.重复T次迭代: 
1.upto(m) do 
  * 计算预测值 y^ = sign(vk * xi) 
  * if y^ = y then ck = ck + 1 
              else vk+1 = vk + yixi; 
                   ck+1 = 1; 
                   k = k+ 1 
               end 
end 
预测: 
输入:权重感知机<(v1,c1),...,(vk,ck)>列表 和 未标注的实例 x 
计算 
s = sum(ci * sign(vi * x)) for i = 1..k 
y^ = sign(s) 


4.2 概率生成模型 
我们开始转向概率观点的分类问题,我们通过对数据分布的简单假设,展示如何使用线性决策边缘去建模。 
对于二元分类的问题,C1的后验概率: 
p(c1|x) = p(x|c1) * p(c1) / p(x|c1) * p(c1) + p(x|c2) * p(c2) 
= 1 / 1 + exp(-a) = σ(a) 
其中 a = ln( p(x|c1) * p(c1) / p(x|c2) * p(c2) ) 
σ(a)是logistic sigmoid函数: 
σ(a) = 1 / 1 + exp(-a) 
我们可以得到: 
a = ln ( σ / 1 - σ ) 
被称为logit函数,他代表了概率比的log值:ln( p(c1|x) / p(c2|x) ) 

对于多类问题 
p(ck|x) = p(x|ck) * p(ck) / sum( p(x|cj) * p(cj) = exp(ak) / sum( exp(aj) ) 
其中ak = ln( p(x|ck) * p(ck) ) 

4.2.1连续型输入ian 
如果我们假设类别的条件密度是高斯函数,然后导出其后验概率的形式,我们首先假设所有的类别都有都有相同的协方差矩阵,那么类别Ck的条件概率: 
f(x|Ck) = 1 / (2π)^D/2 * 1 / |Σ|1/2 exp {-1/2(x-μk)T * Σ^−1 * (x-μk)} 
考虑二元分类问题,我们得到: 
p(c1|x) = σ(wTx + w0) 
其中 
w = Σ−1 * (x-μk) 
w0 = −1/2 * μ1T * Σ^−1 * μ1 + 1 / 2 * μ2T * Σ^−1 * μ2 + ln p(C1) 
p(C2) . 
我们可以看到x关于w是线性的,所以决策边缘在输入空间内是线性的。 

对于多类问题 
ak(x) = wkT + wk0 
其中 
wk = Σ^−1 * μk 
wk0 = −1 / 2 * μkT * Σ^−1 * μk + lnp(Ck) 

看到x关于w是线性的,决策边缘在输入空间内是线性的 

如果每个类条件概率p(x|Ck)都有自己的协方差矩阵,那么我们将得到x二次函数。 

4.2.2 最大似然法 
一旦我们有了关于类别的参数化的条件分布p(x|Ck),我们就可以使用最大似然发来求出 
参数的值,包括类别的先验概率p(Ck) 

我们考虑两类的问题,每一个都具有关于类别的条件密度,他们共享协方差矩阵,假如我们具有数据集{xn, tn}其中n=1,...,N,tn = 1表示类别C1,tn=0表示类C2。我们用p(c1) = π来表示类别的先验概率,所以p(C2) = 1 - π。 
那么,对于c1: 
p(xn, c1) = p(c1) * p(xn|c1) = π * N(xn|μ1,Σ) 
对于c2: 
p(xn, c2) = p(c2) * p(xn|c2) = (1 - π) * N(xn|μ2,Σ) 
我们得到似然函数: 
p(t|π,μ1,μ2) = mult(1..n){ π * N(xn|μ1,Σ) }^tn {(1 - π) * N(xn|μ2,Σ)}^(1-tn) 
依赖于π的似然函数 
mult(1..n){ tn * lnπ + (1-tn) * ln(1-π) } 
我们对π求导,并使其为0,得到 
π = 1/N * sum(1..n)tn = N1 / N = N1 / (N1 + N2) 
我们现在考虑关于μ1,我们找出和μ1相关的部分,对μ1求导并使其为0得到: 
μ1 = 1 / N1 * sum(1..N)tn * xn 
μ2 = 1 / N2 * sum(1..N)tn * xn 

我们找出和Σ相关的部分,对Σ求导并使其为0得到: 
s = N1 / N s1 + N2 / N * s2 
s1 = 1/N1 sum(n∈C1){(xn - μ1)(xn - μ1)^T } 
s1 = 1/N2 sum(n∈C2){(xn - μ2)(xn - μ2)^T } 
Σ = S,表示两个类别协方差的加权平均 

我们很容易将其扩展到k类的问题。由于最大似然估计高斯分布不是很鲁棒,所以这种方法 
对离群点不是很健壮。 

4.2.3 离散的特征 
现在我们考虑离散的特征值xi。为了简化我们先看二元的特征值xi ∈ {0,1},然后在扩展到一般的离散值的情况。如果有D个输入,对于每一个类对应应2^D个元素的表,他的分布包含 
2^D-1个独立的变量。由于这和特征数量成指数级增长,我们需要寻找一个更多限制的表示。 
我们对Naive Bayes分布假设其对Ck的条件分布,其特征值之间是独立的。所以我们有: 
p(x|Ck) = multiple(1..D){μki^xi * (1-μki)^1-xi 
每一个类包含D个独立的参数,替换(4.63)我们得到: 
ak(x) = sum{1..D}{xi * ln * ki + (l-xi)*ln(1-μki)} + ln p(Ck) 
仍然是输入变量xi的线性函数。 

4.2.4 指数族分布 
我们前面看到,不管高斯分布还是离散输入,后验类概率都是线性模型在logistic sigmoid (K = 2) 或者 softmax (K > 2) activation 函数的推广。 
我们通过假设类条件密度p(x|Ck)是指数族分布,我们得到了一个更一般的结果。 
在(2.194)我们可以将指数族分布写成: 
p(x|λk) = h(x)g(λk)exp{λkTu(x)}. 
现在我们考虑限制u(x)= x得到这类分布的子集。 
我们引入一个比例参数s,我们获得受限的指数族条件分布的概率密度形式: 
p(x|λk, s) = 1/s * h(1/s * x) * g(λk) * exp{1/s * λkT * x} 
我们假设每个类别都有自己的参数向量λk,但是我们假设他们共享比例参数s。 
  对于两类问题,我们替换这个表达式到类条件概率密度函数,我们发现类的后验概率仍然 
是相对于logistic sigmoid的线性函数: 
a(x) = (λ1 − λ2)T *x + lng(λ1) − ln g(λ2) + lnp(C1) − ln p(C2). 
类似的对于k-类问题。我们得到: 
ak(x) = λkT x + lng(λk) + lnp(Ck) 
仍然是关于x的线性函数。