当前位置:网站首页 > 技术博客 > 正文

统计学分类数据分析



本文参考书籍《An Introduction to Statistical Learning》[1]

第3章讨论的线性回归模型假设响应变量Y是定量的,但是在许多情况下,相应变量是定性的(qualitative)。例如,眼睛的颜色是定性的,取值为蓝色,棕色或绿色。 通常,定性变量被称为分类(categorical)变量,而我们将互换使用这些术语。 在本篇文章中,我们研究预测定性反应的方法,该过程称为分类(classification)。 预测观测结果的定性响应可以称为对该观测结果进行分类,因为它涉及将观测结果分配给一个类别或类别。 另一方面,用于分类的方法通常首先预测定性变量的每个类别的概率,作为进行分类的基础。 从这个意义上讲,它们的行为也类似于回归方法。

现实中有许多可能的分类技术或分类器(classifiers),可以用来预测定性反应。 我们在2.1.5和2.2.3节中谈到了其中一些。 在本篇文章中,我们会讨论三种最广泛使用的分类器:逻辑回归(logistic regression)线性判别分析(linear discriminant analysis)K近邻(K-nearest neighbors)。 在后面的文章中,我们将讨论更多计算机密集型方法,例如广义加性模型(第7篇文章),树模型,随机森林和Boosting(第8篇文章)以及支持向量机(第9篇文章)。

分类问题经常发生,甚至可能比回归问题更严重,其中包括以下示例:

  1. 一个人到达急诊室时会出现一系列症状,这可能归因于三种医疗状况中的一种,那么这个人的具体症状属于哪一类呢?
  2. 在线银行服务必须能够根据用户的IP地址,过去的交易历史记录等来确定在网站上进行的交易是否是欺诈性的。
  3. 根据许多患有和不患有某种疾病的患者的DNA序列数据,生物学家想弄清楚哪些DNA突变有害(引起疾病),哪些不是有害的。

就像在回归设置中一样,在分类设置中,我们有一组训练观测值( x_{1}y_{1} ),...,( x_{n}y_{n} )可用于构建分类器,我们希望我们的分类器不仅在训练数据上而且在未用于训练分类器的测试观察结果上都表现良好。

图4.1 违约数据集。 左:一些人的年收入和每月信用卡余额,其中拖欠其信用卡付款的个人显示为橙色,而未拖欠信用卡的那些显示为蓝色。 中:作为默认状态的函数的平衡箱形图。 右:收入的盒装图作为默认状态的函数。

在本篇文章中,我们将说明使用模拟的默认数据集进行分类的概念。我们有兴趣根据年收入和每月信用卡余额预测个人是否会拖欠其信用卡付款,其数据集显示在图4.1中。我们绘制了10 000个人的子集的年收入和每月信用卡余额,图4.1的左侧面板显示在给定月份违约的个人为橙色,而没有违约的个人为蓝色,(总的违约率约为3%,因此我们只绘制了一部分未违约的个人)从图中可以看出,违约的个人往往比未违约的个人拥有更高的信用卡余额,需要注意的是,这里的信用卡余额(credit card balance)指的是贷方余额,也就是个人欠银行钱的数目。在图4.1的右侧面板中,显示了两对箱形图。第一个显示了二进制默认变量分配的余额。第二个是类似的收入图。在本篇文章中,我们将学习如何建立模型来预测余额( X_{1} )和收入( X_{2} )的任何给定值的违约( Y )。由于 Y 不是定量的,因此不适合使用第3篇文章中的简单线性回归模型。

值得注意的是,图4.1显示了预测变量与响应默认值之间非常明显的关系,而在大多数实际应用中,预测变量和响应之间的关系将不会那么牢固。 但是,为了说明本篇文章讨论的分类过程,我们会继续使用这一个示例,其中预测变量和响应之间的关系会有些夸大。

我们已经指出,对于定性反应,线性回归是不合适的,为什么线性回归会不合适呢?

假设我们试图根据患者的症状来预测急诊室中患者的病情,在此简化示例中,就存在三种可能的诊断:中风(stroke),药物过量(drug overdose)和癫痫发作(epileptic seizure)。 我们可以考虑将这些值编码为定量响应变量Y,如下所示:

使用此编码,最小二乘可用于拟合线性回归模型,以基于一组预测变量 X_{1} ,..., X_{p} 来预测 Y 。不幸的是,这种编码暗示了对结果的排序,使中风和癫痫发作之间的药物过量之间存在差异,并坚持认为中风和药物过量之间的差异与药物过量和癫痫发作之间的差异相同,而在实践中,这种差异并不需要特殊的理由。 例如,人们可以选择如下本质相同且合理的编码:

而这意味着这三个条件之间的关系完全不同,因为这些编码中的每一个都会产生根本不同的线性模型,所以最终将导致对测试观测的不同预测集。

如果响应变量的值确实具有自然顺序,例如轻度,中度和严重度,并且我们认为轻度和中度之间的差距与中度和严重度之间的差距相似,则采用1、2、3编码是合理的。 不幸的是,通常没有自然的方法将具有两个以上水平的定性响应变量转换为可以进行线性回归的定量响应。

对于二元/两级(binary)定性响应,情况要好一些。 例如,患者的医疗状况可能只有两种可能性:中风和药物过量。 然后,我们可能会使用第3.3.1节中的伪变量(dummy variable)方法来对响应进行编码,如下所示:

然后,我们可以对这个二元响应进行线性回归,如果 	ilde{Y}>0.5 ,则可以预测药物过量,否则是中风。 在二进制情况下,不难证明即使我们翻转了上面的编码,线性回归也会产生相同的最终预测。

图4.2 使用默认数据进行分类。 左:使用线性回归估算的违约概率,某些估计的概率为负值!橙色的勾表示默认编码的0/1值(否或是)。 右:使用Logistic回归预测的违约概率,所有概率都在0到1之间。

对于具有上述0/1编码性质的二进制响应,最小二乘回归确实是有意义的。 可以证明 X	ilde{beta} 实际上是使用线性回归获得的结果Pr(drug overdose| X)的估计值。但是,如果使用线性回归,则我们的某些估计值可能不在[0,1]区间之内(参见图4.2),这使得它们很难解释为概率! 然而,这些预测提供了排序,可以解释为粗略的概率估计。奇怪的是,如果我们使用线性回归来预测二进制响应,我们得到的分类将与我们在4.4节中讨论的线性判别分析(LDA)过程相同。

对于违约数据,逻辑回归模型模拟了违约概率,例如,给定余额的违约概率可以写为如下形式:

我们缩写为p(balance)的Pr(default = Yes | balance)的值将在0到1之间,而对于任何给定的balance值,我们可以对违约值进行预测。例如,对于p(balance)> 0.5的任何个人,可以预测default = Yes;或者,如果公司希望保守地预测有违约风险的个人,则他们可以选择使用较低的阈值,例如p(balance)> 0.1。

4.3.1 Logistic模型

我们应该如何建模分析p(X)= Pr(Y = 1 | X)和X之间的关系呢?(为方便起见,我们将通用的0/1编码用于响应)在4.2节中,我们将探讨使用线性回归模型来表示这些概率,如下所示:

如果我们使用使用余额预测default=Yes,那么我们将获得图4.2左侧面板中所示的模型。 在这里,我们看到了这种方法的问题:对于接近零的余额,我们预测出现违约的可能性; 如果我们要预测非常大的余额,我们将得到大于1的值。这些预测是不明智的,因为无论信用卡余额如何,违约的真实概率都必须介于0和1之间。任何时候只要一条直线适合于编码为0或1的二进制响应,原则上我们总是可以预测某些X值的p(X)<0以及其他X值的p(X)> 1(除非X的范围是有限的)。

为避免此问题,我们必须使用为所有X值提供介于0和1之间的输出的函数p(X)来进行建模,许多函数都满足此描述,在逻辑回归中,我们可以使用逻辑函数(logistic function),其形式如下:

为了拟合模型(4.2),我们可以使用被称为最大似然(maximum likelihood)的方法,我们将在下一部分中进行讨论。图4.2的右侧面板说明了逻辑回归模型对默认数据的拟合,需要注意的是,对于低余额,我们现在预测违约概率接近但永远不会为0;同样,对于高余额,我们预测默认概率接近但永远不会超过1。逻辑函数将始终生成这种形式的S形曲线,因此,不管X的值如何,我们都将获得明智的预测。我们还可以看到,与左侧图中的线性回归模型相比,逻辑模型更能够捕获概率范围。 两种情况下的平均拟合概率为0.0333(对训练数据进行平均),与数据集中违约者的总体比例相同。

经过对(4.2)的一些改进,我们可以得到如下形式的数学等式:

p(X)/ [1-p(X)]的数值结果称为几率(odds),可以取0到∞之间的任何值,接近0和∞的几率值分别表示违约概率非常低和非常高。例如,由于p(X)= 0.2意味着平均赔率是0.2/(1-0.2)=1/4,所以平均5人中有1人的几率是1/4。 同样,平均每10个人中就有9个人的赔率是9,因为p(X)= 0.9意味着赔率是0.9/(1-0.9)=9。传统上用几率代替赛马概率,是因为几率与正确的投注策略相关。

通过取(4.3)两侧的对数,我们可以得出如下所示的等式:

左侧称为对数(log-odds or logit),我们看到逻辑回归模型(4.2)的logit在X中是线性的。

回顾第3篇文章,在线性回归模型中, beta_{1} 可以给出 Y 的平均变化,该值与 X 的单位增加有关。相反,在逻辑回归模型中,将 X 增加1个单位,则对数比值将变为 beta_{1} (4.4), 或等效地将几率乘以 e^{beta_{1}} (4.3)。 但是,由于(4.2)中的p(X)和X之间的关系不是一条直线,因此 beta_{1} 并不对应于与 X 中的一个单位增加相关的p(X)的变化。 X 中的一个单位变化引起的变化将取决于 X 的当前值。但是无论 X 的值如何,如果 beta_{1} 为正,则 X 的增加将与p(X)的增加相关;如果 beta_{1} 为负,则增加 X 将与减少p(X)相关联。通过检查还可以看出p(X)与 X 之间没有直线关系,以及 X 中每单位变化的p(X)变化率取决于 X 的当前值这一事实,而这个事实可以通过图4.2右侧面板看出。

4.3.2 估计回归系数

(4.2)中的系数 beta_{0}beta_{1} 是未知的,因此必须根据可用的训练数据进行估算。在第三篇文章中,我们使用了最小二乘法来估计未知的线性回归系数。尽管我们可以使用(非线性)最小二乘法来拟合模型(4.4),但是最好采用最大似然法,因为它具有更好的统计特性。使用最大似然来拟合逻辑回归模型的基本直觉如下:我们寻求 beta_{0}beta_{1} 的估计值,以使每个人使用(4.2)的违约的预测概率 	ilde{p}(x_{i}) 尽可能接近于个人观察到的默认状态。换句话说,我们想要尝试找到 	ilde{beta}_{0}	ilde{beta}_{1} ,以便将这些估计值插入到(4.2)中给出的p(X)的模型中,对于所有违约的个人,得出的数字都接近1,而接近对于所有没有违约的个人,则为0。我们可以使用称为似然函数(likelihood function)的数学公式将这种直觉形式化:

选择估计值 	ilde{beta}_{0}	ilde{beta}_{1} 以使该似然函数最大化。

最大似然是一种非常通用的方法,可用于拟合本系列文章中讨论的许多非线性模型,在线性回归设置中,最小二乘法实际上是最大似然的一种特殊情况。最大似然的数学细节超出了本系列文章的范围,但是,一般而言,使用统计软件包(例如R)可以很容易地拟合logistic回归和其他模型,因此我们不必担心最大似然拟合过程的细节。= 0.0055

表4.1 对于违约数据,使用了余额预测违约概率的逻辑回归模型的估计系数,即余额增加一单位会导致默认的对数赔率增加0.0055单位。

表4.1显示了通过对Logistic回归模型拟合Default数据,从而可以使用余额预测Default = Yes的概率而得出的系数估计和相关信息。 我们看到 	ilde{beta}_{1}= 0.0055 ; 这表明余额增加与违约概率的增加有关,确切地说,一单位月的增加与违约的对数赔率增加0.0055单位相关。

表4.1中所示的逻辑回归输出的许多方面与第3篇文章中的线性回归输出相似,例如,我们可以通过计算其标准误差来测量系数估计的准确性。在线性回归输出中,表4.1中的z统计量与t统计量起着相同的作用。例如,与 beta_{1} 相关的z统计量等于 	ilde{beta}_{1}/SE(	ilde{beta}_{1}) ,因此z统计量的较大(绝对)值表示反对虚假设 H_{0}beta_{1}=0 的证据。该虚假假设意味着 p(X)=frac{e^{beta_{0}}}{1+e^{beta_{0}}} ,换句话说,违约概率确实是由于表4.1中与余额相关的p值很小,因此我们可以拒绝 H_{0} 。换句话说,我们得出结论,信用卡余额与违约概率之间确实存在关联。表4.1中的估计截距通常是无关紧要的;其主要目的是将平均拟合概率调整为数据中拟合概率的比例。

4.3.3 做出预测

一旦系数被估计,对于任何给定的信用卡余额,计算违约概率是一件简单的事情。例如,使用表4.1中给出的系数估计,我们预测余额为$1,000的个人的默认概率为如下:

其计算结果低于1%,相反,对于余额为$ 2000的个人,预计的违约概率要高得多,等于0.586或58.6%。

表4.2 对于违约数据,是逻辑回归模型的估计系数,该系数使用学生状态预测违约概率。 学生状态编码为虚拟变量,学生的值为1,非学生的值为0,并由表中的变量Student [Yes]表示。

可以使用3.3.1节中的虚拟变量方法将定性预测因子与逻辑回归模型结合使用。例如,默认数据集包含定性变量student。为了拟合模型,我们只需创建一个虚拟变量,该变量的值对于学生为1,对于非学生为0。 表4.2列出了根据学生状态预测违约概率而得出的逻辑回归模型,与虚拟变量关联的系数为正,并且关联的p值在统计上有意义。这表明与非学生相比,学生倾向于具有更高的违约概率:

4.3.4 多元Logistic回归

现在我们考虑使用多重预测器预测二进制响应的问题。 与第3篇文章中从简单线性回归到多元线性回归的扩展类似,我们可以将(4.4)概括如下形式:

其中X =( X_{1} ,..., X_{p} )是p个预测变量,公式4.6可以重写为如下形式:

就像在4.3.2节中一样,我们使用最大似然法来估计 beta_{0}beta_{1} ,..., beta_{p}

表4.3 对于默认数据,是使用余额,收入和学生状态预测违约概率的逻辑回归模型的估计系数。 学生状态被编码为虚拟变量Student [Yes],学生的值为1,非学生的值为0。为了拟合该模型,收入以千美元为单位。

表4.3显示了使用余额,收入(千美元)和学生身份来预测违约概率的逻辑回归模型的系数估计。这里有一个令人惊讶的结果,与余额相关的p值和学生状态虚拟变量的p值很小,表明这些变量中的每一个都与违约概率相关。但是,虚拟变量的系数为负,表明学生比非学生更容易违约。相反,表4.2中虚拟变量的系数为正。是什么导致了学生身份在表4.2中导致了违约概率的增加,而在表4.3中导致了违约率的降低?

图4.3 混淆默认数据。左:显示学生(橙色)和非学生(蓝色)的默认费率,实线显示默认比率作为余额的函数,而水平虚线显示整体默认比率。右:显示了学生(橙色)和非学生(蓝色)的平衡箱形图。

图4.3的左侧面板显示了这种明显的悖论。橙色和蓝色实线分别显示了学生和非学生的平均违约率,它们都是信用卡余额的函数。多元逻辑回归中学生的负系数表示,对于固定的(a fixed value)余额和收入值,学生比非学生更不容易违约。确实,我们从图4.3的左侧面板观察到,对于每个余额值,学生的违约率都等于或低于非学生的违约率。但是,图底部附近的水平虚线显示了在所有余额和收入值上平均的学生和非学生违约率,这表明了相反的效果:总体学生违约率高于非学生违约率。因此,在表4.2中所示的单变量逻辑回归输出中,学生的系数为正。

图4.3的右侧面板提供了对此差异的说明,即学生和信用卡余额变量是相关的。学生倾向于承担更高的债务水平,而这又与更高的违约概率相关。换句话说,学生更有可能拥有较大的信用卡余额,正如我们从图4.3的左侧面板中所知道的,这往往与较高的违约率相关。因此,即使具有给定信用卡余额的单个学生比不具有相同信用卡余额的非学生倾向于出现更低的违约概率,但总体上,学生倾向于具有更高的信用卡余额这一事实意味着,总体而言,学生倾向于违约率要高于非学生。对于试图确定向谁提供信用的信用卡公司,这是一个重要的区别。如果没有关于学生信用卡余额的信息,则学生比非学生要冒险;但是,与信用卡余额相同(with the same credit card balance)的非学生相比,该学生的风险较小。

这个简单的示例说明了在其他预测变量也可能相关的情况下,与仅执行单个预测变量进行回归相关的危险和微妙之处。与线性回归设置一样,使用一个预测变量获得的结果可能与使用多个预测变量获得的结果完全不同,尤其是当这些预测变量之间存在相关性时。 通常,将图4.3中所示的现象称为混杂(confounding)

通过将表4.3中回归系数的估计值代入(4.7),我们可以做出预测。例如,信用卡余额为$1500且收入为$40,000的学生的估计违约概率如下:

具有相同余额和收入的非学生的估计违约概率如下:

在这里,我们将表4.3中的收入系数估算值乘以40,而不是40,000,因为在该表中该模型适合以$1,000为单位度量的收入。

4.3.5 大于2个响应类别的Logistic回归

有时我们希望对具有两个以上类的响应变量进行分类,例如,在第4.2节中,我们将急诊室的医疗状况分为三类:中风,药物过量,癫痫发作。在这种情况下,我们希望对Pr(Y =stroke| X)和Pr(Y =drug overdose)| X)进行建模 ,其余Pr(Y =epileptic seizure| X)= 1- Pr(Y =stroke| X)-Pr(Y =drug overdose| X)。 上一节中讨论的两类逻辑回归模型具有多类扩展,但是在实践中,它们往往不会经常使用。因此,我们在这里不讨论多类逻辑回归的详细信息,而只是注意这种方法是可行的,并且该方法可以在R中使用。

4.4 线性判别分析

逻辑回归涉及使用逻辑函数直接对Pr(Y = k | X = x)建模,对于两个响应类别,可以由(4.7)给出。用统计术语来说,给定预测变量X时,我们对响应Y的条件分布进行建模。现在,假设我们考虑一种替代的,不太直接的方法来估计这些概率。在这种替代方法中,我们分别对每个响应类别(即给定的Y)中的预测变量X的分布进行建模,然后使用贝叶斯定理将这些预测因子翻转为Pr(Y = k | X = x)的估计值。 当这些分布区域假定为正态分布时,结果表明该模型在形式上与逻辑回归非常相似。

当我们进行逻辑回归时,为什么需要另一种方法?原因有很多:

  • 当这些类很好地分开时,逻辑回归模型的参数估计出乎意料地不稳定,而线性判别分析不会遇到此问题。
  • 如果n很小并且每个类别中的预测变量X的分布都近似正态,则线性判别模型比逻辑回归模型更稳定。
  • 如第4.3.5节所述,当我们有两个以上的响应类别时,线性判别分析很受欢迎。

4.4.1 使用贝叶斯定理进行分类

假设我们希望将观察分类为K个类别之一,其中K≥2。换句话说,定性响应变量Y可以取K个可能的不同且无序的值。我们令 pi_{k} 代表随机选择的观测值来自第k类的总体或先验概率(prior probability);这是给定观察值与响应变量Y的第k个类别相关联的概率。令 f_{k}(x)=Pr(X=x|Y=k) 表示来自第k类观测值的X的密度函数(density function)。 换句话说,如果第k类的观测值很有可能具有X≈x,则 f_{k}(x) 相对较大;如果第k类的观测值不太可能具有X,则 f_{k}(x) 较小。由贝叶斯定理(Bayes’ theorem)我们可以得到如下等式:

根据我们前面的表示法,我们将使用缩写 p_{k}(X)=Pr(Y=k|X) ,这表明我们可以像在4.3.1节中那样直接计算 p_{k}(X) ,而不是直接将 pi_{k}f_{k}(X) 的估计值插入(4.10)中。 通常,如果我们从总体中随机获得Y,则这时估计 pi_{k} 较为容易:我们只需计算属于第k类的训练观测值的分数即可。但是,除非我们假设这些密度的简单形式,否则估计 f_{k}(X) 往往更具挑战性。 我们将 p_{k}(x) 称为观察值X = x属于第k类的后验概率(posterior probability)。也就是说,在给定观察值的预测值的情况下,观察值属于第k类的概率。

从第二篇文章我们知道,贝叶斯分类器将观察分类为 p_{k}(x) 最大的分类,在所有分类器中错误率最低。(当然,只有正确指定了(4.10)中的所有术语,这才是正确的)因此,如果我们可以找到一种估计 f_{k}(X) 的方法,那么我们可以开发一个近似贝叶斯分类器的分类器,这种方法是以下各节的主题。

4.4.2 p = 1的线性判别分析

现在,假设p = 1,也就是说,我们只有一个预测变量,我们想获得 f_{k}(x) 的估计值,我们可以将其插入(4.10)以估计 p_{k}(x) 。然后,我们将观察值分类为 p_{k}(x) 最大的类,为了估计 f_{k}(x) ,我们将首先对其形式进行一些假设。

假设我们假设 f_{k}(x)正态的或高斯的(normal or Gaussian),在一维设置中,正态分布密度采用以下形式:

其中 mu_{k}sigma_{k}^{2} 是第k类的均值和方差参数。现在,让我们进一步假设 sigma_{1}^{2}=……=sigma_{1}^{k} :也就是说,所有K类都有一个共享方差项,为简单起见,我们可以表示 由 sigma^{2} ,将(4.11)插入(4.10),我们可以找到如下等式:

(请注意,在(4.12)中, pi_{k} 表示观察属于第k类的先验概率,不要与数学常数π≈3.14159混淆)贝叶斯分类器涉及将观察X分配给X=x(4.12)最大。取(4.12)的对数并重新排列术语,不难证明这等同于将观测值分配给如下等式最大:

例如,如果K = 2且 pi_{1}=pi_{2} ,那么如果 2x(mu_{1}-mu_{2})>mu_{1}^{2}-mu_{2}^{2} 则贝叶斯分类器将观察值分配给类别1,否则为类别2。 在这种情况下,贝叶斯决策边界对应于如下等式:

图4.4 左:显示了两个一维正态分布密度函数,垂直虚线表示贝叶斯决策边界。 右:从两个类别的每一个中提取20个观测值,并以直方图显示,其中贝叶斯决策边界再次显示为垂直虚线,实线表示从训练数据估计的LDA决策边界。

图4.4的左侧面板中显示了一个示例,显示的两个正态分布密度函数 f_{1}(x)f_{2}(x) 代表两个不同的类,这两个密度函数的均值和方差参数分别为 mu_{1} =-1.25, mu_{2} = 1.25和 sigma_{1}^{2} = sigma_{2}^{2} =1。两个密度重叠,因此,假设X = x,则观测值所属的类别存在一些不确定性 。如果我们假设观察值同样可能来自任何一个类别(即 pi_{1} = pi_{2} = 0.5),则通过检查(4.14),我们可以看到,如果x <0,则贝叶斯分类器将观察值分配给1类,否则将分配给2类 。需要注意的是,在这种情况下,我们可以计算贝叶斯分类器,因为我们知道X是从每个类中的高斯分布中得出的,而且我们知道涉及的所有参数。但是在实际情况下,我们无法计算贝叶斯分类器 。

实际上,即使我们非常确定我们是从每个类别内的高斯分布中得出X的假设,我们仍然必须估计参数 mu_{1} ,..., mu_{k}pi_{1} ,..., pi_{k}sigma^{2}线性判别分析(linear discriminant analysis/LDA)方法通过将 pi_{k}mu_{k}sigma^{2} 的估计值插入(4.13)中来近似贝叶斯分类器,我们可以使用以下估计:

其中n是训练观测值的总数, n_{k} 是第k类中训练观测值的数量, mu_{k} 的估计值只是第k个类的所有训练观测值的平均值,而 	ilde{sigma}^{2} 可以看作是每个K类的样本方差的加权平均值。有时我们知道类成员资格概率 pi_{1} ,..., pi_{k} ,可以直接使用。 在没有任何其他信息的情况下,LDA使用属于第k类的训练观测值的比例来估计 pi_{k} ,我们可以换成如下的数学表达式:

LDA分类器将(4.15)和(4.16)中给出的估计值插入(4.13)中,并将观察值X = x分配给如下表达式的结果是最大的:

分类器名称中的线性一词源于以下事实:(4.17)中的判别函数(discriminant functions) 	ilde{delta}_{k}(x) 是x的线性函数(与x的更复杂函数相反)。

图4.4的右侧面板显示了每个类别的20个观测值的随机样本的直方图。为了实现LDA,我们首先使用(4.15)和(4.16)估算 pi_{k}mu_{k}sigma^{2} 。然后,我们计算了决策边界(显示为黑色实线),该边界是将观察值分配给(4.17)最大的类而得出的。该行左侧的所有点将分配给绿色类别,而此行右侧的所有点将分配给紫色类别。在这种情况下,由于n1 = n2 = 20,所以我们有 	ilde{pi}_{1}=	ilde{pi}_{2} 。结果,判定边界对应于两个类别的样本均值之间的中点,即 (	ilde{mu}_{1}+	ilde{mu}_{2})/2 。该图表明LDA决策边界在最佳贝叶斯决策边界的左侧,而等于 (mu_{1}+mu_{2})/2=0 。 LDA分类器对此数据的效果如何?由于这是模拟数据,因此我们可以生成大量测试观察值,以便计算贝叶斯错误率和LDA测试错误率,它们分别是10.6%和11.1%。换句话说,LDA分类器的错误率仅比最小错误率高出0.5%!这表明LDA在此数据集上的表现非常好。

重申一下,LDA分类器是基于以下假设而得出的:假设每个类别中的观察值均来自具有特定于类别的平均向量和共同方差 sigma^{2} 的正态分布,并将这些参数的估计值插入贝叶斯分类器中。 在第4.4.4节中,我们将通过允许第k个类别中的观察值具有特定于类别的方差 sigma_{k}^{2} 来考虑一组不太严格的假设。

4.4.3 p> 1的线性判别分析

现在,我们将LDA分类器扩展到多个预测变量的情况。 为此,我们将假设 X =( X_{1}X_{2} ,..., X_{p} )来自多元高斯分布或多元正态分布(multivariate Gaussian or multivariate normal),具有类特定的均值向量和公共协方差矩阵。 我们首先简要回顾一下这种分布。

图4.5 显示了两个多元高斯密度函数,p =2。左:两个预测变量不相关。右:两个变量的相关系数为0.7。

多元高斯分布假设每个单独的预测变量都遵循一维正态分布,如(4.11)中所示,并且每对预测变量之间都存在一定的相关性。p = 2的多元高斯分布的两个示例如图4.5所示,在任何特定点的表面高度表示 X_{1}X_{2} 都落在该点周围的小区域中的概率。在任一面板中,如果沿 X_{1} 轴或 X_{2} 轴切割表面,则所得横截面将具有一维正态分布的形状。图4.5的左面板显示了一个示例,其中Var( X_{1} )= Var( X_{2} )和Cor( X_{1}X_{2} )=0;该表面具有独特的钟形形状。但是,如果预测变量相互关联或具有不相等的方差,则钟形会失真,如图4.5右侧面板所示。在这种情况下,钟形的底部将具有椭圆形而不是圆形的形状。为了表示p维随机变量X具有多元高斯分布,我们写X〜N(μ,Σ)。这里,E(X)=μ是X(具有p个分量的向量)的平均值,而Cov(X)=Σ是X的p×p协方差矩阵。形式上,多元高斯密度定义为如下形式:

在p> 1个预测变量的情况下,LDA分类器假设第k个类别的观测值是从多元高斯分布N( mu_{k} ,Σ)中得出的,其中 mu_{k} 是类别特定的均值向量,而Σ是协方差矩阵,对所有K类都通用。将第k个类的密度函数 f_{k} (X = x)插入(4.10)并执行一点代数运算,这表明贝叶斯分类器将观测值X = x分配给该类,即如下所示等式的结果是最大的:

图4.6 一个带有三个类的示例,每个类别的观察结果均来自p = 2的多元高斯分布,具有类别特定的均值向量和公共协方差矩阵。左:显示了包含三个类别中每个类别的95%概率的椭圆,虚线是贝叶斯决策边界。 右:从每个类别中生成了20个观察值,并使用黑色实线指示了相应的LDA决策边界。

图4.6的左侧面板中显示了一个示例,其中显示了三个大小相等的高斯类,其中包含类特定的均值向量和公共协方差矩阵。 三个椭圆表示的区域包含三个类别中每个类别的95%的概率。 虚线是贝叶斯决策边界。 换句话说,它们表示不同x的值对应的 delta_{k}(x)=delta_{l}(x) 集合,即:

需要注意的是,由于存在三对类别,所以在这三个类别中有三行代表贝叶斯决策边界。也就是说,一个贝叶斯决策边界将1类与2类分离,一个将1类与3类分离,而另外一个将2类与3类分离。这三个贝叶斯决策边界将预测变量空间划分为三个区域,贝叶斯分类器将根据观察值所在的区域对观察值进行分类。

如果再试一次,假设我们需要估计未知参数 mu_{1} ,..., mu_{k}pi_{1} ,..., pi_{k} 和Σ;这些公式类似于在(4.15)中给出的一维情况下使用的公式。为了分配新的观测值X = x,LDA将这些估计值代入(4.19),并分类为 	ilde{delta}_{k}(x) 最大的类别。请注意,在(4.19)中, delta_{k}(x) 是x的线性函数; 也就是说,LDA决策规则仅依赖x完成元素的线性组合,这就是LDA中使用线性一词的原因。

在图4.6的右侧面板中,显示了从这三个类别的每一个中提取的20个观察结果,并且所得到的LDA决策边界以实线显示。总体而言,LDA决策边界非常接近贝叶斯决策边界,其再次以虚线显示。贝叶斯和LDA分类器的测试错误率分别为0.0746和0.0770,这表明LDA在此数据上表现良好。

我们可以对违约数据执行LDA,以便根据信用卡余额和学生身份来预测个人是否会违约。 LDA模型适合10000个训练样本,其导致训练错误率为2.75%,这听起来像低错误率,但是必须注意如下两个方面:

  • 首先,训练错误率通常会低于测试错误率,而测试错误率才是真正的关注点。换句话说,如果我们使用分类器预测是否会有一组新的个人违约,我们可能会期望该分类器的效果更差,原因是因为我们专门调整了模型的参数以在训练数据上做得很好。参数p与样本数量n之比越高,我们越期望这种过度拟合发挥作用。而对于这些数据,我们并不认为这会成为问题,因为p = 2且n = 10000。
  • 其次,由于培训样本中只有3.33%的个人违约,因此一个简单但无用的分类器始终预测每个人都不会违约,无论他或她的信用卡余额和学生身份如何,而这将导致3.33%的错误率。 换句话说,简单的空分类器将实现的错误率仅比LDA训练集的错误率高一点。
表4.4 混淆矩阵将LDA预测与违约数据集中的10,000个训练观测值的真实默认状态进行比较。 矩阵对角线上的元素表示正确预测其违约状态的个人,而非对角元素表示错误分类的个人。 LDA对没有违约的23个人和没有违约的252个人做出了错误的预测。

实际上,像这样的二进制分类器会产生两种类型的错误:它会错误地将违约值的个人分配给不违约类(no default category),或者会错误地将无违约值的个人分配给违约类(default category),而确定这两种类型的错误中的哪一种通常引起会人们的兴趣。混淆矩阵(confusion matrix)(显示在表4.4中的默认数据中)是显示此信息的便捷方法,该表显示LDA预测总共有104人违约,其中实际有81人违约,有23人没有违约。因此,在9个没有违约的个人中,有9个中只有23个被错误地标记,这看起来错误率很低!但是,在333个违约的个人中,LDA漏掉了252个(或75.7%)。因此,尽管总体错误率较低,但违约个人的错误率却很高。从试图识别高风险个人的信用卡公司的角度来看,违约个人的错误率为252/333 = 75.7%完全不能接受。

特定类别的性能在医学和生物学中也很重要,其中术语敏感性和特异性(sensitivity and specificity)表征了分类器或筛选测试的性能。在这种情况下,敏感度是所识别的真实违约者的百分比,在这种情况下为较低的24.3%。特异性是正确识别的非违约者的百分比,此处(1-23/9,667)×100 = 99.8%。

为什么LDA在分类违约客户方面做得这么差?换句话说,为什么灵敏度这么低?如我们所见,LDA试图近似所有分类器中错误率最低的贝叶斯分类器(如果高斯模型是正确的),也就是说,贝叶斯分类器将产生尽可能少的错误分类观察总数错误来自哪一类。也就是说,某些错误分类是由于错误地将未违约的客户分配给违约类别而导致的,而另一些分类是由于错误地将违约用户分配给了非违约类别。相反,信用卡公司可能特别希望避免对将违约的个人进行不正确的分类,而对仍然没有违约的个人进行不正确的分类(尽管仍需避免)的问题则不是特别严重。现在,我们将探讨如何修改LDA,以开发出更好地满足信用卡公司需求的分类器。

贝叶斯分类器通过为后验概率 p_{k}(X) 最大的类别分配一个观察值来工作。在“两类”的情况下,这意味着将观察值分配给违约类,即:

因此,贝叶斯分类器通过扩展LDA为违约后验概率使用了50%的阈值,以便将观察值分配给默认类。但是,如果我们担心错误地预测违约者的违约状态,则可以考虑降低此阈值。例如,我们可以将具有高于20%的违约后代概率的任何客户标记为违约类别。换句话说,如果(4.21)成立,则不必为默认类分配观察值,即:

表4.5 混淆矩阵使用修改后的阈值将LDA预测与默认数据集中的10,000个训练观察值的真实违约状态进行比较,该阈值可预测后违约概率超过20%的任何个人的违约值。

表4.5显示了采用这种方法导致的错误率,现在LDA预测将有430个人违约。在违约的333个人中,LDA可以正确预测除138个以外的所有人,即41.4%。这是对使用阈值50%所导致的75.7%的错误率的巨大改进。但是,这种改进需要付出一定的代价:现在,有235位未违约的个人被错误分类。结果,总体错误率略微提高到3.73%,但是,信用卡公司可能会认为总错误率的这种小幅提高只是为了更准确地识别确实存在违约行为的个人而付出的代价。

图4.7 对于违约数据集,错误率显示为用于执行分配的后验概率阈值的函数。其中黑色实线显示整体错误率,蓝色虚线表示错误分类的违约客户的比例,橙色虚线表示非违约客户中的错误的比例。

图4.7说明了为违约后验概率修改阈值所产生的权衡,各种错误率显示为阈值的函数。如(4.21)中所述,使用0.5的阈值可将总错误率降至最低,如黑色实线所示。这是可以预期的,因为贝叶斯分类器使用的阈值为0.5,并且已知具有最低的总错误率;但是,当使用阈值0.5时,违约的个体之间的错误率会很高(蓝色虚线)。随着阈值的降低,违约的个体之间的错误率稳步下降,而没有违约的个体之间的错误率则不断增加。那我们如何确定最佳阈值呢? 这样的决定必须基于领域知识,例如与违约相关的费用的详细信息。

ROC曲线(ROC curve)是一种流行的图形,用于同时显示所有可能阈值的两种类型的误差。“ ROC”这个名称具有悠久的历史,其源于传播理论,它是接收器操作特性(receiver operating characteristics)的首字母缩写。

图4.8 LDA分类器在默认数据上的ROC曲线,当我们更改默认后验概率的阈值时,它会找出两种类型的错误,实际阈值未显示。 真实的阳性率是敏感性:使用给定的阈值正确识别的违约者比例。 误报率是1种特异性:使用相同的阈值将我们错误地归类为违约者的非违约者所占的比例,理想的ROC曲线位于左上角。

图4.8显示了训练数据上LDA分类器的ROC曲线。在所有可能的阈值上汇总的分类器的总体性能由(ROC)曲线(AUC)下的面积(area under the (ROC) curve (AUC))给出。理想的ROC曲线将为左上角,因此AUC越大,分类器越好。对于此数据,AUC为0.95,接近最大值1,因此将被视为非常好。我们期望一个分类器的表现优于AUC为0.5(当在模型训练中未使用的独立测试集上评估时)ROC曲线可用于比较不同的分类器,因为它们考虑了所有可能的阈值。事实证明,第4.3.4节的逻辑回归模型的ROC曲线与这些数据的拟合实际上与LDA模型的ROC曲线没有区别,因此在此不显示。

表4.6 对人群应用分类器或诊断测试时可能的结果

正如我们在上文看到的,改变分类器阈值会改变其真阳性和假阳性率。这些也称为灵敏度(sensitivity),以及1减去分类器的特异性(specificity)。 由于在这种情况下使用的术语几乎令人困惑,因此我们现在进行总结:表4.6显示了将分类器(或诊断测试)应用于总体时可能的结果。为了与流行病学文献建立联系,我们认为“ +”是我们要检测的“疾病”,而“-” 称为“非疾病”状态。为了与古典假设检验文献建立联系,我们想到“-” 作为零假设,“ +”作为替代(非零)假设。在违约数据的上下文中,“ +”表示违约的个人,“-” 表示不违约的个人。

表4.7 分类和诊断测试的重要措施,源自表4.6的数量。

表4.7列出了在这种情况下使用的许多流行的性能指标,假阳性率和真阳性率的分母是每个类别中的实际人口计数,相反,正预测值和负预测值的分母是每个类别的总预测计数。

4.4.4 二次判别分析

正如我们已经讨论的那样,LDA假定每个类中的观察值均来自具有特定类平均矢量和所有K类共有的协方差矩阵的多元高斯分布。二次判别分析(quadratic discriminant analysis/QDA)提供了另一种方法,像LDA一样,QDA分类器的结果是假设每个类的观测值均来自高斯分布,并将参数的估计值插入贝叶斯定理中以进行预测。但是,与LDA不同,QDA假设每个类别都有自己的协方差矩阵。也就是说,假设来自第k类的观测值为X〜N( mu_{k}Sigma_{k} ),其中 Sigma_{k} 是第k类的协方差矩阵。 在此假设下,贝叶斯分类器将观测值X = x分配给如下等式:

可以计算得出上述式子的结果为最大值,因此,QDA分类器需要将 Sigma_{k}mu_{k}pi_{k} 的估计值插入(4.23)中,然后将观测值X = x分配给该数量最大的类。与(4.19)中不同,数量x在(4.23)中显示为二次函数,这就是QDA的名称。

为什么我们假设K个类共享一个共同的协方差矩阵,这有什么关系呢?换句话说,为什么人们会更倾向于LDA而不是QDA?答案在于偏差方差的权衡。当有p个预测变量时,估计协方差矩阵需要估计p(p + 1)/ 2个参数,QDA为每个类别估计一个单独的协方差矩阵,总共提供Kp(p + 1)/ 2个参数。有50个预测变量,这是1,275的某个倍数,这是很多参数。相反,假设K类共享一个公共协方差矩阵,则LDA模型在x中变为线性,这意味着有Kp个线性系数需要估计。因此,LDA的分类器不如QDA灵活,因此方差也低得多。这有可能导致改进的预测性能。但是,这是一个折衷方案:如果LDA假设K类共享一个共同的协方差矩阵是很不合理的,那么LDA可能会遭受高偏差。粗略地说,如果训练观察相对较少,那么LDA往往比QDA更好,因此降低方差至关重要;相反,如果训练集非常大,则建议使用QDA,这样分类器的方差就不会成为主要问题,或者对于K类来说,共同协方差矩阵的假设显然不可取。

图4.9 左:Σ1=Σ2的两类问题的贝叶斯(紫色虚线),LDA(黑色虚线)和QDA(绿色实线)决策边界,阴影表示QDA决策规则。 由于贝叶斯决策边界是线性的,因此用LDA比用QDA更准确地近似。 右:除Σ1=Σ2之外,其他信息均在左侧面板中给出。 由于贝叶斯决策边界是非线性的,因此QDA比LDA更精确地近似。

图4.9说明了LDA和QDA在两种情况下的性能,在左侧面板中,两个高斯类在X1和X2之间的相关系数为0.7。结果,贝叶斯决策边界是线性的,并且可以被LDA决策边界精确地逼近,QDA决策边界较差,因为它具有较高的方差而没有相应的偏差减少。相反,右侧面板显示了一个情况,其中橙色类在变量之间的相关性为0.7,而蓝色类在变量之间的相关性为0.7。现在,贝叶斯决策边界是平方的,因此QDA比LDA更准确地近似了该边界。

在本章中,我们考虑了三种不同的分类方法:逻辑回归,LDA和QDA。 在第2篇文章中,我们还讨论了K最近邻(KNN)方法,我们现在考虑一种方法可能主导其他方法的场景类型。

尽管它们的动机不同,但逻辑回归和LDA方法却紧密相连。考虑p = 1预测变量的两类设置,令 p_{1}(x)p_{2}(x)=1-p_{1}(x) 分别是观测值X = x属于1类和2类的概率。在LDA框架中,我们可以从(4.12)到(4.13)(以及一些简单的代数)得到如下等式:

其中 c_{0}c_{1}mu_{1}mu_{2}sigma_{2} 的函数,从(4.4)中我们知道,在逻辑回归中,如下所示:

(4.24)和(4.25)都是x的线性函数,因此,逻辑回归和LDA都产生线性决策边界。两种方法之间的唯一区别在于,使用最大似然估计 beta_{0}beta_{1} ,而使用估计的均值和正态分布的方差来计算 c_{0}c_{1} ,LDA和逻辑回归之间的这种相同关系也适用于p> 1的多维数据。

由于逻辑回归和LDA仅在拟合过程上有所不同,因此人们可能希望两种方法都能得出相似的结果。这种情况经常但并非总是如此,LDA假定观测值是从每个类中具有共同协方差矩阵的高斯分布中得出的,因此当该假设近似成立时,可以对逻辑回归提供一些改进。 相反,如果不满足这些高斯假设,逻辑回归可以胜过LDA。

回顾第二章,KNN采用了与本章中看到的分类器完全不同的方法。为了对观测值X = x进行预测,确定最接近x的K个训练观测值。然后,将X分配给多个这些观察所属的类别。因此,KNN是一种完全非参数的方法:不对决策边界的形状进行任何假设。当决策边界高度非线性时,我们可以预期该方法将主导LDA和逻辑回归;另一方面,KNN并没有告诉我们哪些预测变量很重要,例如我们没有如表4.3所示的系数表。

最后,QDA是非参数KNN方法与线性LDA和逻辑回归方法之间的折衷,由于QDA假定了二次决策边界,因此与线性方法相比,它可以准确地建模更大范围的问题。尽管不如KNN灵活,但是QDA可以在有限数量的训练观测结果下表现更好,因为它确实对决策边界的形式做出了一些假设。

图4.10 正文中描述的每个线性方案的测试错误率的箱线图。
图4.11 正文中描述的每个非线性方案的测试错误率的箱线图。

为了说明这四种分类方法的性能,我们从六个不同的场景中生成了数据。在三个方案中,贝叶斯决策边界是线性的,而在其余方案中则是非线性的。对于每种情况,我们产生了100个随机训练数据集,在这些训练集的每一个上,我们将每种方法拟合到数据,并在大型测试集上计算得出的测试错误率。线性方案的结果如图4.10所示,非线性方案的结果如图4.11所示。KNN方法要求选择K,即邻居数。我们用两个K值执行KNN:K = 1,并且使用称为交叉验证的方法自动选择了K值,我们将在第5篇文章中进一步讨论。

在这六个方案的每一个中,都有p = 2个预测变量,方案如下:

  • 场景1:两个类别中的每一个都有20个训练观察值,每个类别中的观察值是不相关的随机正态变量,每个类别中的平均值不同。图4.10的左侧面板显示LDA在此设置下表现良好,这是LDA假定的模型,这是人们所期望的。KNN的表现不佳,因为它为差异支付了一定的价格,但并未被偏差的减少所抵消。QDA的表现也比LDA差,因为它比必要的分类器更灵活。由于逻辑回归假设线性决策边界,因此其结果仅略逊于LDA。
  • 方案2:详细信息与方案1相同,除了在每个类中,两个预测变量的相关系数约为0.5。图4.10的中间面板表示与以前的方案相比,该方法的相对性能几乎没有变化。
  • 方案3:我们从t分布生成 X_{1}X_{2} ,每个类别有50个观察值。t分布具有与正态分布相似的形状,但是它倾向于产生更多的极端值,即,更多的点远离均值。在这种情况下,决策边界仍然是线性的,因此适合逻辑回归框架。该设置违反了LDA的假设,因为观察结果并非来自正态分布。图4.10的右图显示,逻辑回归优于LDA,尽管这两种方法均优于其他方法。 特别是,由于非正态性,QDA结果大大恶化。
  • 方案4:数据是从正态分布生成的,第一类预测变量之间的相关性为0.5,第二类预测变量之间的相关度为-0.5。此设置与QDA假设相对应,从而得出了二次决策边界,图4.11的左侧面板显示QDA优于所有其他方法。
  • 方案5:在每个类别中,观察值是从具有不相关预测变量的正态分布生成的。 但使用 X_{1}^{2}X_{2}^{2}X_{1} × X_{2} 作为预测因子从逻辑函数中采样响应,因此,它存在二次决策边界。 图4.11的中间面板指示QDA再次表现最佳,紧随其后的是KNN-CV,而线性方法的性能较差。
  • 方案6:详细信息与前面的方案相同,但是从更复杂的非线性函数中采样了响应。结果,即使QDA的二次决策边界也无法对数据进行充分建模,图4.11的右侧面板显示,QDA的结果比线性方法要好一些,而灵活得多的KNN-CV方法可以得到最好的结果。但是,在所有方法中,K = 1的KNN给出的结果最差,这凸显了以下事实:即使未正确选择平滑度,即使数据表现出复杂的非线性关系,诸如KNN之类的非参数方法也可能给出不良结果。

这六个例子说明,在每种情况下,没有一种方法可以主导其他方法。当真正的决策边界是线性时,LDA和逻辑回归方法将趋向于表现良好;当边界为适度非线性时,QDA可能会提供更好的结果;最后,对于更复杂的决策边界,非参数方法(例如KNN)可能会更好。但是必须谨慎选择非参数方法的平滑度,在下一篇文章中,我们将研究许多方法来选择正确的平滑度,并且通常选择最佳的整体方法。

最后,我们可以回顾下第3篇文章,在回归设置中,我们可以通过使用预测变量的转换执行回归来适应预测变量和响应之间的非线性关系。在分类设置中可以采用类似的方法,例如,我们可以通过包含 X^{2}X^{3} 甚至 X^{4} 作为预测变量来创建更灵活的Logistic回归版本,因增加的灵活性而导致的方差增加是否被偏差的足够大的抵消所抵消,这可能会改善逻辑回归的性能。我们可以对LDA做同样的事情,如果我们将所有可能的二次项和叉积添加到LDA,则模型的形式将与QDA模型相同,尽管参数估计会有所不同。 该设备使我们能够在LDA和QDA模型之间移动。

  • 上一篇: java hashmap.put
  • 下一篇: linux ppc
  • 版权声明


    相关文章:

  • java hashmap.put2025-04-09 19:01:01
  • 数据库分区和分表的区别2025-04-09 19:01:01
  • socket网络编程步骤2025-04-09 19:01:01
  • sha1加密原理2025-04-09 19:01:01
  • nginx-gui2025-04-09 19:01:01
  • linux ppc2025-04-09 19:01:01
  • ye3822025-04-09 19:01:01
  • ddos攻击是啥意思2025-04-09 19:01:01
  • 超线程技术开启还是关闭2025-04-09 19:01:01
  • linux问题讨论2025-04-09 19:01:01