前言
本期介绍的是 《Machine Learning with R, tidyverse, and mlr》
一书的第五章—— 判别分析(discriminant analysis)。 判别分析是解决分类问题的多种算法的总称,通过将预测变量组合成新的变量来找到预测变量的新表示(必须是连续的),从而最好地区分类。这种思想和一些降维算法有些相似。
1. 判别分析简介
假设我们要根据病人的基因表达来预测他们对药物的反应,测量 1000 个基因表达水平(即 1000 个预测变量),记录它们对药物的反应是积极的(Pos
)、消极的(Neg
),还是完全没有反应(None
)(一个三分类问题)。
一个有多种预测变量的数据集可能有以下问题:
- 数据难以探索和绘制;
- 可能有许多预测变量没有或很少包含预测信息;
- Curse of dimensionality。
1.1 判别函数
在这个例子中,同时绘制 1000 个基因表达水平并解释类之间的差异性或相似性几乎是不可能的。但是,我们可以使用判别分析来获取所有信息,并将其压缩成一个可管理数量的判别函数,每个判别函数都是原始变量的组合。 也就是说,判别分析将预测变量作为输入,并找到这些变量的一种新的、低维的表示方式(即判别函数),以最大化类之间的分离。过程如 Fig 1
所示。
Fig 1. 判别分析降维过程
判别函数的数量通常为:
- 类个数减 1;
- 预测变量的个数;
取二者更小值。
本例中,包含在这 1000 个预测变量中的信息将被压缩成两个变量(三个类 -1)。现在就可以很容易地将这两个新变量画在一起,并查看这三个类是如何分离的。
包括含有很少或没有预测信息的预测变量会增加噪声,这会对学习的模型性能产生负面影响。当判别分析算法学习它们的判别函数时,就会赋予预测信息较大的预测变量更大的权重,从而更好地判别类。含有很少或没有预测信息的预测变量被赋予较少的权重,对最终模型的贡献也较少。
注:尽管可以通过设置权重减轻弱预测变量的影响,但判别分析模型在进行特征选择(删除弱预测变量)后仍然会表现得更好。
1.2 Curse of dimensionality
Curse of dimensionality
在处理高维数据(包含许多预测变量的数据)时会出现问题。随着特征空间(预测变量所有可能组合的集合)的变大,该空间中的数据就会变得稀疏。更简单地说,对于一个数据集中相同数量的情况,若稀疏地增加特征空间维数,那么这些实例之间的距离就会越来越远,它们之间的空隙就会越来越大,如 Fig 2
所示。
Fig 2. 随着维度的增加,数据变得更加稀疏
这种维数增加的后果是,特征空间的某个区域可能只有很少的实例来占据,因此算法更有可能从"例外的"实例中学习。在数据中。当算法从例外实例中学习时,会导致模型的过度拟合,这就是 curse of dimensionality
。
然而,这并不是说预测变量越多就越不好。对于大多数问题,添加有预测价值的预测变量可以提高模型的预测精度。通过实行特征选择和降维可以进一步防范 curse of dimensionality
造成的过拟合。
判别分析两种最基本和常用的算法是:
- 线性判别分析
linear discriminant analysis (LDA)
- 二次判别分析
quadratic discriminant analysis (QDA)
LDA
和 QDA
分别学习类之间的线性(直线)和曲线决策边界.
2. LDA
2.1 二分类问题
假设我们要用两个预测变量来分离数据中的两个类,如 Fig 3
所示。LDA 的目标是学习一种新的数据表示方式,将每个类的质心分开,同时保持类内方差尽可能低。质心就是特征空间中所有预测因子的均值(一个均值向量)的点。然后,LDA 找到一条穿过原点的线,进行投影并同时:
- 最大化关于这条线的类质心之间的差异
- 最小化关于这条线的类内方差
即通过最大化
来选择合适的直线。分子是类均值之差,分母是直线上每个类的方差之和。
Fig 3. 二维下判别分析
为什么不简单地找出使质心间距最大化的直线呢?因为最好地分离质心的这条线并不能保证不同类最好地分离,如 Fig 4 所示
。
Fig 4. 是否仅使质心间距最大化对比
- 左图中,绘制的一条直线只是将两个类的质心分离最大化,当将数据投影到这条直线上时,类并没有完全分离,因为相对较高的方差意味着它们彼此重叠。
- 右图中,直线试图最大化质心距离,同时最小化沿该线的每个类的方差。这导致质心稍微靠近一些,但方差小得多,这样两个类是完全分开的。
这条直线称为判别函数,它是原始变量的线性组合。例如,一个判别函数可以用如下公式来描述:
判别函数是变量的线性组合,每个变量乘以的值称为正则判别函数系数,每个变量的权重为它的正则判别函数系数对类分离的贡献。
2.2 多分类问题
2.2.1 两个预测变量
判别分析可以处理两类以上的分类问题,但在这种情况下,它如何学习得到最佳直线呢? 它不是试图最大化类质心之间的分离,而是最大化每个类质心和数据的大质心(所有数据的质心,忽略类成员关系)之间的分离。如 Fig 5
所示,每个类质心用三角表示,数据大质心用十字表示。
Fig 5. LDA 处理三分类
LDA 首先找出最能将类质心与大质心分离并使各类的方差最小的线,第二条直线与第一条正交。然后,数据被投影到这些直线上,这样,每个实例都会得到每个判别函数的判别分数(沿着新直线的值)。这些判别分数可以相互作图,形成原始数据的新表示形式。
2.2.2 多个预测变量
Fig 6. LDA 多分类多个预测变量问题
Fig 6
所示是三个预测变量分三类的情况。首先,LDA 求出的判别函数使各类质心与大质心之间的距离最大化,同时使各类质心之间的方差最小。接下来,LDA 找到第二个判别函数(与第一个正交),它也试图在最小化方差的同时最大化分离质心(这里读者们可以思考一下为什么只需要两个判别函数)。通过在数据中获取每个实例的判别分数,我们可以只在两个维度上绘制数据。
但如果不是仅仅是三个预测变量,比如有 1000个(前面例子),LDA 将把所有预测变量信息压缩到两个变量中。
3. QDA
通常情况下类有不同的协方差,此时 QDA 往往比 LDA 表现得更好。QDA 不是学习直线,而是学习曲线。因此,它也非常适合于一类由非线性决策边界最好分离的情况。
Fig 7. 两个类具有相等的协方差(变量 1 和变量 2 之间的关系对两个类来说是相同的)和不等的协方差的例子
Fig 7
左图中两个类有相等的协方差,因为对于每个类来说,变量 1 增加,变量 2 减少的数量相同。在这种情况下,LDA 和 QDA 会找到相似的判别函数,尽管 LDA 由于灵活性较差比 QDA 更不容易出现过拟合。Fig 7
右图中,两个类的协方差不同。在这种情况下,QDA 会找到一个曲线判别函数,当数据被投影到它上面时,它会比线性判别函数在分离类方面做得更好。
4. 使用 LDA 和 QDA 进行预测
假设此时已经构造出判别函数并将高维数据压缩成少量的判别函数。LDA 和 QDA 如何利用这些信息对新的观测结果进行分类? 这里将会使用一个非常重要的统计定理—— Baye’s rule
。
Baye’s rule
可以告诉我们已知数据中任何一个实例的预测变量的值,这个实例属于 k 类的概率是多少,即 :
。通常要得到 较为困难,更多使用
- : 先验,为数据集中实例属于类 k 的比例
- : 似然,将数据投影到它们的判别函数上,再估计它们的概率密度。判别分析假设数据是正态分布的,因此它通过将正态分布拟合到每一类,并结合判别函数来估计概率密度。
Fig 8. 假设每个类的概率密度是正态分布的,每个分布的中心是类的质心
Fig 8
展示的是有一个和两个判别函数时估计所得的概率密度图。可以看到,沿着判别函数直线靠近类质心的实例概率密度高,而远离类质心的实例概率密度低。
一旦得到先验和概率密度,便可以根据 Baye’s rule
对每一类的后验概率 进行估计,概率最高的一类就是这个实例的分类。