统计学习是一个大范畴,机器学习也好,简单常见的统计分布也罢,从大一就想一直弄明白,打了无数次数学建模,概率论与数理统计学的也不错,奈何从没有真正系统和扎实了解过这里面的内涵和在解决问题中使用的具体办法,颇为感慨数学基础是第一大关,将数学基础变化为代码是第二大关,均需联系,建模屡屡受挫,值此忙碌之际,仍打算提起一些精神借帮同学打建模比赛为契机倒逼自己学一些这里面的真实基础,也算不留遗憾。
总览
一些前置定义
为了便于说明,我们构想一堆人领工资的场景,我们考虑 年
年纪
竞争
….共p个因素,我们称这些因素为 特征
,一共有 n
个人来领工资,我们都测到了每个人这 p
个人的数据。因此我们可以将这些数据放成一个矩阵
$ \mathbf{X}=\begin{pmatrix}x_{11}&x_{12}&\ldots&x_{1p}\x_{21}&x_{22}&\ldots&x_{2p}\\vdots&\vdots&\ddots&\vdots\x_{n1}&x_{n2}&\ldots&x_{np}\end{pmatrix} $
我们按照行来看,也就是 $x_1,x_2,…,x_n$ ,其中 $x_i$都是一个长度为p的向量,也就是
$ x_i=\begin{pmatrix}x_{1}\x_{i2}\\vdots\x_{ip}\end{pmatrix} $
这样一个 $x_i$ 是按照行看的,这样我们常常把矩阵 $X$ 写成
$ \mathbf{X}=\begin{pmatrix}x_1^T\x_2^T\\vdots\x_n^T\end{pmatrix} $
我们成功将矩阵按人来划分
或者我们也可以按照列来划分,也就是对于一个特征,相当于我们单拉出来看看每个人年纪都是多少,这样我们可以将矩阵写成
$ \mathbf{X}=\begin{pmatrix}\mathbf{x}_1&\mathbf{x}_2&\cdots&\mathbf{x}_p\end{pmatrix} $
一个统计学习的使命
常理来看,统计学习一直期望找到一个函数 $f$ ,我们希望观测到了一堆值 $X_1,X_2,…X_p$ 我们假设这些特征和一个输出 $Y$ 是有关系的,寻求
$ Y = f(X) + \epsilon $
预测
我们管预测到的函数f和预测值Y叫
$ \hat{Y}=\hat{f}(X) $
误差分为可以避免的误差和不可避免的误差,前者可以通过用更牛逼(准确)的算法并且不断迭代来减小使之在期望中和真实的f差距逼近0,后者是因为可能有些别的特征我们没有考虑等因素。对于后者,我们可以尝试多做一做特征工程,或者纳入更多考虑因素来做。
$ \begin{aligned}\operatorname{E}(Y-\hat{Y})^2&=\quad\operatorname{E}[f(X)+\epsilon-\hat{f}(X)]^2\&=\quad\underbrace{[f(X)-\hat{f}(X)]^2}{\text{可以划归}}+\underbrace{\text{Var}(\epsilon)}{\text{不可以划归}},\end{aligned} $
在预测中,我们不关心这些特征 $X_i$ 他们的系数,也就是f是一个黑盒。
此外,有时候我们也做分类问题,比如希望模型的输入是这些特征,让他进行分类,比如逻辑斯蒂回归就是一个二分类问题,当然他也可以用于预测中。
推断
需要知道f中我们选用的特征 $X_i$ 具体系数。
估计f的具体方法
参数方法
- 假设f关于特征 $X_i$ 的形式,例如,一个常见的线性方程。
$ f(X)=\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p. $
- 训练模型求出参数
这里面需要考虑我们选用的模型,越简单的模型往往不灵活,但是对数据集数量要求很小,同时特征也要求很小。越复杂的模型越灵活,但是对数据集的要求也大,特征需求也大,而且容易出现过拟合。
↑正常的回归
↑收到一些噪声和垃圾数据的干扰,产生了过拟合。
无参数方法
不假设f的特定形式,而是尝试尽可能不过于松也不过与紧地拟合样本的各个点。
比较
聚类分析
另外有一种情况,我们有一堆输入,但是我们无法(或者说)很难得到输出,先前的例子是我们有一堆特征,然后输出一个今天的股票价格。而现在这种例子是你开一个超市,有一堆各种各样的人来买东西,我们收集了他的性别、收入、家庭状况等一堆参数,然后画在一个图中,看看能不能将他们分成特定的几类。
评估模型精度
MSE 均方误差
$ MSE = \frac{1}{n}\Sigma^n_{i = 1}(y_i - \hat{f}(x_i))^2 $
我们关心MSE在测试集的表现,比如我们不感兴趣模型对于过去股票预测有多准,我们感兴趣的是模型能预测明天股票的值有多准。
我们对MSE求期望有
$ E(y_0-\hat{f}(x_0))^2= D(\hat{f}(x_0)) + [Bias(\hat{f}(x_0))]^2+Var(\epsilon) $
其中 $D(\hat{f}(x_0))$是方差
通常的三种情况,后续的所有算法的核心目的都是寻求第一项和第二项的和为最小化,至于 $Var(\epsilon)$ 是不可划归的误差。
分类问题
用
$ \frac{1}{n}\Sigma^n_{i=1}I(y_i\ne\hat{y}_i) $
来进行衡量,函数I对于 $y_i \ne \hat{y}_i$ 输出1,否则输出0.我们的目的是寻求上面的式子最小。
贝叶斯分类器
$ \Pr(Y=j|X=x_0) $
$ 1-E\left(\max_j\Pr(Y=j|X)\right), $
由于我们很少能提前知道这条分界线的分布,因此贝叶斯分类往往作为一种判断,而不是在分类过程中使用
K近邻算法(KNN)
$ \Pr(Y=j|X=x_0)=\frac{1}{K}\sum_{i\in\mathcal{N}_0}I(y_i=j). $
线性回归
简单线性回归
书中有一个关于寻求 报纸
广播
电视
三种广告投放渠道和最终收入的模型,我们寻求将单一的变量作为输入 $X$ 以及销量输出 $Y$, $Y \approx \beta_0 + \beta_1X$
我们可以将上式的约等号理解为 近似模拟
,将 $b_1$和 $b_2$理解为截距和斜率。我们管他叫模型的 系数
或 参数
如何评估系数的好坏
在实践中,我们无法得知真实映射关系的系数,因此我们需要一种评估体系来评估我们求出的系数的好坏。
我们使用 $\hat{y}_i = \hat{\beta}_0 + \hat{\beta}_1x_i$ 来表达第 $i$ 个变量的预测值,那么 $e_i = y_i - \hat{y}_i$ 就是第 $i$ 个样本的拟合残差。
我们定义 RSS(**Residual Sum Of Squares**)
来评估模型总体的 拟合好坏
$ RSS = \Sigma_1^n(e_i^2) = (y_1 - \hat{\beta}_0-\hat{\beta}_1x_i)+\cdots+(y_n-\hat{\beta}-\hat{\beta}_1x_n) $
我们的目的是让 RSS
最小,因此最后的系数就是我们常见的最小二乘法。
0假设
在多元线性回归中一起讲了
t-检验
就是我们在概率论中算的 t检验
。我们通过这个假设来判断这条回归直线是否存在,也就是输入变量和输出变量之间的线性关系到底强弱与否
因此我们有假设
$ H_0: X和Y之间没有关系 => \beta_1 \iff 0 $
$ H_\alpha: X和Y之间存在某种关系 \iff \beta_1 \ne 0 $
我们在概率论中经常遇到,这个数据的真实平均值 $\mu$ 是不知道的,我们只能知道抽取的样本中的平均值 $\hat{\mu}$ ,因此我们可以近似来求方差 $D(\hat{\mu})=\mathrm{SE}(\hat{\mu})^2=\frac{\sigma^2}{n}$
参数的估计的标准差
$ \mathrm{SE}(\hat{\beta}{0})^{2}=\sigma^{2}\left[\frac{1}{n}+\frac{\bar{x}^{2}}{\sum{i=1}^{n}(x_{i}-\bar{x})^{2}}\right],\quad\mathrm{SE}(\hat{\beta}{1})^{2}=\frac{\sigma^{2}}{\sum{i=1}^{n}(x_{i}-\bar{x})^{2}} $
t分布的公式是
$ t=\frac{\widehat{\beta}{1}-0}{SE(\widehat{\beta}{1})} $
t分布呈钟形,当n大于30时,它与标准正态分布非常相似。因此,假设β1 = 0,计算观察到绝对值等于或大于t的任何数的概率是一件很简单的事情。我们称这个概率为p值。因此,如果我们看到一个小的p值,那么我们可以推断预测器和响应之间存在关联。如果p值足够小,我们拒绝零假设——也就是说,我们声明X和Y之间存在关系。拒绝零假设的典型p值截止值为5%或1%
我们可以这么计算 p值
也可以古典查表法
import numpy as np
from scipy.stats import chi2_contingency, fisher_exact
obs = np.array([[8157, 8],[7906,10]])
g, p, dof, expctd = chi2_contingency(obs, correction = False)
p
0.59094761107842753
比如我们注意到, radio
和 newspaper
的p值都是 <0.0001,因此他们都和我们的输出Y有很强的关系。(我们在后续的多元回归中会观察到一个完全不同的现象)
如何评估模型的准确性
我们当然希望能够评估构建模型的表现,也就是他的准确性到底如何。
- 残差标准误差(Residual Standard Error)
回顾先前的统计学知识,我们认为每一个观测到的样本值会带有一定的偏差项 $\epsilon$ ,由于这个偏差项的存在,即使我们知道真实的曲线方程,我们也没办法完全准确地通过 $X$ 预测 $Y$
RSE粗劣的概念可以理解成平均上,我们的每一个预测值与真实曲线间的偏离量
$ RSE=\sqrt{\frac1{n-2}RSS}=\sqrt{\frac1{n-2}\sum_{i=1}^n(y_i-\hat{y_i})^2} $
残差平方和 RSS
的计算公式是 $RSS=\sum_{i=1}^n(y_i-\hat{y_i})^2$
RSE
可以理解为 模型拟合
与 真实目标值
的实际误差
比如对于书中的数据集我们求得
比如我们求得 RSE
是 3.26,这样就是如果我们按照美元为单位,每一个回归求得的值与真实值的误差平均下来相差 3260
个单位,进一步地,整体平均收入是 14000
的单位,因此我们的百分误差是 3260/14000=23%,也就是我们预测的浮动是23%,具体能不能接受,要看具体情况。
- R方
RSS
的主要缺陷是带量纲,我们可以用 $R_2$ 来评估
$ R^2 = \frac{TSS-RSS}{TSS} = 1 - \frac{RSS}{TSS} $
总结
- $R^2$可以量化模型响应变量和变量间的关系强弱(这条回归线到底预测的准不准)
- p-value可以决定拟合方程的可靠程度,评估线性关系存在与否及其强弱(我们到底可以不可以划一根回归线来预测)
多元线性回归
我们要考虑很多变量时候,不能单独将各个变量做简单线性回归,然后一起看。比如下面的例子就是一个误差分析
下面的表格是用多元线性回归模型后的一些具体统计量
我们注意到报纸和最终的收益的 p-value
为 0.8599 ,这表明他们的相关性很弱。
但是看相关矩阵
在这其中, 报纸
和 广播
的相关系数 是 0.3541
,也就是,我们的报纸这个变量变化,会很显著的影响广播,而广播和最终的销量又有很强的关系,因此 报纸
沾了 广播
的光而和最终的销量有很强的相关性。
- 一个例子
- 这个有点违反直觉的结果在现实生活中很常见。考虑一个荒谬的例子来说明这一点。对某一特定海滩社区在一段时间内收集的数据进行鲨鱼袭击与冰淇淋销售之间的回归分析,会显示出正相关关系,类似于销售与报纸之间的关系。当然,(到目前为止)还没有人建议在海滩上禁止吃冰淇淋以减少鲨鱼袭击。事实上,更高的温度导致更多的人去海滩,这反过来又导致了更多的冰淇淋销售和更多的鲨鱼袭击。鲨鱼袭击对冰淇淋销量和温度的多重回归表明,正如直觉所暗示的那样,在调整温度后,冰淇淋销量不再是一个重要的预测因素。
我们对于一个由 p
个独立变量的问题,可以用如下回归方程来拟合
$ Y=\beta_0+\beta_1X_1+\beta_2X_2+\cdots+\beta_pX_p+\epsilon $
同样可以用 RSS
求最优解的方式来求
进行多元线性回归时我们关心的一些问题
- 是否至少有一个特征对于最终的预测是有用的
- 所有的特征都有助于预测
Y
吗,还是仅仅一部分特征对于预测Y
是有效的 - 模型本身拟合程度好坏
- 对于给定的样本特征对应的样本值,我们如何根据给定的数据预测结果?预测的结果准确率如何?
特征与预测集是否真的有关系
在简单的线性回归setting中,我们为了确认X和Y之间确实有关系,我们可以简单的将 $\beta_1 = 0$
同样的在多元线性回归的场景下,我们需要确认是否全部的回归系数都是0,也就是逐一确认null hypothisis
$ H_0: \beta_1=\beta_2=\cdots=\beta_p=0 $
以及 $H_\alpha :至少有一个系数不是0$
我们通过 F分布
来进行检验
$ F=\frac{(\mathrm{TSS}-\mathrm{RSS})/p}{\mathrm{RSS}/(n-p-1)} $
从式子中我们得出,如果我们希望 $H_\alpha$ 成立,我们希望我们求出的 $F$ 值大于1.
依赖样本量n和特征数量p。当样本量n非常大的时候,F-statistic哪怕非常非常接近1,我们依然有机会来拒绝原假设H0。与之相反的,当我们样本量很少的时候,我们需要一个非常大的F-statistic值才能有信心去拒绝原假设H0。
注意:我们不能用单个特征的 p-value
来判断最起码有一个特征是与我们的模型是有关系的。
假设有一个情况,我们一共有100个特征,所以p=100,并且原假设 $H_0: \beta_1=\beta_2\ldots\ldots=\beta_p=0$ 成立,所以没有任何一个变量真正的与Y有关系。但是在这个场景下,我们仍然会有5%的特征的p-value会<=0.05。换句话说,我们有5%的概率在明明不显著的变量中发现变量的显著性。但是,我们的F-Statistic就不会有类似的问题发生,因为他会将我们的特征数量考虑在内,所以当 $H_0$成立时,我们只会有5%的概率发现发现p-value会<0.05,无论有多少特征p和样本量n。不过需要注意的事,当p>n的时候,F-Statistic就不太好用。
决策哪些特征比较重要
这块我们可以通过:
- 前向选择
- 后向选择
- 混合选择
三种方式来进行解决,这三种方式在做评分卡的时候其实都挺常见的。
模型拟合评估
还是用RSS和R方来进行评估
模型预测
一旦我们模型拟合完毕,我们就可以进行预测了,但整个预测过程从统计学的角度来说还存在三个维度的不确定性:
- 我们的拟合方程 $\hat{Y}=\hat{\beta}{0}+\hat{\beta}{1}X_{1}+\cdots+\hat{\beta}{p}X{p}$ 只是真实函数 $f(X)=\beta_{0}+\beta_{1}X_{1}+\cdots+\beta_{p}X_{p}.$ 的一种近似。对于这种参数估计的不确定性,与所谓的
不可划归错误
有关。 - 当然实际上对于真实函数用f(x)来去拟合肯定还是带有近似的成分你在里面,所以模型的选择本身也会带有model bias。(这种bias一般也是直接无视的)
- 最后,哪怕我们知道真实的f(X)的系数 $\beta_0,…\beta_p$,因为有随机误差ϵ的存在,我们也没有办法去完美的拟合模型。’
线性模型的其他问题
处理离散型随机变量
离散随机变量可以用于对定性问题的分析,比如own(房屋所有权),student(学生身份),status(婚姻状况)和region (East, West or South)。
做 01 encoding
$ x_i=\begin{cases}1&\quad\text{if }i\text{th person is female}\0&\quad\text{if }i\text{th person is male},\end{cases} $
在这种情况下,系数其实就是两个类别之间的均值
对于多值的离散分布问题
线性回归的六个潜在的问题
- 共线性(Collinearity)
- 误差项自相关(Correlation of Error terms)
- 误差项方差非恒定(Non-constant variance)
- 离群点(Outliers)
- 高杠杆点(High-leverage Points)
- 非线性(Nonlinearity Relationship)
以前面的信用卡数据作为例子来逐一说明下面的问题
问题1 额度与信用评分的高度共线性
共线性是指两个或更多的预测变量高度相关,导致难以分离出单个变量对响应变量的影响
我们将不同的特征画在一张散点图上,左边是 age
和 limit
的图,他们没有共线性,但是右侧 rating
和 limiting
就有着明显的共线性
信用额度limit
和信用评分rating
往往同时增加和减少,很难确定单一变量与信用卡债务balance
的相关性
- 共线性的特征判断
具有高度共线性两个变量的RSS等高线中,等高线之间非常狭窄
我们用 RSS
来寻求 RSS
最小值来构建回归拟合, RSS
是 参数 $\beta$ 的函数,每张图的黑点代表了 最小RSS
对应的系数。在左侧我们可以发现最小值可以很好的被定义,但是右侧对于许多 $\beta{limit},\beta{rating}$ 都有类似的 RSS
因此 共线性
降低了回归系数的准确性,会导致 $\hat{\beta_j}$标准误差增加
而 我们的每一个预测值 $\hat{X}$ 的 $t-statistic$ 是 $\hat{\beta_j}$ 除以标准误差得到的,因此共线性会降低t值,因此可能会导致我们无法拒绝假设 $H_0:\beta_j = 0$
由于共线性的存在,limit
变量的重要性被掩盖了
- 共线性的检测
- 用相关矩阵 :预测变量的相关系数矩阵中出现**「绝对值最大的元素」表示有「一对」**变量高度相关,
- 因此数据中可能存在共线性问题
- 但相关系数矩阵无法检测到 「三个或更多」变量之间是否存在「多重共线性」:
- 方差膨胀因子(VIF)评估多重共线性
- 共线性的解决方案
- 从回归中踢除一个变量
当我们作balance
对age
和limit
不包含rating
的回归:
如果我们不需要对拟合做出妥协的话,我们可以直接踢除其中一个多余的变量来解决共线性问题。
- 融合两个共线变量
把共线变量组合成一个单一的预测变量:
- 对标准化后的
limit
和rating
求平均创建新变量credit worthiness
问题2 误差项自相关
在线性回归中一个重要的假设就是 误差项 $\epsilon_1,…\epsilon_n$ 不相关,如果误差项存在自相关问题,那么估计的标准误差往往会低估了真实的标准误差。
- 95%CI包含真实参数的实际概率远远低于0.95
- p-value降低导致错误的结论,认为参数是统计显著的
- 模型的置信度无法保证
例如我们将样本错误的重复了一次,也就是样本数量 $n⇒2n$ ,那么对2n个样本对参数估计和对n个样本对估计相同,但后者CI对宽度是前者的 $\sqrt{2}$ 倍。
问题2常见于时间序列,时间序列中误差往往有相关性。
假设我们相邻的时间点产生的误差有正相关性,比如常见的九轴imu都是存在零漂的,误差会随着时间而不断积累,且上一个时间单位误差变大,下一个时间单位误差往往也会变大。
我们原本的数据是一个上下震荡非常激烈的时间数据,但是随着误差项的相关系数 $ρ$ 不断增加,他的震荡越来越不明显,因为他更加依赖于先前的数据。
假设【误差项不相关】对线性回归和其他统计方法都很重要,良好的实验设计(控制变量、环境)可以降低误差项自相关带来的风险
问题3 误差项方差不恒定
线性回归模型的另一个重要假设是误差项的方差是恒定的
即 $D(\epsilon_i)$ = $\sigma^2$
我们可以画一个残差图
红线是对残差的光滑你和,目的是看清楚趋势。蓝线描绘了残差的外分位数。
左侧的漏斗状残差表示存在异方差,右侧表示经过了对数变换然后再线性回归拟合的变量,异方差不是很明显。
解决方案:
- 当残差随拟合值增加而增加,用**「凹函数」对响应值 $y$ 做变换,比如 $logY$ $\sqrt{Y}$这种变换使较大的响应值有「更大的收缩(shrinkage)」**==> 降低异方差性
问题4 异常值
异常值是 y偏离很多的
最直觉明显的,异常值会对回归造成很大影响,我们应当敏锐发现异常值并且大胆踢除。
问题是如何确定哪些点是异常点,我们可以用 t分布
来进行求证,我们知道 t分布
是在不知道样本分布函数下的,根据观测值进行拟合的,他是正态分布的近似,因此我们可以求 t残差
然后绝对值 大于3 的 $X_i$ 可能是异常值,(对应 $3\sigma$原则)
问题5 高杠杆点
高杠杆点是 x偏离很多的,例如图中左侧 41
的点就是高杠杆点
高杠杆点对回归直线的估计有很大影响,这可能会导致整个拟合的失效
在简单线性回归中好找,直接画图即可。
在多元线性回归中,量化观测点的杠杆,计算 杠杆统计量
$ h_i=\frac1n+\frac{(x_i-\bar{x})^2}{\sum_{i=1}^n(x_i)} $
这里 $h_i$ 经常在 $\frac{1}{n}$到 1之间,他的平均值尝尝等于 $\frac{p+1}{n}$
问题6 非线性关系
可以画一个残差图来看
左边拟合曲线呈现 U
形,有很强的模式,说明数据很明显是非线性的,右边散点图分布的乱七八糟,表明数据分布没什么规律。
因此需要非线性变换
和K-近邻进行比较
在目前讨论的 回归任务
中, 线性回归
是 参数化模型
, k近邻算法
是 非参数化模型
参数化模型的特点就是将需要解决的问题落地到一个非常具体的假设,然后优化我们的假设参数,非参数模型就没有这个问题。
参数化模型的缺陷就是先天存在 Bias
,很依赖我们的假设,如果真实的数据和我的假设大相径庭,那我怎么做都是不好的. 而 knn
算法容易过拟合,过度的学习已知的数据,有一点 死记硬背
的感觉
例如我们可以看一张图
对于一个回归问题,KNN和线性模型的拟合效果可见下图,可以看到KNN对于假设与true function非常接近的问题来说,无论超参怎么调,拟合的效果相比线性模型还是差一些的。
所以在做回归任务的时候,我们可以先对数据有一个感性的认识,然后选择不同的模型来感受,实在是万不得已可以用 k-nn
分析
分类问题
站在刚才一大堆线性模型预测的肩膀上,我们来看看生活中更常见的分类问题。
我们经常需要根据一些判据来对事物进行分类,比如我们需要根据邮件的内容来分析是垃圾邮件还是正常邮件,此时我们的输出就是一个 qualitive
问题,而输入依然是我们选择的那些特征。不过分类器给出的一个常常是一个概率,然后我们来根据这些概率进行决策,比如我们认为输出的概率大于 0.9
认为是一个垃圾短信,否则是正常短信。
原有线性模型预测的局限性
- 出现非预期的值
考虑一个问题,医生在给出诊断的时候,只会判断是 中风
和 药物过量
中的其中一种。这是一个典型的 二分类
问题,比如 中风
输出 0, 药物过量
输出 1.我们当然可以像上一节一样构建一个线性回归模型,然后简单让他给出预测,如果输出的值大于一个阈值,我们就认为这个人患病,否则就没有。这种方式是合理的,但是他的局限性在于,模型的输出可能会超出我们的既定范围 [0,1]
这在概率里面是无法解释的,如下图
- 隐含着主次关系
假设这个医生现在牛逼了,他还可以诊断 癫痫
,我们可以直接用简单的用 1,2,3
来分别代表 中风,药物过量,癫痫
。但是这样编码是线性的,因为 1,2,3
有明显的排序性,我们在实际生活中这三种病的差异是无法量化表达的,但是在我们这种分类中,明显的重要性就是 中风<药物过量<癫痫
而且他们的差距幅度是 1
。因此我们如果换一种分类标签,拟合出来的模型很可能会大不相同,这并不是我们所期望的。
logistics回归
我们先从单变量说起。考虑先前提到的 信用卡贷款数据集
某个人的 信贷余额(欠款)
来预测 违约
, 我们如果要来分类这个人是否会违约,实际上可以将问题转化为根据 信贷余额
来预测 违约 = yes
的概率,也就是 $P(违约 = yes | 余额)$ 这个概率。
更通用的表达就是
$ p(X) = P(Y = 1 | X) $
用先前的线性回归模型显然会超出边界 $[0,1]$ ,因此我们可以做转换
$ \frac{p(X)}{1-p(X)} = e^{\beta_0+\beta_1X} $
然后两边取对数,并化简,得到
$ p(X) = \frac{e^{\beta_0+\beta_1X}}{1+e^{\beta_0+\beta_1X}} $
这样,我们对一个 分类问题
就变成了一个 等于其中一个值的概率问题
参数估计
用最大自然估计法来估计logistics的参数 $\beta_0,\beta_1$
然后我们一般在程序中会得到下表
我们依然可以看 p-value
来判断这个特征是否有意义, 这里的 Z
就相当于之前的 t值
预测概率
有了模型之后,我们可以计算概率,比如我们可以计算当 $balance == 1000$ 时候的违约概率是
$ \hat{p}(X)=\frac{e^{\hat{\beta}_0+\hat{\beta}_1X}}{1+e^{\hat{\beta}_0+\hat{\beta}_1X}}=\frac{e^{-10.6513+0.0055\times1,000}}{1+e^{-10.6513+0.0055\times1,000}}=0.00576 $
同样的,我们可以对 离散型
的变量进行逻辑回归,比如是否是 学生身份
来预测,我们需要将学生身份映射为 0-1
$ \widehat{\mathrm{Pr}}(\text{default=Yes|student=Yes})=\frac{e^{-3.5041+0.4049\times1}}{1+e^{-3.5041+0.4049\times1}}=0.0431,\\widehat{\mathrm{Pr}}(\text{default=Yes|student=No})=\frac{e^{-3.5041+0.4049\times0}}{1+e^{-3.5041+0.4049\times0}}=0.0292. $
多元logistics回归
遵循同样的推导方式,多元回归的公式是
$ p(X)=\frac{e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}}{1+e^{\beta_0+\beta_1X_1+\cdots+\beta_pX_p}}. $
我们这次根据 收入
和 学生身份
来预测 违约概率
比较上面的图,我们发现 这次 学生
反而不会促进 违约
图中 橘色
表示 学生
而蓝色 代表 非学生
我们发现,如果欠钱数量相同,学生违约的概率比不是学生的小,但是从水平来看,同样违约率,学生欠钱多。但学生总体上往往拥有更高的信用卡余额这一事实意味着,总体而言,学生的违约率往往高于非学生
这个简单的示例说明了当其他预测因子也可能相关时,仅涉及单个预测因子时执行回归的危险和微妙之处。在线性回归设置中,使用一个预测器获得的结果可能与使用多个预测器获得的结果大不相同,特别是当预测器之间存在相关性时。
判别分析
我们生活中有很多分类问题的类别大于2,尽管我们可以对逻辑回归进行扩展来处理多种分类,但是我们通常不采用,一般可以看看判别分析。
线性判别分析
逻辑回归参照先前的线性模型,先根据假设来给出一些预测特征,然后求出各个特征的参数。
线性判别遵循的方法:
- 根据 $Y$ 在每个类别 $k$ 下,各个自变量 $x$ 的**概率分布。**求得 $P(X= x | Y = k)$
- 利用贝叶斯公式求出 $P(Y = k | X = x)$
判别分析和逻辑回归的区别和适用范围
逻辑回归是先求概率分布的方程,然后用这个来预测,判别分析是先随便在样本里抽,然后判断他是属于哪个类的,然后利用贝叶斯公式推出分类的概率。
- 当样本的类别区分度很高时,这意味着类别之间的差异较大,而类别内部的差异较小。在这种情况下,逻辑回归模型的参数估计可能是不稳定的。这里的“不稳定”意味着当使用小量数据或稍微改变数据来进行重新估计时,参数可能会发生较大的变化。
- 如果样本量较小,并且自变量X的分布在每个类别中又近似正态分布,那么还是判别分析更稳定。
- 相较于逻辑回归,判别分析在解决多类别分类问题上更具优势。
LR用最大似然求参数,判别分析用均值和正态分布的方差来计算。
贝叶斯思想分类
贝叶斯做了以下这些事:
- 我们管 $\pi_k$ 叫做
先验概率
,从样本集合中随机选一个样本,然后计算这个样本属于k
类的概率。 - 让 $f_k(x) = p(X = x | Y = k)$ 表示 在 $k$ 类样本中 $x$ 的密度函数(回想概率论学的知识)
- 基于上面的定义,我们可以求出 $p_k(X) = P(Y = k | X = x)$ 也就是后验概率
$ \Pr(Y=k|X=x)=\frac{\pi_kf_k(x)}{\sum_{l=1}^K\pi_lf_l(x)}. $
一般来说 $\pi_k$ 是我们抽样得到的,可以根据样本来求,但是 $f_k(x)$ 除非我们人为根据假设定义一些简单的分布,否则很难直接预知。根据前面的知识,贝叶斯分类的误差是最小的,如果我们能准确估计 $f_k(x)$, 那么就可以构造贝叶斯分类器来完美的进行分类。
一元线性判别分析
当我们只有一个特征的时候,我们可以假设这个特征的先验概率分布 $f_k(x)$ 为 正态分布。
$ f_k(x)=\frac1{\sqrt{2\pi}\sigma_k}\exp\left(-\frac1{2\sigma_k^2}(x-\mu_k)^2\right) $
代入贝叶斯公式,得到概率为
$ p_k(x)=\frac{\pi_k\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{1}{2\sigma^2}(x-\mu_k)^2\right)}{\sum_{l=1}^K\pi_l\frac{1}{\sqrt{2\pi}\sigma}\exp\left(-\frac{1}{2\sigma^2}(x-\mu_l)^2\right)} $
取对数后,我们发现一个关于 $x$ 的线性函数。
$ \delta_k(x)=x\cdot\frac{\mu_k}{\sigma^2}-\frac{\mu_k^2}{2\sigma^2}+\log(\pi_k) $
分析思路:
- 假设特征 $X_p$ 在每个类别下的概率分布(通常是正态分布)
- 用训练样本估计 $u_k,\pi_k,\sigma_k^2$ 。
- 将待分类的样本点的自变量取值代入上述公式求概率。
- 将待分类样本点放到概率最高的类中。
多元判别分析
多元概率密度公式是
$ f(x)=\frac{1}{(2\pi)^{p/2}|\boldsymbol{\Sigma}|^{1/2}}\exp\left(-\frac{1}{2}(x-\mu)^T\boldsymbol{\Sigma}^{-1}(x-\mu)\right) $
其中 $u$ 是一个向量,代表 特征 $X_p$ 分别对应的均值, $\Sigma$ 代表变量之间的协方差,他是一个 $p×p$ 的矩阵。
整理之后,我们发现其实特征 $x$ 变成了一个向量 $X$ 他本质还是线性的
$ \delta_k(x)=x^T\boldsymbol{\Sigma}^{-1}\mu_k-\frac{1}{2}\mu_k^T\boldsymbol{\Sigma}^{-1}\mu_k+\log\pi_k $
因此分析思路可以类比单变量。
注意:线性判别分析的重要假设:1. $X_i ,i \in (1 , p)$ 是正态分布。 2. 属于不同类别k的数据集共享同一个方差(或者协方差)
二次判别分析
前面的线性判别分析中属于不同类别的数据共享同一个方差,但是二次判别分析中则不需要第二个约束。
$ \begin{aligned}\delta_{k}(x)& \begin{array}{rcl}=&-\frac{1}{2}(x-\mu_k)^T\boldsymbol{\Sigma}_k^{-1}(x-\mu_k)-\frac{1}{2}\log|\boldsymbol{\Sigma}_k|+\log\pi_k\end{array} \&\begin{array}{rcl}=&-\frac{1}{2}x^T\boldsymbol{\Sigma}_k^{-1}x+x^T\boldsymbol{\Sigma}_k^{-1}\mu_k-\frac{1}{2}\mu_k^T\boldsymbol{\Sigma}_k^{-1}\mu_k-\frac{1}{2}\log|\boldsymbol{\Sigma}_k|+\log\pi_k\end{array}\end{aligned} $
线性和二次的选择
- 看看是否存在显著非线性关系,如果有,那就二次
- 如果不是很确定非线性关系,先线性判别分析一下,他的时间复杂度小很多。
- 数据不充裕选线性判别分析,充裕选二次(永远记住导论中的原则,越复杂的模型在小数据集下越容易过拟合而不是欠拟合)
非线性模型的博弈
我们已经学过两种非线性模型了,一个是带有参数的 二次判别
一个是非参数的 KNN
。在非线性的时候, KNN
有可能更出色,因为他是非参数的,可以不局限于我们的假设而造成的不可回避误差 $\epsilon$ 但是KNN常常过拟合,而且没办法给出变量重要性的排序信息。因此 二次判别分析
是一个很实用的选择。
一个实例后记
这是一个 洛杉矶骑单车的数据集,绿色的线是 平均值 $\mu$ ,蓝色是样本点。我们可以发现随着平均值增加,样本的方差也在增加。这表明用Poisson分布更好一些
我们可以用各种分布对我们的回归进行扩展,比如伯努利二项分布 Poisson分布 和正态分布。