豆瓣9.6分统计学神作ISL之第四章读书笔记,带你系统学习逻辑回归、判别分析


1. 原文内容概要

在第四章中,我们将开启分类问题之旅,并深入学习四种极为实用且日常可见的分类模型:逻辑回归模型(logistic regression )、线性判别分析(linear discriminant analysis)、二次判别分析(quadratic discriminant analysis)和K-最近邻法(K-nearest neighbors)。这四种模型各有独特之处,也各具解决问题的优势。同时,它们之间又存在着千丝万缕的联系。通过阅读这篇笔记,相信你将对这些分类模型有更深入、更全面的了解,从而更好地应用于实际问题中,解决生活中的各种挑战。

先带大家复习下回归和分类的区别

  • 回归:回归任务的目标是预测一个连续值,而不是类别。例如,给定一个人的年龄、收入和职业,我们试图预测这个人的年收入。
  • 分类:分类任务的目标是将输入数据划分为不同的类别。例如,给定一个人的年龄、收入和职业,我们试图判断这个人是“工人”还是“白领”。

不过许多分类器在执行分类任务时,首先会预测概率,然后基于这些概率进行决策。从这个角度来看,分类问题似乎也蕴含着回归问题的意味。(On the other hand, often the methods used for classification first predict the probability of each of the categories of a qualitative variable, as the basis for making the classification. In this sense they also behave like regression methods.)

2. 算法知识总结

2.1 为什么不能用线性回归模型

2.1.1 Y Y Y的离散值只有两个的情况

举个例子,当我们面临诊病任务时,如果仅涉及两种分类结果,例如“中风 stroke”和“药物过量 drug overdose”,线性回归模型虽然不是最优选择,但仍然可以作为一种“妥协”方法使用。通过这种方式,输出的值可以被视为概率的近似值,从而具备一定的排序功能(Nevertheless, the predictions provide an ordering and can be interpreted as crude probability estimates)。为了解决因变量的编码问题,我们可以使用虚拟变量进行转换,随后利用线性回归进行拟合。
image.png
然而,这种方法存在一个明显的局限性即输出值的范围超出了概率的阈值【0,1】,即输出的值会超过【1】或者小于【0】,这在概率领域是无法解释的。(For balances close to zero we predict a negative probability of default; if we were to predict for very large balances,we would get values bigger than 1)
image.png

2.1.2 Y Y Y的离散值大于两个的情况

当离散值的数量超过两个时,对于没有明确排序关系的离散值,比如病种变成了“中风 stroke”、“药物过量 drug overdose”和“癫痫发作 epileptic seizure”,直接进行编码(随机用1,2,3来代替)可能会导致模型误读数据的真实表达,从而影响预测的准确性和稳定性。因为1,2,3是有明显排序性的,但“中风”、“药物过量”和“癫痫”是没有谁大谁小的说法的,下图的两种编码对于线性模型来说表达的是两种完全不同的含义:第一种表示“中风”<“药物过量”<“癫痫”,且相差的幅度都是1;第二种表示“癫痫”<“中风”<“药物过量”,且相差的幅度也都是1。尽管这种比较看似荒谬,但线性回归模型确实如此思考。即使使用相同的数据集,通过两种不同的编码方式拟合出的线性模型结果也会大相径庭
image.pngimage.png

2.2 逻辑回归

2.2.1 一元逻辑函数

简单起见,我们先考虑单变量的情况
举一个实际的例子,用“信贷数据集”中某个人的**【信贷余额 balance】预测其【违约 default=Yes】概率**。这其实是一种条件概率,表达式如下:
image.png
通过简化上述表达式,我们可以得到一个更具通用性的表达形式
image.png
接着按照我们在第一节中用线性回归求概率的思路,可以将表达式转换为以下公式。不过如第一节所讲,用线性回归模型预测出来的概率会超边界【0,1】
image.png
为了解决线性模型输出概率超边界的问题,统计学家采用了以下转换方式,将上述输出值进行转换
image.png
这个公式就叫做逻辑函数(logistic function),这也正是逻辑回归名字的由来在图形上这个函数呈现典型的S形。(The logistic function will always produce an S-shaped curve of this form, and so regardless of the value of X, we will obtain a sensible prediction )

image.png

上面的公式进一步变形,可以得到:
image.png
函数左边部分的中文叫几率(odds) ,阈值能取到【0,正无穷】,这个值越大表示Y=1的概率越大。(Values of the odds close to 0 and ∞ indicate very low and very high probabilities of default, respectively)

再将上面公式的两边取对数,得到:
image.png
函数左边部分的中文叫对数几率(log-odds or logit),函数右边部分已呈现为我们熟知的线性模型的形态

大家要注意,系数 β 1 β_1 β1在这里表示的是log-odds与 X X X之间的线性关系,而非概率 P ( X ) P(X) P(X) X X X之间的线性关系 X X X的单位变动引起的概率 P ( X ) P(X) P(X)的变动不再是恒定的了,也就是不再是线性关系了,而取决于当前x的位置。(The amount that P ( X ) P(X) P(X)changes due to a one-unit change in X X X will depend on the current value of X X X

2.2.2 参数估计

image.png
我们【用最大似然法(Maximum Likelihood)】去估计逻辑函数中的系数( β 0 β_0 β0 β 1 β_1 β1)。

最大似然法的目标函数如下所示
image.png
如何理解这个目标函数呢?代入信贷数据集的场景,可以理解为:我们寻找系数( β 0 β_0 β0 β 1 β_1 β1)的拟合值,旨在使预测的违约概率对于标签为1(违约者)尽可能接近于1,而对于标签为0(未违约者)则尽可能接近于0这样做的目的是最大化样本点对应概率的乘积,这也就是“最大似然”的含义所在。这里所提及的“似然”,其英文为“likelihood”,本质上与概率是同义词。

在信贷数据集中用【贷款余额(balance)】去预测【违约概率】的逻辑回归模型的拟合结果如下表所示,其中0.0055 可以理解为一单位的【贷款余额】增加,会引起【违约比率的对数】增加0.0055个单位。(To be precise, a one-unit increase in balance is associated with an increase in the log odds of default by 0.0055 units)

截距(intercept)对于我们来说并不需要很在乎,它只是起到一个调节作用。(The estimated intercept in Table 4.1 is typically not of interest; its main purpose is to adjust the average fitted probabilities to the proportion of ones in the data)

表里的 Z Z Z统计量(Z-statistic)跟线性回归里的 t t t统计量(t-statistic)的作用相同,都是用作假设检验的。 Z Z Z统计量的计算公式跟 t t t统计量也是一样的,比如 β 1 β_1 β1 Z Z Z统计量就等于 β ^ 1 / S E ( β ^ 1 ) \hatβ_1/SE( \hatβ_1) β^1/SE(β^1)对着块不太懂的同学请查看我第三章的读书笔记)。
image.png

2.2.3 预测概率

参数的估计值得到了,就可以代入公式,并结合x值进行概率预测了,以信贷数据集为例,当【贷款余额】等于1000时计算违约概率:
image.png
上面的【贷款余额】是数值型变量,【离散型】变量同样使用逻辑回归。比如用【学生身份】来预测违约概率,我们将【学生身份】转换为dummy变量,再用最大似然法进行拟合,得到的结果如下所示:
image.png
image.png

2.2.4 多元逻辑回归

前面我们讲到都是一元回归的情况(也就是自变量只有一个),同样的,多个自变量下逻辑回归同样使用,形式如下所示:
image.png
或者是
image.png
仍然以信贷数据里的【贷款余额(balance)】、【收入(income)】、【学生身份(student)】来预测违约概率为例,拟合结果如下:
image.png
记忆力好的同学可能会注意到,这里对于【学生身份】参数的预测结果跟单独用【学生身份】变量去做预测时的参数结果不一样,甚至符号都是反着的。不要慌,这是没问题的,原因下面这个图可以解释。橘色的线代表学生,蓝色的线代表非学生,实线表示在每一个balance下,学生的违约概率都比非学生的低,水平的虚线表示,整体来看,学生的违约概率要比非学生的高。这种情况乍眼一看不太科学,但仔细一想,还是存在的,比如在balance数据不全,存在缺失的情况下,就有可能出现上面的情况。
image.png

2.2.5 Y Y Y的离散值大于两个的情况

之前我们讨论的预测问题主要集中在只有两种分类结果的场景,但在实际应用中,多于两种分类的情况也很常见。虽然逻辑回归有其扩展来处理多种分类,但通常我们并不采用。因此,我们需要引入一个新的分类方法——判别分析(discriminant analysis)。(The two-class logistic regression models discussed in the previous sections have multiple-class extensions, but in practice they tend not to be used all that often. One of the reasons is that the method we discuss in the next section, discriminant analysis, is popular for multiple-class classification )

2.3 线性判别分析

2.3.1 为什么需要判别分析

逻辑回归通过逻辑函数直接计算出概率值,此外,还存在一种间接方法
1)确定在 Y Y Y的每个类别 k k k下,各个自变量 x x x概率分布,即求得 P r ( X = x ∣ Y = k ) Pr(X=x|Y=k) Pr(X=xY=k)
2)利用贝叶斯公式反推导出 P r ( Y = k ∣ X = x ) Pr(Y=k|X=x) Pr(Y=kX=x)

上面的步骤其实就是判别分析的计算原理
(In this alternative approach, we model the distribution of the predictors X separately in each of the response classes (i.e. given Y ), and then use Bayes’ theorem to flip these around into estimates for Pr(Y = k|X = x))

既然存在逻辑回归这种直接方法,为何还要采用这种间接方法呢?原因有三:
1)当样本的类别区分度很高时,这意味着类别之间的差异较大,而类别内部的差异较小。在这种情况下,逻辑回归模型的参数估计可能是不稳定的。这里的“不稳定”意味着当使用小量数据或稍微改变数据来进行重新估计时,参数可能会发生较大的变化;
(When the classes are well-separated, the parameter estimates for the logistic regression model are surprisingly unstable. Linear discriminant analysis does not suffer from this problem)

2)如果样本量较小,并且自变量 X X X的分布在每个类别中又近似正态分布,那么还是判别分析更稳定
(If n is small and the distribution of the predictors X is approximately normal in each of the classes, the linear discriminant model is again more stable than the logistic regression model)

3)相较于逻辑回归,判别分析在解决多类别分类问题上更具优势
(Linear discriminant analysis is popular when we have more than two response classes)

2.3.2 用贝叶斯思想进行分类

我们先来回顾下贝叶斯公式的计算逻辑
1)令 π k π_k πk先验概率(prior probability),即从样本集合中随机选取一个样本,并计算该样本属于第 k k k类的概率;
2)令 f k ( x ) = P r ( X = x ∣ Y = k ) f_k(x)=Pr(X=x|Y=k) fk(x)=Pr(X=xY=k)表示在第 k k k类样本中自变量 x x x密度函数(density function)。可以这么理解密度函数的意思 f k ( x ) f_k(x) fk(x)越大,表示属于第 k k k类的样本中“很容易”找到 X ≈ x X≈x Xx的情况;
3)基于上面的定义,贝叶斯公式就能表现为下面的公式。用 p k ( X ) p_k(X) pk(X)来表示 P r ( Y = k ∣ X = x ) Pr(Y=k|X=x) Pr(Y=kX=x),它叫做后验概率(posterior probability)。
image.png

上面所述的三个步骤体现了“曲线救国”的思想:不像逻辑回归那样直接算出 P r ( Y = k ∣ X = x ) Pr(Y=k|X=x) Pr(Y=kX=x),而是针对每个类别 k k k,分别估计出 π k π_k πk f k ( x ) f_k(x) fk(x),再通过它们算出最终的概率 P r ( X = x ∣ Y = k ) Pr(X=x|Y=k) Pr(X=xY=k)

一般来说, π k π_k πk能够较好地通过样本数据进行拟合,而 f k ( x ) f_k(x) fk(x)则相对难以获取,除非我们人为地定义一些简单的分布。(In general, estimating π k π_k πk is easy if we have a random sample of Y ′ s Y's Ys from the population: we simply compute the fraction of the training observations that belong to the kth class. However, estimating f k ( x ) f_k(x) fk(x) tends to be more challenging, unless we assume some simple forms for these densities)

根据第二章的读书笔记,贝叶斯分类器的分类误差是最小的因此,只要我们能够准确地估计 f k ( x ) f_k(x) fk(x)我们就可以构建一个近似贝叶斯分类器。正好,线性判别分析就是我们要找的

2.3.3 一元线性判别分析

当只有一个自变量时,我们先将这个自变量的先验概率分布 f k ( x ) f_k(x) fk(x)假设成正态分布。如下所示,其中 μ k μ_k μk代表第 k k k类的均值, σ k 2 σ_k^2 σk2代表第 k k k类的方差。
image.png

接着我们做进一步简化,让每一个类别对应的方差都一样,设为 σ 2 σ^2 σ2并代入贝叶斯公式,得到最终的概率为:
image.png
再经过取对数转换(不用关心细节),得到如下非常“线性”的表达形式之所以叫【线性】判别分析,大家发现没有,上面的公式就是关于x的线性函数。
image.png

一元线性判别分析的思路可总结为:
1)假设自变量 X X X在每个类别下的概率分布(大多数情况都假设成正态分布);
2)用训练样本估计 μ k μ_k μk π k π_k πk σ k 2 σ_k^2 σk2(一般就默认都一样,即 σ 2 σ^2 σ2);
3)将待分类样本点的自变量取值代入上述公式求概率 p k ( X ) p_k(X) pk(X) δ k ( x ) δ_k(x) δk(x);
4)将待分类样本点划分到概率值最高的类别。

2.3.4 多元线性判别分析

在多变量(假设有 p p p个)的情况下,密度函数变成了如下形式(熟悉就好,不用掌握),其中 μ μ μ表示一个向量,里面装着 p p p个变量分别对应的均值; Σ Σ Σ表示变量间的协方差,是一个 p × p p×p p×p的矩阵。
image.png

相应的,多元线性判别分析的概率公式如下所示,本质上它是一元线性判别分析概率公式的向量版
image.png
在多元线性判别分析中,预测概率的步骤为
1)假设每个类别 k k k里的样本都来自正态分布 N ( μ k , Σ ) N(μ_k, Σ) N(μk,Σ),其中 μ k μ_k μk表示第 k k k类的均值, Σ Σ Σ表示变量间的协方差。对于所有类别,这个协方差都是一样的;
2)用训练样本估计 μ k μ_k μk π k π_k πk Σ Σ Σ;
3)将待分类样本点的自变量取值代入上述公式求概率 p k ( X ) p_k(X) pk(X) δ k ( x ) δ_k(x) δk(x);
4)将待分类样本点划分到概率值最高的类别。

2.3.5 线性判别分析的假设条件

这里再重申一下,这节讲解的线性判别分析有两个重要的假设
1)每个自变量 X X X都来自正态分布;
2)属于不同类别 k k k的数据集共享同一个方差(或者协方差)。
下一小节讲到的二次判别分析会放松第二个条件。

2.4 二次判别分析

2.4.1 函数表达形式

线性判别分析假定所有类别的数据共享同一个协方差矩阵,而二次判别分析(quadratic discriminant analysis)则认为每个类别的协方差矩阵都不同,这导致其数学表达式呈现非线性特征。该表达式呈现为二次函数形式,这也是二次判别分析名称的来源。(Like LDA, the QDA classifier results from assuming that the observations from each class are drawn from a Gaussian distribution, and plugging estimates for the parameters into Bayes’ theorem in order to perform prediction. However, unlike LDA, QDA assumes that each class has its own covariance matrix)image.png

所以为了预测概率,我们需要估计 μ k 、 π k μ_k、π_k μkπk Σ k Σ_k Σk(在线性判别分析中,这个是 Σ Σ Σ

2.4.2 线性or二次?如何选择

那么,在选择线性判别分析(LDA)和二次判别分析(QDA)时,应该考虑哪些因素呢?(why would one prefer LDA to QDA, or vice-versa? The answer lies in the bias-variance trade-off)

考虑因素可以归纳为下面三个
1)如果因变量与自变量之间存在显著的非线性关系,那么二次判别分析肯定是首选;
2)当不确定因变量与自变量之间是否存在非线性关系,或数据更偏向于线性关系时,线性判别分析是一个更好的选择,因为它的计算量相对较小。假设有 p = 50 p=50 p=50个自变量,那么估计一个协方差矩阵就需要计算 p ( p + 1 ) / 2 = 1275 p(p+1)/2 =1275 p(p+1)/2=1275个参数。由于线性判别分析只需要一个协方差矩阵,所以总共只需要估计1275个参数。相比之下,二次判别分析需要为每个类别分别估计一个协方差矩阵,这将导致估计更多( k ∗ 1275 k*1275 k1275个)的参数;
3)在训练样本不充裕的情况下选择线性判别分析,在训练样本充裕的情况下选二次判别分析。

2.5 LR、LDA、QDA和KNN分类方法的比较

2.5.1 线性模型

逻辑回归(LR)和线性判别分析(LDR)在本质上都属于线性模型的范畴,为了简单起见,我们考虑单变量的情况。通过抽象他们的数学表达式,我们可以清晰地看到这一点。

这是LR的表达式
image.png
这是LDR的表达式
image.png

可以清晰地看到,两者本质上都是关于 x x x的线性方程。唯一的区别就在于, β 0 β_0 β0 β 1 β_1 β1是用的最大似然法来估计,而 c 0 c_0 c0 c 1 c_1 c1则是通过均值和正态分布的方差来计算的。对于多维数据(变量个数大于1),LR和LDR之间的这种联系同样成立。
(The only difference between the two approaches lies in the fact that β0 and β1 are estimated
using maximum likelihood, whereas c0 and c1 are computed using the estimated mean and variance from a normal distribution。This same connection between LDA and logistic regression also holds for multidimensional data with p > 1)

2.5.2 非线性模型

K-最近邻算法(KNN)是一个典型的非参数估计模型,意味着在训练该模型之前,我们并不预先设定其具体的函数形式或参数(Hence KNN is a completely non-parametric approach:no assumptions are made about the shape of the decision boundary),因此当自变量与因变量之间的关系呈非线性时,KNN相较于LR和LDA具有更出色的性能。然而,KNN也存在一些局限性,例如无法提供变量重要性的排序信息以及可能过拟合的问题。因此,为了折中这些问题,二次判别分析(QDA)成为了一个实用的选择(Finally, QDA serves as a compromise between the non-parametric KNN method and the linear LDA and logistic regression approaches)。

2.5.3 场景实验

接下来,作者为了充分证明没有一种方法能够适用于所有场景,根据关系的非线性程度、变量的概率分布类型以及变量间的自相关程度等因素,精心构建了六个不同的场景。这一系列场景旨在强调,在选择分类方法时,我们需要根据实际情况进行模型选择,而最简单直接的方法就是尝试所有可能的模型

引用

image.png

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值