斯坦福大学机器学习课程个人笔记完整版

2020-03-01 464浏览

  • 1.CS 229 机器学习 (个人笔记)
  • 2.目录 (1)线性回归、logistic回归和一般回归 1 (2)判别模型、生成模型与朴素贝叶斯方法 (3)支持向量机SVM(上) 20 (4)支持向量机SVM(下) 32 (5)规则化和模型选择 (6)K-means聚类算法 45 50 (7)混合高斯模型和EM算法 53 (8)EM算法 55 (9)在线学习 62 (10)主成分分析 65 (11)独立成分分析 80 (12)线性判别分析 91 (13)因子分析 103 (14)增强学习 114 10
  • 3.(15)典型关联分析 120 (16)偏最小二乘法回归 129 这里面的内容是我在2011年上半年学习斯坦福大学《机器学习》课 程的个人学习笔记,内容主要来自Andrew Ng教授的讲义和学习视 频。 另外也包含来自其他论文和其他学校讲义的一些内容。每章内容主 要按照个人学习时的思路总结得到。 由于是个人笔记,里面表述错误、公式错误、理解错误、笔误都会 存在。更重要的是我是初学者,千万不要认为里面的思路都正确。 如果有疑问的地方,请第一时间参考Andrew Ng教授的讲义原文和 视频,再有疑问的地方可以找一些大牛问问。 博客上很多网友提出的问题,我难以回答,因为我水平确实有限, 更深层次的内容最好找相关大牛咨询和相关论文研读。 如果有网友想在我这个版本基础上再添加自己的笔记,可以发送 Email给我,我提供原始的word docx版本。 另,本人目前在科苑软件所读研,马上三年了,方向是分布式计 算,主要偏大数据分布式处理,平时主要玩Hadoop、Pig、Hive、 Mahout、NoSQL啥的, 关注系统方面和数据库方面的会议。希望大家多多交流,以后会往 博客上放这些内容,机器学习会放的少了。 Anyway,祝大家学习进步、事业成功!
  • 4.对回归方法的认识 JerryLead csxulijie@gmail.com 2011 年 2 月 27 日 1 摘要 本报告是在学习斯坦福大学机器学习课程前四节加上配套的讲义后的总结与认识。前四 节主要讲述了回归问题,属于有监督学习中的一种方法。该方法的核心思想是从离散的统计 数据中得到数学模型,然后将该数学模型用于预测或者分类。该方法处理的数据可以是多维 的。 讲义最初介绍了一个基本问题,然后引出了线性回归的解决方法,然后针对误差问题做 了概率解释。 2 问题引入 假设有一个房屋销售的数据如下: 面积(m^2) 销售价钱(万元) 123 250 150 320 87 160 102 220 … … 这个表类似于北京 5 环左右的房屋价钱,我们可以做出一个图,x 轴是房屋的面积。y 轴是 房屋的售价,如下: 如果来了一个新的面积,假设在销售价钱的记录中没有的,我们怎么办呢? 我们可以用一条曲线去尽量准的拟合这些数据,然后如果有新的输入过来,我们可以在 将曲线上这个点对应的值返回。如果用一条直线去拟合,可能是下面的样子: 1
  • 5.绿色的点就是我们想要预测的点。 首先给出一些概念和常用的符号。 房屋销售记录表:训练集(training set)或者训练数据(training data), 是我们流程中的输入数据, 一般称为 x 房屋销售价钱:输出数据,一般称为 y 拟合的函数(或者称为假设或者模型):一般写做 y = h(x) 训练数据的条目数(#training set),:一条训练数据是由一对输入数据和输出数据组成的输入 数据的维度 n (特征的个数,#features) 这个例子的特征是两维的,结果是一维的。然而回归方法能够解决特征多维,结果是一维多 离散值或一维连续值的问题。 3 学习过程 下面是一个典型的机器学习的过程,首先给出一个输入数据,我们的算法会通过一系列的过 程得到一个估计的函数,这个函数有能力对没有见过的新数据给出一个新的估计,也被称为 构建一个模型。就如同上面的线性回归函数。 4 线性回归 线性回归假设特征和结果满足线性关系。其实线性关系的表达能力非常强大,每个特征 对结果的影响强弱可以有前面的参数体现,而且每个特征变量可以首先映射到一个函数,然 后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。 2
  • 6.我们用 X1,X2..Xn 去描述 feature 里面的分量,比如 x1=房间的面积,x2=房间的朝向, 等等,我们可以做出一个估计函数: θ 在这儿称为参数,在这的意思是调整 feature 中每个分量的影响力,就是到底是房屋的面 积更重要还是房屋的地段更重要。为了如果我们令 X0 = 1,就可以用向量的方式来表示了: 我们程序也需要一个机制去评估我们 θ 是否比较好,所以说需要对我们做出的 h 函数进行 评估,一般这个函数称为损失函数(loss function)或者错误函数(error function),描述 h 函 数不好的程度,在下面,我们称这个函数为 J 函数 在这儿我们可以做出下面的一个错误函数: 这个错误估计函数是去对 x(i)的估计值与真实值 y(i)差的平方和作为错误估计函数,前面乘 上的 1/2 是为了在求导的时候,这个系数就不见了。 至于为何选择平方和作为错误估计函数,讲义后面从概率分布的角度讲解了该公式的来源。 如何调整 θ 以使得 J(θ)取得最小值有很多方法,其中有最小二乘法(min square),是一种完全 是数学描述的方法,和梯度下降法。 5 梯度下降法 在选定线性回归模型后,只需要确定参数 θ,就可以将模型用来预测。然而 θ 需要在 J(θ) 最小的情况下才能确定。因此问题归结为求极小值问题,使用梯度下降法。梯度下降法最大 的问题是求得有可能是全局极小值,这与初始点的选取有关。 梯度下降法是按下面的流程进行的: 1)首先对 θ 赋值,这个值可以是随机的,也可以让 θ 是一个全零的向量。 2)改变 θ 的值,使得 J(θ)按梯度下降的方向进行减少。 梯度方向由 J(θ)对 θ 的偏导数确定,由于求的是极小值,因此梯度方向是偏导数的反方向。 结果为 3
  • 7.迭代更新的方式有两种,一种是批梯度下降,也就是对全部的训练数据求得误差后再对 θ 进行更新,另外一种是增量梯度下降,每扫描一步都要对 θ 进行更新。前一种方法能够不断 收敛,后一种方法结果可能不断在收敛处徘徊。 一般来说,梯度下降法收敛速度还是比较慢的。 另一种直接计算结果的方法是最小二乘法。 6 最小二乘法 将训练特征表示为 X 矩阵,结果表示成 y 向量,仍然是线性回归模型,误差函数不变。那么 θ 可以直接由下面公式得出 但此方法要求 X 是列满秩的,而且求矩阵的逆比较慢。 7 选用误差函数为平方和的概率解释 假设根据特征的预测结果与实际结果有误差∈(𝑖) ,那么预测结果𝜃 𝑇 𝑥 (i) 和真实结果𝑦 (𝑖) 满足下 式: 一般来讲,误差满足平均值为 0 的高斯分布,也就是正态分布。那么 x 和 y 的条件概率也就 是 这样就估计了一条样本的结果概率,然而我们期待的是模型能够在全部样本上预测最准,也 就是概率积最大。这个概率积成为最大似然估计。我们希望在最大似然估计得到最大值时确 定 θ。那么需要对最大似然估计公式求导,求导结果既是 这就解释了为何误差函数要使用平方和。 当然推导过程中也做了一些假定,但这个假定符合客观规律。 8 带权重的线性回归 上面提到的线性回归的误差函数里系统都是 1,没有权重。带权重的线性回归加入了权重信 4
  • 8.息。 基本假设是 其中假设𝑤 (i) 符合公式 其中 x 是要预测的特征,这样假设的道理是离 x 越近的样本权重越大,越远的影响越小。这 个公式与高斯分布类似,但不一样,因为w (i) 不是随机变量。 此方法成为非参数学习算法,因为误差函数随着预测值的不同而不同,这样 θ 无法事先确定, 预测一次需要临时计算,感觉类似 KNN。 9 分类和对数回归 一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大。 如果非要应用进入,可以使用对数回归。 对数回归本质上是线性回归,只是在特征到结果的映射中加入了一层函数映射,即先把 特征线性求和,然后使用函数 g(z)将最为假设函数来预测。g(z)可以将连续值映射到 0 和 1 上。 对数回归的假设函数如下,线性回归假设函数只是𝜃 𝑇 𝑥。 对数回归用来分类 0/1 问题,也就是预测结果属于 0 或者 1 的二值分类问题。这里假设 了二值满足伯努利分布,也就是 当然假设它满足泊松分布、指数分布等等也可以,只是比较复杂,后面会提到线性回归 的一般形式。 与第 7 节一样,仍然求的是最大似然估计,然后求导,得到迭代公式结果为 5
  • 9.可以看到与线性回归类似,只是𝜃 𝑇 𝑥 (i) 换成了ℎ𝜃 (𝑥 (𝑖) ),而ℎ𝜃 (𝑥 (𝑖) )实际上就是𝜃 𝑇 𝑥 (i) 经过 g(z)映射过来的。 10 牛顿法来解最大似然估计 第 7 和第 9 节使用的解最大似然估计的方法都是求导迭代的方法,这里介绍了牛顿下降 法,使结果能够快速的收敛。 当要求解f(θ) = 0时,如果 f 可导,那么可以通过迭代公式 来迭代求解最小值。 当应用于求解最大似然估计的最大值时,变成求解ℓ′ (𝜃) = 0的问题。 那么迭代公式写作 当 θ 是向量时,牛顿法可以使用下面式子表示 其中 是 n×n 的 Hessian 矩阵。 牛顿法收敛速度虽然很快,但求 Hessian 矩阵的逆的时候比较耗费时间。 当初始点 X0 靠近极小值 X 时,牛顿法的收敛速度是最快的。但是当 X0 远离极小值时, 牛顿法可能不收敛,甚至连下降都保证不了。原因是迭代点 Xk+1 不一定是目标函数 f 在牛 顿方向上的极小点。 11 一般线性模型 之所以在对数回归时使用 的公式是由一套理论作支持的。 这个理论便是一般线性模型。 首先,如果一个概率分布可以表示成 6
  • 10.时,那么这个概率分布可以称作是指数分布。 伯努利分布,高斯分布,泊松分布,贝塔分布,狄特里特分布都属于指数分布。 在对数回归时采用的是伯努利分布,伯努利分布的概率可以表示成 其中 得到 Φ= 1 1 + eη 这就解释了对数回归时为了要用这个函数。 一般线性模型的要点是 1) y x; θ 满足一个以η为参数的指数分布,那么可以求得η的表达式。 2) 给定 x,我们的目标是要确定T(y),大多数情况下T(y) = y,那么我们实际上要确 定的是h(x),而h(x) = E[y x]。 (在对数回归中期望值是Φ,因此 h 是Φ;在线性回 归中期望值是μ,而高斯分布中η = μ,因此线性回归中 h=𝜃 𝑇 𝑥)。 3) η = 𝜃 𝑇 𝑥 12 Softmax 回归 最后举了一个利用一般线性模型的例子。 假设预测值 y 有 k 种可能,即 y∈{1,2,…,k} 比如 k=3 时,可以看作是要将一封未知邮件分为垃圾邮件、个人邮件还是工作邮件这 三类。 定义 那么 这样 即式子左边可以有其他的概率表示,因此可以当做是 k-1 维的问题。 T(y)这时候一组 k-1 维的向量,不再是 y。即 T(y)要给出 y=i(i 从 1 到 k-1)的概率 7
  • 11.应用于一般线性模型 那么 最后求得 而 y=i 时 求得期望值 8
  • 12.那么就建立了假设函数,最后就获得了最大似然估计 对该公式可以使用梯度下降或者牛顿法迭代求解。 解决了多值模型建立与预测问题。 学习总结 该讲义组织结构清晰,思路独特,讲原因,也讲推导。可贵的是讲出了问题的基本解决 思路和扩展思路,更重要的是讲出了为什么要使用相关方法以及问题根源。在看似具体 的解题思路中能引出更为抽象的一般解题思路,理论化水平很高。 该方法可以用在对数据多维分析和多值预测上,更适用于数据背后蕴含某种概率模型的 情景。 9
  • 13.判别模型、生成模型与朴素贝叶斯方法 JerryLead csxulijie@gmail.com 2011 年 3 月 5 日星期六 1 判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表 示为𝑝(𝑦 𝑥; 𝜃),在参数𝜃确定的情况下,求解条件概率𝑝(𝑦 𝑥)。通俗的解释为在给定特征后 预测结果出现的概率。 比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型, 然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。换一种思路,我 们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。 然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少, 哪个大就是哪个。形式化表示为求𝑝(𝑥 y)(也包括𝑝(𝑦)),y 是模型结果,x 是特征。 利用贝叶斯公式发现两个模型的统一性: 由于我们关注的是 y 的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大), 而并不是关心具体的概率,因此上式改写为: 其中𝑝(𝑥 y)称为后验概率,𝑝(𝑦)称为先验概率。 由𝑝(𝑥 y) ∗ 𝑝(𝑦) = 𝑝(𝑥, 𝑦),因此有时称判别模型求的是条件概率,生成模型求的是联 合概率。 常见的判别模型有线性回归、对数回归、线性判别分析、支持向量机、boosting、条件 随机场、神经网络等。 常见的生产模型有隐马尔科夫模型、朴素贝叶斯模型、高斯混合模型、LDA、Restricted Boltzmann Machine 等。 这篇博客较为详细地介绍了两个模型:http://blog.sciencenet.cn/home.php?mod=space&uid=248173&do=blog&id=22796410
  • 14.2 高斯判别分析(Gaussian discriminant analysis) 1) 多值正态分布 多变量正态分布描述的是 n 维随机变量的分布情况,这里的μ变成了向量,σ也变成了 矩阵Σ。写作𝛮(𝜇, 𝛴)。假设有 n 个随机变量𝑋1 , 𝑋2 , … , 𝑋𝑛 。μ的第 i 个分量是E(X𝑖 ),而 Σii = Var(𝑋𝑖 ),Σij = Cov(𝑋𝑖 , 𝑋𝑗 )。 概率密度函数如下: 其中 Σ 是Σ的行列式,Σ是协方差矩阵,而且是对称半正定的。 当μ是二维的时候可以如下图表示: 其中μ决定中心位置,Σ决定投影椭圆的朝向和大小。 如下图: 对应的Σ都不同。 2) 模型分析与应用 如果输入特征 x 是连续型随机变量,那么可以使用高斯判别分析模型来确定 p(x y)。 模型如下: 11
  • 15.输出结果服从伯努利分布,在给定模型下特征符合多值高斯分布。通俗地讲,在山 羊模型下,它的胡须长度,角大小,毛长度等连续型变量符合高斯分布,他们组成 的特征向量符合多值高斯分布。 这样,可以给出概率密度函数: 最大似然估计如下: 注意这里的参数有两个μ,表示在不同的结果模型下,特征均值不同,但我们假设 协方差相同。反映在图上就是不同模型中心位置不同,但形状相同。这样就可以用 直线来进行分隔判别。 求导后,得到参数估计公式: Φ是训练样本中结果 y=1 占有的比例。 μ0 是 y=0 的样本中特征均值。 12
  • 16.μ1 是 y=1 的样本中特征均值。 Σ是样本特征方差均值。 如前面所述,在图上表示为: 直线两边的 y 值不同,但协方差矩阵相同,因此形状相同。μ不同,因此位置不同。 3) 高斯判别分析(GDA)与 logistic 回归的关系 将 GDA 用条件概率方式来表述的话,如下: y 是 x 的函数,其中 都是参数。 进一步推导出 这里的θ是 的函数。 这个形式就是 logistic 回归的形式。 也就是说如果 p(x y)符合多元高斯分布,那么 p(y x)符合 logistic 回归模型。反之, 不成立。为什么反过来不成立呢?因为 GDA 有着更强的假设条件和约束。 如果认定训练数据满足多元高斯分布,那么 GDA 能够在训练集上是最好的模型。然 而,我们往往事先不知道训练数据满足什么样的分布,不能做很强的假设。Logistic 回归的条件假设要弱于 GDA,因此更多的时候采用 logistic 回归的方法。 例如,训练数据满足泊松分布, 13
  • 17.,那么 p(y x)也是 logistic 回归的。这个时候 如果采用 GDA,那么效果会比较差,因为训练数据特征的分布不是多元高斯分布, 而是泊松分布。 这也是 logistic 回归用的更多的原因。 3 朴素贝叶斯模型 在 GDA 中,我们要求特征向量 x 是连续实数向量。如果 x 是离散值的话,可以考虑采 用朴素贝叶斯的分类方法。 假如要分类垃圾邮件和正常邮件。分类邮件是文本分类的一种应用。 假设采用最简单的特征描述方法,首先找一部英语词典,将里面的单词全部列出来。然 后将每封邮件表示成一个向量,向量中每一维都是字典中的一个词的 0/1 值,1 表示该词在 邮件中出现,0 表示未出现。 比如一封邮件中出现了“a”和“buy”,没有出现“aardvark” 、 “aardwolf”和“zygmurgy”, 那么可以形式化表示为: 假设字典中总共有 5000 个词,那么 x 是 5000 维的。这时候如果要建立多项式分布模型 (二项分布的扩展)。 多项式分布(multinomial distribution) 某随机实验如果有 k 个可能结局 A1,A2,…,Ak,它们的概率分布分别是 p1,p2,…,pk, 那么在 N 次采样的总结果中,A1 出现 n1 次,A2 出现 n2 次,…,Ak 出现 nk 次的这种事件 的出现概率 P 有下面公式:(Xi 代表出现 ni 次) 对应到上面的问题上来,把每封邮件当做一次随机试验,那么结果的可能性有25000 种。意 味着 pi 有25000 个,参数太多,不可能用来建模。 换种思路,我们要求的是 p(y x),根据生成模型定义我们可以求 p(x y)和 p(y)。假设 x 中的特征是条件独立的。这个称作朴素贝叶斯假设。如果一封邮件是垃圾邮件(y=1),且这 封邮件出现词“buy”与这封邮件是否出现“price”无关,那么“buy”和“price”之间是 条件独立的。 14
  • 18.形式化表示为,(如果给定 Z 的情况下,X 和 Y 条件独立): 𝑃(𝑋 𝑍) = 𝑃(𝑋 𝑌, 𝑍) 也可以表示为: 𝑃(𝑋, 𝑌 𝑍) = 𝑃(𝑋 𝑍)𝑃(𝑌 𝑍) 回到问题中 这个与 NLP 中的 n 元语法模型有点类似,这里相当于 unigram。 这里我们发现朴素贝叶斯假设是约束性很强的假设, “buy”从通常上讲与“price”是有 关系,我们这里假设的是条件独立。 (注意条件独立和独立是不一样的) 建立形式化的模型表示: 𝜙i y=1 = 𝑝(𝑥𝑖 = 1 𝑦 = 1) 𝜙i y=0 = 𝑝(𝑥𝑖 = 0 𝑦 = 1) 𝜙y = 𝑝(𝑦 = 1) 那么我们想要的是模型在训练数据上概率积能够最大,即最大似然估计如下: 注意这里是联合概率分布积最大,说明朴素贝叶斯是生成模型。 求解得: 最后一个式子是表示 y=1 的样本数占全部样本数的比例,前两个表示在 y=1 或 0 的样本 中,特征 Xj=1 的比例。 然而我们要求的是 15
  • 19.实际是求出分子即可,分母对 y=1 和 y=0 都一样。 当然,朴素贝叶斯方法可以扩展到 x 和 y 都有多个离散值的情况。对于特征是连续值的 情况,我们也可以采用分段的方法来将连续值转化为离散值。具体怎么转化能够最优, 我们可以采用信息增益的度量方法来确定(参见 Mitchell 的《机器学习》决策树那一章)。 比如房子大小可以如下划分成离散值: 4 拉普拉斯平滑 朴素贝叶斯方法有个致命的缺点就是对数据稀疏问题过于敏感。 比如前面提到的邮件分类,现在新来了一封邮件,邮件标题是“NIPS call for papers”。 我们使用更大的网络词典(词的数目由 5000 变为 35000)来分类,假设 NIPS 这个词在字典 中的位置是 35000。然而 NIPS 这个词没有在训练数据中出现过, 这封邮件第一次出现了 NIPS。 那我们算概率的时候如下: 由于 NIPS 在以前的不管是垃圾邮件还是正常邮件都没出现过,那么结果只能是 0 了。 显然最终的条件概率也是 0。 原因就是我们的特征概率条件独立,使用的是相乘的方式来得到结果。 为了解决这个问题,我们打算给未出现特征值,赋予一个“小”的值而不是 0。 具体平滑方法如下: 假设离散型随机变量 z 有{1,2,…,k}个值,我们用Φ𝑖 = p(z = i)来表示每个值的概率。假 设有 m 个训练样本中,z 的观察值是 其中每一个观察值对应 k 个值中的 一个。那么根据原来的估计方法可以得到 16
  • 20.说白了就是 z=j 出现的比例。 拉普拉斯平滑法将每个 k 值出现次数事先都加 1,通俗讲就是假设他们都出现过一次。 那么修改后的表达式为: 每个 z=j 的分子都加 1,分母加 k。可见 。 这个有点像 NLP 里面的加一平滑法,当然还有 n 多平滑法了,这里不再详述。 回到邮件分类的问题,修改后的公式为: 5 文本分类的事件模型 回想一下我们刚刚使用的用于文本分类的朴素贝叶斯模型,这个模型称作多值伯努利事 件模型(multi-variate Bernoulli event model)。在这个模型中,我们首先随机选定了邮件的类 型(垃圾或者普通邮件,也就是 p(y)),然后一个人翻阅词典,从第一个词到最后一个词, 随机决定一个词是否要在邮件中出现,出现标示为 1,否则标示为 0。然后将出现的词组成 一 封 邮 件 。决 定 一 个 词是 否 出 现 依照 概 率 p(xi y) 。 那 么 这封 邮 件 的 概率 可 以 标 示为 。 让我们换一个思路,这次我们不先从词典入手,而是选择从邮件入手。让 i 表示邮件中 的第 i 个词,xi 表示这个词在字典中的位置,那么 xi 取值范围为{1,2,… V }, V 是字典中词 的数目。这样一封邮件可以表示成 ,n 可以变化,因为每封邮件的词的 个数不同。然后我们对于每个 xi 随机从 V 个值中取一个,这样就形成了一封邮件。这相当 于重复投掷 V 面的骰子,将观察值记录下来就形成了一封邮件。当然每个面的概率服从 p(xi y),而且每次试验条件独立。这样我们得到的邮件概率是 。居然 跟上面的一样,那么不同点在哪呢?注意第一个的 n 是字典中的全部的词,下面这个 n 是邮 件中的词个数。上面 xi 表示一个词是否出现,只有 0 和 1 两个值,两者概率和为 1。下面的 xi 表示 V 中的一个值, V 个 p(xi y)相加和为 1。是多值二项分布模型。上面的 x 向量都是 0/1 值,下面的 x 的向量都是字典中的位置。 形式化表示为: m 个训练样本表示为: 17
  • 21.表示第 i 个样本中,共有 ni 个词,每个词在字典中的编号为 。 那么我们仍然按照朴素贝叶斯的方法求得最大似然估计概率为 解得, 与以前的式子相比,分母多了个 ni,分子由 0/1 变成了 k。 举个例子: X1 X2 X3 Y 1 2 - 1 2 1 - 0 1 3 2 0 3 3 3 1 假如邮件中只有 a,b,c 这三词,他们在词典的位置分别是 1,2,3,前两封邮件都只有 2 个词,后两封有 3 个词。 Y=1 是垃圾邮件。 那么, Φ1 𝑦=1 = 1+0 1 1 3 = ,Φ2 𝑦=1 = ,Φ3 𝑦=1 = 2+3 5 5 5 Φ1 y=0 = 2+0 2 2 1 = ,Φ2 y=0 = ,Φ3 y=0 = 2+3 5 5 5 Φ𝑦=1 = 1 1 ,Φ𝑦=0 = 2 2 假如新来一封邮件为 b,c 那么特征表示为{2,3}。 那么 18
  • 22.P(y = 1 x) = 𝑝(𝑥, 𝑦 = 1) 𝑝(𝑥 = *2,3+ 𝑦 = 1)𝑝(𝑦 = 1) = 𝑝(𝑥) 𝑝(𝑥 = *2,3+) Φ2 𝑦=1 Φ3 𝑦=1 Φ𝑦=1 = Φ2 𝑦=1 Φ3 𝑦=1 Φ𝑦=1 + Φ2 𝑦=0 Φ3 𝑦=0 Φ𝑦=0 0.2 ∗ 0.6 ∗ 0.5 = 0.6 0.2 ∗ 0.6 ∗ 0.5 + 0.4 ∗ 0.2 ∗ 0.5 那么该邮件是垃圾邮件概率是 0.6。 注意这个公式与朴素贝叶斯的不同在于这里针对整体样本求的𝛷𝑘 𝑦=1 ,而朴素贝叶斯里 面针对每个特征求的𝛷xj=1 𝑦=1 ,而且这里的特征值维度是参差不齐的。 = 这里如果假如拉普拉斯平滑,得到公式为: 表示每个 k 值至少发生过一次。 另外朴素贝叶斯虽然有时候不是最好的分类方法,但它简单有效,而且速度快。 19
  • 23.支持向量机(上) JerryLead csxulijie@gmail.com 2011 年 3 月 12 日星期六 1 简介 支持向量机基本上是最好的有监督学习算法了。最开始接触 SVM 是去年暑假的时候, 老师要求交《统计学习理论》的报告,那时去网上下了一份入门教程,里面讲的很通俗,当 时只是大致了解了一些相关概念。这次斯坦福提供的学习材料,让我重新学习了一些 SVM 知识。我看很多正统的讲法都是从 VC 维理论和结构风险最小原理出发,然后引出 SVM 什 么的,还有些资料上来就讲分类超平面什么的。这份材料从前几节讲的 logistic 回归出发, 引出了 SVM,既揭示了模型间的联系,也让人觉得过渡更自然。 2 重新审视 logistic 回归 Logistic 回归目的是从特征学习出一个 0/1 分类模型,而这个模型是将特性的线性组合 作为自变量,由于自变量的取值范围是负无穷到正无穷。因此,使用 logistic 函数(或称作 sigmoid 函数)将自变量映射到(0,1)上,映射后的值被认为是属于 y=1 的概率。 形式化表示就是 假设函数 其中 x 是 n 维特征向量,函数 g 就是 logistic 函数。 的图像是 20
  • 24.可以看到,将无穷映射到了(0,1)。 而假设函数就是特征属于 y=1 的概率。 当我们要判别一个新来的特征属于哪个类时,只需求ℎ𝜃 (x),若大于 0.5 就是 y=1 的类, 反之属于 y=0 类。 再审视一下ℎ𝜃 (x),发现ℎ𝜃 (x)只和𝜃 𝑇 𝑥有关,𝜃 𝑇 𝑥>0,那么ℎ𝜃 (x) > 0.5,g(z)只不过是用 来映射,真实的类别决定权还在𝜃 𝑇 𝑥。还有当𝜃 𝑇 𝑥 ≫ 0时,ℎ𝜃 (x)=1,反之ℎ𝜃 (x)=0。如果我 们只从𝜃 𝑇 𝑥出发,希望模型达到的目标无非就是让训练数据中 y=1 的特征𝜃 𝑇 𝑥 ≫ 0,而是 y=0 的特征𝜃 𝑇 𝑥 ≪ 0。Logistic 回归就是要学习得到θ,使得正例的特征远大于 0,负例的特征远 小于 0,强调在全部训练实例上达到这个目标。 图形化表示如下: 中间那条线是𝜃 𝑇 𝑥 = 0,logistic 回顾强调所有点尽可能地远离中间那条线。学习出的结 21
  • 25.果也就中间那条线。考虑上面 3 个点 A、B 和 C。从图中我们可以确定 A 是×类别的,然而 C 我们是不太确定的,B 还算能够确定。这样我们可以得出结论,我们更应该关心靠近中间 分割线的点,让他们尽可能地远离中间线,而不是在所有点上达到最优。因为那样的话,要 使得一部分点靠近中间线来换取另外一部分点更加远离中间线。我想这就是支持向量机的思 路和 logistic 回归的不同点,一个考虑局部(不关心已经确定远离的点) ,一个考虑全局(已 经远离的点可能通过调整中间线使其能够更加远离)。这是我的个人直观理解。 3 形式化表示 我们这次使用的结果标签是 y=-1,y=1,替换在 logistic 回归中使用的 y=0 和 y=1。同时将 θ替换成 w 和 b。以前的𝜃 𝑇 𝑥 = θ0 + θ1 𝑥1 + θ2 𝑥2 + ⋯ + θ𝑛 𝑥𝑛 ,其中认为x0 = 1。现在我们替 换θ0 为 b,后面替换θ1 𝑥1 + θ2 𝑥2 + ⋯ + θ𝑛 𝑥𝑛 为w1 𝑥1 + w2 𝑥2 + ⋯ + w𝑛 𝑥𝑛 (即𝑤 𝑇 𝑥)。这样, 我们让𝜃 𝑇 𝑥 = 𝑤 𝑇 𝑥 + b,进一步ℎ𝜃 (x) = 𝑔(𝜃 𝑇 𝑥) = g(𝑤 𝑇 𝑥 + b)。也就是说除了 y 由 y=0 变为 y=-1,只是标记不同外,与 logistic 回归的形式化表示没区别。再明确下假设函数 ℎ𝑤,𝑏 (x) = 𝑔(𝑤 𝑇 𝑥 + b) 上一节提到过我们只需考虑𝜃 𝑇 𝑥的正负问题,而不用关心 g(z),因此我们这里将 g(z)做 一个简化,将其简单映射到 y=-1 和 y=1 上。映射关系如下: 1, g(z) = { −1, z≥0 z<0 4 函数间隔(functional margin)和几何间隔(geometric margin) 给定一个训练样本(𝑥 (𝑖) , 𝑦 (𝑖) ),x 是特征,y 是结果标签。i 表示第 i 个样本。我们定义函 数间隔如下: 𝛾̂ (i) = 𝑦 (𝑖) (𝑤 𝑇 𝑥 (𝑖) + 𝑏) 可想而知,当𝑦 (𝑖) = 1时,在我们的 g(z)定义中,𝑤 𝑇 𝑥 (𝑖) + 𝑏 ≥ 0,𝛾̂ (i) 的值实际上就是 𝑤 𝑇 𝑥 (𝑖) + 𝑏 。反之亦然。为了使函数间隔最大(更大的信心确定该例是正例还是反例),当 𝑦 (𝑖) = 1时,𝑤 𝑇 𝑥 (𝑖) + 𝑏应该是个大正数,反之是个大负数。因此函数间隔代表了我们认为特 征是正例还是反例的确信度。 继续考虑 w 和 b,如果同时加大 w 和 b,比如在(𝑤 𝑇 𝑥 (𝑖) + 𝑏)前面乘个系数比如 2,那 么所有点的函数间隔都会增大二倍,这个对求解问题来说不应该有影响,因为我们要求解的 是𝑤 𝑇 𝑥 + 𝑏 = 0,同时扩大 w 和 b 对结果是无影响的。这样,我们为了限制 w 和 b,可能需 要加入归一化条件,毕竟求解的目标是确定唯一一个 w 和 b,而不是多组线性相关的向量。 这个归一化一会再考虑。 刚刚我们定义的函数间隔是针对某一个样本的,现在我们定义全局样本上的函数间隔 22
  • 26.说白了就是在训练样本上分类正例和负例确信度最小那个函数间隔。 接下来定义几何间隔,先看图 假设我们有了 B 点所在的𝑤 𝑇 𝑥 + 𝑏 = 0分割面。任何其他一点,比如 A 到该面的距离以 𝛾 (𝑖) 表示,假设 B 就是 A 在分割面上的投影。我们知道向量 BA 的方向是w(分割面的梯度), 𝑤 单位向量是 。A 点是(𝑥 (𝑖) , 𝑦 (𝑖) ),所以 B 点是 x=𝑥 (𝑖) − 𝛾 (𝑖) w 𝑤 (利用初中的几何知识), w 带入𝑤 𝑇 𝑥 + 𝑏 = 0得, w 𝑇 (𝑥 (𝑖) − 𝛾 (𝑖) 𝑤 w )+𝑏 =0 进一步得到 𝛾 (𝑖) 实际上就是点到平面距离。 再换种更加优雅的写法: 当 w = 1时,不就是函数间隔吗?是的,前面提到的函数间隔归一化结果就是几何间 隔。他们为什么会一样呢?因为函数间隔是我们定义的,在定义的时候就有几何间隔的色彩。 23
  • 27.同样,同时扩大 w 和 b,w 扩大几倍, w 就扩大几倍,结果无影响。同样定义全局的几何 间隔 5 最优间隔分类器(optimal margin classifier) 回想前面我们提到我们的目标是寻找一个超平面,使得离超平面比较近的点能有更大的 间距。也就是我们不考虑所有的点都必须远离超平面,我们关心求得的超平面能够让所有点 中离它最近的点具有最大间距。形象的说,我们将上面的图看作是一张纸,我们要找一条折 线,按照这条折线折叠后,离折线最近的点的间距比其他折线都要大。形式化表示为: 这里用 w =1 规约 w,使得𝑤 𝑇 𝑥 + 𝑏是几何间隔。 到此,我们已经将模型定义出来了。如果求得了 w 和 b,那么来一个特征 x,我们就能 够分类了,称为最优间隔分类器。接下的问题就是如何求解 w 和 b 的问题了。 由于 w = 1不是凸函数,我们想先处理转化一下,考虑几何间隔和函数间隔的关系, γ= ̂ 𝛾 ,我们改写一下上面的式子: w 这时候其实我们求的最大值仍然是几何间隔,只不过此时的 w 不受 w = 1的约束了。 然而这个时候目标函数仍然不是凸函数,没法直接代入优化软件里计算。我们还要改写。前 面说到同时扩大 w 和 b 对结果没有影响,但我们最后要求的仍然是 w 和 b 的确定值,不是 他们的一组倍数值,因此,我们需要对𝛾̂做一些限制,以保证我们解是唯一的。这里为了简 便我们取𝛾̂ = 1。这样的意义是将全局的函数间隔定义为 1,也即是将离超平面最近的点的 距离定义为 1 。由于求 w 1 1 的最大值相当于求 𝑤 2 的最小值,因此改写后结果为: w 2 这下好了,只有线性约束了,而且是个典型的二次规划问题(目标函数是自变量的二次 函数)。代入优化软件可解。 24
  • 28.到这里发现,这个讲义虽然没有像其他讲义一样先画好图,画好分类超平面,在图上标 示出间隔那么直观,但每一步推导有理有据,依靠思路的流畅性来推导出目标函数和约束。 接下来介绍的是手工求解的方法了,一种更优的求解方法。 6 拉格朗日对偶(Lagrange duality) 先抛开上面的二次规划问题,先来看看存在等式约束的极值问题求法,比如下面的最优 化问题: 目标函数是 f(w),下面是等式约束。通常解法是引入拉格朗日算子,这里使用β来表示 算子,得到拉格朗日公式为 L 是等式约束的个数。 然后分别对 w 和β求偏导,使得偏导数等于 0,然后解出 w 和β𝑖 。至于为什么引入拉格 朗日算子可以求出极值,原因是 f(w)的 dw 变化方向受其他不等式的约束,dw 的变化方向 与 f(w)的梯度垂直时才能获得极值,而且在极值处,f(w)的梯度与其他等式梯度的线性组合 平行,因此他们之间存在线性关系。 (参考《最优化与 KKT 条件》) 然后我们探讨有不等式约束的极值问题求法,问题如下: 我们定义一般化的拉格朗日公式 这里的𝛼𝑖 和𝛽𝑖 都是拉格朗日算子。如果按这个公式求解,会出现问题,因为我们求解的 是最小值,而这里的𝑔i (𝑤) ≤ 0,我们可以将𝛼𝑖 调整成很大的正值,来使最后的函数结果是 负无穷。因此我们需要排除这种情况,我们定义下面的函数: 25
  • 29.这里的 P 代表 primal。假设𝑔i (𝑤) > 0或者ℎi (𝑤) ≠ 0,那么我们总是可以调整𝛼𝑖 和𝛽𝑖 来 使得𝜃𝒫 (w)有最大值为正无穷。而只有 g 和 h 满足约束时,𝜃𝒫 (w)为 f(w)。这个函数的精妙 之处在于𝛼𝑖 ≥ 0,而且求极大值。 因此我们可以写作 这样我们原来要求的 min f(w)可以转换成求min𝑤 𝜃𝒫 (w)了。 我们使用p∗ 来表示min𝑤 𝜃𝒫 (w)。如果直接求解,首先面对的是两个参数,而𝛼𝑖 也是不 等式约束,然后再在 w 上求最小值。这个过程不容易做,那么怎么办呢? 我们先考虑另外一个问题 D 的意思是对偶, 作是固定值。之后在 将问题转化为先求拉格朗日关于 w 的最小值,将α和β看 求最大值的话: 这个问题是原问题的对偶问题,相对于原问题只是更换了 min 和 max 的顺序,而一般 更换顺序的结果是 Max Min(X) <= Min Max(X)。然而在这里两者相等。用𝑑 ∗ 来表示对偶问题 如下: 下面解释在什么条件下两者会等价。假设 f 和 g 都是凸函数,h 是仿射的(affine, )。并且存在 w 使得对于所有的 i, 𝑔𝑖 (𝑤) < 0。 在这种假设下,一定存在w ∗ , 𝛼 ∗ , 𝛽 ∗ 使得w ∗ 是原问题的解,𝛼 ∗ , 𝛽 ∗ 是对偶问题的解。还有 26
  • 30.另外,w ∗ , 𝛼 ∗ , 𝛽 ∗ 满足库恩-塔克条件(Karush-Kuhn-Tucker, KKT condition),该条件如下: 所以如果w ∗ , 𝛼 ∗ , 𝛽∗ 满足了库恩-塔克条件,那么他们就是原问题和对偶问题的解。让我 们再次审视公式(5),这个条件称作是 KKT dual complementarity 条件。这个条件隐含了如 果𝛼 ∗ > 0,那么𝑔𝑖 (𝑤 ∗ ) = 0。也就是说,𝑔𝑖 (𝑤 ∗ ) = 0时,w 处于可行域的边界上,这时才是 起作用的约束。而其他位于可行域内部(𝑔𝑖 (𝑤 ∗ ) < 0的)点都是不起作用的约束,其𝛼 ∗ = 0。这 个 KKT 双重补足条件会用来解释支持向量和 SMO 的收敛测试。 这部分内容思路比较凌乱,还需要先研究下《非线性规划》中的约束极值问题,再回头 看看。KKT 的总体思想是认为极值会在可行域边界上取得,也就是不等式为 0 或等式约束里 取得,而最优下降方向一般是这些等式的线性组合,其中每个元素要么是不等式为 0 的约束, 要么是等式约束。对于在可行域边界内的点,对最优解不起作用,因此前面的系数为 0。 7 最优间隔分类器(optimal margin classifier) 重新回到 SVM 的优化问题: 我们将约束条件改写为: 从 KKT 条件得知只有函数间隔是 1(离超平面最近的点)的线性约束式前面的系数𝛼𝑖 > 0, 也就是说这些约束式𝑔𝑖 (w) = 0,对于其他的不在线上的点(𝑔𝑖 (w) < 0),极值不会在他们所 在的范围内取得,因此前面的系数𝛼𝑖 = 0.注意每一个约束式实际就是一个训练样本。 看下面的图: 27
  • 31.实线是最大间隔超平面,假设×号的是正例,圆圈的是负例。在虚线上的点就是函数间 隔是 1 的点,那么他们前面的系数𝛼𝑖 > 0,其他点都是𝛼𝑖 = 0。这三个点称作支持向量。构 造拉格朗日函数如下: 注意到这里只有𝛼𝑖 没有𝛽𝑖 是因为原问题中没有等式约束,只有不等式约束。 下面我们按照对偶问题的求解步骤来一步步进行, 首先求解 的最小值,对于固定的𝛼𝑖 , 的最小值只与 w 和 b 有关。对 w 和 b 分别求偏导数。 并得到 28
  • 32.将上式带回到拉格朗日函数中得到,此时得到的是该函数的最小值(目标函数是凸函数) 化简过程如下: 𝑚 1 ℒ(w, b, α) = ‖𝑤‖2 − ∑ 𝛼𝑖 [𝑦 (𝑖) (𝑤 𝑇 𝑥 (𝑖) + 𝑏) − 1] 2 𝑖=1 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 1 = w 𝑇 w − ∑ 𝛼𝑖 𝑦 (𝑖) 𝑤 𝑇 𝑥 (𝑖) − ∑ 𝛼𝑖 𝑦 (𝑖) 𝑏 + ∑ 𝛼𝑖 2 𝑚 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 𝑖=1 1 = w 𝑇 ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − ∑ 𝛼𝑖 𝑦 (𝑖) 𝑤 𝑇 𝑥 (𝑖) − ∑ 𝛼𝑖 𝑦 (𝑖) 𝑏 + ∑ 𝛼𝑖 2 𝑚 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 𝑖=1 1 = w 𝑇 ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − 𝑤 𝑇 ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − ∑ 𝛼𝑖 𝑦 (𝑖) 𝑏 + ∑ 𝛼𝑖 2 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 1 = − w 𝑇 ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − ∑ 𝛼𝑖 𝑦 (𝑖) 𝑏 + ∑ 𝛼𝑖 2 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 1 = − w 𝑇 ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − 𝑏 ∑ 𝛼𝑖 𝑦 (𝑖) + ∑ 𝛼𝑖 2 𝑇 𝑚 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 𝑚 𝑚 𝑚 𝑚 𝑖=1 𝑖=1 𝑖=1 𝑖=1 𝑚 𝑚 𝑚 𝑖=1,𝑗=1 𝑖=1 𝑖=1 1 = − (∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) ) ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − 𝑏 ∑ 𝛼𝑖 𝑦 (𝑖) + ∑ 𝛼𝑖 2 𝑖=1 1 𝑇 = − ∑ 𝛼𝑖 𝑦 (𝑖) (𝑥 (𝑖) ) ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) − 𝑏 ∑ 𝛼𝑖 𝑦 (𝑖) + ∑ 𝛼𝑖 2 1 𝑇 =− ∑ 𝛼𝑖 𝑦 (𝑖) (𝑥 (𝑖) ) 𝛼𝑗 𝑦 (𝑗) 𝑥 (𝑗) − 𝑏 ∑ 𝛼𝑖 𝑦 (𝑖) + ∑ 𝛼𝑖 2 𝑚 𝑚 𝑚 𝑖=1 𝑖=1,𝑗=1 𝑖=1 1 = ∑ 𝛼𝑖 − ∑ 𝑦 (𝑖) 𝑦 (𝑖) 𝛼𝑖 𝛼𝑗 (𝑥 (𝑖) )𝑇 𝑥 (𝑗) − 𝑏 ∑ 𝛼𝑖 𝑦 (𝑖) 2 “倒数第 4 步”推导到“倒数第 3 步”使用了线性代数的转置运算,由于𝛼𝑖 和𝑦 (𝑖) 都是 实 数 , 因 此 转 置 后 与 自 身 一 样 。“ 倒 数 第 3 步 ” 推 导 到 “ 倒 数 第 2 步 ” 使 用 了 (a+b+c+…)(a+b+c+…)=aa+ab+ac+ba+bb+bc+…的乘法运算法则。最后一步是上一步的顺序调整。 29
  • 33.最后得到: 由于最后一项是 0,因此简化为 这里我们将向量内积 表示为 此时的拉格朗日函数只包含了变量𝛼𝑖 。然而我们求出了𝛼𝑖 才能得到 w 和 b。 接着是极大化的过程 , 前面提到过对偶问题和原问题满足的几个条件,首先由于目标函数和线性约束都是凸函 数,而且这里不存在等式约束 h。存在 w 使得对于所有的 i,𝑔𝑖 (𝑤) < 0。因此,一定存在w ∗ , 𝛼 ∗ 使 得w ∗ 是原问题的解,𝛼 ∗ 是对偶问题的解。在这里,求𝛼𝑖 就是求𝛼 ∗ 了。 如果求出了𝛼𝑖 ,根据 即可求出 w(也是w ∗ ,原问题的解)。然后 即可求出 b。即离超平面最近的正的函数间隔要等于离超平面最近的负的函数间隔。 关于上面的对偶问题如何求解,将留给下一篇中的 SMO 算法来阐明。 这里考虑另外一个问题,由于前面求解中得到 30
  • 34.𝑚 w = ∑ 𝛼𝑖 𝑦 (𝑖) 𝑥 (𝑖) 𝑖=1 我们通篇考虑问题的出发点是𝑤 𝑇 𝑥 + 𝑏,根据求解得到的𝛼𝑖 ,我们代入前式得到 也就是说,以前新来的要分类的样本首先根据 w 和 b 做一次线性运算,然后看求的结 果是大于 0 还是小于 0,来判断正例还是负例。现在有了𝛼𝑖 ,我们不需要求出 w,只需将新来 的样本和训练数据中的所有样本做内积和即可。那有人会说,与前面所有的样本都做运算是 不是太耗时了?其实不然,我们从 KKT 条件中得到,只有支持向量的𝛼𝑖 > 0,其他情况𝛼𝑖 = 0。 因此,我们只需求新来的样本和支持向量的内积,然后运算即可。这种写法为下面要提到的 核函数(kernel)做了很好的铺垫。这是上篇,先写这么多了。 31
  • 35.支持向量机 SVM(下) JerryLead csxulijie@gmail.com 2011 年 3 月 17 日星期四 7 核函数(Kernels) 考虑我们最初在“线性回归”中提出的问题,特征是房子的面积 x,这里的 x 是实数, 结果 y 是房子的价格。假设我们从样本点的分布中看到 x 和 y 符合 3 次曲线,那么我们希望 使用 x 的三次多项式来逼近这些样本点。那么首先需要将特征 x 扩展到三维(x, 𝑥 2 , 𝑥 3 ),然后 寻找特征和结果之间的模型。我们将这种特征变换称作特征映射(feature mapping)。映射 函数称作ϕ,在这个例子中 𝑥 𝑥 ϕ(x) = [ 2 ] 𝑥3 我们希望将得到的特征映射后的特征应用于 SVM 分类,而不是最初的特征。这样,我 们需要将前面 𝑥 公式中的内积从< 𝑥( ) , 𝑥 >,映射到< 𝜙(𝑥 (𝑖) ), 𝜙(𝑥) >。 至于为什么需要映射后的特征而不是最初的特征来参与计算,上面提到的(为了更好地 拟合)是其中一个原因,另外的一个重要原因是样例可能存在线性不可分的情况,而将特征 映射到高维空间后,往往就可分了。 (在《数据挖掘导论》Pang-Ning Tan 等人著的《支持向 量机》那一章有个很好的例子说明) 将核函数形式化定义,如果原始特征内积是< x, 𝑧 >,映射后为< 𝜙(x), 𝜙(𝑧) >,那么 定义核函数(Kernel)为 𝐾(𝑥, 𝑧) = 𝜙(𝑥) 𝜙(𝑧) 到这里,我们可以得出结论,如果要实现该节开头的效果,只需先计算𝜙(𝑥),然后计 算 𝜙(𝑥) 𝜙(𝑧)即可,然而这种计算方式是非常低效的。比如最初的特征是 n 维的,我们将其 映射到n2 维,然后再计算,这样需要O(n2 )的时间。那么我们能不能想办法减少计算时间呢? 先看一个例子,假设 x 和 z 都是 n 维的, 𝐾(𝑥, 𝑧) = (𝑥 𝑧)2 展开后,得 𝑛 𝑛 𝑛 𝑛 𝐾 (𝑥, 𝑧) = (𝑥 𝑧)2 = (∑ 𝑥𝑖 𝑧𝑖 ) (∑ 𝑥𝑗 𝑧𝑗 ) = ∑ ∑ 𝑥𝑖 𝑥𝑗 𝑧𝑖 𝑧𝑗 𝑖=1 𝑛 𝑗=1 𝑖=1 𝑗=1 𝑛 = ∑ ∑(𝑥𝑖 𝑥𝑗 )(𝑧𝑖 𝑧𝑗 ) = 𝜙(𝑥 ) 𝜙(𝑧) 𝑖=1 𝑗=1 这个时候发现我们可以只计算原始特征 x 和 z 内积的平方(时间复杂度是 O(n)),就等 价与计算映射后特征的内积。也就是说我们不需要花O(n2 )时间了。 32
  • 36.现在看一下映射函数(n=3 时),根据上面的公式,得到 也就是说核函数𝐾(𝑥, 𝑧) = (𝑥 𝑧)2 只能在选择这样的ϕ作为映射函数时才能够等价于映 射后特征的内积。 再看一个核函数 对应的映射函数(n=3 时)是 更一般地,核函数𝐾(𝑥, 𝑧) = (𝑥 𝑧 𝑐)𝑑 对应的映射后特征维度为( n 𝑑 d )。 (这个我一直 没有理解)。 由于计算的是内积,我们可以想到 IR 中的余弦相似度,如果 x 和 z 向量夹角越小,那 么核函数值越大,反之,越小。因此,核函数值是𝜙(𝑥)和𝜙(𝑧)的相似度。 再看另外一个核函数 33
  • 37.这时,如果 x 和 z 很相近( x − z ≈ 0),那么核函数值为 1,如果 x 和 z 相差很大 ( x − z ≫ 0),那么核函数值约等于 0。由于这个函数类似于高斯分布,因此称为高斯核 函数,也叫做径向基函数(Radial Basis Function 简称 RBF)。它能够把原始特征映射到无穷维。 既然高斯核函数能够比较 x 和 z 的相似度,并映射到 0 到 1,回想 logistic 回归,sigmoid 函数可以,因此还有 sigmoid 核函数等等。 下面有张图说明在低维线性不可分时,映射到高维后就可分了,使用高斯核函数。 来自 Eric Xing 的 slides 注意,使用核函数后,怎么分类新来的样本呢?线性的时候我们使用 SVM 学习出 w 和 b,新来样本 x 的话,我们使用 𝑥 来判断,如果值大于等于 1,那么是正类,小于等 于是负类。在两者之间,认为无法确定。如果使用了核函数后, 𝑥 就 变成了 𝜙(x) ,是否先要找到𝜙(x),然后再预测?答案肯定不是了,找𝜙(x)很麻烦,回想我 们之前说过的 只需将< 𝑥 (𝑖) , 𝑥 >替换成𝐾(𝑥 (𝑖) , 𝑥),然后值的判断同上。 8 核函数有效性判定 问题:给定一个函数 K,我们能否使用 K 来替代计算 𝜙(𝑥) 𝜙(𝑧),也就说,是否能够找 出一个𝜙,使得对于所有的 x 和 z,都有𝐾(𝑥, 𝑧) = 𝜙(𝑥) 𝜙(𝑧)? 比如给出了𝐾(𝑥, 𝑧) = (𝑥 𝑧)2 ,是否能够认为 K 是一个有效的核函数。 下面来解决这个问题,给定 m 个训练样本*𝑥 (1) , 𝑥 (2) , … , 𝑥 (𝑚) +,每一个𝑥 (𝑖) 对应一个特征 向量。那么,我们可以将任意两个𝑥 (𝑖) 和𝑥 (𝑗) 带入 K 中,计算得到𝐾𝑖𝑗 = 𝐾(𝑥 (𝑖) , 𝑥 (𝑗) )。I 可以 从 1 到 m,j 可以从 1 到 m,这样可以计算出 m*m 的核函数矩阵(Kernel Matrix)。为了方 便,我们将核函数矩阵和𝐾(𝑥, 𝑧)都使用 K 来表示。 如果假设 K 是有效的核函数,那么根据核函数定义 34
  • 38.𝐾𝑖𝑗 = 𝐾(𝑥 (𝑖) , 𝑥 (𝑗) ) = 𝜙(𝑥 (𝑖) ) 𝜙(𝑥 (𝑗) ) = 𝜙(𝑥 (𝑗) ) 𝜙(𝑥 (𝑖) ) = 𝐾(𝑥 (𝑗) , 𝑥 (𝑖) ) = 𝐾𝑗𝑖 可见,矩阵 K 应该是个对称阵。让我们得出一个更强的结论,首先使用符号𝜙𝑘 (𝑥)来表 示映射函数𝜙(𝑥)的第 k 维属性值。那么对于任意向量 z,得 最后一步和前面计算𝐾(𝑥, 𝑧) = (𝑥 𝑧)2 时类似。从这个公式我们可以看出,如果 K 是个 有效的核函数(即𝐾(𝑥, 𝑧)和𝜙(𝑥) 𝜙(𝑧)等价),那么,在训练集上得到的核函数矩阵 K 应该 是半正定的(K ≥ 0) 这样我们得到一个核函数的必要条件: K 是有效的核函数 ==> 核函数矩阵 K 是对称半正定的。 可幸的是,这个条件也是充分的,由 Mercer 定理来表达。 Mercer 定理: 如果函数 K 是ℝn × ℝn → ℝ上的映射(也就是从两个 n 维向量映射到实数域)。那么如果 K 是一个有效核函数(也称为 Mercer 核函数),那么当且仅当对于训练样例*𝑥 (1) , 𝑥 (2) , … , 𝑥 (𝑚) +, 其相应的核函数矩阵是对称半正定的。 Mercer 定理表明为了证明 K 是有效的核函数,那么我们不用去寻找𝜙,而只需要在训练 集上求出各个𝐾𝑖𝑗 ,然后判断矩阵 K 是否是半正定(使用左上角主子式大于等于零等方法) 即可。 许多其他的教科书在 Mercer 定理证明过程中使用了L2 范数和再生希尔伯特空间等概念, 但在特征是 n 维的情况下,这里给出的证明是等价的。 核函数不仅仅用在 SVM 上,但凡在一个模型后算法中出现了< x, z >,我们都可以常使 用𝐾(𝑥, 𝑧)去替换,这可能能够很好地改善我们的算法。 9 规则化和不可分情况处理(Regularization and the non-separable case) 我们之前讨论的情况都是建立在样例线性可分的假设上,当样例线性不可分时,我们可 以尝试使用核函数来将特征映射到高维,这样很可能就可分了。然而,映射后我们也不能 100%保证可分。那怎么办呢,我们需要将模型进行调整,以保证在不可分的情况下,也能 够尽可能地找出分隔超平面。 看下面两张图: 35
  • 39.可以看到一个离群点(可能是噪声)可以造成超平面的移动,间隔缩小,可见以前的模 型对噪声非常敏感。再有甚者,如果离群点在另外一个类中,那么这时候就是线性不可分了。 这时候我们应该允许一些点游离并在在模型中违背限制条件(函数间隔大于 1)。我们 设计得到新的模型如下(也称软间隔): 引入非负参数𝜉𝑖 后(称为松弛变量),就允许某些样本点的函数间隔小于 1,即在最大间 隔区间里面,或者函数间隔是负数,即样本点在对方的区域中。而放松限制条件后,我们需 要重新调整目标函数,以对离群点进行处罚,目标函数后面加上的C ∑m 𝑖=1 𝜉𝑖 就表示离群点越 多,目标函数值越大,而我们要求的是尽可能小的目标函数值。这里的 C 是离群点的权重, C 越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。我们看到,目标函数 控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。 模型修改后,拉格朗日公式也要修改如下: 这里的𝛼𝑖 和𝛾𝑖 都是拉格朗日乘子,回想我们在拉格朗日对偶中提到的求法,先写出拉格 朗日公式(如上),然后将其看作是变量 w 和 b 的函数,分别对其求偏导,得到 w 和 b 的表 达式。然后代入公式中,求带入后公式的极大值。整个推导过程类似以前的模型,这里只写 出最后结果如下: 此时,我们发现没有了参数𝜉𝑖 ,与之前模型唯一不同在于𝛼𝑖 又多了𝛼𝑖 ≤ C的限制条件。 需要提醒的是,b 的求值公式也发生了改变,改变结果在 SMO 算法里面介绍。先看看 KKT 36
  • 40.条件的变化: 离群样本点前面的系数为 C, 第一个式子表明在两条间隔线外的样本点前面的系数为 0, 而支持向量(也就是在超平面两边的最大间隔线上)的样本点前面系数在(0,C)上。通过 KKT 条件可知,某些在最大间隔线上的样本点也不是支持向量,相反也可能是离群点。 10 坐标上升法(Coordinate ascent) 在最后讨论W(α)的求解之前,我们先看看坐标上升法的基本原理。假设要求解下面的 优化问题: 这里 W 是α向量的函数。之前我们在回归中提到过两种求最优解的方法,一种是梯度下 降法,另外一种是牛顿法。现在我们再讲一种方法称为坐标上升法(求解最小值问题时,称 作坐标下降法,原理一样)。 方法过程: 最里面语句的意思是固定除𝛼𝑖 之外的所有𝛼𝑗 (𝑗 ≠ ),这时 W 可看作只是关于𝛼𝑖 的函数, 那么直接对𝛼𝑖 求导优化即可。这里我们进行最大化求导的顺序 i 是从 1 到 m,可以通过更改 优化顺序来使 W 能够更快地增加并收敛。如果 W 在内循环中能够很快地达到最优,那么坐 标上升法会是一个很高效的求极值方法。 下面通过一张图来展示: 37
  • 41.椭圆代表了二次函数的各个等高线,变量数为 2,起始坐标是(2,-2)。图中的直线式迭代 优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因 为每一步只优化一个变量。 11 SMO 优化算法(Sequential minimal optimization) SMO 算法由 Microsoft Research 的 John C. Platt 在 1998 年提出,并成为最快的二次规划 优化算法,特别针对线性 SVM 和数据稀疏时性能更优。关于 SMO 最好的资料就是他本人写 的《Sequential Minimal Optimization A Fast Algorithm for Training Support Vector Machines》了。 我拜读了一下,下面先说讲义上对此方法的总结。 首先回到我们前面一直悬而未解的问题,对偶函数最后的优化问题: 要解决的是在参数*𝛼1 , 𝛼2 , … , 𝛼𝑛 +上求最大值 W 的问题,至于𝑥 (𝑖) 和y (𝑖) 都是已知数。C 由我们预先设定,也是已知数。 按照坐标上升的思路,我们首先固定除𝛼1 以外的所有参数,然后在𝛼1 上求极值。等一 下,这个思路有问题,因为如果固定𝛼1 以外的所有参数,那么𝛼1 将不再是变量(可以由其 他值推出),因为问题中规定了 因此,我们需要一次选取两个参数做优化,比如𝛼1 和𝛼2 ,此时𝛼2 可以由𝛼1 和其他参数 表示出来。这样回带到 W 中,W 就只是关于𝛼1 的函数了,可解。 这样,SMO 的主要步骤如下: 38
  • 42.意思是,第一步选取一对𝛼𝑖 和𝛼𝑗 ,选取方法使用启发式方法(后面讲)。第二步,固定 除𝛼𝑖 和𝛼𝑗 之外的其他参数,确定 W 极值条件下的𝛼𝑖 ,𝛼𝑗 由𝛼𝑖 表示。 SMO 之所以高效就是因为在固定其他参数后,对一个参数优化过程很高效。 下面讨论具体方法: 假设我们选取了初始值*𝛼1 , 𝛼2 , … , 𝛼𝑛 +满足了问题中的约束条件。接下来,我们固定 *𝛼3 , 𝛼4 , … , 𝛼𝑛 +,这样 W 就是𝛼1 和𝛼2 的函数。并且𝛼1 和𝛼2 满足条件: 由于*𝛼3 , 𝛼4 , … , 𝛼𝑛 +都是已知固定值,因此为了方面,可将等式右边标记成实数值ζ。 当y (1) 和y (2) 异号时,也就是一个为 1,一个为-1 时,他们可以表示成一条直线,斜率为 1。如下图: 𝛼2 𝛼1 − 𝛼2 = ζ (𝐶 ζ, 𝐶) H2 C 2 𝛼1 − 𝛼2 = ζ (𝐶, 𝐶 − ζ) H1 (0, −ζ) L2 L1 (ζ, 0) C 𝛼1 横轴是𝛼1 ,纵轴是𝛼2 ,𝛼1 和𝛼2 既要在矩形方框内,也要在直线上,因此 𝐿 = 𝑚𝑎𝑥(0, 𝛼2 − 𝛼1 ),𝐻 = 𝑚 𝑛(𝐶, 𝐶 𝛼2 − 𝛼1 ) 同理,当y (1) 和y (2) 同号时, 𝐿 = 𝑚𝑎𝑥(0, 𝛼2 𝛼1 − 𝐶),𝐻 = 𝑚 𝑛(𝐶, 𝛼2 𝛼1 ) 39
  • 43.然后我们打算将𝛼1 用𝛼2 表示: 然后反代入 W 中,得 展开后 W 可以表示成a𝛼2 2 𝛼2 𝑐。其中 a,b,c 是固定值。这样,通过对 W 进行求导 可以得到𝛼2 ,然而要保证𝛼2 满足L ≤ 𝛼2 ≤ 𝐻,我们使用𝛼2 𝑛𝑒𝑤,𝑢𝑛𝑐𝑙𝑖𝑝𝑝𝑒𝑑 表示求导求出来的𝛼2 , 然而最后的𝛼2 ,要根据下面情况得到: 这样得到𝛼2 𝑛𝑒𝑤 后,我们可以得到𝛼1 的新值𝛼1 𝑛𝑒𝑤 。 下面进入 Platt 的文章,来找到启发式搜索的方法和求 b 值的公式。 这篇文章使用的符号表示有点不太一样,不过实质是一样的,先来熟悉一下文章中符号 的表示。 文章中定义特征到结果的输出函数为 与我们之前的 𝑥( ) 原始的优化问题为: 实质是一致的。 求导得到: 经过对偶后为: s.t. 这里与 W 函数是一样的,只是符号求反后,变成求最小值了。y 和y ( ) 是一样的,都表 示第 i 个样本的输出结果(1 或-1)。 经过加入松弛变量𝜉𝑖 后,模型修改为: 40
  • 44.由公式(7)代入(1)中可知, 这个过程和之前对偶过程一样。 重新整理我们要求的问题为: 与之对应的 KKT 条件为: 这个 KKT 条件说明,在两条间隔线外面的点,对应前面的系数𝛼𝑖 为 0,在两条间隔线里 面的对应𝛼𝑖 为 C,在两条间隔线上的对应的系数𝛼𝑖 在 0 和 C 之间。 将我们之前得到 L 和 H 重新拿过来: 之前我们将问题进行到这里,然后说将𝛼1 用𝛼2 表示后代入 W 中,这里将代入Ψ中,得 其中 这里的𝛼1 ∗ 和𝛼2 ∗ 代表某次迭代前的原始值,因此是常数,而𝛼1 和𝛼2 是变量,待求。公式 (24)中的最后一项是常数。 由于𝛼1 和𝛼2 满足以下公式 41
  • 45.𝑛 𝑦1 𝛼1 ∗ 𝑦2 𝛼2 ∗ = − ∑ 𝑦𝑖 𝛼𝑖 ∗ = 𝑦1 𝛼1 𝑦2 𝛼2 𝑖=3 因为𝛼𝑖 ∗ (i > 2)的值是固定值,在迭代前后不会变。 那么用 s 表示𝑦1 𝑦2 ,上式两边乘以𝑦1 时,变为: 其中 𝑛 = −𝑦1 ∑ 𝑦𝑖 𝛼𝑖 ∗ 𝑖=3 代入(24)中,得 这时候只有𝛼2 是变量了,求导 如果Ψ的二阶导数大于 0(凹函数),那么一阶导数为 0 时,就是极小值了。 假设其二阶导数为 0(一般成立),那么上式化简为: 将 w 和 v 代入后,继续化简推导,得(推导了六七行推出来了) 我们使用η来表示: 通常情况下目标函数是正定的,也就是说,能够在直线约束方向上求得最小值,并且 η > 0。 那么我们在(30)两边都除以η可以得到 这里我们使用𝛼2 𝑛𝑒𝑤 表示优化后的值,𝛼2 是迭代前的值,𝐸𝑖 = 𝑢𝑖 − 𝑦𝑖 。 与之前提到的一样𝛼2 𝑛𝑒𝑤 不是最终迭代后的值,需要进行约束: 42
  • 46.那么 在特殊情况下,η可能不为正,如果核函数 K 不满足 Mercer 定理,那么目标函数可能变 得非正定,η可能出现负值。即使 K 是有效的核函数,如果训练样本中出现相同的特征 x, 那么η仍有可能为 0。SMO 算法在η不为正值的情况下仍有效。为保证有效性,我们可以推 导出η就是Ψ的二阶导数,η < 0,Ψ没有极小值,最小值在边缘处取到(类比y = −𝑥 2 ),η = 0时 更是单调函数了,最小值也在边缘处取得,而𝛼2 的边缘就是 L 和 H。这样将𝛼2 = 𝐿和𝛼2 = 𝐻分 别代入Ψ中即可求得Ψ的最小值,相应的𝛼2 = L还是𝛼2 = 𝐻也可以知道了。具体计算公式如 下: 至此,迭代关系式除了 b 的推导式以外,都已经推出。 b 每一步都要更新,因为前面的 KKT 条件指出了𝛼𝑖 和𝑦𝑖 𝑢𝑖 的关系,而𝑢 和 b 有关,在每 一步计算出𝛼𝑖 后,根据 KKT 条件来调整 b。 b 的更新有几种情况: 来自罗林开的 ppt 这里的界内指0 < 𝛼𝑖 < 𝐶,界上就是等于 0 或者 C 了。 前面两个的公式推导可以根据 𝑛 𝑦1 𝛼1 ∗ ∗ 𝑦2 𝛼2 = − ∑ 𝑦𝑖 𝛼𝑖 ∗ = 𝑦1 𝛼1 𝑦2 𝛼2 𝑖=3 和对于0 < 𝛼𝑖 < 𝐶有𝑦𝑖 𝑢𝑖 = 1的 KKT 条件推出。 这样全部参数的更新公式都已经介绍完毕,附加一点,如果使用的是线性核函数,我们 就可以继续使用 w 了,这样不用扫描整个样本库来作内积了。 w 值的更新方法为: 43
  • 47.根据前面的 公式推导出。 12 SMO 中拉格朗日乘子的启发式选择方法 终于到了最后一个问题了,所谓的启发式选择方法主要思想是每次选择拉格朗日乘子的 时候,优先选择样本前面系数0 < 𝛼𝑖 < 𝐶的𝛼𝑖 作优化(论文中称为无界样例),因为在界上 (𝛼𝑖 为 0 或 C)的样例对应的系数𝛼𝑖 一般不会更改。 这条启发式搜索方法是选择第一个拉格朗日乘子用的,比如前面的𝛼2 。那么这样选择 的话,是否最后会收敛?可幸的是 Osuna 定理告诉我们只要选择出来的两个𝛼𝑖 中有一个违背 了 KKT 条件,那么目标函数在一步迭代后值会减小。违背 KKT 条件不代表0 < 𝛼𝑖 < 𝐶,在界 上也有可能会违背。是的,因此在给定初始值𝛼𝑖 =0 后,先对所有样例进行循环,循环中碰 到违背 KKT 条件的(不管界上还是界内)都进行迭代更新。等这轮过后,如果没有收敛,第 二轮就只针对0 < 𝛼𝑖 < 𝐶的样例进行迭代更新。 在第一个乘子选择后,第二个乘子也使用启发式方法选择,第二个乘子的迭代步长大致 正比于 E1 − E2 ,选择第二个乘子能够最大化 E1 − E2 。即当E1 为正时选择负的绝对值最大 的E2 ,反之,选择正值最大的E2 。 最后的收敛条件是在界内(0 < 𝛼𝑖 < 𝐶)的样例都能够遵循 KKT 条件,且其对应的𝛼𝑖 只 在极小的范围内变动。 至于如何写具体的程序,请参考 John C. Platt 在论文中给出的伪代码。 13 总结 这份 SVM 的讲义重点概括了 SVM 的基本概念和基本推导,中规中矩却又让人醍醐灌顶。 起初让我最头疼的是拉格朗日对偶和 SMO,后来逐渐明白拉格朗日对偶的重要作用是将 w 的计算提前并消除 w,使得优化函数变为拉格朗日乘子的单一参数优化问题。而 SMO 里面 迭代公式的推导也着实让我花费了不少时间。 对比这么复杂的推导过程,SVM 的思想确实那么简单。它不再像 logistic 回归一样企图 去拟合样本点(中间加了一层 sigmoid 函数变换),而是就在样本中去找分隔线,为了评判 哪条分界线更好,引入了几何间隔最大化的目标。 之后所有的推导都是去解决目标函数的最优化上了。在解决最优化的过程中,发现了 w 可以由特征向量内积来表示,进而发现了核函数,仅需要调整核函数就可以将特征进行低维 到高维的变换,在低维上进行计算,实质结果表现在高维上。由于并不是所有的样本都可分, 为了保证 SVM 的通用性,进行了软间隔的处理,导致的结果就是将优化问题变得更加复杂, 然而惊奇的是松弛变量没有出现在最后的目标函数中。最后的优化求解问题,也被拉格朗日 对偶和 SMO 算法化解,使 SVM 趋向于完美。 另外,其他很多议题如 SVM 背后的学习理论、参数选择问题、二值分类到多值分类等 等还没有涉及到,以后有时间再学吧。其实朴素贝叶斯在分类二值分类问题时,如果使用对 数比,那么也算作线性分类器。 44
  • 48.规则化和模型选择(Regularization and model selection) JerryLead csxulijie@gmail.com 2011 年 3 月 24 日星期四 1 问题 模型选择问题:对于一个学习问题,可以有多种模型选择。比如要拟合一组样本点,可以使 用线性回归(y = 𝜃 𝑇 𝑥),也可以用多项式回归(y = 𝜃 𝑇 𝑥1~𝑚 )。那么使用哪种模型好呢(能够 在偏差和方差之间达到平衡最优)? 还有一类参数选择问题:如果我们想使用带权值的回归模型,那么怎么选择权重 w 公式里 的参数τ? 形式化定义: 假设可选的模型集合是Μ = *𝑀1 , 𝑀2 , … , 𝑀𝑑 +, 比如我们想分类,那么 SVM、logistic 回归、神经网络等模型都包含在 M 中。 1 交叉验证(Cross validation) 我们的第一个任务就是要从 M 中选择最好的模型。 假设训练集使用 S 来表示 如果我们想使用经验风险最小化来度量模型的好坏,那么我们可以这样来选择模型: 1、 使用 S 来训练每一个𝑀𝑖 ,训练出参数后,也就可以得到假设函数ℎ𝑖 。(比如,线性模型 中得到𝜃𝑖 后,也就得到了假设函数ℎ𝜃 (x) = 𝜃 𝑇 𝑥) 2、 选择错误率最小的假设函数。 遗憾的是这个算法不可行,比如我们需要拟合一些样本点,使用高阶的多项式回归肯定 比线性回归错误率要小,偏差小,但是方差却很大,会过度拟合。因此,我们改进算法如下: 1、 从全部的训练数据 S 中随机选择 70%的样例作为训练集𝑆train ,剩余的 30%作为测试集 𝑆CV 。 2、 在𝑆train 上训练每一个𝑀𝑖 ,得到假设函数ℎ𝑖 。 3、 在𝑆CV 上测试每一个ℎ𝑖 ,得到相应的经验错误𝜀̂𝑆CV (ℎ𝑖 )。 4、 选择具有最小经验错误𝜀̂𝑆CV (ℎ𝑖 )的ℎ𝑖 作为最佳模型。 这种方法称为 hold-out cross validation 或者称为简单交叉验证。 由于测试集是和训练集中是两个世界的,因此我们可以认为这里的经验错误𝜀̂𝑆CV (ℎ𝑖 )接 近于泛化错误(generalization error)。这里测试集的比例一般占全部数据的 1/4-1/3。30%是 典型值。 45
  • 49.还可以对模型作改进,当选出最佳的模型𝑀𝑖 后,再在全部数据 S 上做一次训练,显然 训练数据越多,模型参数越准确。 简单交叉验证方法的弱点在于得到的最佳模型是在 70%的训练数据上选出来的,不代表 在全部训练数据上是最佳的。还有当训练数据本来就很少时,再分出测试集后,训练数据就 太少了。 我们对简单交叉验证方法再做一次改进,如下: 1、 将全部训练集 S 分成 k 个不相交的子集,假设 S 中的训练样例个数为 m,那么每一个子 集有 m/k 个训练样例,相应的子集称作{𝑆1 , 𝑆2 , … , 𝑆𝑘 }。 2、 每 次 从 模 型 集 合 M 中 拿 出 来 一 个 𝑀𝑖 , 然 后 在 训 练 子 集 中 选 择 出 k-1 个 {𝑆1 , 𝑆2 , 𝑆𝑗−1, 𝑆𝑗+1 … , 𝑆𝑘 }(也就是每次只留下一个𝑆𝑗 ),使用这 k-1 个子集训练𝑀𝑖 后,得到 假设函数ℎ𝑖𝑗 。最后使用剩下的一份𝑆𝑗 作测试,得到经验错误𝜀̂𝑆j (ℎ𝑖j )。 3、 由于我们每次留下一个𝑆𝑗 (j 从 1 到 k),因此会得到 k 个经验错误,那么对于一个𝑀𝑖 , 它的经验错误是这 k 个经验错误的平均。 4、 选出平均经验错误率最小的𝑀𝑖 ,然后使用全部的 S 再做一次训练,得到最后的ℎ𝑖 。 这个方法称为 k-fold cross validation(k-折叠交叉验证)。说白了,这个方法就是将简单 交叉验证的测试集改为 1/k,每个模型训练 k 次,测试 k 次,错误率为 k 次的平均。一般讲 k 取值为 10。这样数据稀疏时基本上也能进行。显然,缺点就是训练和测试次数过多。 极端情况下,k 可以取值为 m,意味着每次留一个样例做测试,这个称为 leave-one-out cross validation。 如果我们发明了一种新的学习模型或者算法,那么可以使用交叉验证来对模型进行评价。 比如在 NLP 中,我们将训练集中分出一部分训练,一部分做测试。 2 特征选择(Feature selection) 特征选择严格来说也是模型选择中的一种。这里不去辨析他们的关系,重点说明问题。 假设我们想对维度为 n 的样本点进行回归,然而,n 可能大多以至于远远大于训练样例数 m。 但是我们感觉很多特征对于结果是无用的,想剔除 n 中的无用特征。n 个特征就有2𝑛 种去除 情况(每个特征去或者保留),如果我们枚举这些情况,然后利用交叉验证逐一考察在该情 况下模型的错误率,太不现实。因此需要一些启发式搜索方法。 第一种,前向搜索: 1、 初始化特征集 F 为空。 2、 扫描 i 从 1 到 n, 如果第 i 个特征不在 F 中,那么将特征 i 和 F 放在一起作为𝐹𝑖 (即𝐹𝑖 = 𝐹 ∪ *i+) 在只使用𝐹𝑖 中特征的情况下,利用交叉验证来得到𝐹𝑖 的错误率。 3、 从上步中得到的 n 个𝐹𝑖 中选出错误率最小的𝐹𝑖 ,更新 F 为𝐹𝑖 。 如果 F 中的特征数达到了 n 或者预设定的阈值(如果有的话),那么输出整个搜索过程 中最好的 F,没达到转到 2 前向搜索属于 wrapper model feature selection。Wrapper 这里指不断地使用不同的特征 集来测试学习算法。前向搜索说白了就是每次增量地从剩余未选中的特征选出一个加入特征 集中,待达到阈值或者 n 时,从所有的 F 中选出错误率最小的。 既然有增量加,那么也会有增量减,后者称为后向搜索。先将 F 设置为{1,2,..,n},然后 每次删除一个特征,并评价,直到达到阈值或者为空,然后选择最佳的 F。 46
  • 50.这两种算法都可以工作,但是计算复杂度比较大。时间 复杂度为O(n + (n − 1) + (n − 2) + ⋯ + 1) = O(𝑛2 )。 第二种,过滤特征选择(Filter feature selection): 过滤特征选择方法的想法是针对每一个特征𝑥𝑖 ,i 从 1 到 n,计算𝑥𝑖 相对于类别标签y的 信息量S(i),得到 n 个结果,然后将 n 个S(i)按照从大到小排名,输出前 k 个特征。显然, 这样复杂度大大降低,为 O(n)。 那么关键问题就是使用什么样的方法来度量S(i),我们的目标是选取与 y 关联最密切的 一些𝑥𝑖 。而 y 和𝑥𝑖 都是有概率分布的。因此我们想到使用互信息来度量S(i),对于𝑥𝑖 是离散 值的情况更适用,不是离散值,将其转变为离散值,方法在第一篇《回归认识》中已经提到。 互信息(Mutual information)公式: 当𝑥𝑖 是 0/1 离散值的时候,这个公式如上。很容易推广到𝑥𝑖 是多个离散值的情况。 这里的𝑝(𝑥𝑖 , 𝑦),𝑝(𝑥𝑖 )和𝑝(y)都是从训练集上得到的。 若问这个 MI 公式如何得来,请看它的 KL 距离(Kullback-Leibler)表述: 也就是说,MI 衡量的是𝑥𝑖 和 y 的独立性。如果它俩独立(𝑝(𝑥𝑖 , 𝑦) = 𝑝(𝑥𝑖 )𝑝(y)),那么 KL 距离值为 0,也就是说𝑥𝑖 和 y 不相关了,可以去除𝑥𝑖 。相反,如果两者密切相关,那么 MI 值会很大。在对 MI 进行排名后,最后剩余的问题就是如何选择 k 值(前 k 个𝑥𝑖 )。我们 继续使用交叉验证的方法,将 k 从 1 扫描到 n,取最大的 F。不过这次复杂度是线性的了。 比如,在使用朴素贝叶斯分类文本的时候,词表长度 n 很大。使用 filter 特征选择方法,能 够增加分类器的精度。 3 贝 叶 斯 统 计 和 规 则 化 ( Bayesian statistics and regularization) 题目有点绕,说白了就是要找更好的估计方法来减少过度拟合情况的发生。 回顾一下,线性回归中使用的估计方法是最小二乘法,logistic 回归是条件概率的最大 似然估计,朴素贝叶斯是联合概率的最大似然估计,SVM 是二次规划。 以前我们使用的估计方法是最大似然估计(比如在 logistic 回归中使用的): 注意这里的最大似然估计与维基百科中的表述http://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E5%90%8E%E9%AA%8C%E6%A6%82% E7%8E%87 有些出入,是因为维基百科只是将样本(观察数据)记为 X,然后求 P(X)的最大概率。 然而,对于我们这里的样本而言,分为特征 x 和类标签 y。我们需要具体计算 P(X)。在判别 模型(如 logistic 回归)中,我们看待 P(X)=P(x,y)=P(y x)P(x),而 P(x)与θ独立无关, 47
  • 51.因此最后的 argmax P(X)由 argmaxP(y x)决定,也就是上式𝜃ML 。严格来讲𝜃ML 并不等于样 本 X 的概率,只是 P(X)决定于𝜃ML ,𝜃ML 最大化时 P(X)也最大化。在生成模型,如朴素贝叶 斯中,我们看待 P(X)=P(y)P(x y),也就是在某个类标签 y 下出现特征 x 的概率与先验概率 之积。而 P(x y)在 x 各个分量是条件独立情况下可以以概率相乘方式计算出,这里根本没 有参数θ。因此最大似然估计直接估计 P(x,y)即可,变成了联合分布概率。 在该上式中,我们视参数θ为未知的常数向量。我们的任务就是估计出未知的θ。 从大范围上说,最大似然估计看待θ的视角称为频率学派(frequentist statistics),认为θ不 是随机变量,只是一个未知的常量,因此我们没有把p(𝑦 (𝑖) 𝑥 (𝑖) ; θ)写成p(𝑦 (𝑖) 𝑥 (𝑖) , θ)。 另一种视角称为贝叶斯学派(Bayesian),他们看待θ为随机变量,值未知。既然θ为随 机变量,那么θ不同的值就有了不同的概率p(θ)(称为先验概率),代表我们对特定的θ的相 信度。我们将训练集表示成S = *(𝑥 (𝑖) , 𝑦 (𝑖) )+,i 从 1 到 m。我们首先需要求出θ的后验概率: 这个公式的推导其实比较蹊跷。第一步无可厚非,第二步中先看分子,分子中p(S θ)最 (𝑖) 完整的表达方式是(∏m 𝑥 (𝑖) , 𝜃))𝑝(𝑥 (𝑖) )。由于在分母中也会出现𝑝(𝑥 (𝑖) ),所以𝑝(𝑥 (𝑖) ) 𝑖=1 𝑝(𝑦 会被约掉。当然作者压根就没有考虑𝑝(𝑥 (𝑖) ),因为他看待 P(S)的观点就是 x->y,而不是(x,y)。 再来看分母,分母写成这种形式后,意思是对所有的𝜃可能值做积分。括号里面的意思是 (𝑖) (𝑖) ∏m 然后将其展开成分母的模样,从宏观上理解,就是在求每个样例的概率时, 𝑖=1 𝑝(𝑦 𝑥 ), 先以一定的概率确定𝜃,然后在𝑥 (𝑖) 和𝜃的作用下再确定𝑦 (𝑖) 的概率。而如果让我推导这个公 式 , 我 可 能 会 这 样 写 分 母 p(S) = ∫𝜃 (𝑝(𝑆 𝜃)𝑝(𝜃))𝑑𝜃 , 这 样 推 导 出 的 结 果 是 (𝑖) 𝑥 (𝑖) , 𝜃))𝑝(𝜃)𝑑𝜃 。我不知道自己的想法对不对,分歧在于如何看待𝜃, p(S) = ∫𝜃 (∏m 𝑖=1 𝑝(𝑦 作者是为每个样例都重新选定𝜃,而我是对总体样本选择一个𝜃。 后记:我看了 Andrew NG 的教学视频,发现视频上的结果和讲义上的不一致,应该讲义 (𝑖) 上由于笔误写错了,正确的分母是p(S) = ∫𝜃 (∏m 𝑥 (𝑖) , 𝜃))𝑝(𝜃)𝑑𝜃 𝑖=1 𝑝(𝑦 p(𝑦 (𝑖) 𝑥 (𝑖) , θ)在不同的模型下计算方式不同。比如在贝叶斯 logistic 回归中, 其中 ,p 的表现形式也就是伯努利分布了。 在θ是随机变量的情况下,如果新来一个样例特征为 x,那么为了预测 y。我们可以使用 下面的公式: p(θ S)由前面的公式得到。假若我们要求期望值的话,那么套用求期望的公式即可: 48
  • 52.大多数时候我们只需求得p(y x, S)中最大的 y 即可(在 y 是离散值的情况下)。 这次求解p(y x, S)与之前的方式不同,以前是先求θ,然后直接预测,这次是对所有可 能的θ作积分。 再总结一下两者的区别,最大似然估计没有将θ视作 y 的估计参数,认为θ是一个常数, 只是未知其值而已,比如我们经常使用常数 c 作为 y=2x+c 的后缀一样。但是p(𝑦 (𝑖) 𝑥 (𝑖) ; θ)的 计算公式中含有未知数θ。所以再对极大似然估计求导后,可以求出θ。 而贝叶斯估计将θ视为随机变量,θ的值满足一定的分布,不是固定值,我们无法通过 计算获得其值,只能在预测时计算积分。 然而在上述贝叶斯估计方法中,虽然公式合理优美,但后验概率p(θ S)很难计算,看其 公式知道计算分母时需要在所有的θ上作积分,然而对于一个高维的θ来说,枚举其所有的 可能性太难了。 为了解决这个问题,我们需要改变思路。看p(θ S)公式中的分母,分母其实就是 P(S), 而我们就是要让 P(S)在各种参数的影响下能够最大(这里只有参数θ)。因此我们只需求出随 机变量θ中最可能的取值,这样求出θ后,可将θ视为固定值,那么预测时就不用积分了,而 是直接像最大似然估计中求出θ后一样进行预测,这样就变成了点估计。这种方法称为最大 后验概率估计(Maximum a posteriori)方法 Θ估计公式为 θMAP 与θML 一样表示的是 P(S),意义是在从随机变量分布中以一定概率p(θ)选定好θ后, 在给定样本特征𝑥 (𝑖) 上𝑦 (𝑖) 出现的概率积。 但是如果让我推导这个公式的时候,我会这么做,考虑后验概率p(θ S),我们的目标是 求出最有可能的θ。而对于θ的所有值来说,分母是一样的,只有分子是不同的。因此 (𝑖) argmax p(θ S) = 𝑎𝑟𝑔 max𝜃 (∏m 𝑥 (𝑖) , 𝜃))𝑝(𝑥 (𝑖) )。也就是θMAP 的推导式。但这个公式 𝑖=1 𝑝(𝑦 与上面的有些不同,同样还是看待每个样本一个θ,还是总体样本一个θ的问题。 与最大似然估计对比发现,MAP 只是将θ移进了条件概率中,并且多了一项p(θ)。一般 情况下我们认为θ~N(0, 𝜏 2 𝐼),实际上,贝叶斯最大后验概率估计相对于最大似然估计来说 更容易克服过度拟合问题。我想原因是这样的,过度拟合一般是极大化p(𝑦 (𝑖) 𝑥 (𝑖) ; θ)造成的。 而在此公式中多了一个参数θ,整个公式由两项组成,极大化p(𝑦 (𝑖) 𝑥 (𝑖) , θ)时,不代表此时 p(θ)也能最大化。相反,θ是多值高斯分布,极大化p(𝑦 (𝑖) 𝑥 (𝑖) , θ)时,p(θ)概率反而可能比较 小。因此,要达到最大化θMAP 需要在两者之间达到平衡,也就靠近了偏差和方差线的交叉 点。这个跟机器翻译里的噪声信道模型比较类似,由两个概率决定比有一个概率决定更靠谱。 作者声称利用贝叶斯 logistic 回归(使用θMAP 的 logistic 回归)应用于文本分类时,即使特征 个数 n 远远大于样例个数 m,也很有效。 49
  • 53.K-means 聚类算法 JerryLead csxulijie@gmail.com K-means 也是聚类算法中最简单的一种了,但是里面包含的思想却是不一般。最早我使 用并实现这个算法是在学习韩爷爷那本数据挖掘的书中,那本书比较注重应用。看了 Andrew Ng 的这个讲义后才有些明白 K-means 后面包含的 EM 思想。 聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM 等都是有类别标签 y 的,也就 是说样例中已经给出了样例的分类。而聚类的样本中却没有给定 y,只有特征 x,比如假设 宇宙中的星星可以表示成三维空间中的点集(x, y, z)。聚类的目的是找到每个样本 x 潜在的类 别 y,并将同类别 y 的样本 x 放在一起。比如上面的星星,聚类后结果是一个个星团,星团 里面的点相互距离比较近,星团间的星星距离就比较远了。 在聚类问题中,给我们的训练样本是*𝑥 (1) , … , 𝑥 (𝑚) +,每个𝑥 (𝑖) ∈ ℝ𝑛 ,没有了 y。 K-means 算法是将样本聚类成 k 个簇(cluster),具体算法描述如下: 1、 随机选取 k 个聚类质心点(cluster centroids)为𝜇1 , 𝜇2 , … , 𝜇𝑘 ∈ ℝ𝑛 。 2、 重复下面过程直到收敛 { 对于每一个样例 i,计算其应该属于的类 对于每一个类 j,重新计算该类的质心 } K 是我们事先给定的聚类数,𝑐 (i) 代表样例 i 与 k 个类中距离最近的那个类,𝑐 (i) 的值是 1 到 k 中的一个。质心𝜇𝑗 代表我们对属于同一个类的样本中心点的猜测,拿星团模型来解释就 是要将所有的星星聚成 k 个星团,首先随机选取 k 个宇宙中的点(或者 k 个星星)作为 k 个 星团的质心,然后第一步对于每一个星星计算其到 k 个质心中每一个的距离,然后选取距离 最近的那个星团作为𝑐 (i) ,这样经过第一步每一个星星都有了所属的星团;第二步对于每一 个星团,重新计算它的质心𝜇𝑗 (对里面所有的星星坐标求平均)。重复迭代第一步和第二步 直到质心不变或者变化很小。 下图展示了对 n 个样本点进行 K-means 聚类的效果,这里 k 取 2。 50
  • 54.K-means 面对的第一个问题是如何保证收敛,前面的算法中强调结束条件就是收敛,可 以证明的是 K-means 完全可以保证收敛性。下面我们定性的描述一下收敛性,我们定义畸变 函数(distortion function)如下: J 函数表示每个样本点到其质心的距离平方和。K-means 是要将 J 调整到最小。假设当 前 J 没有达到最小值,那么首先可以固定每个类的质心𝜇𝑗 ,调整每个样例的所属的类别𝑐 (i) 来 让 J 函数减少,同样,固定𝑐 (i) ,调整每个类的质心𝜇𝑗 也可以使 J 减小。这两个过程就是内循 环中使 J 单调递减的过程。当 J 递减到最小时,μ和 c 也同时收敛。 (在理论上,可以有多组 不同的μ和 c 值能够使得 J 取得最小值,但这种现象实际上很少见)。 由于畸变函数 J 是非凸函数,意味着我们不能保证取得的最小值是全局最小值,也就是 说 k-means 对质心初始位置的选取比较感冒,但一般情况下 k-means 达到的局部最优已经满 足需求。但如果你怕陷入局部最优,那么可以选取不同的初始值跑多遍 k-means,然后取其 中最小的 J 对应的μ和 c 输出。 下面累述一下 K-means 与 EM 的关系,首先回到初始问题,我们目的是将样本分成 k 个 类,其实说白了就是求每个样例 x 的隐含类别 y,然后利用隐含类别将 x 归类。由于我们事 先不知道类别 y,那么我们首先可以对每个样例假定一个 y 吧,但是怎么知道假定的对不对 呢?怎么评价假定的好不好呢?我们使用样本的极大似然估计来度量,这里是就是 x 和 y 的 联合分布 P(x,y)了。如果找到的 y 能够使 P(x,y)最大,那么我们找到的 y 就是样例 x 的最佳类 别了,x 顺手就聚类了。但是我们第一次指定的 y 不一定会让 P(x,y)最大,而且 P(x,y)还依赖 于其他未知参数,当然在给定 y 的情况下,我们可以调整其他参数让 P(x,y)最大。但是调整 完参数后,我们发现有更好的 y 可以指定,那么我们重新指定 y,然后再计算 P(x,y)最大时 的参数,反复迭代直至没有更好的 y 可以指定。 51
  • 55.这个过程有几个难点,第一怎么假定 y?是每个样例硬指派一个 y 还是不同的 y 有不同 的概率,概率如何度量。第二如何估计 P(x,y),P(x,y)还可能依赖很多其他参数,如何调整里 面的参数让 P(x,y)最大。这些问题在以后的篇章里回答。 这里只是指出 EM 的思想,E 步就是估计隐含类别 y 的期望值,M 步调整其他参数使得 在给定类别 y 的情况下,极大似然估计 P(x,y)能够达到极大值。然后在其他参数确定的情况 下,重新估计 y,周而复始,直至收敛。 上面的阐述有点费解,对应于 K-means 来说就是我们一开始不知道每个样例x (𝑖) 对应隐 含变量也就是最佳类别c (𝑖) 。最开始可以随便指定一个c (𝑖) 给它,然后为了让 P(x,y)最大(这 里是要让 J 最小),我们求出在给定 c 情况下,J 最小时的𝜇𝑗 (前面提到的其他未知参数), 然而此时发现,可以有更好的c (𝑖)(质心与样例x (𝑖) 距离最小的类别)指定给样例x (𝑖) ,那么c (𝑖) 得到重新调整,上述过程就开始重复了,直到没有更好的c (𝑖) 指定。这样从 K-means 里我们 可以看出它其实就是 EM 的体现,E 步是确定隐含类别变量c,M 步更新其他参数μ来使 J 最 小化。这里的隐含类别变量指定方法比较特殊,属于硬指定,从 k 个类别中硬选出一个给样 例,而不是对每个类别赋予不同的概率。总体思想还是一个迭代优化过程,有目标函数,也 有参数变量,只是多了个隐含变量,确定其他参数估计隐含变量,再确定隐含变量估计其他 参数,直至目标函数最优。 52
  • 56.混合高斯模型(Mixtures of Gaussians)和 EM 算法 JerryLead csxulijie@gmail.com 这篇讨论使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation)。 与 k-means 一样,给定的训练样本是*𝑥 (1) , … , 𝑥 (𝑚) +,我们将隐含类别标签用z (𝑖) 表示。 与 k-means 的硬指定不同,我们首先认为z (𝑖) 是满足一定的概率分布的,这里我们认为满足 多项式分布,z (𝑖) ~Multinomial(∅),其中p(z (𝑖) = j) = ∅j , ∅j ≥ 0, ∑𝑘𝑗=1 ∅j = 1,z (𝑖) 有 k 个值 {1,…,k} 可 以 选 取 。 而 且 我 们 认 为 在 给 定 z (𝑖) 后 , 𝑥 (𝑖) 满 足 多 值 高 斯 分 布 , 即 (𝑥 (𝑖) z (𝑖) = j)~N(𝜇𝑗 , Σ𝑗 )。由此可以得到联合分布p(𝑥 (𝑖) , z (𝑖) ) = 𝑝(𝑥 (𝑖) z (𝑖) )𝑝(z (𝑖) )。 整个模型简单描述为对于每个样例𝑥 (𝑖) ,我们先从 k 个类别中按多项式分布抽取一个z (𝑖) , 然后根据z (𝑖) 所对应的 k 个多值高斯分布中的一个生成样例𝑥 (𝑖) ,。整个过程称作混合高斯模 型。注意的是这里的z (𝑖) 仍然是隐含随机变量。模型中还有三个变量∅,μ和Σ。最大似然估 计为p(x, z)。对数化后如下: 这个式子的最大值是不能通过前面使用的求导数为 0 的方法解决的,因为求的结果不是 close form。但是假设我们知道了每个样例的z (𝑖) ,那么上式可以简化为: 这时候我们再来对∅,μ和Σ进行求导得到: ∅𝑗 就是样本类别中z (𝑖) = j的比率。μ𝑗 是类别为 j 的样本特征均值,Σ𝑗 是类别为 j 的 样例的特征的协方差矩阵。 实际上,当知道z (𝑖) 后,最大似然估计就近似于高斯判别分析模型(Gaussian discriminant analysis model)了。所不同的是 GDA 中类别 y 是伯努利分布,而这里的 z 是多项式分布,还有这里的每个样例都有不同的协方差矩阵,而 GDA 中认为只有一个。 53
  • 57.之前我们是假设给定了z (𝑖) ,实际上z (𝑖) 是不知道的。那么怎么办呢?考虑之前提到 的 EM 的思想,第一步是猜测隐含类别变量 z,第二步是更新其他参数,以获得最大的 最大似然估计。用到这里就是: 循环下面步骤,直到收敛: { (E 步)对于每一个 i 和 j,计算 (i) 𝑤𝑗 ≔ 𝑝(𝑧 (𝑖) = 𝑗 𝑥 (𝑖) ; Φ, 𝜇, Σ) (M 步),更新参数: } 在 E 步中,我们将其他参数Φ, 𝜇, Σ看作常量,计算z (i) 的后验概率,也就是估计隐含类别 变量。估计好后,利用上面的公式重新计算其他参数,计算好后发现最大化最大似然估计时, (i) 𝑤𝑗 值又不对了,需要重新计算,周而复始,直至收敛。 (i) 𝑤𝑗 的具体计算公式如下: 这个式子利用了贝叶斯公式。 (i) 这里我们使用wj 代替了前面的1*z (i) = j+,由简单的 0/1 值变成了概率值。 对比 K-means 可以发现,这里使用了“软”指定,为每个样例分配的类别z (i) 是有一定 的概率的,同时计算量也变大了,每个样例 i 都要计算属于每一个类别 j 的概率。与 K-means 相同的是,结果仍然是局部最优解。对其他参数取不同的初始值进行多次计算不失为一种好 方法。 虽然之前再 K-means 中定性描述了 EM 的收敛性,仍然没有定量地给出,还有一般化 EM 的推导过程仍然没有给出。下一篇着重介绍这些内容。 54
  • 58.The EM Algorithm JerryLead csxulijie@gmail.com EM 是我一直想深入学习的算法之一,第一次听说是在 NLP 课中的 HMM 那一节,为了 解决 HMM 的参数估计问题,使用了 EM 算法。在之后的 MT 中的词对齐中也用到了。在 Mitchell 的书中也提到 EM 可以用于贝叶斯网络中。 下面主要介绍 EM 的整个推导过程。 1. Jensen 不等式 回顾优化理论中的一些概念。设 f 是定义域为实数的函数,如果对于所有的实数 x, 𝑓 ≥ 0,那么 f 是凸函数。当 x 是向量时,如果其 hessian 矩阵 H 是半正定的(H ≥ 0), 那么 f 是凸函数。如果𝑓 ′′ (𝑥) > 0或者H > 0,那么称 f 是严格凸函数。 Jensen 不等式表述如下: 如果 f 是凸函数,X 是随机变量,那么 𝐸,𝑓(𝑋)- ≥ 𝑓(𝐸𝑋) ′′ (𝑥) 特别地,如果 f 是严格凸函数,那么𝐸,𝑓(𝑋)- = 𝑓(𝐸𝑋)当且仅当p(x = E,X-) = 1,也就 是说 X 是常量。 这里我们将𝑓(𝐸,𝑋-)简写为𝑓(𝐸𝑋)。 如果用图表示会很清晰: 图中,实线 f 是凸函数,X 是随机变量,有 0.5 的概率是 a,有 0.5 的概率是 b。(就像 掷硬币一样) 。X 的期望值就是 a 和 b 的中值了,图中可以看到𝐸,𝑓(𝑋)- ≥ 𝑓(𝐸𝑋)成立。 当 f 是(严格)凹函数当且仅当-f 是(严格)凸函数。 Jensen 不等式应用于凹函数时,不等号方向反向,也就是𝐸,𝑓(𝑋)- ≤ 𝑓(𝐸𝑋)。 55
  • 59.2. EM 算法 给定的训练样本是*𝑥 (1) , … , 𝑥 (𝑚) +,样例间独立,我们想找到每个样例隐含的类别 z,能 使得 p(x,z)最大。p(x,z)的最大似然估计如下: 第一步是对极大似然取对数,第二步是对每个样例的每个可能类别 z 求联合分布概率和。 但是直接求θ一般比较困难,因为有隐藏变量 z 存在,但是一般确定了 z 后,求解就容易了。 EM 是一种解决存在隐含变量优化问题的有效方法。竟然不能直接最大化ℓ(θ),我们可 以不断地建立ℓ的下界(E 步),然后优化下界(M 步)。这句话比较抽象,看下面的。 对 于 每 一 个 样 例 i , 让 Q𝑖 表 示 该 样 例 隐 含 变 量 z 的 某 种 分 布 , Q𝑖 满 足 的 条 件 是 ∑𝑧 𝑄i (𝑧) = 1 , 𝑄i (𝑧) ≥ 0。(如果 z 是连续性的,那么Q 𝑖 是概率密度函数,需要将求和符号换 做积分符号) 。比如要将班上学生聚类,假设隐藏变量 z 是身高,那么就是连续的高斯分布。 如果按照隐藏变量是男女,那么就是伯努利分布了。 可以由前面阐述的内容得到下面的公式: (2)到(3)利用了 Jensen (1)到(2)比较直接,就是分子分母同乘以一个相等的函数。 不等式,考虑到log⁡(𝑥)是凹函数(二阶导数小于 0),而且 就是 的期望(回想期望公式中的 Lazy Statistician 规则) 设 Y 是随机变量 X 的函数,Y = g(X)(g 是连续函数),那么 (1) X 是离散型随机变量,它的分布律为P(X = 𝑥𝑘 ) = 𝑝𝑘 ,k=1,2,…。若∑∞ 𝑘=1 g( 𝑥𝑘 )𝑝𝑘 绝对 收敛,则有 ∞ E(Y) = E,g(X)- = ∑ g( 𝑥𝑘 )𝑝𝑘 𝑘=1 56
  • 60.∞ (2) X 是连续型随机变量,它的概率密度为f(x),若∫−∞ g(x)f(x)dx绝对收敛,则有 ∞ E(Y) = E,g(X)- = ∫ g(x)f(x)dx −∞ ,X 是z (i) ,𝑄i (z (i) )是𝑝𝑘 ,g 是z (i) 到 对应于上述问题,Y 是 的映射。这样解释了式子(2)中的期望,再根据凹函数时 的 Jensen 不等式: 可以得到(3)。 这个过程可以看作是对ℓ(θ)求了下界。对于Q 𝑖 的选择,有多种可能,那种更好的?假设 θ已经给定,那么ℓ(θ)的值就决定于𝑄i (z (i) )和p(x (i) , z (i) )了。我们可以通过调整这两个概率 使下界不断上升,以逼近ℓ(θ)的真实值,那么什么时候算是调整好了呢?当不等式变成等式 时,说明我们调整后的概率能够等价于ℓ(θ)了。按照这个思路,我们要找到等式成立的条件。 根据 Jensen 不等式,要想让等式成立,需要让随机变量变成常数值,这里得到: c 为常数,不依赖于z (i) 。对此式子做进一步推导,我们知道∑𝑧 𝑄i (𝑧 (i) ) = 1,那么也就 有∑𝑧 𝑝(𝑥 (i) , 𝑧 (i) ; 𝜃) = 𝑐 ,(多个等式分子分母相加不变,这个认为每个样例的两个概率比值 都是 c),那么有下式: 至此,我们推出了在固定其他参数θ后,𝑄i (𝑧 (i) )的计算公式就是后验概率,解决了𝑄i (𝑧 (i) ) 如何选择的问题。这一步就是 E 步,建立ℓ(θ)的下界。接下来的 M 步,就是在给定𝑄i (𝑧 (i) )后, 调整θ,去极大化ℓ(θ)的下界(在固定𝑄i (𝑧 (i) )后,下界还可以调整的更大)。那么一般的 EM 算法的步骤如下: 循环重复直到收敛 { (E 步)对于每一个 i,计算 𝑄i (𝑧 (i) ) ≔ ⁡𝑝(𝑧 (𝑖) 𝑥 (i) ; 𝜃) (M 步)计算 那么究竟怎么确保 EM 收敛?假定θ(t) 和θ(t+1) 是 EM 第 t 次和 t+1 次迭代后的结果。如 57
  • 61.果我们证明了ℓ(θ(t) ) ≤ ℓ(θ(t+1) ),也就是说极大似然估计单调增加,那么最终我们会到达最 大似然估计的最大值。下面来证明,选定θ(t) 后,我们得到 E 步 𝑄i (t) (𝑧 (i) ) ≔ ⁡𝑝(𝑧 (𝑖) 𝑥 (i) ; 𝜃 (𝑡) ) 这一步保证了在给定θ(t) 时,Jensen 不等式中的等式成立,也就是 然后进行 M 步,固定𝑄i (t) (𝑧 (i) ),并将θ(t) 视作变量,对上面的ℓ(θ(t) )求导后,得到𝜃 (𝑡+1) , 这样经过一些推导会有以下式子成立: 解释第(4)步,得到𝜃 (𝑡+1) 时,只是最大化ℓ(θ(t) ),也就是ℓ(θ(t+1) )的下界,而没有使 等式成立,等式成立只有是在固定θ,并按 E 步得到Q i 时才能成立。 况且根据我们前面得到的下式,对于所有的Q i 和θ都成立 第(5)步利用了 M 步的定义,M 步就是将θ(t) 调整到θ(t+1) ,使得下界最大化。因此(5) 成立,(6)是之前的等式结果。 这样就证明了ℓ(θ)会单调增加。一种收敛方法是ℓ(θ)不再变化,还有一种就是变化幅度 很小。 再次解释一下(4)、(5) 、(6)。首先(4)对所有的参数都满足,而其等式成立条件只 是在固定θ,并调整好 Q 时成立,而第(4)步只是固定 Q,调整θ,不能保证等式一定成立。 (4)到(5)就是 M 步的定义, (5)到(6)是前面 E 步所保证等式成立条件。也就是说 E 步会将下界拉到与ℓ(θ)一个特定值(这里θ(t) )一样的高度,而此时发现下界仍然可以上升, 因此经过 M 步后,下界又被拉升,但达不到与ℓ(θ)另外一个特定值一样的高度,之后 E 步 又将下界拉到与这个特定值一样的高度,重复下去,直到最大值。 如果我们定义 从前面的推导中我们知道ℓ(θ) ≥ J(Q, θ),EM 可以看作是 J 的坐标上升法,E 步固定θ, 优化Q,M 步固定Q优化θ。 58
  • 62.3. 重新审视混合高斯模型 我们已经知道了 EM 的精髓和推导过程,再次审视一下混合高斯模型。之前提到的混合 高斯模型的参数∅,μ和Σ计算公式都是根据很多假定得出的,有些没有说明来由。为了简单, 这里在 M 步只给出∅和μ的推导方法。 E 步很简单,按照一般 EM 公式得到: 简单解释就是每个样例 i 的隐含类别z (i) 为 j 的概率可以通过后验概率计算得到。 在 M 步中,我们需要在固定𝑄i (𝑧 (i) )后最大化最大似然估计,也就是 这是将𝑧 (i) 的 k 种情况展开后的样子,未知参数∅j , μj 和Σj 。 固定∅𝑗 和𝛴𝑗 ,对𝜇𝑗 求导得 等于 0 时,得到 这就是我们之前模型中的μ的更新公式。 然后推导∅𝑗 的更新公式。看之前得到的 59
  • 63.在∅和μ确定后,分子上面的一串都是常数了,实际上需要优化的公式是: 需要知道的是,∅𝑗 还需要满足一定的约束条件就是∑𝑘𝑗=1 ∅𝑗 = 1。 这个优化问题我们很熟悉了,直接构造拉格朗日乘子。 还有一点就是∅𝑗 ≥ 0,但这一点会在得到的公式里自动满足。 求导得, 𝑚 (𝑖) 𝑤𝑗 ∂ ℒ(∅) = ∑ +𝛽 ∂∅𝑗 ∅𝑗 𝑖=1 等于 0,得到 也就是说 再次使用∑𝑘𝑗=1 ∅𝑗 = 1,得到 这样就神奇地得到了𝛽。 那么就顺势得到 M 步中∅𝑗 的更新公式: Σ的推导也类似,不过稍微复杂一些,毕竟是矩阵。结果在之前的混合高斯模型中已经 给出。 4. 总结 如果将样本看作观察值,潜在类别看作是隐藏变量,那么聚类问题也就是参数估计问题, 只不过聚类问题中参数分为隐含类别变量和其他参数,这犹如在 x-y 坐标系中找一个曲线的 极值,然而曲线函数不能直接求导,因此什么梯度下降方法就不适用了。但固定一个变量后, 另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极 值,最后逐步逼近极值。对应到 EM 上,E 步估计隐含变量,M 步估计其他参数,交替将极 60
  • 64.值推向最大。EM 中还有“硬”指定和“软”指定的概念,“软”指定看似更为合理,但计 算量要大,“硬”指定在某些场合如 K-means 中更为实用(要是保持一个样本点到其他所有 中心的概率,就会很麻烦)。 另外,EM 的收敛性证明方法确实很牛,能够利用 log 的凹函数性质,还能够想到利用 创造下界,拉平函数下界,优化下界的方法来逐步逼近极大值。而且每一步迭代都能保证是 单调的。最重要的是证明的数学公式非常精妙,硬是分子分母都乘以 z 的概率变成期望来套 上 Jensen 不等式,前人都是怎么想到的。 在 Mitchell 的 Machine Learning 书中也举了一个 EM 应用的例子,明白地说就是将班上 学生的身高都放在一起,要求聚成两个类。这些身高可以看作是男生身高的高斯分布和女生 身高的高斯分布组成。因此变成了如何估计每个样例是男生还是女生,然后在确定男女生情 况下,如何估计均值和方差,里面也给出了公式,有兴趣可以参考。 61
  • 65.在线学习(Online Learning) JerryLead csxulijie@gmail.com 原题目叫做 The perception and large margin classifiers,其实探讨的是在线学习。这里将 题目换了换。以前讨论的都是批量学习(batch learning),就是给了一堆样例后,在样例上 学习出假设函数 h。而在线学习就是要根据新来的样例,边学习,边给出结果。 假设样例按照到来的先后顺序依次定义为(𝑥 (1) , 𝑦 (1) ), (𝑥 (2) , 𝑦 (2) ), … , (𝑥 (𝑚) , 𝑦 (𝑚) )。X 为样 本特征,y 为类别标签。我们的任务是到来一个样例 x,给出其类别结果 y 的预测值,之后 我们会看到 y 的真实值,然后根据真实值来重新调整模型参数,整个过程是重复迭代的过程, 直到所有的样例完成。这么看来,我们也可以将原来用于批量学习的样例拿来作为在线学习 的样例。在在线学习中我们主要关注在整个预测过程中预测错误的样例数。 拿二值分类来讲,我们用 y=1 表示正例,y=-1 表示负例。回想在讨论支持向量机中提到 的感知算法(perception algorithm)。我们的假设函数为 其中 x 是 n 维特征向量,θ是 n+1 维参数权重。函数 g 用来将𝜃 𝑇 𝑥计算结果映射到-1 和 1 上。具体公式如下: 这个也是 logistic 回归中 g 的简化形式。 现在我们提出一个在线学习算法如下: 新来一个样例(x, y),我们先用从之前样例学习到的ℎ𝜃 (𝑥)来得到样例的预测值 y,如果 ℎ𝜃 (𝑥) = 𝑦(即预测正确),那么不改变θ,反之 θ ≔ θ + yx 也就是说,如果对于预测错误的样例,θ进行调整时只需加上(实际上为正例)或者减 去(实际负例)样本特征 x 值即可。θ初始值为向量 0。这里我们关心的是𝜃 𝑇 x的符号,而不 是它的具体值。调整方法非常简单。然而这个简单的调整方法还是很有效的,它的错误率不 仅是有上界的,而且这个上界不依赖于样例数和特征维度。 下面定理阐述了错误率上界: 定理(Block and Novikoff): 给定按照顺序到来的(𝑥 (1) , 𝑦 (1) ), (𝑥 (2) , 𝑦 (2) ), … , (𝑥 (𝑚) , 𝑦 (𝑚) )样例。假设对于所有的样例 ‖𝑥 (𝑖) ‖ ≤ D,也就是说特征向量长度有界为 D。更进一步,假设存在一个单位长度向量 u (‖𝑢‖ = 1)且y (𝑖) ∙ (𝑢𝑇 𝑥 (𝑖) ) ≥ 𝛾。也就是说对于 y=1 的正例,(𝑢𝑇 𝑥 (𝑖) ) ≥ 𝛾,反例(𝑢𝑇 𝑥 (𝑖) ) ≤ −𝛾, D 2 u 能够有𝛾的间隔将正例和反例分开。那么感知算法的预测的错误样例数不超过( ) 。 γ 根据前面对 SVM 的理解,这个定理就可以阐述为:如果训练样本线性可分,并且几何 62
  • 66.D 2 间距至少是𝛾,样例样本特征向量最长为 D,那么感知算法错误数不会超过( ) 。这个定理 γ 是 62 年提出的,63 年 Vapnik 提出 SVM,可见提出也不是偶然的,感知算法也许是当时的 热门。 下面主要讨论这个定理的证明: 感知算法只在样例预测错误时进行更新,定义𝜃 (k) 是第 k 次预测错误时使用的样本特征 权重,𝜃 (1) = ⃗0 初始化为 0 向量。假设第 k 次预测错误发生在样例(𝑥 (i) , 𝑦 (𝑖) )上,利用𝜃 (k) 计 𝑇 算𝑦 (𝑖) 值时得到的结果不正确(也就是说g((𝑥 (𝑖) ) 𝜃 k ) ≠ 𝑦 (𝑖) ,调换 x 和θ顺序主要是为了书 写方便)。也就是说下面的公式成立: 根据感知算法的更新方法,我们有𝜃 (k+1) = 𝜃 (k) + 𝑦 (𝑖) 𝑥 (𝑖) 。这时候,两边都乘以 u 得到 两个向量做内积的时候,放在左边还是右边无所谓,转置符号标注正确即可。 这个式子是个递推公式,就像等差数列一样 f(n+1)=f(n)+d。由此我们可得 因为初始θ为 0。 𝑇 下面我们利用前面推导出的(𝑥 (𝑖) ) 𝜃 k 𝑦 (𝑖) ) ≤ 0和‖𝑥 (𝑖) ‖ ≤ D得到 也就是说𝜃 (k+1) 的长度平方不会超过𝜃 (k) 与 D 的平方和。 又是一个等差不等式,得到: 两边开根号得: 其中第二步可能有点迷惑,我们细想 u 是单位向量的话, 63
  • 67.因此上面的不等式成立,最后得到: 也就是预测错误的数目不会超过样本特征向量 x 的最长长度与几何间隔的平方。实际上 整个调整过程中θ就是 x 的线性组合。 整个感知算法应该是在线学习中最简单的一种了。 64
  • 68.主成分分析(Principal components analysis) JerryLead csxulijie@gmail.com 在这一篇之前的内容是《Factor Analysis》,由于非常理论,打算学完整个课程后再写。 在写这篇之前,我阅读了 PCA、SVD 和 LDA。这几个模型相近,却都有自己的特点。本篇打 算先介绍 PCA,至于他们之间的关系,只能是边学边体会了。PCA 以前也叫做 Principal factor analysis。 1. 问题 真实的训练数据总是存在各种各样的问题: 1、 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英 里/小时”的最大速度特征,显然这两个特征有一个多余。 2、 拿到一个数学系的本科生期末考试成绩单,里面有三列,一列是对数学的兴趣程度,一 列是复习时间,还有一列是考试成绩。我们知道要学好数学,需要有浓厚的兴趣,所以 第二项与第一项强相关,第三项和第二项也是强相关。那是不是可以合并第一项和第二 项呢? 3、 拿到一个样本,特征非常多,而样例特别少,这样用回归去直接拟合非常困难,容易过 度拟合。比如北京的房价:假设房子的特征是(大小、位置、朝向、是否学区房、建造 年代、是否二手、层数、所在层数),搞了这么多特征,结果只有不到十个房子的样例。 要拟合房子特征‐>房价的这么多特征,就会造成过度拟合。 4、 这个与第二个有点类似,假设在 IR 中我们建立的文档‐词项矩阵中,有两个词项为“learn” 和“study”,在传统的向量空间模型中,认为两者独立。然而从语义的角度来讲,两者 是相似的,而且两者出现频率也类似,是不是可以合成为一个特征呢? 5、 在信号传输过程中,由于信道不是理想的,信道另一端收到的信号会有噪音扰动,那么 怎么滤去这些噪音呢? 回顾我们之前介绍的《模型选择和规则化》,里面谈到的特征选择的问题。但在那篇中 要剔除的特征主要是和类标签无关的特征。比如“学生的名字”就和他的“成绩”无关,使 用的是互信息的方法。 而这里的特征很多是和类标签有关的,但里面存在噪声或者冗余。在这种情况下,需要 一种特征降维的方法来减少特征数,减少噪音和冗余,减少过度拟合的可能性。 下面探讨一种称作主成分分析(PCA)的方法来解决部分上述问题。PCA 的思想是将 n 维特征映射到 k 维上(k69.假设我们得到的 2 维数据如下: 行代表了样例,列代表特征,这里有 10 个样例,每个样例两个特征。可以这样认为, 有 10 篇文档,x 是 10 篇文档中“learn”出现的 TF‐IDF,y 是 10 篇文档中“study”出现的 TF‐IDF。也可以认为有 10 辆汽车,x 是千米/小时的速度,y 是英里/小时的速度,等等。 第一步分别求 x 和 y 的平均值,然后对于所有的样例,都减去对应的均值。这里 x 的均 值是 1.81,y 的均值是 1.91,那么一个样例减去均值后即为(0.69,0.49),得到 第二步,求特征协方差矩阵,如果数据是 3 维,那么协方差矩阵是 这里只有 x 和 y,求解得 对角线上分别是 x 和 y 的方差,非对角线上是协方差。协方差大于 0 表示 x 和 y 若有一 6670.个增,另一个也增;小于 0 表示一个增,一个减;协方差为 0 时,两者独立。协方差绝对值 越大,两者对彼此的影响越大,反之越小。 第三步,求协方差的特征值和特征向量,得到 上面是两个特征值,下面是对应的特征向量,特征值 0.0490833989 对应特征向量为 0.735178656, 0.677873399 ,这里的特征向量都归一化为单位向量。 第四步,将特征值按照从大到小的顺序排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征向量矩阵。 这里特征值只有两个,我们选择其中最大的那个,这里是 1.28402771,对应的特征向 量是 0.677873399, 0.735178656 。 第五步,将样本点投影到选取的特征向量上。假设样例数为 m,特征数为 n,减去均值 后的样本矩阵为 DataAdjust(m*n),协方差矩阵是 n*n,选取的 k 个特征向量组成的矩阵为 EigenVectors(n*k)。那么投影后的数据 FinalData 为 FinalData m ∗ k DataAdjust m ∗ n 这里是 FinalData(10*1) = DataAdjust(10*2 矩阵)×特征向量 得到结果是 EigenVectors n ∗ k 0.677873399, 0.735178656 这样,就将原始样例的 n 维特征变成了 k 维,这 k 维就是原始特征在 k 维上的投影。 上面的数据可以认为是 learn 和 study 特征融合为一个新的特征叫做 LS 特征,该特征基 本上代表了这两个特征。 6771.上述过程有个图描述: 正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量(由于协方差矩阵 是对称的,因此其特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量 对应的轴上做投影。 如果取的 k=2,那么结果是 6872.这就是经过 PCA 处理后的样本数据,水平轴(上面举例为 LS 特征)基本上可以代表全 部样本点。整个过程看起来就像将坐标系做了旋转,当然二维可以图形化表示,高维就不行 了。上面的如果 k=1,那么只会留下这里的水平轴,轴上是所有点在该轴的投影。 这样 PCA 的过程基本结束。在第一步减均值之后,其实应该还有一步对特征做方差归 一化。比如一个特征是汽车速度(0 到 100),一个是汽车的座位数(2 到 6),显然第二个的 方差比第一个小。因此,如果样本特征中存在这种情况,那么在第一步之后,求每个特征的 标准差σ,然后对每个样例在该特征下的数据除以σ。 归纳一下,使用我们之前熟悉的表示方法,在求协方差之前的步骤是: 6973.其中x 是样例,共 m 个,每个样例 n 个特征,也就是说x 是 n 维向量。x 是第 i 个 样例的第 j 个特征。μ是样例均值。σ 是第 j 个特征的标准差。 整个 PCA 过程貌似及其简单,就是求协方差的特征值和特征向量,然后做数据转换。 但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的 k 维向量?其背后隐藏的 意义是什么?整个 PCA 的意义是什么? 3. PCA 理论基础 要解释为什么协方差矩阵的特征向量就是 k 维理想特征,我看到的有三个理论:分别是 最大方差理论、最小错误理论和坐标轴相关度理论。这里简单探讨前两种,最后一种在讨论 PCA 意义时简单概述。 3.1 最大方差理论 在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的 方差比,越大越好。如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小, 那么认为纵轴上的投影是由噪声引起的。 因此我们认为,最好的 k 维特征是将 n 维样本点转换为 k 维后,每一维上的样本方差都 很大。 比如下图有 5 个样本点: (已经做过预处理,均值为 0,特征方差归一) 7074.下面将样本投影到某一维上,这里用一条过原点的直线表示(前处理的过程实质是将原 点移到样本点的中心点) 。 假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据我们之前的方差 最大化理论,左边的好,因为投影后的样本点之间方差最大。 这里先解释一下投影的概念: 7175., ,…, x x , ,…, 红色点表示样例x ,蓝色点表示x 在 u 上的投影,u 是直线的斜率也是直线的方向向 量,而且是单位向量。蓝色点是x 在 u 上的投影点,离原点的距离是 x , (即x 或 者u x )由于这些样本点(样例)的每一维特征均值都为 0,因此投影到 u 上的样本点(只 有一个到原点的距离值)的均值仍然是 0。 回到上面左右图中的左图,我们要求的是最佳的 u,使得投影后的样本点方差最大。 由于投影后均值为 0,因此方差为: 中间那部分很熟悉啊,不就是样本特征的协方差矩阵么(x 的均值为 0,一般协方差 矩阵都除以 m‐1,这里用 m)。 用λ来表示 ∑ x 由于 u 是单位向量,即 λ 即 ,Σ表示 ∑ x ,那么上式写作 1,上式两边都左乘 u 得, λ λ We got it!λ就是Σ的特征值,u 是特征向量。最佳的投影直线是特征值λ最大时对应的特 征向量,其次是λ第二大对应的特征向量,依次类推。 因此,我们只需要对协方差矩阵进行特征值分解,得到的前 k 大特征值对应的特征向量 就是最佳的 k 维新特征,而且这 k 维新特征是正交的。得到前 k 个 u 以后,样例x 通过以 下变换可以得到新的样本。 7276.其中的第 j 维就是x 在u 上的投影。 通过选取最大的 k 个 u,使得方差较小的特征(如噪声)被丢弃。 这是其中一种对 PCA 的解释,第二种是错误最小化。 3.2 最小平方误差理论 假设有这样的二维样本点(红色点),回顾我们前面探讨的是求一条直线,使得样本点 投影到直线上的点的方差最大。本质是求直线,那么度量直线求的好不好,不仅仅只有方差 最大化的方法。再回想我们最开始学习的线性回归等,目的也是求一个线性函数使得直线能 够最佳拟合样本点,那么我们能不能认为最佳的直线就是回归后的直线呢?回归时我们的最 小二乘法度量的是样本点到直线的坐标轴距离。比如这个问题中,特征是 x,类标签是 y。 回归时最小二乘法度量的是距离 d。如果使用回归方法来度量最佳直线,那么就是直接在原 始样本上做回归了,跟特征选择就没什么关系了。 因此,我们打算选用另外一种评价直线好坏的方法,使用点到直线的距离 d’来度量。 ,每个样本点为 m 维(这节内容中使用的符号与上面 现在有 n 个样本点 , , … , 的不太一致,需要重新理解符号的意义)。将样本点 在直线上的投影记为x ,那么我们就 是要最小化 x 这个公式称作最小平方误差(Least Squared Error) 。 而确定一条直线,一般只需要确定一个点,并且确定方向即可。 第一步确定点: 7377.假设要在空间中找一点x 来代表这 n 个样本点,“代表”这个词不是量化的,因此要量 化的话,我们就是要找一个 m 维的点x ,使得 最小。其中 个样本点的均值: 是平方错误评价函数(squared‐error criterion function),假设 m 为 n 那么平方错误可以写作: 0,因此最小化 后项与 无关,看做常量,而 时, 是样本点均值。 第一步确定方向: 我们从 拉出要求的直线(这条直线要过点 m),假设直线的方向是单位向量 e。那么 直线上任意一点,比如x 就可以用点 m 和 e 来表示 x 其中a 是x 到点 m 的距离。 我们重新定义最小平方误差: 这里的 k 只是相当于 i。 就是最小平方误差函数,其中的未知参数是a , a , … , a 和 e。 实际上是求 的最小值。首先将上式展开: 7478.我们首先固定 e,将其看做是常量, e 1,然后对a 进行求导,得 这个结果意思是说,如果知道了 e,那么将x 与 e 做内积,就可以知道了 的投影离 m 的长度距离,不过这个结果不用求都知道。 在e上 然后是固定a ,对 e 求偏导数,我们先将公式(8)代入 ,得 其中 与协方差矩阵类似,只是缺少个分母 n‐1,我们称之为散列矩阵(scatter matrix)。 然后可以对 e 求偏导数,但是 e 需要首先满足 e ,令 最大( 最小) 1,引入拉格朗日乘子λ,来使e 求偏导 这里存在对向量求导数的技巧,方法这里不多做介绍。可以去看一些关于矩阵微积分的 资料,这里求导时可以将e 看作是Se ,将e 看做是e 。 导数等于 0 时,得 7579.两边除以 n‐1 就变成了,对协方差矩阵求特征值向量了。 从不同的思路出发,最后得到同一个结果,对协方差矩阵求特征向量,求得后特征向量 上就成为了新的坐标,如下图: 这时候点都聚集在新的坐标轴周围,因为我们使用的最小平方误差的意义就在此。 4. PCA 理论意义 PCA 将 n 个特征降维到 k 个,可以用来进行数据压缩,如果 100 维的向量最后可以用 10 维来表示,那么压缩率为 90%。同样图像处理领域的 KL 变换使用 PCA 做图像压缩。但 PCA 要保证降维后,还要保证数据的特性损失最小。再看回顾一下 PCA 的效果。经过 PCA 处理后,二维数据投影到一维上可以有以下几种情况: 我们认为左图好,一方面是投影后方差最大,一方面是点到直线的距离平方和最小,而 且直线过样本点的中心点。为什么右边的投影效果比较差?直觉是因为坐标轴之间相关,以 至于去掉一个坐标轴,就会使得坐标点无法被单独一个坐标轴确定。 PCA 得到的 k 个坐标轴实际上是 k 个特征向量,由于协方差矩阵对称,因此 k 个特征向 量正交。看下面的计算过程。 , ,…, 来表示样例,m 个样例,n 个特征。特征向量为 e, 假设我们还是用x 表示第 i 个特征向量的第 1 维。那么原始样本特征方程可以用下面式子来表示: 前面两个矩阵乘积就是协方差矩阵Σ(除以 m 后), 原始的样本矩阵 A 是第二个矩阵 m*n。 x x … x x x ⋮ ⋮ ⋮ x 上式可以简写为A 7680.我们最后得到的投影结果是 ,E 是 k 个特征向量组成的矩阵,展开如下: x x x … ⋮ ⋮ ⋮ … ⋱ … ⋮ 得到的新的样例矩阵就是 m 个样例到 k 个特征向量的投影,也是这 k 个特征向量的线 性组合。e 之间是正交的。从矩阵乘法中可以看出,PCA 所做的变换是将原始样本点(n 维), 投影到 k 个正交的坐标系中去,丢弃其他维度的信息。举个例子,假设宇宙是 n 维的(霍金 说是 13 维的),我们得到银河系中每个星星的坐标(相对于银河系中心的 n 维向量),然而 我们想用二维坐标去逼近这些样本点,假设算出来的协方差矩阵的特征向量分别是图中的水 平和竖直方向,那么我们建议以银河系中心为原点的 x 和 y 坐标轴,所有的星星都投影到 x 和 y 上,得到下面的图片。然而我们丢弃了每个星星离我们的远近距离等信息。 5. 总结与讨论 这一部分来自http://www.cad.zju.edu.cn/home/chenlu/pca.htm PCA 技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的 重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从 而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。  PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不 需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关, 与用户是独立的。 但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了 数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的 效果,效率也不高。 7781.图表 4:黑色点表示采样数据,排列成转盘的形状。 容易想象,该数据的主元是 如图表 4 中的例子,PCA 找出的主元将是 元。 或是旋转角 。 。但是这显然不是最优和最简化的主 之间存在着非线性的关系。根据先验的知识可知旋转角 是最优的主元(类 比极坐标)。则在这种情况下,PCA 就会失效。但是,如果加入先验的知识,对数据 进行某种划归,就可以将数据转化为以 为线性的空间中。这类根据先验知识对数据预 先进行非线性转换的方法就成为 kernel-PCA,它扩展了 PCA 能够处理的问题的范围, 又可以结合一些先验约束,是比较流行的方法。  有时数据的分布并不是满足高斯分布。如图表 5 所示,在非高斯分布的情况下,PCA 方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。 要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式 来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同 样要使 。这一类方法被称为独立主元分解(ICA)。 7882.图表 5:数据的分布并不满足高斯分布,呈明显的十字星状。 这种情况下,方差最大的方向并不是最优主元方向。 另外 PCA 还可以用于预测矩阵中缺失的元素。 6. 其他参考文献 A tutorial on Principal Components Analysis LI Smith – 2002 A Tutorial on Principal Component Analysis J Shlenshttp://www.cmlab.csie.ntu.edu.tw/~cyy/learning/tutorials/PCAMissingData.pdfhttp://www.cad.zju.edu.cn/home/chenlu/pca.htm7983.独立成分分析(Independent Component Analysis) JerryLead csxulijie@gmail.com 1. 问题: 1、上节提到的 PCA 是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那 么对于其他分布的样本,有没有主元分解的方法呢? 2、经典的鸡尾酒宴会问题(cocktail party problem) 。假设在 party 中有 n 个人,他们可以同 时说话,我们也在房间中一些角落里共放置了 n 个声音接收器(Microphone)用来记录声音。 (𝑖) (𝑖) (𝑖) 宴会过后,我们从 n 个麦克风中得到了一组数据*x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 ); 𝑖 = 1, … , 𝑚+,i 表示 采样的时间顺序,也就是说共得到了 m 组采样,每一组采样都是 n 维的。我们的目标是单 单从这 m 组采样数据中分辨出每个人说话的信号。 将第二个问题细化一下,有 n 个信号源s (𝑠1 , 𝑠2 , … , 𝑠𝑛 )𝑇 ,s ∈ ℝ𝑛 ,每一维都是一个人的 声音信号,每个人发出的声音信号独立。A 是一个未知的混合矩阵(mixing matrix),用来组 合叠加信号 s,那么 x = As x 的意义在上文解释过,这里的 x 不是一个向量,是一个矩阵。其中每个列向量是x (𝑖) , 𝑥 (𝑖) = 𝐴𝑠 (𝑖) 表示成图就是 8084.这张图来自http://amouraux.webnode.com/research-interests/research-interests-erp-analysis/blind-source-separation-bss-of-erps-using-independent-component-analysis-ica/ (𝑖) (𝑖) 𝑥1 𝑠1 A𝑖1 (𝑖) 𝑥3 A𝑖3 A𝑖2 (𝑖) (𝑖) 𝑠2 𝑠3 (𝑖) 𝑥2 x (i) 的每个分量都由s (i) 的分量线性表示。A 和 s 都是未知的,x 是已知的,我们要想办 法根据 x 来推出 s。这个过程也称作为盲信号分离。 令W = 𝐴−1 ,那么 𝑠 (𝑖) = A−1 𝑥 (𝑖) = 𝑊𝑥 (𝑖) 将 W 表示成 8185.其中w𝑖 ∈ ℝ𝑛 ,其实就是将w𝑖 写成行向量形式。那么得到: (𝑖) 𝑠𝑗 = 𝑤𝑗𝑇 𝑥 (𝑖) 2. ICA 的不确定性(ICA ambiguities) 由于 w 和 s 都不确定,那么在没有先验知识的情况下,无法同时确定这两个相关参数。 比如上面的公式 s=wx。当 w 扩大两倍时,s 只需要同时扩大两倍即可,等式仍然满足,因 此无法得到唯一的 s。同时如果将人的编号打乱,变成另外一个顺序,如上图的蓝色节点的 编号变为 3,2,1,那么只需要调换 A 的列向量顺序即可,因此也无法单独确定 s。这两种情况 称为原信号不确定。 还有一种 ICA 不适用的情况,那就是信号不能是高斯分布的。假设只有两个人发出的声 音信号符合多值正态分布,𝑠~𝑁(0, 𝐼),I 是 2*2 的单位矩阵,s 的概率密度函数就不用说了 吧,以均值 0 为中心,投影面是椭圆的山峰状(参见多值高斯分布)。因为x = As,因此,x 也是高斯分布的,均值为 0,协方差为𝐸,𝑥𝑥 𝑇 - = 𝐸,𝐴𝑠𝑠 𝑇 𝐴𝑇 - = 𝐴𝐴𝑇 。 令 R 是正交阵(𝑅𝑅 𝑇 = 𝑅 𝑇 𝑅 = 𝐼),𝐴′ = 𝐴𝑅。如果将 A 替换成 A’。那么x ′ = 𝐴′ s。s 分布 没变,因此 x’仍然是均值为 0,协方差𝐸,𝑥 ′ (𝑥 ′ )𝑇 - = 𝐸,𝐴′ 𝑠𝑠 𝑇 (𝐴′ )𝑇 - = 𝐸,𝐴𝑅𝑠𝑠 𝑇 (𝐴𝑅)𝑇 - = AR𝑅 𝑇 𝐴𝑇 = 𝐴𝐴𝑇 。 因此,不管混合矩阵是 A 还是 A’,x 的分布情况是一样的,那么就无法确定混合矩阵, 也就无法确定原信号。 3. 密度函数和线性变换 在讨论 ICA 具体算法之前,我们先来回顾一下概率和线性代数里的知识。 假设我们的随机变量 s 有概率密度函数p𝑠 (𝑠) (连续值是概率密度函数,离散值是概率)。 为了简单,我们再假设 s 是实数,还有一个随机变量 x=As,A 和 x 都是实数。令p𝑥 是 x 的概 率密度,那么怎么求p𝑥 ? 令W = 𝐴−1 ,首先将式子变换成s = Wx,然后得到p𝑥 (x) = p𝑠 (𝑊𝑠),求解完毕。可惜这 种方法是错误的。比如 s 符合均匀分布的话(s~Uniform,0,1-),那么 s 的概率密度是 p𝑠 (𝑠) = 1*0 ≤ s ≤ 1+,现在令 A=2, 即 x=2s,也就是说 x 在[0,2]上均匀分布, 可知p𝑥 (x) = 0.5。 然而,前面的推导会得到p𝑥 (x) = p𝑠 (0.5𝑠) = 1。正确的公式应该是 p𝑥 (x) = p𝑠 (𝑊𝑥) W 推导方法 𝐹𝑋 (𝑥) = 𝑃(𝑋 ≤ 𝑥) = P(𝐴𝑆 ≤ 𝑥) = P(𝑆 ≤ 𝑊𝑥) = 𝐹𝑆 (𝑊𝑥) p𝑥 (x) = 𝐹𝑋′ (𝑥) = 𝐹𝑆′ (𝑊𝑥) = p𝑠 (𝑊𝑥) W 更一般地,如果 s 是向量,A 可逆的方阵,那么上式子仍然成立。 8286.4. ICA 算法 ICA 算法归功于 Bell 和 Sejnowski,这里使用最大似然估计来解释算法,原始的论文中使 用的是一个复杂的方法 Infomax principal。 我们假定每个𝑠𝑖 有概率密度p𝑠 ,那么给定时刻原信号的联合分布就是 𝑛 p(s) = ∏ 𝑝𝑠 (𝑠𝑖 ) 𝑖=1 这个公式代表一个假设前提:每个人发出的声音信号各自独立。有了 p(s),我们可以求 得 p(x) 𝑛 p(x) = p𝑠 (𝑊𝑥) W = W ∏ 𝑖=1 𝑝𝑠 (𝑤𝑖 𝑇 𝑥) 左边是每个采样信号 x(n 维向量)的概率,右边是每个原信号概率的乘积的 W 倍。 前面提到过,如果没有先验知识,我们无法求得 W 和 s。因此我们需要知道𝑝𝑠 (𝑠𝑖 ),我 们打算选取一个概率密度函数赋给 s,但是我们不能选取高斯分布的密度函数。在概率论里 我们知道密度函数 p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调 递增和在[0,1]。我们发现 sigmoid 函数很适合,定义域负无穷到正无穷,值域 0 到 1,缓慢 递增。我们假定 s 的累积分布函数符合 sigmoid 函数 g(s) = 1 1 + 𝑒 −𝑠 求导后 𝑝𝑠 (𝑠) = 𝑔′ (𝑠) = 𝑒𝑠 (1 + 𝑒 𝑠 )2 这就是 s 的密度函数。这里 s 是实数。 如果我们预先知道 s 的分布函数,那就不用假设了,但是在缺失的情况下,sigmoid 函 数能够在大多数问题上取得不错的效果。由于上式中𝑝𝑠 (𝑠)是个对称函数,因此 E[s]=0(s 的 均值为 0),那么 E[x]=E[As]=0,x 的均值也是 0。 (𝑖) (𝑖) (𝑖) 知道了𝑝𝑠 (𝑠),就剩下 W 了。给定采样后的训练样本*x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 ); 𝑖 = 1, … , 𝑚+, 样本对数似然估计如下: 使用前面得到的 x 的概率密度函数,得 大括号里面是p(x (𝑖) )。 接下来就是对 W 求导了,这里牵涉一个问题是对行列式 W 进行求导的方法,属于矩 阵微积分。这里先给出结果,在文章最后再给出推导公式。 ∇𝑊 𝑊 = 𝑊 (𝑊 −1 )𝑇 最终得到的求导后公式如下,log 𝑔′ (𝑠)的导数为1 − 2𝑔(𝑠)(可以自己验证): 8387.其中α是梯度上升速率,人为指定。 当迭代求出 W 后,便可得到s (𝑖) = 𝑊𝑥 (𝑖) 来还原出原始信号。 注意:我们计算最大似然估计时,假设了𝑥 (𝑖) 与𝑥 (𝑗) 之间是独立的,然而对于语音信号 或者其他具有时间连续依赖特性(比如温度)上,这个假设不能成立。但是在数据足够多时, 假设独立对效果影响不大,同时如果事先打乱样例,并运行随机梯度上升算法,那么能够加 快收敛速度。 回顾一下鸡尾酒宴会问题,s 是人发出的信号,是连续值,不同时间点的 s 不同,每个 人发出的信号之间独立(𝑠𝑖 和𝑠𝑗 之间独立)。s 的累计概率分布函数是 sigmoid 函数,但是所 有人发出声音信号都符合这个分布。A(W 的逆阵)代表了 s 相对于 x 的位置变化,x 是 s 和 A 变化后的结果。 5. 实例 s=2 时的原始信号 8488.观察到的 x 信号 使用 ICA 还原后的 s 信号 6. 行列式的梯度 对行列式求导,设矩阵 A 是 n×n 的,我们知道行列式与代数余子式有关, 𝐴\𝑖,\𝑗 是去掉第 i 行第 j 列后的余子式,那么对𝐴𝑘,𝑙 求导得 adj(A)跟我们线性代数中学的A∗ 是一个意思,因此 8589.7. ICA 算法扩展描述 上面介绍的内容基本上是讲义上的,与我看的另一篇《Independent ComponentAnalysis:Algorithms and Applications》 (Aapo Hyvärinen and Erkki Oja)有点出入。下面总结一下这篇文 章里提到的一些内容(有些我也没看明白)。 首先里面提到了一个与“独立”相似的概念“不相关(uncorrelated)”。Uncorrelated 属 于部分独立,而不是完全独立,怎么刻画呢? 如果随机变量y1 和y2 是独立的,当且仅当𝑝(𝑦1 , 𝑦2 ) = 𝑝(𝑦1 )𝑝(𝑦2 )。 如果随机变量y1 和y2 是不相关的,当且仅当𝐸(𝑦1 , 𝑦2 ) = 𝐸(𝑦1 )𝐸(𝑦2 ) 第二个不相关的条件要比第一个独立的条件“松”一些。因为独立能推出不相关,不相 关推不出独立。 证明如下: 反过来不能推出。 比如,y1 和y2 的联合分布如下(0,1),(0,-1),(1,0),(-1,0)。 𝐸(𝑦1 , 𝑦2 ) = 𝐸(𝑦1 )𝐸(𝑦2 ) = 0 因此y1 和y2 不相关,但是 1 = 𝐸(𝑦12 )𝐸(𝑦22 ) 4 因此y1 和y2 不满足上面的积分公式,y1 和y2 不是独立的。 E(𝑦12 𝑦12 ) = 0 ≠ 上面提到过, 如果s (𝑖) 是高斯分布的,A 是正交的,那么x (𝑖) 也是高斯分布的,且x (𝑖) 与x (𝑗) 之 间是独立的。那么无法确定 A,因为任何正交变换都可以让x (𝑖) 达到同分布的效果。但是如 果s (𝑖) 中只有一个分量是高斯分布的,仍然可以使用 ICA。 那么 ICA 要解决的问题变为:如何从 x 中推出 s,使得 s 最不可能满足高斯分布? 中心极限定理告诉我们:大量独立同分布随机变量之和满足高斯分布。 8690.我们一直假设的是x (𝑖) 是由独立同分布的主元s (𝑖) 经过混合矩阵 A 生成。那么为了求s (𝑖) , (𝑖) (𝑖) 我们需要计算s (𝑖) 的每个分量y𝑗 = 𝑤𝑗𝑇 x (𝑖) 。定义z𝑗 = 𝐴𝑇 𝑤𝑗 ,那么y𝑗 = 𝑤𝑗𝑇 x (𝑖) = 𝑤𝑗𝑇 A𝑠 (𝑖) = 𝑧𝑗𝑇 𝑠 (𝑖) ,之所以这么麻烦再定义 z 是想说明一个关系,我们想通过整出一个𝑤𝑗 来对x (𝑖) 进行线 性组合,得出 y。而我们不知道得出的 y 是否是真正的 s 的分量,但我们知道 y 是 s 的真正 分量的线性组合。由于我们不能使 s 的分量成为高斯分布,因此我们的目标求是让 y(也就 是𝑤𝑗𝑇 x (𝑖) )最不可能是高斯分布时的 w。 那么问题递归到如何度量 y 是否是高斯分布的了。 一种度量方法是 kurtosis 方法,公式如下: 如果 y 是高斯分布,那么该函数值为 0,否则绝大多数情况下值不为 0。 但这种度量方法不怎么好,有很多问题。看下一种方法: 负熵(Negentropy)度量方法。 我们在信息论里面知道对于离散的随机变量 Y,其熵是 连续值时是 在信息论里有一个强有力的结论是:高斯分布的随机变量是同方差分布中熵最大的。也 就是说对于一个随机变量来说,满足高斯分布时,最随机。 定义负熵的计算公式如下: 也就是随机变量 y 相对于高斯分布时的熵差,这个公式的问题就是直接计算时较为复杂, 一般采用逼近策略。 这种逼近策略不够好,作者提出了基于最大熵的更优的公式: 之后的 FastICA 就基于这个公式。 另外一种度量方法是最小互信息方法: 8791.这个公式可以这样解释,前一个 H 是𝑦i 的编码长度(以信息编码的方式理解),第二个 H 是 y 成为随机变量时的平均编码长度。之后的内容包括 FastICA 就不再介绍了,我也没看 懂。 8. ICA 的投影追踪解释(Projection Pursuit) 投影追踪在统计学中的意思是去寻找多维数据的“interesting”投影。这些投影可用在 数据可视化、密度估计和回归中。比如在一维的投影追踪中,我们寻找一条直线,使得所有 的数据点投影到直线上后,能够反映出数据的分布。然而我们最不想要的是高斯分布,最不 像高斯分布的数据点最 interesting。这个与我们的 ICA 思想是一直的,寻找独立的最不可能 是高斯分布的 s。 在下图中,主元是纵轴,拥有最大的方差,但最 interesting 的是横轴,因为它可以将两 个类分开(信号分离)。 9. ICA 算法的前处理步骤 1、中心化:也就是求 x 均值,然后让所有 x 减去均值,这一步与 PCA 一致。 2、漂白:目的是将 x 乘以一个矩阵变成𝑥̃,使得𝑥̃的协方差矩阵是𝐼。解释一下吧,原始 的向量是 x。转换后的是𝑥̃。 𝑥̃的协方差矩阵是𝐼,即 我们只需用下面的变换,就可以从 x 得到想要的𝑥̃。 其中使用特征值分解来得到 E(特征向量矩阵)和 D(特征值对角矩阵) ,计算公式为 下面用个图来直观描述一下: 假设信号源 s1 和 s2 是独立的,比如下图横轴是 s1,纵轴是 s2,根据 s1 得不到 s2。 8892.我们只知道他们合成后的信号 x,如下 此时 x1 和 x2 不是独立的(比如看最上面的尖角,知道了 x1 就知道了 x2)。那么直接代 入我们之前的极大似然概率估计会有问题,因为我们假定 x 是独立的。 因此,漂白这一步为了让 x 独立。漂白结果如下: 8993.可以看到数据变成了方阵,在𝑥̃的维度上已经达到了独立。 然而这时 x 分布很好的情况下能够这样转换,当有噪音时怎么办呢?可以先使用前面提 到的 PCA 方法来对数据进行降维,滤去噪声信号,得到 k 维的正交向量,然后再使用 ICA。 10. 小结 ICA 的盲信号分析领域的一个强有力方法,也是求非高斯分布数据隐含因子的方法。从 之前我们熟悉的样本-特征角度看,我们使用 ICA 的前提条件是,认为样本数据由独立非高 斯分布的隐含因子产生,隐含因子个数等于特征数。而 PCA 认为特征是由 k 个正交的特征 (也可看作是隐含因子)生成的。同是因子分析,一个用来更适合用来还原信号(因为信号 比较有规律,经常不是高斯分布的),一个更适合用来降维(用那么多特征干嘛,k 个正交 的即可)。有时候也需要组合两者一起使用。这段是我的个人理解,仅供参考。 9094.线性判别分析(Linear Discriminant Analysis) JerryLead csxulijie@gmail.com 1. 问题 之前我们讨论的 PCA、ICA 也好,对样本数据来言,可以是没有类别标签 y 的。回想我 们做回归时,如果特征太多,那么会产生不相关特征引入、过度拟合等问题。我们可以使用 PCA 来降维,但 PCA 没有将类别标签考虑进去,属于无监督的。 比如回到上次提出的文档中含有“learn”和“study”的问题,使用 PCA 后,也许可以 将这两个特征合并为一个,降了维度。但假设我们的类别标签 y 是判断这篇文章的 topic 是 不是有关学习方面的。那么这两个特征对 y 几乎没什么影响,完全可以去除。 再举一个例子,假设我们对一张 100*100 像素的图片做人脸识别,每个像素是一个特 征,那么会有 10000 个特征,而对应的类别标签 y 仅仅是 0/1 值,1 代表是人脸。这么多特 征不仅训练复杂,而且不必要特征对结果会带来不可预知的影响,但我们想得到降维后的一 些最佳特征(与 y 关系最密切的),怎么办呢? 2. 线性判别分析(二类情况) (𝑖) (𝑖) (𝑖) 回顾我们之前的 logistic 回归方法,给定 m 个 n 维特征的训练样例𝑥 (𝑖) *𝑥1 , 𝑥2 , … , 𝑥𝑛 (i + (𝑖) (𝑖) (𝑖) 𝑇 (𝑖) 从 1 到 m),每个𝑥 对应一个类标签𝑦 。我们就是要学习出参数θ,使得𝑦 = g(θ) 𝑥 (g 是 sigmoid 函数)。 现在只考虑二值分类情况,也就是 y=1 或者 y=0。 为了方便表示,我们先换符号重新定义问题,给定特征为 d 维的 N 个样例, (𝑖) (𝑖) (𝑖) (𝑖) 𝑥 *𝑥1 , 𝑥2 , … , 𝑥𝑑 +,其中有N1 个样例属于类别ω1 ,另外N2 个样例属于类别ω2 。 现在我们觉得原始特征数太多,想将 d 维特征降到只有一维,而又要保证类别能够“清 晰”地反映在低维数据上,也就是这一维就能决定每个样例的类别。 我们将这个最佳的向量称为 w(d 维),那么样例 x(d 维)到 w 上的投影可以用下式来 计算 y = 𝑤𝑇𝑥 这里得到的 y 值不是 0/1 值,而是 x 投影到直线上的点到原点的距离。 当 x 是二维的,我们就是要找一条直线(方向为 w)来做投影,然后寻找最能使样本点 分离的直线。如下图: 9195.从直观上来看,右图比较好,可以很好地将不同类别的样本点分离。 接下来我们从定量的角度来找到这个最佳的 w。 首先我们寻找每类样例的均值(中心点),这里 i 只有两个 𝜇𝑖 = 1 ∑𝑥 𝑁𝑖 𝑥∈𝜔𝑖 由于 x 到 w 投影后的样本点均值为 𝜇̃𝑖 = 1 1 ∑𝑦= ∑ 𝑤 𝑇 𝑥 = 𝑤 𝑇 𝜇𝑖 𝑁𝑖 𝑁𝑖 𝑦∈𝜔𝑖 𝑥∈𝜔𝑖 由此可知,投影后的的均值也就是样本中心点的投影。 什么是最佳的直线(w)呢?我们首先发现,能够使投影后的两类样本中心点尽量分离 的直线是好的直线,定量表示就是: 𝑇 J(w) = 𝜇 ̃1 − 𝜇 ̃ 2 = 𝑤 (𝜇1 − 𝜇2 ) J(w)越大越好。 但是只考虑 J(w)行不行呢?不行,看下图 样本点均匀分布在椭圆里,投影到横轴 x1 上时能够获得更大的中心点间距 J(w),但是 由于有重叠,x1 不能分离样本点。投影到纵轴 x2 上,虽然 J(w)较小,但是能够分离样本点。 因此我们还需要考虑样本点之间的方差,方差越大,样本点越难以分离。 9296.我们使用另外一个度量值,称作散列值(scatter),对投影后的类求散列值,如下 s̃𝑖 2 = ∑ (𝑦 − 𝜇̃𝑖 )2 𝑦∈𝜔𝑖 从公式中可以看出,只是少除以样本数量的方差值,散列值的几何意义是样本点的密集 程度,值越大,越分散,反之,越集中。 而我们想要的投影后的样本点的样子是:不同类别的样本点越分开越好,同类的越聚集 越好,也就是均值差越大越好,散列值越小越好。正好,我们可以使用 J(w)和 S 来度量,最 终的度量公式是 J(w) = 2 𝜇 ̃1 − 𝜇 ̃ 2 s̃1 2 + s̃2 2 接下来的事就比较明显了,我们只需寻找使 J(w)最大的 w 即可。 先把散列值公式展开 s̃𝑖 2 = ∑ (𝑦 − 𝜇̃𝑖 )2 = ∑ (𝑤 𝑇 𝑥 − 𝑤 𝑇 𝜇𝑖 )2 = ∑ 𝑤 𝑇 (𝑥 − 𝜇𝑖 )(𝑥 − 𝜇𝑖 )𝑇 𝑤 𝑦∈𝜔𝑖 𝑥∈𝜔i 𝑥∈𝜔𝑖 我们定义上式中中间那部分 S𝑖 = ∑ (𝑥 − 𝜇𝑖 )(𝑥 − 𝜇𝑖 )𝑇 𝑥∈𝜔𝑖 这个公式的样子不就是少除以样例数的协方差矩阵么,称为散列矩阵(scatter matrices) 我们继续定义 S𝑤 = S1 + S2 S𝑤 称为 Within-class scatter matrix。 那么回到上面s̃𝑖 2 的公式,使用S𝑖 替换中间部分,得 s̃𝑖 2 = 𝑤 T S𝑖 𝑤 s̃1 2 + s̃2 2 = 𝑤 T S𝑤 𝑤 然后,我们展开分子 𝑆𝐵 称为 Between-class scatter,是两个向量的外积,虽然是个矩阵,但秩为 1。 那么 J(w)最终可以表示为 9397.𝑤 T S𝐵 𝑤 J(w) = T 𝑤 S𝑤 𝑤 在我们求导之前,需要对分母进行归一化,因为不做归一的话,w 扩大任何倍,都成立, 我们就无法确定 w。因此我们打算令 𝑤 T S𝑤 𝑤 = 1,那么加入拉格朗日乘子后,求导 其中用到了矩阵微积分,求导时可以简单地把𝑤 T S𝑤 𝑤当做S𝑤 𝑤 2 看待。 如果S𝑤 可逆,那么将求导后的结果两边都乘以𝑆𝑤−1 ,得 这个可喜的结果就是 w 就是矩阵𝑆𝑤−1 S𝐵 的特征向量了。 这个公式称为 Fisher linear discrimination。 等等,让我们再观察一下,发现前面S𝐵 的公式 S𝐵 = (𝜇1 − 𝜇2 )(𝜇1 − 𝜇2 )𝑇 那么 S𝐵 w = (𝜇1 − 𝜇2 )(𝜇1 − 𝜇2 )𝑇 𝑤 = (𝜇1 − 𝜇2 ) ∗ 𝜆w 代入最后的特征值公式得 −1 −1 ( S𝑤 S𝐵 w = S𝑤 𝜇1 − 𝜇2 ) ∗ 𝜆w = 𝜆𝑤 由于对 w 扩大缩小任何倍不影响结果,因此可以约去两边的未知常数λ和𝜆w ,得到 −1 ( 𝑤 = S𝑤 𝜇1 − 𝜇2 ) 至此,我们只需要求出原始样本的均值和方差就可以求出最佳的方向 w,这就是 Fisher 于 1936 年提出的线性判别分析。 看上面二维样本的投影结果图: 9498.3. 线性判别分析(多类情况) 前面是针对只有两个类的情况,假设类别变成多个了,那么要怎么改变,才能保证投影 后类别能够分离呢? 我们之前讨论的是如何将 d 维降到一维,现在类别多了,一维可能已经不能满足要求。 假设我们有 C 个类别,需要 K 维向量(或者叫做基向量)来做投影。 将这 K 维向量表示为W = ,𝑤1 𝑤2 … 𝑤K -。 我们将样本点在这 K 维向量投影后结果表示为,y1 , y2 , … , y𝐾 -,有以下公式成立 y𝑖 = 𝑤𝑖𝑇 𝑥 y = 𝑊𝑇𝑥 为了像上节一样度量 J(w),我们打算仍然从类间散列度和类内散列度来考虑。 当样本是二维时,我们从几何意义上考虑: 9599.其中𝜇𝑖 和S𝑤 与上节的意义一样,𝑆𝑤1 是类别 1 里的样本点相对于该类中心点𝜇1 的散列程 度。𝑆𝐵1 变成类别 1 中心点相对于样本中心点𝜇的协方差矩阵,即类 1 相对于𝜇的散列程度。 S𝑤 为 𝐶 S𝑤 = ∑ 𝑆w𝑖 𝑖=1 𝑆𝑤𝑖 的计算公式不变,仍然类似于类内部样本点的协方差矩阵 S𝑤𝑖 = ∑ (𝑥 − 𝜇𝑖 )(𝑥 − 𝜇𝑖 )𝑇 𝑥∈𝜔𝑖 𝑆𝐵 需要变,原来度量的是两个均值点的散列情况,现在度量的是每类均值点相对于样本 中心的散列情况。类似于将𝜇𝑖 看作样本点,𝜇是均值的协方差矩阵,如果某类里面的样本点 较多,那么其权重稍大,权重用 Ni/N 表示,但由于 J(w)对倍数不敏感,因此使用 Ni。 𝐶 S𝐵 = ∑ 𝑁𝑖 (𝜇𝑖 − 𝜇)(𝜇𝑖 − 𝜇)𝑇 𝑖=1 其中 𝜇= 1 1 ∑ 𝑥 = ∑ 𝑁𝑖 𝜇𝑖 N 𝑁 ∀𝑥 𝑥∈𝜔𝑖 𝜇是所有样本的均值。 上面讨论的都是在投影前的公式变化,但真正的 J(w)的分子分母都是在投影后计算的。 下面我们看样本点投影后的公式改变: 这两个是第 i 类样本点在某基向量上投影后的均值计算公式。 96100.μ̃𝑖 = 1 ∑𝑦 𝑁𝑖 𝑦∈𝜔𝑖 𝜇̃ = 1 ∑𝑦 𝑁 ∀𝑦 下面两个是在某基向量上投影后的S𝑤 和S𝐵 𝐶 𝑆̃ ̃𝑖 )(𝑦 − 𝜇̃𝑖 )𝑇 𝑤 = ∑ ∑ (𝑦 − 𝜇 𝑖=1 𝑦∈𝜔𝑖 𝐶 𝑆̃𝐵 = ∑ 𝑁𝑖 (𝜇̃𝑖 − 𝜇̃)(𝜇̃𝑖 − 𝜇̃)𝑇 𝑖=1 其实就是将𝜇换成了𝜇̃。 ̃ 综合各个投影向量(w)上的𝑆̃ 𝑤 和𝑆𝐵 ,更新这两个参数,得到 𝑇 𝑆̃ 𝑤 = 𝑊 𝑆𝑤 𝑊 𝑇 𝑆̃ 𝐵 = 𝑊 𝑆𝐵 𝑊 ̃ W 是基向量矩阵,𝑆̃ 𝑤 是投影后的各个类内部的散列矩阵之和,𝑆𝐵 是投影后各个类中心 相对于全样本中心投影的散列矩阵之和。 回想我们上节的公式 J(w),分子是两类中心距,分母是每个类自己的散列度。现在投影 方向是多维了(好几条直线),分子需要做一些改变,我们不是求两两样本中心距之和(这 个对描述类别间的分散程度没有用) ,而是求每类中心相对于全样本中心的散列度之和。 然而,最后的 J(w)的形式是 𝑆̃ 𝑊 𝑇 𝑆𝐵 𝑊 𝐵 𝐽(𝑤) = = 𝑊 𝑇 𝑆𝑤 𝑊 𝑆̃ 𝑤 由于我们得到的分子分母都是散列矩阵,要将矩阵变成实数,需要取行列式。又因为行 列式的值实际上是矩阵特征值的积,一个特征值可以表示在该特征向量上的发散程度。因此 我们使用行列式来计算(此处我感觉有点牵强,道理不是那么有说服力)。 整个问题又回归为求 J(w)的最大值了,我们固定分母为 1,然后求导,得出最后结果(我 翻查了很多讲义和文章,没有找到求导的过程) S𝐵 𝑤𝑖 = 𝜆𝑆𝑤 𝑤𝑖 与上节得出的结论一样 −1 S𝑤 S𝐵 𝑤𝑖 = 𝜆𝑤𝑖 −1 最后还归结到了求矩阵的特征值上来了。首先求出S𝑤 S𝐵 的特征值,然后取前 K 个特征 向量组成 W 矩阵即可。 97101.注意:由于S𝐵 中的(𝜇𝑖 − 𝜇) 秩为 1,因此S𝐵 的秩至多为 C(矩阵的秩小于等于各个相加 矩阵的秩的和)。由于知道了前 C-1 个𝜇𝑖 后,最后一个𝜇𝐶 可以有前面的𝜇𝑖 来线性表示,因此S𝐵 的 秩至多为 C-1。那么 K 最大为 C-1,即特征向量最多有 C-1 个。特征值大的对应的特征向量 分割性能最好。 −1 由于S𝑤 S𝐵 不一定是对称阵,因此得到的 K 个特征向量不一定正交,这也是与 PCA 不同 的地方。 4. 实例 将 3 维空间上的球体样本点投影到二维上,W1 相比 W2 能够获得更好的分离效果。 PCA 与 LDA 的降维对比: 98102.PCA 选择样本点投影具有最大方差的方向,LDA 选择分类性能最好的方向。 LDA 既然叫做线性判别分析,应该具有一定的预测功能,比如新来一个样例 x,如何确 定其类别? 拿二值分来来说,我们可以将其投影到直线上,得到 y,然后看看 y 是否在超过某个阈 值 y0,超过是某一类,否则是另一类。而怎么寻找这个 y0 呢? 看 y = 𝑤𝑇𝑥 根据中心极限定理,独立同分布的随机变量和符合高斯分布,然后利用极大似然估计求 P(y C𝑖 ) 然后用决策理论里的公式来寻找最佳的 y0,详情请参阅 PRML。 这是一种可行但比较繁琐的选取方法,可以看第 7 节(一些问题)来得到简单的答案。 5. 使用 LDA 的一些限制 1、 LDA 至多可生成 C-1 维子空间 LDA 降维后的维度区间在[1,C-1],与原始特征数 n 无关,对于二值分类,最多投影 到 1 维。 2、 LDA 不适合对非高斯分布样本进行降维。 99103.上图中红色区域表示一类样本,蓝色区域表示另一类,由于是 2 类,所以最多投影到 1 维上。不管在直线上怎么投影,都难使红色点和蓝色点内部凝聚,类间分离。 3、 LDA 在样本分类信息依赖方差而不是均值时,效果不好。 上图中,样本点依靠方差信息进行分类,而不是均值信息。LDA 不能够进行有效分 类,因为 LDA 过度依靠均值信息。 4、 LDA 可能过度拟合数据。 6. LDA 的一些变种 1、 非参数 LDA 非参数 LDA 使用本地信息和 K 临近样本点来计算S𝐵 ,使得S𝐵 是全秩的,这样我们可 以抽取多余 C-1 个特征向量。而且投影后分离效果更好。 2、 正交 LDA 先找到最佳的特征向量,然后找与这个特征向量正交且最大化 fisher 条件的向量。 这种方法也能摆脱 C-1 的限制。 100104.3、 一般化 LDA 引入了贝叶斯风险等理论 4、 核函数 LDA 将特征x → Φ(x),使用核函数来计算。 7. 一些问题 上面在多值分类中使用的 𝐶 S𝐵 = ∑ 𝑁𝑖 (𝜇𝑖 − 𝜇)(𝜇𝑖 − 𝜇)𝑇 𝑖=1 是带权重的各类样本中心到全样本中心的散列矩阵。如果 C=2(也就是二值分类时)套 用这个公式,不能够得出在二值分类中使用的S𝐵 。 𝐶 S𝐵 = ∑(𝜇1 − 𝜇2 )(𝜇1 − 𝜇2 )𝑇 𝑖=1 因此二值分类和多值分类时求得的S𝐵 会不同,而S𝑊 意义是一致的。 对于二值分类问题,令人惊奇的是最小二乘法和 Fisher 线性判别分析是一致的。 下面我们证明这个结论,并且给出第 4 节提出的 y0 值得选取问题。 (𝑖) (𝑖) (𝑖) + 从 1 到 N), 回顾之前的线性回归,给定 N 个 d 维特征的训练样例𝑥 (𝑖) *𝑥1 , 𝑥2 , … , 𝑥𝑑 (i (𝑖) (𝑖) 每个𝑥 对应一个类标签𝑦 。我们之前令 y=0 表示一类,y=1 表示另一类,现在我们为了证 明最小二乘法和 LDA 的关系,我们需要做一些改变 𝑁 ,样例属于有𝑁1 个元素的类𝐶1 𝑁1 𝑁 y = − ,样例属于有𝑁2 个元素的类𝐶2 { 𝑁2 y= 就是将 0/1 做了值替换。 我们列出最小二乘法公式 𝑁 1 E = ∑(𝑤 𝑇 𝑥 (𝑖) + 𝑤0 − 𝑦 (𝑖) )2 2 𝑖=1 w 和𝑤0 是拟合权重参数。 分别对𝑤0 和 w 求导得 𝑁 ∑(𝑤 𝑇 𝑥 (𝑖) + 𝑤0 − 𝑦 (𝑖) ) = 0 𝑖=1 𝑁 ∑(𝑤 𝑇 𝑥 (𝑖) + 𝑤0 − 𝑦 (𝑖) )𝑥 (𝑖) = 0 𝑖=1 从第一个式子展开可以得到 101105.𝑁 𝑤 𝑁𝜇 + 𝑁𝑤0 − ∑ 𝑦 (𝑖) = 𝑤 𝑇 𝑁𝜇 + 𝑁𝑤0 − (𝑁1 𝑇 𝑖=1 𝑁 𝑁 − 𝑁2 ) = 0 𝑁1 𝑁2 消元后,得 𝑤0 = −𝑤 𝑇 𝜇 𝑁 1 1 𝜇 = ∑ 𝑥 (𝑖) = (𝑁1 𝜇1 + 𝑁2 𝜇2 ) N N 𝑖=1 可以证明第二个式子展开后和下面的公式等价 (𝑆𝑤 + 𝑁1 𝑁2 𝑆 ) 𝑤 = 𝑁(𝜇1 − 𝜇2 ) 𝑁 𝐵 其中𝑆𝑤 和𝑆𝐵 与二值分类中的公式一样。 由于𝑆𝐵 w = (𝜇1 − 𝜇2 ) ∗ 𝜆w 因此,最后结果仍然是 −1 ( 𝑤 = S𝑤 𝜇1 − 𝜇2 ) 这个过程从几何意义上去理解也就是变形后的线性回归(将类标签重新定义),线性回 归后的直线方向就是二值分类中 LDA 求得的直线方向 w。 好了,我们从改变后的 y 的定义可以看出 y>0 属于类𝐶1 ,y<0 属于类𝐶2 。因此我们可以 选取 y0=0,即如果y(x) = 𝑤 𝑇 𝑥 + 𝑤0 > 0,就是类𝐶1 ,否则是类𝐶2 。 写了好多,挺杂的,还有个 topic 模型也叫做 LDA,不过名字叫做 Latent Dirichlet Allocation, 第二作者就是 Andrew Ng 大牛,最后一个他导师 Jordan 泰斗了,什么时候拜读后再写篇总 结发上来吧。 102106.因子分析(Factor Analysis) JerryLead csxulijie@gmail.com 2011 年 5 月 11 日 1 问题 之前我们考虑的训练数据中样例x (𝑖) 的个数 m 都远远大于其特征个数 n,这样不管是进 行回归、聚类等都没有太大的问题。然而当训练样例个数 m 太小,甚至 m<107.如果我们想对Σ进一步限制的话,可以假设对角线上的元素都是等值的。 𝛴 = 𝜎 2𝐼 其中 𝑛 𝑚 1 (𝑖) 𝜎2 = ∑ ∑(𝑥𝑗 − 𝜇𝑗 )2 𝑚𝑛 𝑗=1 𝑖=1 也就是上一步对角线上元素的均值,反映到二维高斯分布图上就是椭圆变成圆。 当我们要估计出完整的Σ时,我们需要 m>=n+1 才能保证在最大似然估计下得出的Σ是非 奇异的。然而在上面的任何一种假设限定条件下,只要 m>=2 都可以估计出限定的Σ。 这样做的缺点也是显然易见的,我们认为特征间独立,这个假设太强。接下来,我们给 出一种称为因子分析的方法,使用更多的参数来分析特征间的关系,并且不需要计算一个完 整的Σ。 3 边缘和条件高斯分布 在讨论因子分析之前,先看看多元高斯分布中,条件和边缘高斯分布的求法。这个在后 面因子分析的 EM 推导中有用。 假设 x 是有两个随机向量组成(可以看作是将之前的𝑥 (𝑖) 分成了两部分) 𝑥1 x = [𝑥 ] 2 r s r+s 其中𝑥1 ∈ ℝ ,𝑥2 ∈ ℝ ,那么x ∈ ℝ 。假设 x 服从多元高斯分布x~N(μ, Σ),其中 其中μ1 ∈ ℝr ,μ2 ∈ ℝs ,那么Σ11 ∈ ℝr×r ,Σ12 ∈ ℝr×s ,由于协方差矩阵是对称阵,因此 Σ12 = Σ21 T 。 整体看来𝑥1 和𝑥2 联合分布符合多元高斯分布。 104108.那么只知道联合分布的情况下,如何求得𝑥1 的边缘分布呢?从上面的μ和Σ可以看出, E,𝑥1 - = μ1 , Cov(𝑥1 ) = 𝐸,(𝑥1 − μ1 )(𝑥1 − μ1 )𝑇 - = Σ11 ,下面我们验证第二个结果 由此可见,多元高斯分布的边缘分布仍然是多元高斯分布。也就是说x1 ~N(μ1 , Σ11 )。 上面 Cov(x)里面有趣的是Σ12 ,这个与之前计算协方差的效果不同。之前的协方差矩阵 都是针对一个随机变量(多维向量)来说的,而Σ12 评价的是两个随机向量之间的关系。比 如x1 ={身高,体重},𝑥2 ={性别,收入},那么Σ11 求的是身高与身高,身高与体重,体重与体 重的协方差。而Σ12 求的是身高与性别,身高与收入,体重与性别,体重与收入的协方差, 看起来与之前的大不一样,比较诡异的求法。 上面求的是边缘分布,让我们考虑一下条件分布的问题,也就是x1 x2 的问题。根据多 元高斯分布的定义,x1 x2 ~N(μ1 2 , Σ1 2 )。 且 这是我们接下来计算时需要的公式,这两个公式直接给出,没有推导过程。如果想了解 具体的推导过程,可以参见 Chuong B. Do 写的《Gaussian processes》。 4 因子分析例子 下面通过一个简单例子,来引出因子分析背后的思想。 (𝑖) (𝑖) (𝑖) 因子分析的实质是认为 m 个 n 维特征的训练样例x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 )的产生过程如下: 1、 首先在一个 k 维的空间中按照多元高斯分布生成 m 个z (𝑖) (k 维向量),即 𝑧 (𝑖) ~𝑁(0, 𝐼) 2、 然后存在一个变换矩阵Λ ∈ ℝn×k ,将z (𝑖) 映射到 n 维空间中,即 Λ𝑧 (𝑖) (𝑖) 因为z 的均值是 0,映射后仍然是 0。 105109.3、 然后将Λz (𝑖) 加上一个均值μ(n 维),即 𝜇 + Λ𝑧 (𝑖) 对应的意义是将变换后的Λz (𝑖) (n 维向量)移动到样本x (𝑖) 的中心点μ。 4、 由于真实样例x (𝑖) 与上述模型生成的有误差,因此我们继续加上误差ϵ(n 维向量), 而且ϵ符合多元高斯分布,即 𝜖~𝑁(0, 𝛹) 𝜇 + Λ𝑧 (𝑖) + 𝜖 5、 最后的结果认为是真实的训练样例x (𝑖) 的生成公式 x (𝑖) = 𝜇 + Λ𝑧 (𝑖) + 𝜖 让我们使用一种直观方法来解释上述过程: 假设我们有 m=5 个 2 维的样本点x (𝑖) (两个特征),如下: 那么按照因子分析的理解,样本点的生成过程如下: 1、 我们首先认为在 1 维空间(这里 k=1),存在着按正态分布生成的 m 个点z (i) ,如下 𝑧 (𝑖) 0 均值为 0,方差为 1。 2、 然后使用某个Λ = (a, b)𝑇 将一维的 z 映射到 2 维,图形表示如下: 106110.Λ𝑧 (𝑖) 3、 之后加上μ (μ1 , μ2 )𝑇 ,即将所有点的横坐标移动μ1 ,纵坐标移动μ2 ,将直线移到一 个位置,使得直线过点μ,原始左边轴的原点现在为μ(红色点)。 μ + Λ𝑧 (𝑖) μ(μ1 , μ2 ) 然而,样本点不可能这么规则,在模型上会有一定偏差,因此我们需要将上步生成 的点做一些扰动(误差) ,扰动𝜖~𝑁(0, 𝛹)。 4、 加入扰动后,我们得到黑色样本x (𝑖) 如下: 107111.μ + Λ𝑧 (𝑖) + ϵ μ 5、 其中由于 z 和ϵ的均值都为 0,因此μ也是原始样本点(黑色点)的均值。 由以上的直观分析,我们知道了因子分析其实就是认为高维样本点实际上是由低维样本 点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以使用低维来表示。 5 因子分析模型 上面的过程是从隐含随机变量 z 经过变换和误差扰动来得到观测到的样本点。其中 z 被 称为因子,是低维的。 我们将式子再列一遍如下: 𝑧~𝑁(0, 𝐼) 𝜖~𝑁(0, 𝛹) x = 𝜇 + Λ𝑧 + 𝜖 其中误差ϵ和 z 是独立的。 下面使用的因子分析表示方法是矩阵表示法,在参考资料中给出了一些其他的表示方法, 如果不明白矩阵表示法,可以参考其他资料。 矩阵表示法认为 z 和 x 联合符合多元高斯分布,如下 𝑧 [ ] ~𝑁(𝜇𝑧𝑥 , Σ) 𝑥 求𝜇𝑧𝑥 之前需要求 E[x] E,x- = E,𝜇 + Λ𝑧 + 𝜖= 𝜇 + ΛE,𝑧- + E,𝜖- 108112.=𝜇 我们已知 E[z]=0,因此 ⃑ 𝜇𝑧𝑥 = [0] 𝜇 下一步是计算Σ, 其中𝛴𝑧𝑧 = 𝐶𝑜𝑣(𝑧) = 𝐼 接着求𝛴𝑧𝑥 这个过程中利用了 z 和ϵ独立假设(E,z𝜖 𝑇 - = 𝐸,𝑧-𝐸,𝜖 𝑇 - = 0) 。并将Λ看作已知变量。 接着求𝛴𝑥𝑥 然后得出联合分布的最终形式 从上式中可以看出 x 的边缘分布𝑥~𝑁(𝜇, 𝛬𝛬𝑇 + 𝛹) 那么对样本*𝑥 (𝑖) ; 𝑖 = 1, … , 𝑚+进行最大似然估计 然后对各个参数求偏导数不就得到各个参数的值了么? 可惜我们得不到 closed-form。想想也是,如果能得到,还干嘛将 z 和 x 放在一起求联合 分布呢。根据之前对参数估计的理解,在有隐含变量 z 时,我们可以考虑使用 EM 来进行估 计。 6 因子分析的 EM 估计 我们先来明确一下各个参数,z 是隐含变量,μ, Λ, Ψ是待估参数。 回想 EM 两个步骤: 109113.循环重复直到收敛 { (E 步)对于每一个 i,计算 𝑄𝑖 (𝑧 (𝑖) ) ≔ 𝑝(𝑧 (𝑖) 𝑥 (𝑖) ; 𝜃) (M 步)计算 我们套用一下: (E 步): 𝑄𝑖 (𝑧 (𝑖) ) ≔ 𝑝(𝑧 (𝑖) 𝑥 (𝑖) ; 𝜇, 𝛬, 𝛹) 根据第 3 节的条件分布讨论, 𝑧 (𝑖) 𝑥 (𝑖) ; 𝜇, 𝛬, 𝛹 ~ 𝑁(𝜇𝑧 (𝑖) 𝑥 (𝑖) , 𝛴𝑧 (𝑖) 𝑥 (𝑖) ) 因此 那么根据多元高斯分布公式,得到 (M 步): 直接写要最大化的目标是 其中待估参数是𝜇, 𝛬, 𝛹 下面我们重点求𝛬的估计公式 首先将上式简化为: 这里𝑧 (𝑖) ~Q 𝑖 表示𝑧 (𝑖) 服从Q 𝑖 分布。然后去掉与Λ不相关的项(后两项),得 110114.去掉不相关的前两项后,对Λ进行导, 第一步到第二步利用了 tr a = a(a 是实数时)和 tr AB = tr BA。最后一步利用了 tr 就是求一个矩阵对角线上元素和。 最后让其值为 0,并且化简得 然后得到 到这里我们发现,这个公式有点眼熟,与之前回归中的最小二乘法矩阵形式类似 这里解释一下两者的相似性,我们这里的 x 是 z 的线性函数(包含了一定的噪声)。在 E 步得到 z 的估计后,我们找寻的Λ实际上是 x 和 z 的线性关系。而最小二乘法也是去找特 征和结果直接的线性关系。 到这还没完,我们需要求得括号里面的值 111115.根据我们之前对 z x 的定义,我们知道 第一步根据 z 的条件分布得到,第二步根据Cov(Y) = E,Y𝑌 𝑇 - − 𝐸,𝑌-𝐸,𝑌-𝑇 得到 将上面的结果代入(7)中得到 至此,我们得到了Λ,注意一点是 E[z]和E,zz 𝑇 -的不同,后者需要求 z 的协方差。 其他参数的迭代公式如下: 均值μ在迭代过程中值不变。 然后将Φ上的对角线上元素抽取出来放到对应的Ψ中,就得到了Ψ。 7 总结 根据上面的 EM 的过程,要对样本 X 进行因子分析,只需知道要分解的因子数(z 的维 度)即可。通过 EM,我们能够得到转换矩阵Λ和误差协方差Ψ。 因子分析实际上是降维,在得到各个参数后,可以求得 z。但是 z 的各个参数含义需要 自己去琢磨。 下面从一个 ppt 中摘抄几段话来进一步解释因子分析。 因子分析(factor analysis)是一种数据简化的技术。它通过研究众多变量之间的内部依赖 关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几 个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变 量是不可观测的潜在变量,称为因子。 例如,在企业形象或品牌形象的研究中,消费者可以通过一个有 24 个指标构成的评价 体系,评价百货商场的 24 个方面的优劣。 但消费者主要关心的是三个方面,即商店的环境、商店的服务和商品的价格。因子分析 方法可以通过 24 个变量,找出反映商店环境、商店服务水平和商品价格的三个潜在的因子, 对商店进行综合评价。而这三个公共因子可以表示为: 112116.这里的x𝑖 就是样例 x 的第 i 个分量, μ𝑖 就是μ的第 i 个分量, 𝛼ij 就是Λ的第 i 行第 j 列元素, F𝑖 是 z 的第 i 个分量,𝜀i 是𝜀 (𝑖) 。 称F𝑖 是不可观测的潜在因子。24 个变量共享这三个因子,但是每个变量又有自己的个 性,不被包含的部分𝜀i ,称为特殊因子。 注: 因子分析与回归分析不同,因子分析中的因子是一个比较抽象的概念,而回归因子有 非常明确的实际意义; 主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要 构造因子模型。 主成分分析:原始变量的线性组合表示新的综合变量,即主成分; 因子分析:潜在的假想变量和随机影响变量的线性组合表示原始变量。 PPT 地址http://www.math.zju.edu.cn/webpagenew/uploadfiles/attachfiles/2008123195228555.ppt其他值得参考的文献 An Introduction to Probabilistic Graphical Models by Jordan Chapter 14 113117.增强学习(Reinforcement Learning and Control) JerryLead csxulijie@gmail.com 在之前的讨论中,我们总是给定一个样本 x,然后给或者不给 label y。之后对样本进行 拟合、分类、聚类或者降维等操作。然而对于很多序列决策或者控制问题,很难有这么规则 的样本。比如,四足机器人的控制问题,刚开始都不知道应该让其动那条腿,在移动过程中, 也不知道怎么让机器人自动找到合适的前进方向。 另外如要设计一个下象棋的 AI,每走一步实际上也是一个决策过程,虽然对于简单的 棋有 A*的启发式方法,但在局势复杂时,仍然要让机器向后面多考虑几步后才能决定走哪 一步比较好,因此需要更好的决策方法。 对于这种控制决策问题,有这么一种解决思路。我们设计一个回报函数(reward function), 如果 learning agent(如上面的四足机器人、象棋 AI 程序)在决定一步后,获得了较好的结 果,那么我们给 agent 一些回报(比如回报函数结果为正) ,得到较差的结果,那么回报函 数为负。比如,四足机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退 为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要 找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。 增强学习在很多领域已经获得成功应用,比如自动直升机,机器人控制,手机网络路由, 市场决策,工业控制,高效网页索引等。 接下来,先介绍一下马尔科夫决策过程(MDP,Markov decision processes)。 1. 马尔科夫决策过程 一个马尔科夫决策过程由一个五元组构成(S, A, *𝑃𝑠𝑎 +, 𝛾, 𝑅)  S 表示状态集(states)。(比如,在自动直升机系统中,直升机当前位置坐标组成状态 集)  A 表示一组动作(actions)。 (比如,使用控制杆操纵的直升机飞行方向,让其向前,向 后等)  𝑃𝑠𝑎 是状态转移概率。S 中的一个状态到另一个状态的转变,需要 A 来参与。𝑃𝑠𝑎 表示的 是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况(当前 状态执行 a 后可能跳转到很多状态) 。  𝛾 ∈ ,0,1)是阻尼系数(discount factor) R:'>R:
  • 69.假设我们得到的 2 维数据如下: 行代表了样例,列代表特征,这里有 10 个样例,每个样例两个特征。可以这样认为, 有 10 篇文档,x 是 10 篇文档中“learn”出现的 TF‐IDF,y 是 10 篇文档中“study”出现的 TF‐IDF。也可以认为有 10 辆汽车,x 是千米/小时的速度,y 是英里/小时的速度,等等。 第一步分别求 x 和 y 的平均值,然后对于所有的样例,都减去对应的均值。这里 x 的均 值是 1.81,y 的均值是 1.91,那么一个样例减去均值后即为(0.69,0.49),得到 第二步,求特征协方差矩阵,如果数据是 3 维,那么协方差矩阵是 这里只有 x 和 y,求解得 对角线上分别是 x 和 y 的方差,非对角线上是协方差。协方差大于 0 表示 x 和 y 若有一 66
  • 70.个增,另一个也增;小于 0 表示一个增,一个减;协方差为 0 时,两者独立。协方差绝对值 越大,两者对彼此的影响越大,反之越小。 第三步,求协方差的特征值和特征向量,得到 上面是两个特征值,下面是对应的特征向量,特征值 0.0490833989 对应特征向量为 0.735178656, 0.677873399 ,这里的特征向量都归一化为单位向量。 第四步,将特征值按照从大到小的顺序排序,选择其中最大的 k 个,然后将其对应的 k 个特征向量分别作为列向量组成特征向量矩阵。 这里特征值只有两个,我们选择其中最大的那个,这里是 1.28402771,对应的特征向 量是 0.677873399, 0.735178656 。 第五步,将样本点投影到选取的特征向量上。假设样例数为 m,特征数为 n,减去均值 后的样本矩阵为 DataAdjust(m*n),协方差矩阵是 n*n,选取的 k 个特征向量组成的矩阵为 EigenVectors(n*k)。那么投影后的数据 FinalData 为 FinalData m ∗ k DataAdjust m ∗ n 这里是 FinalData(10*1) = DataAdjust(10*2 矩阵)×特征向量 得到结果是 EigenVectors n ∗ k 0.677873399, 0.735178656 这样,就将原始样例的 n 维特征变成了 k 维,这 k 维就是原始特征在 k 维上的投影。 上面的数据可以认为是 learn 和 study 特征融合为一个新的特征叫做 LS 特征,该特征基 本上代表了这两个特征。 67
  • 71.上述过程有个图描述: 正号表示预处理后的样本点,斜着的两条线就分别是正交的特征向量(由于协方差矩阵 是对称的,因此其特征向量正交),最后一步的矩阵乘法就是将原始样本点分别往特征向量 对应的轴上做投影。 如果取的 k=2,那么结果是 68
  • 72.这就是经过 PCA 处理后的样本数据,水平轴(上面举例为 LS 特征)基本上可以代表全 部样本点。整个过程看起来就像将坐标系做了旋转,当然二维可以图形化表示,高维就不行 了。上面的如果 k=1,那么只会留下这里的水平轴,轴上是所有点在该轴的投影。 这样 PCA 的过程基本结束。在第一步减均值之后,其实应该还有一步对特征做方差归 一化。比如一个特征是汽车速度(0 到 100),一个是汽车的座位数(2 到 6),显然第二个的 方差比第一个小。因此,如果样本特征中存在这种情况,那么在第一步之后,求每个特征的 标准差σ,然后对每个样例在该特征下的数据除以σ。 归纳一下,使用我们之前熟悉的表示方法,在求协方差之前的步骤是: 69
  • 73.其中x 是样例,共 m 个,每个样例 n 个特征,也就是说x 是 n 维向量。x 是第 i 个 样例的第 j 个特征。μ是样例均值。σ 是第 j 个特征的标准差。 整个 PCA 过程貌似及其简单,就是求协方差的特征值和特征向量,然后做数据转换。 但是有没有觉得很神奇,为什么求协方差的特征向量就是最理想的 k 维向量?其背后隐藏的 意义是什么?整个 PCA 的意义是什么? 3. PCA 理论基础 要解释为什么协方差矩阵的特征向量就是 k 维理想特征,我看到的有三个理论:分别是 最大方差理论、最小错误理论和坐标轴相关度理论。这里简单探讨前两种,最后一种在讨论 PCA 意义时简单概述。 3.1 最大方差理论 在信号处理中认为信号具有较大的方差,噪声有较小的方差,信噪比就是信号与噪声的 方差比,越大越好。如前面的图,样本在横轴上的投影方差较大,在纵轴上的投影方差较小, 那么认为纵轴上的投影是由噪声引起的。 因此我们认为,最好的 k 维特征是将 n 维样本点转换为 k 维后,每一维上的样本方差都 很大。 比如下图有 5 个样本点: (已经做过预处理,均值为 0,特征方差归一) 70
  • 74.下面将样本投影到某一维上,这里用一条过原点的直线表示(前处理的过程实质是将原 点移到样本点的中心点) 。 假设我们选择两条不同的直线做投影,那么左右两条中哪个好呢?根据我们之前的方差 最大化理论,左边的好,因为投影后的样本点之间方差最大。 这里先解释一下投影的概念: 71
  • 75., ,…, x x , ,…, 红色点表示样例x ,蓝色点表示x 在 u 上的投影,u 是直线的斜率也是直线的方向向 量,而且是单位向量。蓝色点是x 在 u 上的投影点,离原点的距离是 x , (即x 或 者u x )由于这些样本点(样例)的每一维特征均值都为 0,因此投影到 u 上的样本点(只 有一个到原点的距离值)的均值仍然是 0。 回到上面左右图中的左图,我们要求的是最佳的 u,使得投影后的样本点方差最大。 由于投影后均值为 0,因此方差为: 中间那部分很熟悉啊,不就是样本特征的协方差矩阵么(x 的均值为 0,一般协方差 矩阵都除以 m‐1,这里用 m)。 用λ来表示 ∑ x 由于 u 是单位向量,即 λ 即 ,Σ表示 ∑ x ,那么上式写作 1,上式两边都左乘 u 得, λ λ We got it!λ就是Σ的特征值,u 是特征向量。最佳的投影直线是特征值λ最大时对应的特 征向量,其次是λ第二大对应的特征向量,依次类推。 因此,我们只需要对协方差矩阵进行特征值分解,得到的前 k 大特征值对应的特征向量 就是最佳的 k 维新特征,而且这 k 维新特征是正交的。得到前 k 个 u 以后,样例x 通过以 下变换可以得到新的样本。 72
  • 76.其中的第 j 维就是x 在u 上的投影。 通过选取最大的 k 个 u,使得方差较小的特征(如噪声)被丢弃。 这是其中一种对 PCA 的解释,第二种是错误最小化。 3.2 最小平方误差理论 假设有这样的二维样本点(红色点),回顾我们前面探讨的是求一条直线,使得样本点 投影到直线上的点的方差最大。本质是求直线,那么度量直线求的好不好,不仅仅只有方差 最大化的方法。再回想我们最开始学习的线性回归等,目的也是求一个线性函数使得直线能 够最佳拟合样本点,那么我们能不能认为最佳的直线就是回归后的直线呢?回归时我们的最 小二乘法度量的是样本点到直线的坐标轴距离。比如这个问题中,特征是 x,类标签是 y。 回归时最小二乘法度量的是距离 d。如果使用回归方法来度量最佳直线,那么就是直接在原 始样本上做回归了,跟特征选择就没什么关系了。 因此,我们打算选用另外一种评价直线好坏的方法,使用点到直线的距离 d’来度量。 ,每个样本点为 m 维(这节内容中使用的符号与上面 现在有 n 个样本点 , , … , 的不太一致,需要重新理解符号的意义)。将样本点 在直线上的投影记为x ,那么我们就 是要最小化 x 这个公式称作最小平方误差(Least Squared Error) 。 而确定一条直线,一般只需要确定一个点,并且确定方向即可。 第一步确定点: 73
  • 77.假设要在空间中找一点x 来代表这 n 个样本点,“代表”这个词不是量化的,因此要量 化的话,我们就是要找一个 m 维的点x ,使得 最小。其中 个样本点的均值: 是平方错误评价函数(squared‐error criterion function),假设 m 为 n 那么平方错误可以写作: 0,因此最小化 后项与 无关,看做常量,而 时, 是样本点均值。 第一步确定方向: 我们从 拉出要求的直线(这条直线要过点 m),假设直线的方向是单位向量 e。那么 直线上任意一点,比如x 就可以用点 m 和 e 来表示 x 其中a 是x 到点 m 的距离。 我们重新定义最小平方误差: 这里的 k 只是相当于 i。 就是最小平方误差函数,其中的未知参数是a , a , … , a 和 e。 实际上是求 的最小值。首先将上式展开: 74
  • 78.我们首先固定 e,将其看做是常量, e 1,然后对a 进行求导,得 这个结果意思是说,如果知道了 e,那么将x 与 e 做内积,就可以知道了 的投影离 m 的长度距离,不过这个结果不用求都知道。 在e上 然后是固定a ,对 e 求偏导数,我们先将公式(8)代入 ,得 其中 与协方差矩阵类似,只是缺少个分母 n‐1,我们称之为散列矩阵(scatter matrix)。 然后可以对 e 求偏导数,但是 e 需要首先满足 e ,令 最大( 最小) 1,引入拉格朗日乘子λ,来使e 求偏导 这里存在对向量求导数的技巧,方法这里不多做介绍。可以去看一些关于矩阵微积分的 资料,这里求导时可以将e 看作是Se ,将e 看做是e 。 导数等于 0 时,得 75
  • 79.两边除以 n‐1 就变成了,对协方差矩阵求特征值向量了。 从不同的思路出发,最后得到同一个结果,对协方差矩阵求特征向量,求得后特征向量 上就成为了新的坐标,如下图: 这时候点都聚集在新的坐标轴周围,因为我们使用的最小平方误差的意义就在此。 4. PCA 理论意义 PCA 将 n 个特征降维到 k 个,可以用来进行数据压缩,如果 100 维的向量最后可以用 10 维来表示,那么压缩率为 90%。同样图像处理领域的 KL 变换使用 PCA 做图像压缩。但 PCA 要保证降维后,还要保证数据的特性损失最小。再看回顾一下 PCA 的效果。经过 PCA 处理后,二维数据投影到一维上可以有以下几种情况: 我们认为左图好,一方面是投影后方差最大,一方面是点到直线的距离平方和最小,而 且直线过样本点的中心点。为什么右边的投影效果比较差?直觉是因为坐标轴之间相关,以 至于去掉一个坐标轴,就会使得坐标点无法被单独一个坐标轴确定。 PCA 得到的 k 个坐标轴实际上是 k 个特征向量,由于协方差矩阵对称,因此 k 个特征向 量正交。看下面的计算过程。 , ,…, 来表示样例,m 个样例,n 个特征。特征向量为 e, 假设我们还是用x 表示第 i 个特征向量的第 1 维。那么原始样本特征方程可以用下面式子来表示: 前面两个矩阵乘积就是协方差矩阵Σ(除以 m 后), 原始的样本矩阵 A 是第二个矩阵 m*n。 x x … x x x ⋮ ⋮ ⋮ x 上式可以简写为A 76
  • 80.我们最后得到的投影结果是 ,E 是 k 个特征向量组成的矩阵,展开如下: x x x … ⋮ ⋮ ⋮ … ⋱ … ⋮ 得到的新的样例矩阵就是 m 个样例到 k 个特征向量的投影,也是这 k 个特征向量的线 性组合。e 之间是正交的。从矩阵乘法中可以看出,PCA 所做的变换是将原始样本点(n 维), 投影到 k 个正交的坐标系中去,丢弃其他维度的信息。举个例子,假设宇宙是 n 维的(霍金 说是 13 维的),我们得到银河系中每个星星的坐标(相对于银河系中心的 n 维向量),然而 我们想用二维坐标去逼近这些样本点,假设算出来的协方差矩阵的特征向量分别是图中的水 平和竖直方向,那么我们建议以银河系中心为原点的 x 和 y 坐标轴,所有的星星都投影到 x 和 y 上,得到下面的图片。然而我们丢弃了每个星星离我们的远近距离等信息。 5. 总结与讨论 这一部分来自http://www.cad.zju.edu.cn/home/chenlu/pca.htm PCA 技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的 重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从 而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。  PCA 技术的一个很大的优点是,它是完全无参数限制的。在 PCA 的计算过程中完全不 需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关, 与用户是独立的。 但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了 数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的 效果,效率也不高。 77
  • 81.图表 4:黑色点表示采样数据,排列成转盘的形状。 容易想象,该数据的主元是 如图表 4 中的例子,PCA 找出的主元将是 元。 或是旋转角 。 。但是这显然不是最优和最简化的主 之间存在着非线性的关系。根据先验的知识可知旋转角 是最优的主元(类 比极坐标)。则在这种情况下,PCA 就会失效。但是,如果加入先验的知识,对数据 进行某种划归,就可以将数据转化为以 为线性的空间中。这类根据先验知识对数据预 先进行非线性转换的方法就成为 kernel-PCA,它扩展了 PCA 能够处理的问题的范围, 又可以结合一些先验约束,是比较流行的方法。  有时数据的分布并不是满足高斯分布。如图表 5 所示,在非高斯分布的情况下,PCA 方法得出的主元可能并不是最优的。在寻找主元时不能将方差作为衡量重要性的标准。 要根据数据的分布情况选择合适的描述完全分布的变量,然后根据概率分布式 来计算两个向量上数据分布的相关性。等价的,保持主元间的正交假设,寻找的主元同 样要使 。这一类方法被称为独立主元分解(ICA)。 78
  • 82.图表 5:数据的分布并不满足高斯分布,呈明显的十字星状。 这种情况下,方差最大的方向并不是最优主元方向。 另外 PCA 还可以用于预测矩阵中缺失的元素。 6. 其他参考文献 A tutorial on Principal Components Analysis LI Smith – 2002 A Tutorial on Principal Component Analysis J Shlenshttp://www.cmlab.csie.ntu.edu.tw/~cyy/learning/tutorials/PCAMissingData.pdfhttp://www.cad.zju.edu.cn/home/chenlu/pca.htm79
  • 83.独立成分分析(Independent Component Analysis) JerryLead csxulijie@gmail.com 1. 问题: 1、上节提到的 PCA 是一种数据降维的方法,但是只对符合高斯分布的样本点比较有效,那 么对于其他分布的样本,有没有主元分解的方法呢? 2、经典的鸡尾酒宴会问题(cocktail party problem) 。假设在 party 中有 n 个人,他们可以同 时说话,我们也在房间中一些角落里共放置了 n 个声音接收器(Microphone)用来记录声音。 (𝑖) (𝑖) (𝑖) 宴会过后,我们从 n 个麦克风中得到了一组数据*x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 ); 𝑖 = 1, … , 𝑚+,i 表示 采样的时间顺序,也就是说共得到了 m 组采样,每一组采样都是 n 维的。我们的目标是单 单从这 m 组采样数据中分辨出每个人说话的信号。 将第二个问题细化一下,有 n 个信号源s (𝑠1 , 𝑠2 , … , 𝑠𝑛 )𝑇 ,s ∈ ℝ𝑛 ,每一维都是一个人的 声音信号,每个人发出的声音信号独立。A 是一个未知的混合矩阵(mixing matrix),用来组 合叠加信号 s,那么 x = As x 的意义在上文解释过,这里的 x 不是一个向量,是一个矩阵。其中每个列向量是x (𝑖) , 𝑥 (𝑖) = 𝐴𝑠 (𝑖) 表示成图就是 80
  • 84.这张图来自http://amouraux.webnode.com/research-interests/research-interests-erp-analysis/blind-source-separation-bss-of-erps-using-independent-component-analysis-ica/ (𝑖) (𝑖) 𝑥1 𝑠1 A𝑖1 (𝑖) 𝑥3 A𝑖3 A𝑖2 (𝑖) (𝑖) 𝑠2 𝑠3 (𝑖) 𝑥2 x (i) 的每个分量都由s (i) 的分量线性表示。A 和 s 都是未知的,x 是已知的,我们要想办 法根据 x 来推出 s。这个过程也称作为盲信号分离。 令W = 𝐴−1 ,那么 𝑠 (𝑖) = A−1 𝑥 (𝑖) = 𝑊𝑥 (𝑖) 将 W 表示成 81
  • 85.其中w𝑖 ∈ ℝ𝑛 ,其实就是将w𝑖 写成行向量形式。那么得到: (𝑖) 𝑠𝑗 = 𝑤𝑗𝑇 𝑥 (𝑖) 2. ICA 的不确定性(ICA ambiguities) 由于 w 和 s 都不确定,那么在没有先验知识的情况下,无法同时确定这两个相关参数。 比如上面的公式 s=wx。当 w 扩大两倍时,s 只需要同时扩大两倍即可,等式仍然满足,因 此无法得到唯一的 s。同时如果将人的编号打乱,变成另外一个顺序,如上图的蓝色节点的 编号变为 3,2,1,那么只需要调换 A 的列向量顺序即可,因此也无法单独确定 s。这两种情况 称为原信号不确定。 还有一种 ICA 不适用的情况,那就是信号不能是高斯分布的。假设只有两个人发出的声 音信号符合多值正态分布,𝑠~𝑁(0, 𝐼),I 是 2*2 的单位矩阵,s 的概率密度函数就不用说了 吧,以均值 0 为中心,投影面是椭圆的山峰状(参见多值高斯分布)。因为x = As,因此,x 也是高斯分布的,均值为 0,协方差为𝐸,𝑥𝑥 𝑇 - = 𝐸,𝐴𝑠𝑠 𝑇 𝐴𝑇 - = 𝐴𝐴𝑇 。 令 R 是正交阵(𝑅𝑅 𝑇 = 𝑅 𝑇 𝑅 = 𝐼),𝐴′ = 𝐴𝑅。如果将 A 替换成 A’。那么x ′ = 𝐴′ s。s 分布 没变,因此 x’仍然是均值为 0,协方差𝐸,𝑥 ′ (𝑥 ′ )𝑇 - = 𝐸,𝐴′ 𝑠𝑠 𝑇 (𝐴′ )𝑇 - = 𝐸,𝐴𝑅𝑠𝑠 𝑇 (𝐴𝑅)𝑇 - = AR𝑅 𝑇 𝐴𝑇 = 𝐴𝐴𝑇 。 因此,不管混合矩阵是 A 还是 A’,x 的分布情况是一样的,那么就无法确定混合矩阵, 也就无法确定原信号。 3. 密度函数和线性变换 在讨论 ICA 具体算法之前,我们先来回顾一下概率和线性代数里的知识。 假设我们的随机变量 s 有概率密度函数p𝑠 (𝑠) (连续值是概率密度函数,离散值是概率)。 为了简单,我们再假设 s 是实数,还有一个随机变量 x=As,A 和 x 都是实数。令p𝑥 是 x 的概 率密度,那么怎么求p𝑥 ? 令W = 𝐴−1 ,首先将式子变换成s = Wx,然后得到p𝑥 (x) = p𝑠 (𝑊𝑠),求解完毕。可惜这 种方法是错误的。比如 s 符合均匀分布的话(s~Uniform,0,1-),那么 s 的概率密度是 p𝑠 (𝑠) = 1*0 ≤ s ≤ 1+,现在令 A=2, 即 x=2s,也就是说 x 在[0,2]上均匀分布, 可知p𝑥 (x) = 0.5。 然而,前面的推导会得到p𝑥 (x) = p𝑠 (0.5𝑠) = 1。正确的公式应该是 p𝑥 (x) = p𝑠 (𝑊𝑥) W 推导方法 𝐹𝑋 (𝑥) = 𝑃(𝑋 ≤ 𝑥) = P(𝐴𝑆 ≤ 𝑥) = P(𝑆 ≤ 𝑊𝑥) = 𝐹𝑆 (𝑊𝑥) p𝑥 (x) = 𝐹𝑋′ (𝑥) = 𝐹𝑆′ (𝑊𝑥) = p𝑠 (𝑊𝑥) W 更一般地,如果 s 是向量,A 可逆的方阵,那么上式子仍然成立。 82
  • 86.4. ICA 算法 ICA 算法归功于 Bell 和 Sejnowski,这里使用最大似然估计来解释算法,原始的论文中使 用的是一个复杂的方法 Infomax principal。 我们假定每个𝑠𝑖 有概率密度p𝑠 ,那么给定时刻原信号的联合分布就是 𝑛 p(s) = ∏ 𝑝𝑠 (𝑠𝑖 ) 𝑖=1 这个公式代表一个假设前提:每个人发出的声音信号各自独立。有了 p(s),我们可以求 得 p(x) 𝑛 p(x) = p𝑠 (𝑊𝑥) W = W ∏ 𝑖=1 𝑝𝑠 (𝑤𝑖 𝑇 𝑥) 左边是每个采样信号 x(n 维向量)的概率,右边是每个原信号概率的乘积的 W 倍。 前面提到过,如果没有先验知识,我们无法求得 W 和 s。因此我们需要知道𝑝𝑠 (𝑠𝑖 ),我 们打算选取一个概率密度函数赋给 s,但是我们不能选取高斯分布的密度函数。在概率论里 我们知道密度函数 p(x)由累计分布函数(cdf)F(x)求导得到。F(x)要满足两个性质是:单调 递增和在[0,1]。我们发现 sigmoid 函数很适合,定义域负无穷到正无穷,值域 0 到 1,缓慢 递增。我们假定 s 的累积分布函数符合 sigmoid 函数 g(s) = 1 1 + 𝑒 −𝑠 求导后 𝑝𝑠 (𝑠) = 𝑔′ (𝑠) = 𝑒𝑠 (1 + 𝑒 𝑠 )2 这就是 s 的密度函数。这里 s 是实数。 如果我们预先知道 s 的分布函数,那就不用假设了,但是在缺失的情况下,sigmoid 函 数能够在大多数问题上取得不错的效果。由于上式中𝑝𝑠 (𝑠)是个对称函数,因此 E[s]=0(s 的 均值为 0),那么 E[x]=E[As]=0,x 的均值也是 0。 (𝑖) (𝑖) (𝑖) 知道了𝑝𝑠 (𝑠),就剩下 W 了。给定采样后的训练样本*x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 ); 𝑖 = 1, … , 𝑚+, 样本对数似然估计如下: 使用前面得到的 x 的概率密度函数,得 大括号里面是p(x (𝑖) )。 接下来就是对 W 求导了,这里牵涉一个问题是对行列式 W 进行求导的方法,属于矩 阵微积分。这里先给出结果,在文章最后再给出推导公式。 ∇𝑊 𝑊 = 𝑊 (𝑊 −1 )𝑇 最终得到的求导后公式如下,log 𝑔′ (𝑠)的导数为1 − 2𝑔(𝑠)(可以自己验证): 83
  • 87.其中α是梯度上升速率,人为指定。 当迭代求出 W 后,便可得到s (𝑖) = 𝑊𝑥 (𝑖) 来还原出原始信号。 注意:我们计算最大似然估计时,假设了𝑥 (𝑖) 与𝑥 (𝑗) 之间是独立的,然而对于语音信号 或者其他具有时间连续依赖特性(比如温度)上,这个假设不能成立。但是在数据足够多时, 假设独立对效果影响不大,同时如果事先打乱样例,并运行随机梯度上升算法,那么能够加 快收敛速度。 回顾一下鸡尾酒宴会问题,s 是人发出的信号,是连续值,不同时间点的 s 不同,每个 人发出的信号之间独立(𝑠𝑖 和𝑠𝑗 之间独立)。s 的累计概率分布函数是 sigmoid 函数,但是所 有人发出声音信号都符合这个分布。A(W 的逆阵)代表了 s 相对于 x 的位置变化,x 是 s 和 A 变化后的结果。 5. 实例 s=2 时的原始信号 84
  • 88.观察到的 x 信号 使用 ICA 还原后的 s 信号 6. 行列式的梯度 对行列式求导,设矩阵 A 是 n×n 的,我们知道行列式与代数余子式有关, 𝐴\𝑖,\𝑗 是去掉第 i 行第 j 列后的余子式,那么对𝐴𝑘,𝑙 求导得 adj(A)跟我们线性代数中学的A∗ 是一个意思,因此 85
  • 89.7. ICA 算法扩展描述 上面介绍的内容基本上是讲义上的,与我看的另一篇《Independent ComponentAnalysis:Algorithms and Applications》 (Aapo Hyvärinen and Erkki Oja)有点出入。下面总结一下这篇文 章里提到的一些内容(有些我也没看明白)。 首先里面提到了一个与“独立”相似的概念“不相关(uncorrelated)”。Uncorrelated 属 于部分独立,而不是完全独立,怎么刻画呢? 如果随机变量y1 和y2 是独立的,当且仅当𝑝(𝑦1 , 𝑦2 ) = 𝑝(𝑦1 )𝑝(𝑦2 )。 如果随机变量y1 和y2 是不相关的,当且仅当𝐸(𝑦1 , 𝑦2 ) = 𝐸(𝑦1 )𝐸(𝑦2 ) 第二个不相关的条件要比第一个独立的条件“松”一些。因为独立能推出不相关,不相 关推不出独立。 证明如下: 反过来不能推出。 比如,y1 和y2 的联合分布如下(0,1),(0,-1),(1,0),(-1,0)。 𝐸(𝑦1 , 𝑦2 ) = 𝐸(𝑦1 )𝐸(𝑦2 ) = 0 因此y1 和y2 不相关,但是 1 = 𝐸(𝑦12 )𝐸(𝑦22 ) 4 因此y1 和y2 不满足上面的积分公式,y1 和y2 不是独立的。 E(𝑦12 𝑦12 ) = 0 ≠ 上面提到过, 如果s (𝑖) 是高斯分布的,A 是正交的,那么x (𝑖) 也是高斯分布的,且x (𝑖) 与x (𝑗) 之 间是独立的。那么无法确定 A,因为任何正交变换都可以让x (𝑖) 达到同分布的效果。但是如 果s (𝑖) 中只有一个分量是高斯分布的,仍然可以使用 ICA。 那么 ICA 要解决的问题变为:如何从 x 中推出 s,使得 s 最不可能满足高斯分布? 中心极限定理告诉我们:大量独立同分布随机变量之和满足高斯分布。 86
  • 90.我们一直假设的是x (𝑖) 是由独立同分布的主元s (𝑖) 经过混合矩阵 A 生成。那么为了求s (𝑖) , (𝑖) (𝑖) 我们需要计算s (𝑖) 的每个分量y𝑗 = 𝑤𝑗𝑇 x (𝑖) 。定义z𝑗 = 𝐴𝑇 𝑤𝑗 ,那么y𝑗 = 𝑤𝑗𝑇 x (𝑖) = 𝑤𝑗𝑇 A𝑠 (𝑖) = 𝑧𝑗𝑇 𝑠 (𝑖) ,之所以这么麻烦再定义 z 是想说明一个关系,我们想通过整出一个𝑤𝑗 来对x (𝑖) 进行线 性组合,得出 y。而我们不知道得出的 y 是否是真正的 s 的分量,但我们知道 y 是 s 的真正 分量的线性组合。由于我们不能使 s 的分量成为高斯分布,因此我们的目标求是让 y(也就 是𝑤𝑗𝑇 x (𝑖) )最不可能是高斯分布时的 w。 那么问题递归到如何度量 y 是否是高斯分布的了。 一种度量方法是 kurtosis 方法,公式如下: 如果 y 是高斯分布,那么该函数值为 0,否则绝大多数情况下值不为 0。 但这种度量方法不怎么好,有很多问题。看下一种方法: 负熵(Negentropy)度量方法。 我们在信息论里面知道对于离散的随机变量 Y,其熵是 连续值时是 在信息论里有一个强有力的结论是:高斯分布的随机变量是同方差分布中熵最大的。也 就是说对于一个随机变量来说,满足高斯分布时,最随机。 定义负熵的计算公式如下: 也就是随机变量 y 相对于高斯分布时的熵差,这个公式的问题就是直接计算时较为复杂, 一般采用逼近策略。 这种逼近策略不够好,作者提出了基于最大熵的更优的公式: 之后的 FastICA 就基于这个公式。 另外一种度量方法是最小互信息方法: 87
  • 91.这个公式可以这样解释,前一个 H 是𝑦i 的编码长度(以信息编码的方式理解),第二个 H 是 y 成为随机变量时的平均编码长度。之后的内容包括 FastICA 就不再介绍了,我也没看 懂。 8. ICA 的投影追踪解释(Projection Pursuit) 投影追踪在统计学中的意思是去寻找多维数据的“interesting”投影。这些投影可用在 数据可视化、密度估计和回归中。比如在一维的投影追踪中,我们寻找一条直线,使得所有 的数据点投影到直线上后,能够反映出数据的分布。然而我们最不想要的是高斯分布,最不 像高斯分布的数据点最 interesting。这个与我们的 ICA 思想是一直的,寻找独立的最不可能 是高斯分布的 s。 在下图中,主元是纵轴,拥有最大的方差,但最 interesting 的是横轴,因为它可以将两 个类分开(信号分离)。 9. ICA 算法的前处理步骤 1、中心化:也就是求 x 均值,然后让所有 x 减去均值,这一步与 PCA 一致。 2、漂白:目的是将 x 乘以一个矩阵变成𝑥̃,使得𝑥̃的协方差矩阵是𝐼。解释一下吧,原始 的向量是 x。转换后的是𝑥̃。 𝑥̃的协方差矩阵是𝐼,即 我们只需用下面的变换,就可以从 x 得到想要的𝑥̃。 其中使用特征值分解来得到 E(特征向量矩阵)和 D(特征值对角矩阵) ,计算公式为 下面用个图来直观描述一下: 假设信号源 s1 和 s2 是独立的,比如下图横轴是 s1,纵轴是 s2,根据 s1 得不到 s2。 88
  • 92.我们只知道他们合成后的信号 x,如下 此时 x1 和 x2 不是独立的(比如看最上面的尖角,知道了 x1 就知道了 x2)。那么直接代 入我们之前的极大似然概率估计会有问题,因为我们假定 x 是独立的。 因此,漂白这一步为了让 x 独立。漂白结果如下: 89
  • 93.可以看到数据变成了方阵,在𝑥̃的维度上已经达到了独立。 然而这时 x 分布很好的情况下能够这样转换,当有噪音时怎么办呢?可以先使用前面提 到的 PCA 方法来对数据进行降维,滤去噪声信号,得到 k 维的正交向量,然后再使用 ICA。 10. 小结 ICA 的盲信号分析领域的一个强有力方法,也是求非高斯分布数据隐含因子的方法。从 之前我们熟悉的样本-特征角度看,我们使用 ICA 的前提条件是,认为样本数据由独立非高 斯分布的隐含因子产生,隐含因子个数等于特征数。而 PCA 认为特征是由 k 个正交的特征 (也可看作是隐含因子)生成的。同是因子分析,一个用来更适合用来还原信号(因为信号 比较有规律,经常不是高斯分布的),一个更适合用来降维(用那么多特征干嘛,k 个正交 的即可)。有时候也需要组合两者一起使用。这段是我的个人理解,仅供参考。 90
  • 94.线性判别分析(Linear Discriminant Analysis) JerryLead csxulijie@gmail.com 1. 问题 之前我们讨论的 PCA、ICA 也好,对样本数据来言,可以是没有类别标签 y 的。回想我 们做回归时,如果特征太多,那么会产生不相关特征引入、过度拟合等问题。我们可以使用 PCA 来降维,但 PCA 没有将类别标签考虑进去,属于无监督的。 比如回到上次提出的文档中含有“learn”和“study”的问题,使用 PCA 后,也许可以 将这两个特征合并为一个,降了维度。但假设我们的类别标签 y 是判断这篇文章的 topic 是 不是有关学习方面的。那么这两个特征对 y 几乎没什么影响,完全可以去除。 再举一个例子,假设我们对一张 100*100 像素的图片做人脸识别,每个像素是一个特 征,那么会有 10000 个特征,而对应的类别标签 y 仅仅是 0/1 值,1 代表是人脸。这么多特 征不仅训练复杂,而且不必要特征对结果会带来不可预知的影响,但我们想得到降维后的一 些最佳特征(与 y 关系最密切的),怎么办呢? 2. 线性判别分析(二类情况) (𝑖) (𝑖) (𝑖) 回顾我们之前的 logistic 回归方法,给定 m 个 n 维特征的训练样例𝑥 (𝑖) *𝑥1 , 𝑥2 , … , 𝑥𝑛 (i + (𝑖) (𝑖) (𝑖) 𝑇 (𝑖) 从 1 到 m),每个𝑥 对应一个类标签𝑦 。我们就是要学习出参数θ,使得𝑦 = g(θ) 𝑥 (g 是 sigmoid 函数)。 现在只考虑二值分类情况,也就是 y=1 或者 y=0。 为了方便表示,我们先换符号重新定义问题,给定特征为 d 维的 N 个样例, (𝑖) (𝑖) (𝑖) (𝑖) 𝑥 *𝑥1 , 𝑥2 , … , 𝑥𝑑 +,其中有N1 个样例属于类别ω1 ,另外N2 个样例属于类别ω2 。 现在我们觉得原始特征数太多,想将 d 维特征降到只有一维,而又要保证类别能够“清 晰”地反映在低维数据上,也就是这一维就能决定每个样例的类别。 我们将这个最佳的向量称为 w(d 维),那么样例 x(d 维)到 w 上的投影可以用下式来 计算 y = 𝑤𝑇𝑥 这里得到的 y 值不是 0/1 值,而是 x 投影到直线上的点到原点的距离。 当 x 是二维的,我们就是要找一条直线(方向为 w)来做投影,然后寻找最能使样本点 分离的直线。如下图: 91
  • 95.从直观上来看,右图比较好,可以很好地将不同类别的样本点分离。 接下来我们从定量的角度来找到这个最佳的 w。 首先我们寻找每类样例的均值(中心点),这里 i 只有两个 𝜇𝑖 = 1 ∑𝑥 𝑁𝑖 𝑥∈𝜔𝑖 由于 x 到 w 投影后的样本点均值为 𝜇̃𝑖 = 1 1 ∑𝑦= ∑ 𝑤 𝑇 𝑥 = 𝑤 𝑇 𝜇𝑖 𝑁𝑖 𝑁𝑖 𝑦∈𝜔𝑖 𝑥∈𝜔𝑖 由此可知,投影后的的均值也就是样本中心点的投影。 什么是最佳的直线(w)呢?我们首先发现,能够使投影后的两类样本中心点尽量分离 的直线是好的直线,定量表示就是: 𝑇 J(w) = 𝜇 ̃1 − 𝜇 ̃ 2 = 𝑤 (𝜇1 − 𝜇2 ) J(w)越大越好。 但是只考虑 J(w)行不行呢?不行,看下图 样本点均匀分布在椭圆里,投影到横轴 x1 上时能够获得更大的中心点间距 J(w),但是 由于有重叠,x1 不能分离样本点。投影到纵轴 x2 上,虽然 J(w)较小,但是能够分离样本点。 因此我们还需要考虑样本点之间的方差,方差越大,样本点越难以分离。 92
  • 96.我们使用另外一个度量值,称作散列值(scatter),对投影后的类求散列值,如下 s̃𝑖 2 = ∑ (𝑦 − 𝜇̃𝑖 )2 𝑦∈𝜔𝑖 从公式中可以看出,只是少除以样本数量的方差值,散列值的几何意义是样本点的密集 程度,值越大,越分散,反之,越集中。 而我们想要的投影后的样本点的样子是:不同类别的样本点越分开越好,同类的越聚集 越好,也就是均值差越大越好,散列值越小越好。正好,我们可以使用 J(w)和 S 来度量,最 终的度量公式是 J(w) = 2 𝜇 ̃1 − 𝜇 ̃ 2 s̃1 2 + s̃2 2 接下来的事就比较明显了,我们只需寻找使 J(w)最大的 w 即可。 先把散列值公式展开 s̃𝑖 2 = ∑ (𝑦 − 𝜇̃𝑖 )2 = ∑ (𝑤 𝑇 𝑥 − 𝑤 𝑇 𝜇𝑖 )2 = ∑ 𝑤 𝑇 (𝑥 − 𝜇𝑖 )(𝑥 − 𝜇𝑖 )𝑇 𝑤 𝑦∈𝜔𝑖 𝑥∈𝜔i 𝑥∈𝜔𝑖 我们定义上式中中间那部分 S𝑖 = ∑ (𝑥 − 𝜇𝑖 )(𝑥 − 𝜇𝑖 )𝑇 𝑥∈𝜔𝑖 这个公式的样子不就是少除以样例数的协方差矩阵么,称为散列矩阵(scatter matrices) 我们继续定义 S𝑤 = S1 + S2 S𝑤 称为 Within-class scatter matrix。 那么回到上面s̃𝑖 2 的公式,使用S𝑖 替换中间部分,得 s̃𝑖 2 = 𝑤 T S𝑖 𝑤 s̃1 2 + s̃2 2 = 𝑤 T S𝑤 𝑤 然后,我们展开分子 𝑆𝐵 称为 Between-class scatter,是两个向量的外积,虽然是个矩阵,但秩为 1。 那么 J(w)最终可以表示为 93
  • 97.𝑤 T S𝐵 𝑤 J(w) = T 𝑤 S𝑤 𝑤 在我们求导之前,需要对分母进行归一化,因为不做归一的话,w 扩大任何倍,都成立, 我们就无法确定 w。因此我们打算令 𝑤 T S𝑤 𝑤 = 1,那么加入拉格朗日乘子后,求导 其中用到了矩阵微积分,求导时可以简单地把𝑤 T S𝑤 𝑤当做S𝑤 𝑤 2 看待。 如果S𝑤 可逆,那么将求导后的结果两边都乘以𝑆𝑤−1 ,得 这个可喜的结果就是 w 就是矩阵𝑆𝑤−1 S𝐵 的特征向量了。 这个公式称为 Fisher linear discrimination。 等等,让我们再观察一下,发现前面S𝐵 的公式 S𝐵 = (𝜇1 − 𝜇2 )(𝜇1 − 𝜇2 )𝑇 那么 S𝐵 w = (𝜇1 − 𝜇2 )(𝜇1 − 𝜇2 )𝑇 𝑤 = (𝜇1 − 𝜇2 ) ∗ 𝜆w 代入最后的特征值公式得 −1 −1 ( S𝑤 S𝐵 w = S𝑤 𝜇1 − 𝜇2 ) ∗ 𝜆w = 𝜆𝑤 由于对 w 扩大缩小任何倍不影响结果,因此可以约去两边的未知常数λ和𝜆w ,得到 −1 ( 𝑤 = S𝑤 𝜇1 − 𝜇2 ) 至此,我们只需要求出原始样本的均值和方差就可以求出最佳的方向 w,这就是 Fisher 于 1936 年提出的线性判别分析。 看上面二维样本的投影结果图: 94
  • 98.3. 线性判别分析(多类情况) 前面是针对只有两个类的情况,假设类别变成多个了,那么要怎么改变,才能保证投影 后类别能够分离呢? 我们之前讨论的是如何将 d 维降到一维,现在类别多了,一维可能已经不能满足要求。 假设我们有 C 个类别,需要 K 维向量(或者叫做基向量)来做投影。 将这 K 维向量表示为W = ,𝑤1 𝑤2 … 𝑤K -。 我们将样本点在这 K 维向量投影后结果表示为,y1 , y2 , … , y𝐾 -,有以下公式成立 y𝑖 = 𝑤𝑖𝑇 𝑥 y = 𝑊𝑇𝑥 为了像上节一样度量 J(w),我们打算仍然从类间散列度和类内散列度来考虑。 当样本是二维时,我们从几何意义上考虑: 95
  • 99.其中𝜇𝑖 和S𝑤 与上节的意义一样,𝑆𝑤1 是类别 1 里的样本点相对于该类中心点𝜇1 的散列程 度。𝑆𝐵1 变成类别 1 中心点相对于样本中心点𝜇的协方差矩阵,即类 1 相对于𝜇的散列程度。 S𝑤 为 𝐶 S𝑤 = ∑ 𝑆w𝑖 𝑖=1 𝑆𝑤𝑖 的计算公式不变,仍然类似于类内部样本点的协方差矩阵 S𝑤𝑖 = ∑ (𝑥 − 𝜇𝑖 )(𝑥 − 𝜇𝑖 )𝑇 𝑥∈𝜔𝑖 𝑆𝐵 需要变,原来度量的是两个均值点的散列情况,现在度量的是每类均值点相对于样本 中心的散列情况。类似于将𝜇𝑖 看作样本点,𝜇是均值的协方差矩阵,如果某类里面的样本点 较多,那么其权重稍大,权重用 Ni/N 表示,但由于 J(w)对倍数不敏感,因此使用 Ni。 𝐶 S𝐵 = ∑ 𝑁𝑖 (𝜇𝑖 − 𝜇)(𝜇𝑖 − 𝜇)𝑇 𝑖=1 其中 𝜇= 1 1 ∑ 𝑥 = ∑ 𝑁𝑖 𝜇𝑖 N 𝑁 ∀𝑥 𝑥∈𝜔𝑖 𝜇是所有样本的均值。 上面讨论的都是在投影前的公式变化,但真正的 J(w)的分子分母都是在投影后计算的。 下面我们看样本点投影后的公式改变: 这两个是第 i 类样本点在某基向量上投影后的均值计算公式。 96
  • 100.μ̃𝑖 = 1 ∑𝑦 𝑁𝑖 𝑦∈𝜔𝑖 𝜇̃ = 1 ∑𝑦 𝑁 ∀𝑦 下面两个是在某基向量上投影后的S𝑤 和S𝐵 𝐶 𝑆̃ ̃𝑖 )(𝑦 − 𝜇̃𝑖 )𝑇 𝑤 = ∑ ∑ (𝑦 − 𝜇 𝑖=1 𝑦∈𝜔𝑖 𝐶 𝑆̃𝐵 = ∑ 𝑁𝑖 (𝜇̃𝑖 − 𝜇̃)(𝜇̃𝑖 − 𝜇̃)𝑇 𝑖=1 其实就是将𝜇换成了𝜇̃。 ̃ 综合各个投影向量(w)上的𝑆̃ 𝑤 和𝑆𝐵 ,更新这两个参数,得到 𝑇 𝑆̃ 𝑤 = 𝑊 𝑆𝑤 𝑊 𝑇 𝑆̃ 𝐵 = 𝑊 𝑆𝐵 𝑊 ̃ W 是基向量矩阵,𝑆̃ 𝑤 是投影后的各个类内部的散列矩阵之和,𝑆𝐵 是投影后各个类中心 相对于全样本中心投影的散列矩阵之和。 回想我们上节的公式 J(w),分子是两类中心距,分母是每个类自己的散列度。现在投影 方向是多维了(好几条直线),分子需要做一些改变,我们不是求两两样本中心距之和(这 个对描述类别间的分散程度没有用) ,而是求每类中心相对于全样本中心的散列度之和。 然而,最后的 J(w)的形式是 𝑆̃ 𝑊 𝑇 𝑆𝐵 𝑊 𝐵 𝐽(𝑤) = = 𝑊 𝑇 𝑆𝑤 𝑊 𝑆̃ 𝑤 由于我们得到的分子分母都是散列矩阵,要将矩阵变成实数,需要取行列式。又因为行 列式的值实际上是矩阵特征值的积,一个特征值可以表示在该特征向量上的发散程度。因此 我们使用行列式来计算(此处我感觉有点牵强,道理不是那么有说服力)。 整个问题又回归为求 J(w)的最大值了,我们固定分母为 1,然后求导,得出最后结果(我 翻查了很多讲义和文章,没有找到求导的过程) S𝐵 𝑤𝑖 = 𝜆𝑆𝑤 𝑤𝑖 与上节得出的结论一样 −1 S𝑤 S𝐵 𝑤𝑖 = 𝜆𝑤𝑖 −1 最后还归结到了求矩阵的特征值上来了。首先求出S𝑤 S𝐵 的特征值,然后取前 K 个特征 向量组成 W 矩阵即可。 97
  • 101.注意:由于S𝐵 中的(𝜇𝑖 − 𝜇) 秩为 1,因此S𝐵 的秩至多为 C(矩阵的秩小于等于各个相加 矩阵的秩的和)。由于知道了前 C-1 个𝜇𝑖 后,最后一个𝜇𝐶 可以有前面的𝜇𝑖 来线性表示,因此S𝐵 的 秩至多为 C-1。那么 K 最大为 C-1,即特征向量最多有 C-1 个。特征值大的对应的特征向量 分割性能最好。 −1 由于S𝑤 S𝐵 不一定是对称阵,因此得到的 K 个特征向量不一定正交,这也是与 PCA 不同 的地方。 4. 实例 将 3 维空间上的球体样本点投影到二维上,W1 相比 W2 能够获得更好的分离效果。 PCA 与 LDA 的降维对比: 98
  • 102.PCA 选择样本点投影具有最大方差的方向,LDA 选择分类性能最好的方向。 LDA 既然叫做线性判别分析,应该具有一定的预测功能,比如新来一个样例 x,如何确 定其类别? 拿二值分来来说,我们可以将其投影到直线上,得到 y,然后看看 y 是否在超过某个阈 值 y0,超过是某一类,否则是另一类。而怎么寻找这个 y0 呢? 看 y = 𝑤𝑇𝑥 根据中心极限定理,独立同分布的随机变量和符合高斯分布,然后利用极大似然估计求 P(y C𝑖 ) 然后用决策理论里的公式来寻找最佳的 y0,详情请参阅 PRML。 这是一种可行但比较繁琐的选取方法,可以看第 7 节(一些问题)来得到简单的答案。 5. 使用 LDA 的一些限制 1、 LDA 至多可生成 C-1 维子空间 LDA 降维后的维度区间在[1,C-1],与原始特征数 n 无关,对于二值分类,最多投影 到 1 维。 2、 LDA 不适合对非高斯分布样本进行降维。 99
  • 103.上图中红色区域表示一类样本,蓝色区域表示另一类,由于是 2 类,所以最多投影到 1 维上。不管在直线上怎么投影,都难使红色点和蓝色点内部凝聚,类间分离。 3、 LDA 在样本分类信息依赖方差而不是均值时,效果不好。 上图中,样本点依靠方差信息进行分类,而不是均值信息。LDA 不能够进行有效分 类,因为 LDA 过度依靠均值信息。 4、 LDA 可能过度拟合数据。 6. LDA 的一些变种 1、 非参数 LDA 非参数 LDA 使用本地信息和 K 临近样本点来计算S𝐵 ,使得S𝐵 是全秩的,这样我们可 以抽取多余 C-1 个特征向量。而且投影后分离效果更好。 2、 正交 LDA 先找到最佳的特征向量,然后找与这个特征向量正交且最大化 fisher 条件的向量。 这种方法也能摆脱 C-1 的限制。 100
  • 104.3、 一般化 LDA 引入了贝叶斯风险等理论 4、 核函数 LDA 将特征x → Φ(x),使用核函数来计算。 7. 一些问题 上面在多值分类中使用的 𝐶 S𝐵 = ∑ 𝑁𝑖 (𝜇𝑖 − 𝜇)(𝜇𝑖 − 𝜇)𝑇 𝑖=1 是带权重的各类样本中心到全样本中心的散列矩阵。如果 C=2(也就是二值分类时)套 用这个公式,不能够得出在二值分类中使用的S𝐵 。 𝐶 S𝐵 = ∑(𝜇1 − 𝜇2 )(𝜇1 − 𝜇2 )𝑇 𝑖=1 因此二值分类和多值分类时求得的S𝐵 会不同,而S𝑊 意义是一致的。 对于二值分类问题,令人惊奇的是最小二乘法和 Fisher 线性判别分析是一致的。 下面我们证明这个结论,并且给出第 4 节提出的 y0 值得选取问题。 (𝑖) (𝑖) (𝑖) + 从 1 到 N), 回顾之前的线性回归,给定 N 个 d 维特征的训练样例𝑥 (𝑖) *𝑥1 , 𝑥2 , … , 𝑥𝑑 (i (𝑖) (𝑖) 每个𝑥 对应一个类标签𝑦 。我们之前令 y=0 表示一类,y=1 表示另一类,现在我们为了证 明最小二乘法和 LDA 的关系,我们需要做一些改变 𝑁 ,样例属于有𝑁1 个元素的类𝐶1 𝑁1 𝑁 y = − ,样例属于有𝑁2 个元素的类𝐶2 { 𝑁2 y= 就是将 0/1 做了值替换。 我们列出最小二乘法公式 𝑁 1 E = ∑(𝑤 𝑇 𝑥 (𝑖) + 𝑤0 − 𝑦 (𝑖) )2 2 𝑖=1 w 和𝑤0 是拟合权重参数。 分别对𝑤0 和 w 求导得 𝑁 ∑(𝑤 𝑇 𝑥 (𝑖) + 𝑤0 − 𝑦 (𝑖) ) = 0 𝑖=1 𝑁 ∑(𝑤 𝑇 𝑥 (𝑖) + 𝑤0 − 𝑦 (𝑖) )𝑥 (𝑖) = 0 𝑖=1 从第一个式子展开可以得到 101
  • 105.𝑁 𝑤 𝑁𝜇 + 𝑁𝑤0 − ∑ 𝑦 (𝑖) = 𝑤 𝑇 𝑁𝜇 + 𝑁𝑤0 − (𝑁1 𝑇 𝑖=1 𝑁 𝑁 − 𝑁2 ) = 0 𝑁1 𝑁2 消元后,得 𝑤0 = −𝑤 𝑇 𝜇 𝑁 1 1 𝜇 = ∑ 𝑥 (𝑖) = (𝑁1 𝜇1 + 𝑁2 𝜇2 ) N N 𝑖=1 可以证明第二个式子展开后和下面的公式等价 (𝑆𝑤 + 𝑁1 𝑁2 𝑆 ) 𝑤 = 𝑁(𝜇1 − 𝜇2 ) 𝑁 𝐵 其中𝑆𝑤 和𝑆𝐵 与二值分类中的公式一样。 由于𝑆𝐵 w = (𝜇1 − 𝜇2 ) ∗ 𝜆w 因此,最后结果仍然是 −1 ( 𝑤 = S𝑤 𝜇1 − 𝜇2 ) 这个过程从几何意义上去理解也就是变形后的线性回归(将类标签重新定义),线性回 归后的直线方向就是二值分类中 LDA 求得的直线方向 w。 好了,我们从改变后的 y 的定义可以看出 y>0 属于类𝐶1 ,y<0 属于类𝐶2 。因此我们可以 选取 y0=0,即如果y(x) = 𝑤 𝑇 𝑥 + 𝑤0 > 0,就是类𝐶1 ,否则是类𝐶2 。 写了好多,挺杂的,还有个 topic 模型也叫做 LDA,不过名字叫做 Latent Dirichlet Allocation, 第二作者就是 Andrew Ng 大牛,最后一个他导师 Jordan 泰斗了,什么时候拜读后再写篇总 结发上来吧。 102
  • 106.因子分析(Factor Analysis) JerryLead csxulijie@gmail.com 2011 年 5 月 11 日 1 问题 之前我们考虑的训练数据中样例x (𝑖) 的个数 m 都远远大于其特征个数 n,这样不管是进 行回归、聚类等都没有太大的问题。然而当训练样例个数 m 太小,甚至 m<107.如果我们想对Σ进一步限制的话,可以假设对角线上的元素都是等值的。 𝛴 = 𝜎 2𝐼 其中 𝑛 𝑚 1 (𝑖) 𝜎2 = ∑ ∑(𝑥𝑗 − 𝜇𝑗 )2 𝑚𝑛 𝑗=1 𝑖=1 也就是上一步对角线上元素的均值,反映到二维高斯分布图上就是椭圆变成圆。 当我们要估计出完整的Σ时,我们需要 m>=n+1 才能保证在最大似然估计下得出的Σ是非 奇异的。然而在上面的任何一种假设限定条件下,只要 m>=2 都可以估计出限定的Σ。 这样做的缺点也是显然易见的,我们认为特征间独立,这个假设太强。接下来,我们给 出一种称为因子分析的方法,使用更多的参数来分析特征间的关系,并且不需要计算一个完 整的Σ。 3 边缘和条件高斯分布 在讨论因子分析之前,先看看多元高斯分布中,条件和边缘高斯分布的求法。这个在后 面因子分析的 EM 推导中有用。 假设 x 是有两个随机向量组成(可以看作是将之前的𝑥 (𝑖) 分成了两部分) 𝑥1 x = [𝑥 ] 2 r s r+s 其中𝑥1 ∈ ℝ ,𝑥2 ∈ ℝ ,那么x ∈ ℝ 。假设 x 服从多元高斯分布x~N(μ, Σ),其中 其中μ1 ∈ ℝr ,μ2 ∈ ℝs ,那么Σ11 ∈ ℝr×r ,Σ12 ∈ ℝr×s ,由于协方差矩阵是对称阵,因此 Σ12 = Σ21 T 。 整体看来𝑥1 和𝑥2 联合分布符合多元高斯分布。 104108.那么只知道联合分布的情况下,如何求得𝑥1 的边缘分布呢?从上面的μ和Σ可以看出, E,𝑥1 - = μ1 , Cov(𝑥1 ) = 𝐸,(𝑥1 − μ1 )(𝑥1 − μ1 )𝑇 - = Σ11 ,下面我们验证第二个结果 由此可见,多元高斯分布的边缘分布仍然是多元高斯分布。也就是说x1 ~N(μ1 , Σ11 )。 上面 Cov(x)里面有趣的是Σ12 ,这个与之前计算协方差的效果不同。之前的协方差矩阵 都是针对一个随机变量(多维向量)来说的,而Σ12 评价的是两个随机向量之间的关系。比 如x1 ={身高,体重},𝑥2 ={性别,收入},那么Σ11 求的是身高与身高,身高与体重,体重与体 重的协方差。而Σ12 求的是身高与性别,身高与收入,体重与性别,体重与收入的协方差, 看起来与之前的大不一样,比较诡异的求法。 上面求的是边缘分布,让我们考虑一下条件分布的问题,也就是x1 x2 的问题。根据多 元高斯分布的定义,x1 x2 ~N(μ1 2 , Σ1 2 )。 且 这是我们接下来计算时需要的公式,这两个公式直接给出,没有推导过程。如果想了解 具体的推导过程,可以参见 Chuong B. Do 写的《Gaussian processes》。 4 因子分析例子 下面通过一个简单例子,来引出因子分析背后的思想。 (𝑖) (𝑖) (𝑖) 因子分析的实质是认为 m 个 n 维特征的训练样例x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 )的产生过程如下: 1、 首先在一个 k 维的空间中按照多元高斯分布生成 m 个z (𝑖) (k 维向量),即 𝑧 (𝑖) ~𝑁(0, 𝐼) 2、 然后存在一个变换矩阵Λ ∈ ℝn×k ,将z (𝑖) 映射到 n 维空间中,即 Λ𝑧 (𝑖) (𝑖) 因为z 的均值是 0,映射后仍然是 0。 105109.3、 然后将Λz (𝑖) 加上一个均值μ(n 维),即 𝜇 + Λ𝑧 (𝑖) 对应的意义是将变换后的Λz (𝑖) (n 维向量)移动到样本x (𝑖) 的中心点μ。 4、 由于真实样例x (𝑖) 与上述模型生成的有误差,因此我们继续加上误差ϵ(n 维向量), 而且ϵ符合多元高斯分布,即 𝜖~𝑁(0, 𝛹) 𝜇 + Λ𝑧 (𝑖) + 𝜖 5、 最后的结果认为是真实的训练样例x (𝑖) 的生成公式 x (𝑖) = 𝜇 + Λ𝑧 (𝑖) + 𝜖 让我们使用一种直观方法来解释上述过程: 假设我们有 m=5 个 2 维的样本点x (𝑖) (两个特征),如下: 那么按照因子分析的理解,样本点的生成过程如下: 1、 我们首先认为在 1 维空间(这里 k=1),存在着按正态分布生成的 m 个点z (i) ,如下 𝑧 (𝑖) 0 均值为 0,方差为 1。 2、 然后使用某个Λ = (a, b)𝑇 将一维的 z 映射到 2 维,图形表示如下: 106110.Λ𝑧 (𝑖) 3、 之后加上μ (μ1 , μ2 )𝑇 ,即将所有点的横坐标移动μ1 ,纵坐标移动μ2 ,将直线移到一 个位置,使得直线过点μ,原始左边轴的原点现在为μ(红色点)。 μ + Λ𝑧 (𝑖) μ(μ1 , μ2 ) 然而,样本点不可能这么规则,在模型上会有一定偏差,因此我们需要将上步生成 的点做一些扰动(误差) ,扰动𝜖~𝑁(0, 𝛹)。 4、 加入扰动后,我们得到黑色样本x (𝑖) 如下: 107111.μ + Λ𝑧 (𝑖) + ϵ μ 5、 其中由于 z 和ϵ的均值都为 0,因此μ也是原始样本点(黑色点)的均值。 由以上的直观分析,我们知道了因子分析其实就是认为高维样本点实际上是由低维样本 点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以使用低维来表示。 5 因子分析模型 上面的过程是从隐含随机变量 z 经过变换和误差扰动来得到观测到的样本点。其中 z 被 称为因子,是低维的。 我们将式子再列一遍如下: 𝑧~𝑁(0, 𝐼) 𝜖~𝑁(0, 𝛹) x = 𝜇 + Λ𝑧 + 𝜖 其中误差ϵ和 z 是独立的。 下面使用的因子分析表示方法是矩阵表示法,在参考资料中给出了一些其他的表示方法, 如果不明白矩阵表示法,可以参考其他资料。 矩阵表示法认为 z 和 x 联合符合多元高斯分布,如下 𝑧 [ ] ~𝑁(𝜇𝑧𝑥 , Σ) 𝑥 求𝜇𝑧𝑥 之前需要求 E[x] E,x- = E,𝜇 + Λ𝑧 + 𝜖= 𝜇 + ΛE,𝑧- + E,𝜖- 108112.=𝜇 我们已知 E[z]=0,因此 ⃑ 𝜇𝑧𝑥 = [0] 𝜇 下一步是计算Σ, 其中𝛴𝑧𝑧 = 𝐶𝑜𝑣(𝑧) = 𝐼 接着求𝛴𝑧𝑥 这个过程中利用了 z 和ϵ独立假设(E,z𝜖 𝑇 - = 𝐸,𝑧-𝐸,𝜖 𝑇 - = 0) 。并将Λ看作已知变量。 接着求𝛴𝑥𝑥 然后得出联合分布的最终形式 从上式中可以看出 x 的边缘分布𝑥~𝑁(𝜇, 𝛬𝛬𝑇 + 𝛹) 那么对样本*𝑥 (𝑖) ; 𝑖 = 1, … , 𝑚+进行最大似然估计 然后对各个参数求偏导数不就得到各个参数的值了么? 可惜我们得不到 closed-form。想想也是,如果能得到,还干嘛将 z 和 x 放在一起求联合 分布呢。根据之前对参数估计的理解,在有隐含变量 z 时,我们可以考虑使用 EM 来进行估 计。 6 因子分析的 EM 估计 我们先来明确一下各个参数,z 是隐含变量,μ, Λ, Ψ是待估参数。 回想 EM 两个步骤: 109113.循环重复直到收敛 { (E 步)对于每一个 i,计算 𝑄𝑖 (𝑧 (𝑖) ) ≔ 𝑝(𝑧 (𝑖) 𝑥 (𝑖) ; 𝜃) (M 步)计算 我们套用一下: (E 步): 𝑄𝑖 (𝑧 (𝑖) ) ≔ 𝑝(𝑧 (𝑖) 𝑥 (𝑖) ; 𝜇, 𝛬, 𝛹) 根据第 3 节的条件分布讨论, 𝑧 (𝑖) 𝑥 (𝑖) ; 𝜇, 𝛬, 𝛹 ~ 𝑁(𝜇𝑧 (𝑖) 𝑥 (𝑖) , 𝛴𝑧 (𝑖) 𝑥 (𝑖) ) 因此 那么根据多元高斯分布公式,得到 (M 步): 直接写要最大化的目标是 其中待估参数是𝜇, 𝛬, 𝛹 下面我们重点求𝛬的估计公式 首先将上式简化为: 这里𝑧 (𝑖) ~Q 𝑖 表示𝑧 (𝑖) 服从Q 𝑖 分布。然后去掉与Λ不相关的项(后两项),得 110114.去掉不相关的前两项后,对Λ进行导, 第一步到第二步利用了 tr a = a(a 是实数时)和 tr AB = tr BA。最后一步利用了 tr 就是求一个矩阵对角线上元素和。 最后让其值为 0,并且化简得 然后得到 到这里我们发现,这个公式有点眼熟,与之前回归中的最小二乘法矩阵形式类似 这里解释一下两者的相似性,我们这里的 x 是 z 的线性函数(包含了一定的噪声)。在 E 步得到 z 的估计后,我们找寻的Λ实际上是 x 和 z 的线性关系。而最小二乘法也是去找特 征和结果直接的线性关系。 到这还没完,我们需要求得括号里面的值 111115.根据我们之前对 z x 的定义,我们知道 第一步根据 z 的条件分布得到,第二步根据Cov(Y) = E,Y𝑌 𝑇 - − 𝐸,𝑌-𝐸,𝑌-𝑇 得到 将上面的结果代入(7)中得到 至此,我们得到了Λ,注意一点是 E[z]和E,zz 𝑇 -的不同,后者需要求 z 的协方差。 其他参数的迭代公式如下: 均值μ在迭代过程中值不变。 然后将Φ上的对角线上元素抽取出来放到对应的Ψ中,就得到了Ψ。 7 总结 根据上面的 EM 的过程,要对样本 X 进行因子分析,只需知道要分解的因子数(z 的维 度)即可。通过 EM,我们能够得到转换矩阵Λ和误差协方差Ψ。 因子分析实际上是降维,在得到各个参数后,可以求得 z。但是 z 的各个参数含义需要 自己去琢磨。 下面从一个 ppt 中摘抄几段话来进一步解释因子分析。 因子分析(factor analysis)是一种数据简化的技术。它通过研究众多变量之间的内部依赖 关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几 个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变 量是不可观测的潜在变量,称为因子。 例如,在企业形象或品牌形象的研究中,消费者可以通过一个有 24 个指标构成的评价 体系,评价百货商场的 24 个方面的优劣。 但消费者主要关心的是三个方面,即商店的环境、商店的服务和商品的价格。因子分析 方法可以通过 24 个变量,找出反映商店环境、商店服务水平和商品价格的三个潜在的因子, 对商店进行综合评价。而这三个公共因子可以表示为: 112116.这里的x𝑖 就是样例 x 的第 i 个分量, μ𝑖 就是μ的第 i 个分量, 𝛼ij 就是Λ的第 i 行第 j 列元素, F𝑖 是 z 的第 i 个分量,𝜀i 是𝜀 (𝑖) 。 称F𝑖 是不可观测的潜在因子。24 个变量共享这三个因子,但是每个变量又有自己的个 性,不被包含的部分𝜀i ,称为特殊因子。 注: 因子分析与回归分析不同,因子分析中的因子是一个比较抽象的概念,而回归因子有 非常明确的实际意义; 主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要 构造因子模型。 主成分分析:原始变量的线性组合表示新的综合变量,即主成分; 因子分析:潜在的假想变量和随机影响变量的线性组合表示原始变量。 PPT 地址http://www.math.zju.edu.cn/webpagenew/uploadfiles/attachfiles/2008123195228555.ppt其他值得参考的文献 An Introduction to Probabilistic Graphical Models by Jordan Chapter 14 113117.增强学习(Reinforcement Learning and Control) JerryLead csxulijie@gmail.com 在之前的讨论中,我们总是给定一个样本 x,然后给或者不给 label y。之后对样本进行 拟合、分类、聚类或者降维等操作。然而对于很多序列决策或者控制问题,很难有这么规则 的样本。比如,四足机器人的控制问题,刚开始都不知道应该让其动那条腿,在移动过程中, 也不知道怎么让机器人自动找到合适的前进方向。 另外如要设计一个下象棋的 AI,每走一步实际上也是一个决策过程,虽然对于简单的 棋有 A*的启发式方法,但在局势复杂时,仍然要让机器向后面多考虑几步后才能决定走哪 一步比较好,因此需要更好的决策方法。 对于这种控制决策问题,有这么一种解决思路。我们设计一个回报函数(reward function), 如果 learning agent(如上面的四足机器人、象棋 AI 程序)在决定一步后,获得了较好的结 果,那么我们给 agent 一些回报(比如回报函数结果为正) ,得到较差的结果,那么回报函 数为负。比如,四足机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退 为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要 找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。 增强学习在很多领域已经获得成功应用,比如自动直升机,机器人控制,手机网络路由, 市场决策,工业控制,高效网页索引等。 接下来,先介绍一下马尔科夫决策过程(MDP,Markov decision processes)。 1. 马尔科夫决策过程 一个马尔科夫决策过程由一个五元组构成(S, A, *𝑃𝑠𝑎 +, 𝛾, 𝑅)  S 表示状态集(states)。(比如,在自动直升机系统中,直升机当前位置坐标组成状态 集)  A 表示一组动作(actions)。 (比如,使用控制杆操纵的直升机飞行方向,让其向前,向 后等)  𝑃𝑠𝑎 是状态转移概率。S 中的一个状态到另一个状态的转变,需要 A 来参与。𝑃𝑠𝑎 表示的 是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况(当前 状态执行 a 后可能跳转到很多状态) 。  𝛾 ∈ ,0,1)是阻尼系数(discount factor) R:'>R:
  • 107.如果我们想对Σ进一步限制的话,可以假设对角线上的元素都是等值的。 𝛴 = 𝜎 2𝐼 其中 𝑛 𝑚 1 (𝑖) 𝜎2 = ∑ ∑(𝑥𝑗 − 𝜇𝑗 )2 𝑚𝑛 𝑗=1 𝑖=1 也就是上一步对角线上元素的均值,反映到二维高斯分布图上就是椭圆变成圆。 当我们要估计出完整的Σ时,我们需要 m>=n+1 才能保证在最大似然估计下得出的Σ是非 奇异的。然而在上面的任何一种假设限定条件下,只要 m>=2 都可以估计出限定的Σ。 这样做的缺点也是显然易见的,我们认为特征间独立,这个假设太强。接下来,我们给 出一种称为因子分析的方法,使用更多的参数来分析特征间的关系,并且不需要计算一个完 整的Σ。 3 边缘和条件高斯分布 在讨论因子分析之前,先看看多元高斯分布中,条件和边缘高斯分布的求法。这个在后 面因子分析的 EM 推导中有用。 假设 x 是有两个随机向量组成(可以看作是将之前的𝑥 (𝑖) 分成了两部分) 𝑥1 x = [𝑥 ] 2 r s r+s 其中𝑥1 ∈ ℝ ,𝑥2 ∈ ℝ ,那么x ∈ ℝ 。假设 x 服从多元高斯分布x~N(μ, Σ),其中 其中μ1 ∈ ℝr ,μ2 ∈ ℝs ,那么Σ11 ∈ ℝr×r ,Σ12 ∈ ℝr×s ,由于协方差矩阵是对称阵,因此 Σ12 = Σ21 T 。 整体看来𝑥1 和𝑥2 联合分布符合多元高斯分布。 104
  • 108.那么只知道联合分布的情况下,如何求得𝑥1 的边缘分布呢?从上面的μ和Σ可以看出, E,𝑥1 - = μ1 , Cov(𝑥1 ) = 𝐸,(𝑥1 − μ1 )(𝑥1 − μ1 )𝑇 - = Σ11 ,下面我们验证第二个结果 由此可见,多元高斯分布的边缘分布仍然是多元高斯分布。也就是说x1 ~N(μ1 , Σ11 )。 上面 Cov(x)里面有趣的是Σ12 ,这个与之前计算协方差的效果不同。之前的协方差矩阵 都是针对一个随机变量(多维向量)来说的,而Σ12 评价的是两个随机向量之间的关系。比 如x1 ={身高,体重},𝑥2 ={性别,收入},那么Σ11 求的是身高与身高,身高与体重,体重与体 重的协方差。而Σ12 求的是身高与性别,身高与收入,体重与性别,体重与收入的协方差, 看起来与之前的大不一样,比较诡异的求法。 上面求的是边缘分布,让我们考虑一下条件分布的问题,也就是x1 x2 的问题。根据多 元高斯分布的定义,x1 x2 ~N(μ1 2 , Σ1 2 )。 且 这是我们接下来计算时需要的公式,这两个公式直接给出,没有推导过程。如果想了解 具体的推导过程,可以参见 Chuong B. Do 写的《Gaussian processes》。 4 因子分析例子 下面通过一个简单例子,来引出因子分析背后的思想。 (𝑖) (𝑖) (𝑖) 因子分析的实质是认为 m 个 n 维特征的训练样例x (𝑖) (𝑥1 , 𝑥2 , … , 𝑥𝑛 )的产生过程如下: 1、 首先在一个 k 维的空间中按照多元高斯分布生成 m 个z (𝑖) (k 维向量),即 𝑧 (𝑖) ~𝑁(0, 𝐼) 2、 然后存在一个变换矩阵Λ ∈ ℝn×k ,将z (𝑖) 映射到 n 维空间中,即 Λ𝑧 (𝑖) (𝑖) 因为z 的均值是 0,映射后仍然是 0。 105
  • 109.3、 然后将Λz (𝑖) 加上一个均值μ(n 维),即 𝜇 + Λ𝑧 (𝑖) 对应的意义是将变换后的Λz (𝑖) (n 维向量)移动到样本x (𝑖) 的中心点μ。 4、 由于真实样例x (𝑖) 与上述模型生成的有误差,因此我们继续加上误差ϵ(n 维向量), 而且ϵ符合多元高斯分布,即 𝜖~𝑁(0, 𝛹) 𝜇 + Λ𝑧 (𝑖) + 𝜖 5、 最后的结果认为是真实的训练样例x (𝑖) 的生成公式 x (𝑖) = 𝜇 + Λ𝑧 (𝑖) + 𝜖 让我们使用一种直观方法来解释上述过程: 假设我们有 m=5 个 2 维的样本点x (𝑖) (两个特征),如下: 那么按照因子分析的理解,样本点的生成过程如下: 1、 我们首先认为在 1 维空间(这里 k=1),存在着按正态分布生成的 m 个点z (i) ,如下 𝑧 (𝑖) 0 均值为 0,方差为 1。 2、 然后使用某个Λ = (a, b)𝑇 将一维的 z 映射到 2 维,图形表示如下: 106
  • 110.Λ𝑧 (𝑖) 3、 之后加上μ (μ1 , μ2 )𝑇 ,即将所有点的横坐标移动μ1 ,纵坐标移动μ2 ,将直线移到一 个位置,使得直线过点μ,原始左边轴的原点现在为μ(红色点)。 μ + Λ𝑧 (𝑖) μ(μ1 , μ2 ) 然而,样本点不可能这么规则,在模型上会有一定偏差,因此我们需要将上步生成 的点做一些扰动(误差) ,扰动𝜖~𝑁(0, 𝛹)。 4、 加入扰动后,我们得到黑色样本x (𝑖) 如下: 107
  • 111.μ + Λ𝑧 (𝑖) + ϵ μ 5、 其中由于 z 和ϵ的均值都为 0,因此μ也是原始样本点(黑色点)的均值。 由以上的直观分析,我们知道了因子分析其实就是认为高维样本点实际上是由低维样本 点经过高斯分布、线性变换、误差扰动生成的,因此高维数据可以使用低维来表示。 5 因子分析模型 上面的过程是从隐含随机变量 z 经过变换和误差扰动来得到观测到的样本点。其中 z 被 称为因子,是低维的。 我们将式子再列一遍如下: 𝑧~𝑁(0, 𝐼) 𝜖~𝑁(0, 𝛹) x = 𝜇 + Λ𝑧 + 𝜖 其中误差ϵ和 z 是独立的。 下面使用的因子分析表示方法是矩阵表示法,在参考资料中给出了一些其他的表示方法, 如果不明白矩阵表示法,可以参考其他资料。 矩阵表示法认为 z 和 x 联合符合多元高斯分布,如下 𝑧 [ ] ~𝑁(𝜇𝑧𝑥 , Σ) 𝑥 求𝜇𝑧𝑥 之前需要求 E[x] E,x- = E,𝜇 + Λ𝑧 + 𝜖= 𝜇 + ΛE,𝑧- + E,𝜖- 108
  • 112.=𝜇 我们已知 E[z]=0,因此 ⃑ 𝜇𝑧𝑥 = [0] 𝜇 下一步是计算Σ, 其中𝛴𝑧𝑧 = 𝐶𝑜𝑣(𝑧) = 𝐼 接着求𝛴𝑧𝑥 这个过程中利用了 z 和ϵ独立假设(E,z𝜖 𝑇 - = 𝐸,𝑧-𝐸,𝜖 𝑇 - = 0) 。并将Λ看作已知变量。 接着求𝛴𝑥𝑥 然后得出联合分布的最终形式 从上式中可以看出 x 的边缘分布𝑥~𝑁(𝜇, 𝛬𝛬𝑇 + 𝛹) 那么对样本*𝑥 (𝑖) ; 𝑖 = 1, … , 𝑚+进行最大似然估计 然后对各个参数求偏导数不就得到各个参数的值了么? 可惜我们得不到 closed-form。想想也是,如果能得到,还干嘛将 z 和 x 放在一起求联合 分布呢。根据之前对参数估计的理解,在有隐含变量 z 时,我们可以考虑使用 EM 来进行估 计。 6 因子分析的 EM 估计 我们先来明确一下各个参数,z 是隐含变量,μ, Λ, Ψ是待估参数。 回想 EM 两个步骤: 109
  • 113.循环重复直到收敛 { (E 步)对于每一个 i,计算 𝑄𝑖 (𝑧 (𝑖) ) ≔ 𝑝(𝑧 (𝑖) 𝑥 (𝑖) ; 𝜃) (M 步)计算 我们套用一下: (E 步): 𝑄𝑖 (𝑧 (𝑖) ) ≔ 𝑝(𝑧 (𝑖) 𝑥 (𝑖) ; 𝜇, 𝛬, 𝛹) 根据第 3 节的条件分布讨论, 𝑧 (𝑖) 𝑥 (𝑖) ; 𝜇, 𝛬, 𝛹 ~ 𝑁(𝜇𝑧 (𝑖) 𝑥 (𝑖) , 𝛴𝑧 (𝑖) 𝑥 (𝑖) ) 因此 那么根据多元高斯分布公式,得到 (M 步): 直接写要最大化的目标是 其中待估参数是𝜇, 𝛬, 𝛹 下面我们重点求𝛬的估计公式 首先将上式简化为: 这里𝑧 (𝑖) ~Q 𝑖 表示𝑧 (𝑖) 服从Q 𝑖 分布。然后去掉与Λ不相关的项(后两项),得 110
  • 114.去掉不相关的前两项后,对Λ进行导, 第一步到第二步利用了 tr a = a(a 是实数时)和 tr AB = tr BA。最后一步利用了 tr 就是求一个矩阵对角线上元素和。 最后让其值为 0,并且化简得 然后得到 到这里我们发现,这个公式有点眼熟,与之前回归中的最小二乘法矩阵形式类似 这里解释一下两者的相似性,我们这里的 x 是 z 的线性函数(包含了一定的噪声)。在 E 步得到 z 的估计后,我们找寻的Λ实际上是 x 和 z 的线性关系。而最小二乘法也是去找特 征和结果直接的线性关系。 到这还没完,我们需要求得括号里面的值 111
  • 115.根据我们之前对 z x 的定义,我们知道 第一步根据 z 的条件分布得到,第二步根据Cov(Y) = E,Y𝑌 𝑇 - − 𝐸,𝑌-𝐸,𝑌-𝑇 得到 将上面的结果代入(7)中得到 至此,我们得到了Λ,注意一点是 E[z]和E,zz 𝑇 -的不同,后者需要求 z 的协方差。 其他参数的迭代公式如下: 均值μ在迭代过程中值不变。 然后将Φ上的对角线上元素抽取出来放到对应的Ψ中,就得到了Ψ。 7 总结 根据上面的 EM 的过程,要对样本 X 进行因子分析,只需知道要分解的因子数(z 的维 度)即可。通过 EM,我们能够得到转换矩阵Λ和误差协方差Ψ。 因子分析实际上是降维,在得到各个参数后,可以求得 z。但是 z 的各个参数含义需要 自己去琢磨。 下面从一个 ppt 中摘抄几段话来进一步解释因子分析。 因子分析(factor analysis)是一种数据简化的技术。它通过研究众多变量之间的内部依赖 关系,探求观测数据中的基本结构,并用少数几个假想变量来表示其基本的数据结构。这几 个假想变量能够反映原来众多变量的主要信息。原始的变量是可观测的显在变量,而假想变 量是不可观测的潜在变量,称为因子。 例如,在企业形象或品牌形象的研究中,消费者可以通过一个有 24 个指标构成的评价 体系,评价百货商场的 24 个方面的优劣。 但消费者主要关心的是三个方面,即商店的环境、商店的服务和商品的价格。因子分析 方法可以通过 24 个变量,找出反映商店环境、商店服务水平和商品价格的三个潜在的因子, 对商店进行综合评价。而这三个公共因子可以表示为: 112
  • 116.这里的x𝑖 就是样例 x 的第 i 个分量, μ𝑖 就是μ的第 i 个分量, 𝛼ij 就是Λ的第 i 行第 j 列元素, F𝑖 是 z 的第 i 个分量,𝜀i 是𝜀 (𝑖) 。 称F𝑖 是不可观测的潜在因子。24 个变量共享这三个因子,但是每个变量又有自己的个 性,不被包含的部分𝜀i ,称为特殊因子。 注: 因子分析与回归分析不同,因子分析中的因子是一个比较抽象的概念,而回归因子有 非常明确的实际意义; 主成分分析分析与因子分析也有不同,主成分分析仅仅是变量变换,而因子分析需要 构造因子模型。 主成分分析:原始变量的线性组合表示新的综合变量,即主成分; 因子分析:潜在的假想变量和随机影响变量的线性组合表示原始变量。 PPT 地址http://www.math.zju.edu.cn/webpagenew/uploadfiles/attachfiles/2008123195228555.ppt其他值得参考的文献 An Introduction to Probabilistic Graphical Models by Jordan Chapter 14 113
  • 117.增强学习(Reinforcement Learning and Control) JerryLead csxulijie@gmail.com 在之前的讨论中,我们总是给定一个样本 x,然后给或者不给 label y。之后对样本进行 拟合、分类、聚类或者降维等操作。然而对于很多序列决策或者控制问题,很难有这么规则 的样本。比如,四足机器人的控制问题,刚开始都不知道应该让其动那条腿,在移动过程中, 也不知道怎么让机器人自动找到合适的前进方向。 另外如要设计一个下象棋的 AI,每走一步实际上也是一个决策过程,虽然对于简单的 棋有 A*的启发式方法,但在局势复杂时,仍然要让机器向后面多考虑几步后才能决定走哪 一步比较好,因此需要更好的决策方法。 对于这种控制决策问题,有这么一种解决思路。我们设计一个回报函数(reward function), 如果 learning agent(如上面的四足机器人、象棋 AI 程序)在决定一步后,获得了较好的结 果,那么我们给 agent 一些回报(比如回报函数结果为正) ,得到较差的结果,那么回报函 数为负。比如,四足机器人,如果他向前走了一步(接近目标),那么回报函数为正,后退 为负。如果我们能够对每一步进行评价,得到相应的回报函数,那么就好办了,我们只需要 找到一条回报值最大的路径(每步的回报之和最大),就认为是最佳的路径。 增强学习在很多领域已经获得成功应用,比如自动直升机,机器人控制,手机网络路由, 市场决策,工业控制,高效网页索引等。 接下来,先介绍一下马尔科夫决策过程(MDP,Markov decision processes)。 1. 马尔科夫决策过程 一个马尔科夫决策过程由一个五元组构成(S, A, *𝑃𝑠𝑎 +, 𝛾, 𝑅)  S 表示状态集(states)。(比如,在自动直升机系统中,直升机当前位置坐标组成状态 集)  A 表示一组动作(actions)。 (比如,使用控制杆操纵的直升机飞行方向,让其向前,向 后等)  𝑃𝑠𝑎 是状态转移概率。S 中的一个状态到另一个状态的转变,需要 A 来参与。𝑃𝑠𝑎 表示的 是在当前s ∈ S状态下,经过a ∈ A作用后,会转移到的其他状态的概率分布情况(当前 状态执行 a 后可能跳转到很多状态) 。  𝛾 ∈ ,0,1)是阻尼系数(discount factor) R:'>R: