ESL读书笔记
ESL读书笔记
《The Elements of Statistical Learning - Data Mining, Inference and Prediction - 2nd Edition (ESLII_print4)》
总结
贝叶斯定理
核心是贝叶斯定理,贝叶斯定理在统计中的应用就像牛顿定理在物理学的地位一样。
贝叶斯定理的核心是需要理解似然函数。
P(A|B) = P(B|A)P(A) / P(B) 这个公式是针对离散的概率。
条件概率的核心是根据三个条件:样本总体的分布+先验信息(P(A))+样本的信息(P(B|A)) , 得到后验概率(分布)(P(A|B))。
贝叶斯推断中,我们需要确定一个在给定参数时数据的采样模型 $(Z;) $(密度函数或者概率质量函数),以及反映我们在得到数据之前对于 \(\theta\) 认知的先验分布 \(\Pr(\theta)\).然后计算后验分布: \[ \Pr(\theta\mid\mathbf Z)=\frac{\Pr(\mathbf Z\mid\theta)\cdot \Pr(\theta)}{\int \Pr(\mathbf Z\mid \theta)\cdot \Pr(\theta)d\theta}\tag{8.23} \] 它表示当我们知道数据后更新对 \(\theta\) 的认知.为了理解这一后验分布,可以从中抽取样本或者通过计算均值或众数来描述它.贝叶斯方法与一般推断方法的不同之处在于,用先验分布来表达知道数据之前的这种不确定性,而且在知道数据之后允许不确定性继续存在,将它表示成后验分布.
自己学会举一个生活中的例子,就说明你理解了。
Tips
自由度;也就是无约束参数的个数?
有偏无偏估计,个人理解例如Lasso这些方法增加了约束条件就是有偏估计?
二次规划问题:二次规划 = 二次目标函数 + 线性约束 + 有限维变量空间的凸优化问题。
广义线性模型类,它们都是以同样的方式扩展为广义可加模型。
怎么判断函数的凸性:对于任意两点之间的连线,总是在函数图像之上或重合。
中心化:使得均值为 0; 标准化:使得均值为 0 、方差为 1
为什么引入随机效应后会有如此神奇的疗效?
概念
假设检验:基于小概率的反证法。 提出假设(置信水平),计算抽样的样本统计量,计算概率,判断是否小概率事件(根据置信水平);如果是小概率事件则假设不成立。
标准差:是衡量样本个体的离散程度; 标准误:样本统计量的标准差;是衡量抽样样本水平(样本统计量,均值是其中一个统计量)的离散程度(或者叫抽样误差的程度)。
t-检验可用于对回归系数的检验。 t = (样本统计量 - 总体参数)/ 样本统计量标准差(或者叫标准误) t检验本质是:当数据服从t分布的时候,检验某一样本统计量是否与总体参数相等。
条件概率和似然函数的区别 同一个表达式 \(P(x \mid \theta)\),既可以是条件概率,也可以是同一个表达式 \(P(x \mid \theta)\),既可以是条件概率,也可以是似然函数,取决于我们把哪个当变量、哪个当已知!,取决于我们把哪个当变量、哪个当已知!
偏差(bias):真实值 - 预测值(拟合的结果) bias, the amount by which the average of our estimate differs from the true mean。
偏差 (deviance):偏差是用来比较两个不同模型的。我们通过将一个模型的偏差减去另一个模型的偏差来进行比较。 一篇写得很棒的博客,What is deviance? -- by kjytay
有效参数个数 (effective number of parameters)
我们知道了一个变量的分布,要生成一批样本服从这个分布,这个过程就叫采样。 听起来好像很简单,对一些简单的分布函数确实如此,比如,均匀分布、正太分布,但只要分布函数稍微复杂一点,采样这个事情就没那么简单了。为什么要采样在讲具体的采样方法之前,有必要弄清楚采样的目的。为什么要采样呢?有人可能会这样想,样本一般是用来估计分布参数的,现在我都知道分布函数了,还采样干嘛呢?其实采样不只是可以用来估计分布参数,还有其他用途,比如说用来估计分布的期望、高阶动量等。
贝叶斯误差(Bayes Error) 是统计学习理论中的一个核心概念,指的是在已知真实分布的最优分类器下,仍然不可避免的分类错误率。它代表了任何分类器都无法超越的理论最小错误率,是分类问题中的“理论下限”。
独立与不相关 统计上, 连续型随机变量 \(X\) 与 \(Y\) 独立的定义为 \[ p(x, y)=p_X(x)p_Y(y)\;\forall x,y \] 而不相关的定义为 \[ \text {Cov}(X, Y)=0 \] 独立意味着不相关,但反之不对.对于二元正态随机变量,两者等价.
不相关但不独立的例子: \(X\) 是从区间 \([-1, 1]\) 上均匀分布的随机变量; \(Y = X^2\) 则: \(X\) 和 \(Y\) 是不相关的(因为 \(E[X] = 0\),\(E[XY] = 0\)) 但 \(X, Y\) 不是独立的,因为知道 \(X\) 的值后,\(Y\) 就完全确定。
马尔科夫蒙特卡洛法 (Markov chain Monte Carlo).我们将要看到吉布斯采样(一个 MCMC 过程)
吉布斯采样(Gibbs Sampling) 吉布斯采样是MCMC的一个特例,吉布斯采样的牛逼之处在于只需要知道条件概率的分布,便可以通过采样得到联合概率分布的样本;核心在七个字:一维一维的采样:
具体步骤:
初始化:首先给每个变量一个初始值(通常是随机选择的)。
循环抽样:依次更新每个变量,具体过程是:
在给定当前所有其他变量的情况下,从该变量的条件分布中抽样。
用新的样本值替代当前变量的值,并更新系统。
迭代收敛:重复上述抽样过程足够多次,随着迭代进行,样本将会逐渐收敛于目标的联合分布。
自然三次样条 (详见原书 5.2 分段多项式和样条)
三次样条(cubic spline)是将数据区间划分为若干个小区间,每个区间内用一个三次多项式拟合,且整体函数在区间连接点处保持:
- 函数值连续(\(C^0\))
- 一阶导数连续(\(C^1\))
- 二阶导数连续(\(C^2\))
自然三次样条(Natural cubic spline)是在此基础上,对两端的两个点添加了“自然”条件:\(f''(x_1) = f''(x_n) = 0\)
也就是说,样条函数在两端的二阶导数为 0,表示在端点处“趋于线性”。
第一章 导言
这本书是如何组织的
我们的观点是一个人在尝试掌握复杂的概念前必须理解简单的方法.因此,当在第二章对监督学习给出概要后,我们在第三和第四章讨论了回归和分类的线性方法.第五章我们描述了对单个自变量的样条,小波和正则/惩罚方法,第六章则描述了核方法和局部回归.上述两种方法都是高维学习技术的重要基石.模型评估与选择是第七章的主题,包括偏差和方差,过拟合和用于选择模型用的交叉验证.第八章讨论了模型推断与平均,概要地介绍了极大似然法、贝叶斯推断、自助法、EM算法、吉布斯抽样和bagging.与此相关的boosting过程是第十章的重点.
在第九到十三章我们描述了一系列用于监督学习的结构化方法,其中第九和第十一章介绍回归以及第十二和第十三章重点在分类.第十四章描述了非监督学习的方法.两个最近提出来的技术,随机森林和集成学习将在第十五和第十六章讨论.我们在第十七章讨论无向图模型以及最后在第十八章学习高维问题.
在每一张结尾我们讨论计算需要考虑的因素,这对於数据挖掘的应用是很重要的,包括计算量级随着观测值和自变量数目的变化.
我们建议按顺序先阅读第1-4章,第7章也应该当作强制阅读,因为它介绍了关于所有学习方法的中心概念.有了这些概念,这本书的其他章节根据读者的兴趣可以按照顺序读,或选读.
这个标志表明这是技术上困难的部分,读者可以跳过这部分而且不会影响后续讨论.
书的网址
这本书的网站是 http://www-stat.stanford.edu/ElemStatLearn 里面包含很多资源,包括这本书里面用到的很多数据集.
第二章 监督学习概要
最小二乘和K-最近邻的核心思想差别
所以 \(k\)-最邻近和最小二乘最终都是根据平均来近似条件期望.但是它们在模型上显著不同.
- 最小二乘假设 \(f(x)\) 是某个整体线性函数的良好近似.
- \(k\)-最近邻假设 \(f(x)\) 是局部常值函数的良好近似.
最小二乘法和k-最近邻
两种简单但很有用的预测方法:最小二乘法的线性模型拟合和 \(k\)-最近邻预测规则.线性模型对结构做出很大的假设而且得出稳定但可能不正确的预测.\(k\)-最近邻方法对结构的假设很温和:它的预测通常是准确的但不稳定.
- 最小二乘:低方差、高偏差;
- K-最近邻:高方差、低偏差;
MSE的偏差-方差分解
\(\text{MSE}\) 分解成两个部分,随着我们继续讨论,会越来越熟悉这两个部分,这两部分分别是方差和偏差平方.这一分解总是可行的而且经常有用,并且这一分解被称为 偏差-方差分解 (bias-variance decomposition).
模型复杂度 (model complexity) 增加,方差趋于上升,偏差趋于下降.当模型复杂度下降时会发生相反的行为.对于 \(k\)-最近邻,模型复杂度由 \(k\) 来控制.
模型选择和偏差-方差的权衡
上面讨论的所有模型以及其他将要在后面章节讨论的模型都有一个 光滑 (smoothing) 或 复杂性 (complexity) 参数需要确定:
- 惩罚项的乘子
- 核的宽度
- 基函数的个数
模型复杂度 (model complexity) 增加,方差趋于上升,偏差趋于下降.当模型复杂度下降时会发生相反的行为. 一般地,我们选择模型复杂度使偏差与方差达到均衡从而使测试误差最小.
无论何时增加模型复杂度(换句话说,无论何时更精细地(harder)拟合数据),训练误差都趋于下降.然而过度的拟合,模型会自适应使得更加接近训练数据,但不能很好地进行泛化(比如说,测试误差很大).
维度的诅咒 (curse of dimensionality)
如果我们希望以在低维中以相同的精度来估计高维中的函数,我们将会需要呈指数增长规模的训练集.
通过依赖严格的假设,线性模型没有偏差而且方差几乎可以忽略,然后 \(1\)-最近邻的误差就会相当的大.然而,如果假设是错误的,所有的东西都不复存在,而 \(1\)-最近邻将占主导地位.我们将会看到介于严格的线性模型和非常灵活的 \(1\)-最近邻模型之间的模型谱,每个都有它们各自的假设和偏差,这些假设已经具体提到过,通过在很大程度上借鉴这些假设来避免高维下函数复杂度呈指数增长.
统计判别理论的章节的理论准备中,对于定量的响应,我们看到平方误差损失引导我们得到了回归函数 \(f(X)=\text{E}(Y\mid X=x)\).最近邻方法可以看成是对条件期望的直接估计,但是我们可以看到至少在两个方面它们不起作用
- 如果输入空间的维数高,则最近邻不必离目标点近,而且可能导致大的误差
- 如果知道存在特殊的结构,可以用来降低估计的偏差与方差.
极大似然估计
尽管最小二乘在一般情况下非常方便,但并不是唯一的准则,而且在一些情形下没有意义.一个更一般的估计准则是 极大似然估计 (maximum likelihood estimation). 极大似然的原则是假设最合理的 \(\theta\) 值会使得观测样本的概率最大.
约束条件和问题简化
一般地,大多数学习方法施加的约束条件都可以描述为这样或那样对复杂度的限制.这通常也意味着在输入空间的小邻域的一些规则的行为.
限制的强度由邻域的大小所确定.邻域的规模越大,限制条件则越强,而且解对特定限制条件的选择也很敏感.举个例子,在无穷小邻域内局部常值拟合根本不是限制;在一个比较大的邻域内进行局部线性拟合几乎是全局线性模型,而且限制性是非常强的.
限制的本质取决于采用的度量.一些像核方法、局部回归和基于树的方法,直接明确了度量以及邻域的规模.至今为止讨论的最近邻方法是基于函数局部为常值的假设; 其它像样条、神经网络以及基于函数的方法隐性定义了邻域的局部行为。
限制性估计的种类: 非参回归技巧的多样性或学习方法的类型根据其限制条件的本质可以分成不同的种类.这些种类不是完全不同的,而且确实一些方法可以归为好几种不同的类别.这里我们进行一个简短的概要,因为详细的描述将在后面章节中给出.每个类都有与之对应的一个或多个参数,有时恰当地称之为 光滑化(smoothing) 参数,这些参数控制着局部邻域的有效大小.
这里我们描述三个大的类别.
1、粗糙度惩罚和贝叶斯方法
惩罚函数,或者说 正则 (regularization) 方法,表达了我们的 先验信仰 (prior belief)——寻找具有一个特定类型的光滑行为函数类型,而且确实可以套进贝叶斯的模型中.
2、核方法和局部回归
这些方法可以认为是通过确定局部邻域的本质来显式给出回归函数的估计或条件期望,并且属于局部拟合得很好的规则函数类.局部邻域由 核函数(kernel function) \(K_{\lambda}(x_0,x)\) 确定
内积(dot product)与距离(distance)有密切关系,尤其是在欧几里得空间中,二者经常可以互相表达、转化。
欧几里得距离(Euclidean distance) \[ \|\vec{a} - \vec{b}\| = \sqrt{(a_1 - b_1)^2 + (a_2 - b_2)^2 + \cdots + (a_n - b_n)^2} \]
用内积表示 \[ \|\vec{a} - \vec{b}\|^2 = (\vec{a} - \vec{b}) \cdot (\vec{a} - \vec{b}) = \vec{a} \cdot \vec{a} - 2\vec{a} \cdot \vec{b} + \vec{b} \cdot \vec{b} = \|\vec{a}\|^2 + \|\vec{b}\|^2 - 2 \vec{a} \cdot \vec{b} \] 在机器学习中的重要意义:
- 余弦相似度(cosine similarity):基于内积
- 欧几里得距离(KNN、聚类):基于向量差
- 二者在许多模型(SVM、PCA、核方法)中互相关联
3、基函数和字典方法
这个方法的类别包括熟悉的线性和多项式展开式,但是最重要的有多种多样的更灵活的模型.这些关于 \(f\) 的模型是基本函数的线性展开。 单层的向前反馈的带有线性输出权重的神经网络模型可以认为是一种自适应的基函数方法.(详见文中公式2.45) 激活 (activation) 函数.作为投射追踪模型。 这些自适应选择基函数的方法也被称作 字典 (dictionary) 方法,其中有一个可用的候选基函数的可能无限集或字典 \(\cal D\)可供选择,而且通过应用其它的搜索机制来建立模型.
第三章 线性回归方法
PS:
对于任意一个有限维的矩阵(实数或复数矩阵),它的行秩 = 列秩。这个值也被称为矩阵的秩(rank);
标准化因数或者 Z-分数,\(z_j\) 分布为 \(t_{N-p-1}\)(自由度为 \(N-p-1\) 的 \(t\) 分布);
\(t\) 分布和标准正态分布在尾概率之间的差异随着样本规模增大可以忽略;
\(F\) 统计量衡量了在大模型中每个增加的系数对残差平方和的改变;
当 \(N\) 足够大时,\(F_{p_1-p_0,N-p_1-1}\) 近似 \(\chi^2_{p_1-p_0}\).
Guass-Markov 定理
- 统计学中一个很有名的结论称参数 \(\beta\) 的最小二乘估计在所有的线性无偏估计中有最小的方差.
考虑 \(\theta\) 的估计值 \(\tilde{\theta}\) 的均方误差 \[ \begin{align} \text MSE(\tilde{\theta})&=\text E(\tilde{\theta}-\theta)^2\notag\\ &=\text Var(\tilde{\theta})+[\text E(\tilde{\theta})-\theta]^2\tag{3.20} \end{align} \] 第一项为方差,第二项为平方偏差.Gauss-Markov 定理表明最小二乘估计在所有无偏线性估计中有最小的均方误差.然而,或许存在有较小均方误差的有偏估计.这样的估计用小的偏差来换取方差大幅度的降低.实际中也会经常使用有偏估计.任何收缩或者将最小二乘的一些参数设为 0 的方法都可能导致有偏估计.我们将在这章的后半部分讨论许多例子,包括 变量子集选择 和 岭回归.从一个更加实际的观点来看,许多模型是对事实的曲解,因此是有偏的;
- 挑选一个合适的模型意味着要在偏差和方差之间创造某种良好的平衡.
从简单单变量回归到多重回归
令 \(\mathbf{y}=(y_1,\ldots,y_N)^T\),\(\mathbf{x}=(x_1,\ldots,x_N)^T\),并且定义 \[ \begin{align} \langle\mathbf{x},\mathbf{y}\rangle &= \sum\limits_{i=1}^Nx_iy_i\notag\\ & = \mathbf{x}^T \mathbf{y} \tag{3.25} \end{align} \]
\(\mathbf{x}\) 和 \(\mathbf{y}\) 之间的内积,于是我们可以写成
\[ \begin{align*} \hat{\beta}&=\dfrac{\langle \mathbf{x,y}\rangle}{\langle\mathbf{x,x} \rangle}\\ \mathbf{r}&=\mathbf{y}-\mathbf{x}\hat{\beta} \end{align*} \tag{3.26}\label{3.26} \]
!!! note "weiya 注:原书脚注" The inner-product notation is suggestive of generalizations of linear regression to different metric spaces, as well as to probability spaces. 内积表示是线性回归模型一般化到不同度量空间(包括概率空间)建议的方式.
正如我们所看到的,这个简单的单变量回归提供了多重线性回归的框架 (building block).进一步假设输入变量 \(\mathbf{x}_1,\mathbf{x_2,\ldots,x_p}\)(数据矩阵 \(\mathbf{X}\) 的列)是正交的;也就是对于所有的 \(j\neq k\) 有\(\langle \text x_j,\text x_k\rangle=0\).于是很容易得到多重最小二乘估计 \(\hat{\beta}_j\) 等于 \(\langle \mathbf{x}_j,\mathbf{y}\rangle/\langle\mathbf{x}_j,\mathbf{x}_j\rangle\) ——单变量估计.换句话说,当输入变量为正交的,它们对模型中其它的参数估计没有影响.
进一步假设我们有一个截距和单输入 \(\bf{x}\).则 \(\bf{x}\) 的最小二乘系数有如下形式
\[ \hat{\beta}_1=\dfrac{\langle \mathbf{x}-\bar{x}\mathbf{1},\mathbf{y}\rangle}{\langle \mathbf{x}-\bar{x}\mathbf{1},\mathbf{x}-\bar{x}\mathbf{1}\rangle}\tag{3.27}\label{3.27} \]
其中,\(\bar{x}=\sum_ix_i/N\),且 \(N\) 个元素全为 1 的向量 \(\mathbf{1}=\mathbf{x_0}\).我们可以将式 \(\eqref{3.27}\) 的估计看成简单回归 \(\eqref{3.26}\) 的两次应用.这两步是:
- 在 \(\bf{1}\) 上回归 \(\bf{x}\) 产生残差 \(\mathbf{z}=\mathbf{x}-\bar{x}\mathbf{1}\);
- 在残差 \(\bf{z}\) 上回归 \(\bf{y}\) 得到系数 \(\hat{\beta}_1\) 在这个过程中,“在 \(\bf{a}\) 上回归 \(\bf{b}\)”意思是 \(\bf{b}\) 在 \(\bf{a}\) 上的无截距的简单单变量回归,产生系数 \(\hat{\gamma}=\langle\mathbf{a,b}\rangle/\langle\mathbf{a,a}\rangle\) 以及残差向量 \(\mathbf{b}-\hat{\gamma}\mathbf{a}\).我们称 \(\bf{b}\) 由 \(\bf{a}\) 校正(adjusted),或者关于 \(\bf{a}\) 正交化.
详见原书图3.4 正交输入的最小二乘回归.向量 \(\mathbf{x}_2\) 在向量 \(\mathbf{x}_1\) 上回归,得到残差向量 \(\mathbf{z}\).\(\mathbf{y}\) 在\(\mathbf{z}\) 上的回归给出 \(\mathbf{x}_2\) 的系数.把 \(\mathbf{y}\) 在 \(\mathbf{x}_1\) 和 \(\mathbf{z}\) 上的投影加起来给出了最小二乘拟合 \(\mathbf{\hat{y}}\).
多重回归系数 \(\hat\beta_j\) 表示 \(\mathbf x_j\) 经过 \(\mathbf x_0,\mathbf x_1,\ldots,\mathbf x_{j-1},\mathbf x_{j+1},\ldots,\mathbf x_p\) 调整后 \(\mathbf x_j\) 对 \(\mathbf y\) 额外的贡献
- 若模型为:\(y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p + \varepsilon\)
则:\(\hat{\beta}_0 = \bar{y} - \sum_{j=1}^{p} \hat{\beta}_j \bar{x}_j\)
依然体现了:截距项用于保证模型在均值点的预测值等于 \(\bar{y}\)。 截距和样本均值有严格的线性关系。
- 在带截距的线性回归中,回归线总通过样本均值点 \((\bar{x}, \bar{y})\),这是一个非常重要的几何性质。
子集的选择
两个原因使得我们经常不满足最小二乘估计 (3.6)
- 第一个是预测的 精确性 (prediction accuracy):最小二乘估计经常有小偏差大方差.预测精确性有时可以通过收缩或者令某些系数为 0 来提高.通过这些方法我们牺牲一点偏差来降低预测值的方差,因此可能提高整个预测的精确性.
- 第二个原因是 可解释性 (interpretation):当有大量的预测变量时,我们经常去确定一个小的子集来保持最强的影响.为了得到“big picture”,我们愿意牺牲一些小的细节.
这节我们描述一些线性回归选择变量子集的方法.在后面的部分中我们讨论用于控制方差的收缩和混合的方法,以及其它降维的策略.这些都属于 模型选择 (model selection).模型选择不局限于线性模型;第 7 章将详细介绍这个主题.
子集选择意味着我们只保留变量的一个子集,并除去模型中的剩余部分.最小二乘回归用来预测保留下的输入变量的系数.这里有一系列不同的选择子集的策略.
最优集的选择
AIC 准则是一个受欢迎的选择
向前和向后逐步选择
- 其它传统的包中的选择基于 \(F\) 统计量,加入“显著性”的项,然后删掉“非显著性”的项.这些不再流行,因为它们没有合理考虑到多重检验的问题.
向前逐渐 (Forward-Stagewise) 回归
- 使用“一个标准误差”规则——在最小值的一个标准误差范围内我们选取最简洁的模型。
收缩的方法
通过保留一部分预测变量而丢弃剩余的变量,子集选择 (subset selection) 可得到一个可解释的、预测误差可能比全模型低的模型.然而,因为这是一个离散的过程(变量不是保留就是丢弃),所以经常表现为高方差,因此不会降低全模型的预测误差.而收缩方法 (shrinkage methods) 更加连续,因此不会受 高易变性 (high variability) 太大的影响.
岭回归
- 系数向零收缩(并且彼此收缩到一起);
- 通过参数的平方和来惩罚的想法也用在了神经网络,也被称作 权重衰减 (weight decay)
- 对输入按比例进行缩放时,岭回归的解不相等,因此求解公式 \(\text{3.41}\)前我们需要对输入进行标准化.另外,注意到惩罚项不包含截距 \(\beta_0\).对截距的惩罚会使得过程依赖于 \(\mathbf{Y}\) 的初始选择;
- 对输入进行中心化(每个 \(x_{ij}\) 替换为 \(x_{ij}-\bar x_j\))
- 主成分回归与岭回归非常相似:都是通过输入矩阵的主成分来操作的.岭回归对主成分系数进行了收缩,收缩更多地依赖对应特征值的大小;主成分回归丢掉 \(p-M\) 个最小的特征值分量.
中心化输入矩阵 \(\mathbf{X}\) 的 奇异值分解 (SVD) \(\mathbf{X}\) 的 SVD 分解有如下形式 \[ \mathbf{X=UDV^T}\tag{3.45}\label{3.45} \]
得到 \[ \mathbf{X^T X = VD^2V^T} \tag{3.48} \]
上式是 \(\mathbf{X}^T \mathbf{X}\)(当忽略因子 \(N\) 时,也是 \(S\))的 特征值分解 (eigen decomposition).特征向量 \(v_j\)(\(\mathbf{V}\) 的列向量)也称作 \(\mathbf{X}\) 的 主成分 (principal components)(或 Karhunen-Loeve)方向.
最后一个主成分有最小的方差.因此越小的奇异值 \(d_j\) 对应 \(\mathbf{X}\) 列空间中方差越小的方向,并且岭回归在这些方向上收缩得最厉害.
图 3.9 展示了两个维度下部分数据点的主成分.如果我们考虑在这个区域(\(Y\) 轴垂直纸面)内拟合线性曲面,数据的结构形态使得确定梯度时长方向会比短方向更精确.岭回归防止在短方向上估计梯度可能存在的高方差.隐含的假设是响应变量往往在高方差的输入方向上变化.这往往是个合理的假设,因为我们所研究的预测变量随响应变量变化而变化,而不需要保持不变.
图 3.9 部分输入数据点的主成分.最大主成分是使得投影数据方差最大的方向,最小主成分是使得方差最小的方向.岭回归将 \(\mathbf{y}\) 投射到这些成分上,然后对低方差成分的系数比高方差收缩得更厉害.
Lasso
- 由于该约束的本质,令 \(t\) 充分小会造成一些参数恰恰等于 0.因此 lasso 完成一个温和的连续子集选择.
- 类似在变量子集选择中子集的大小,或者岭回归的惩罚参数,应该自适应地选择 \(t\) 使预测误差期望值的估计最小化.
- lasso 曲线会达到 0,然而岭回归不会.曲线是分段线性的
讨论:子集的选择,岭回归,Lasso
有约束的线性回归模型的三种方法:子集选择、岭回归和 lasso.
- 在正交输入矩阵的情况下,三种过程都有显式解.每种方法对最小二乘估计 \(\hat{\beta}_j\) 应用简单的变换,详见表 3.4.
- 岭回归做等比例的收缩.lasso 通过常数因子 \(\lambda\) 变换每个系数,在 0 处截去.这也称作“软阈限”,而且用在 5.9 节中基于小波光滑的内容中.最优子集选择删掉所有系数小于第 \(M\) 个大系数的变量;这是“硬阈限”的一种形式.
- lasso、岭回归和最优子集选择是有着不同先验分布的贝叶斯估计,然而,注意到它们取自后验分布的众数,即最大化后验分布.在贝叶斯估计中使用后验分布的均值更加常见.岭回归同样是后验分布的均值,但是 lasso 和最优子集选择不是.
第四章 线性分类方法
PS: 贝叶斯定理(Bayes’ Theorem)是概率论中一个非常重要的定理,用于在已知结果的情况下推断原因(也就是“后验概率”)。
一句话理解
贝叶斯定理告诉我们如何根据已有信息更新对某事件的信念。
数学表达式
对于两个事件 \(A\) 和 \(B\),只要 \(P(B) > 0\),贝叶斯定理公式如下:
\[ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} \]
其中:
- \(P(A)\):先验概率,事件 A 发生的原始概率;
- \(P(B|A)\):似然度,在 A 发生的条件下,观察到 B 的概率;
- \(P(B)\):边缘概率,B 发生的总概率;
- \(P(A|B)\):后验概率,在 B 发生的前提下,A 发生的概率。
通俗理解
想象一个医生看到病人有发烧的症状(B),他希望知道这个人是否患有某种病(A)。
- \(P(A)\):这个病在人群中的患病率;
- \(P(B|A)\):有这种病的人发烧的概率;
- \(P(B)\):不管是否得病,总体发烧的概率;
- \(P(A|B)\):某人已经发烧了,他患这种病的可能性。
示例:疾病检测
假设:
某病患病率 \(P(\text{病}) = 1\% = 0.01\)
检测准确率:
- 如果有病,检测呈阳性 \(P(\text{阳性}|\text{病}) = 99\%\)
- 如果无病,检测误报率 \(P(\text{阳性}|\text{无病}) = 5\%\)
问:一个人检测阳性后,他实际患病的概率是多少?
解:设:
- \(A\):有病
- \(B\):检测为阳性
\[ P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)} \]
计算 \(P(B)\):
\[ P(B) = P(B|A)P(A) + P(B|\text{无病})P(\text{无病}) \\ = 0.99 \times 0.01 + 0.05 \times 0.99 = 0.0099 + 0.0495 = 0.0594 \]
代入贝叶斯公式:
\[ P(A|B) = \frac{0.99 \times 0.01}{0.0594} \approx 0.1667 \]
所以,即使检测呈阳性,患病概率也只有 约 16.67%!
应用场景
- 医学诊断
- 垃圾邮件识别(朴素贝叶斯)
- 金融风控
- 机器学习中的贝叶斯推断
- 自然语言处理(情感分析、文本分类)
第五章 基函数扩展与正则化
据说三次样条是人眼看不出结点不连续的最低阶样条.很少有更好的理由去选择更高次的样条,除非对光滑的微分感兴趣.
固定结点的样条也称作 回归样条 (regression splines).我们需要选择样条的阶数,结点的个数以及它们的位置.一种简单方式是用基函数或自由度来参量化样条族,并用观测 \(x_i\) 来确定结点的位置.
自然三次样条 (natural cubic spline) 添加额外的限制,具体地,令边界结点之外的函数是线性的.
高维特征的预处理是非常普遍的而且对于改善学习算法的效果是很有效的
第六章 核平滑方法
- \(\Vert \cdot\Vert\) 是欧几里得范数.因为欧式范数取决于每个坐标的单位,所以对每个预测变量进行标准化是有意义的,举个例子,在光滑之前,标准化为单位标准误差.
- 当维度与样本大小的比率不是很好,则局部回归对我们没有太大帮助,除非我们想要对模型做出一些结构化的假设.这本书的很多部分是关于结构化回归和分类模型的.
朴素贝叶斯分类器
不管它的名字(也称为“白痴的贝叶斯”!),这是这些年仍然流行的技巧.当特征空间的维数 \(p\) 很高,这种方式特别合适,使得密度估计不再吸引人.朴素贝叶斯模型假设给定类别 \(G=j\),特征 \(X_k\) 是独立的:
\[ f_j(X)=\prod\limits_{k=1}^pf_{jk}(X_k)\tag{6.26}\label{6.26} \]
尽管这个假设一般是不对的,但是确实很大程度上简化了估计:
- 单独的类别条件的边缘密度 \(f_{jk}\) 可以采用一维核密度估计分别估计出来.这实际上是原始朴素贝叶斯过程的泛化,采用单变量高斯分布来表示这些边缘密度.
- 如果 \(X\) 的组分 \(X_j\) 是离散的,则可以使用合适的直方图估计.这提供了在特征向量中混合变量类型的完美方式.
尽管这些假设过于乐观,朴素贝叶斯分类器经常比更复杂的分类器做得更好.原因与图 6.15 相关:尽管单独的类别密度估计可能是有偏的,但这个偏差或许不会对后验概率不会有太大的影响,特别是在判别区域附近.实际上,这个问题或许可以承受为了节省方差造成的相当大的偏差,比如“天真的”假设得到的.
计算上的考虑
核和局部回归以及密度估计都是 基于内存的 (memory-based) 方法:模型是整个训练数据集,并且在赋值或者预测的时候完成拟合.对于许多实时的应用,这使得这类方法不可行.
第七章 模型评估与选择
根据百度百科 即 知乎回答,定距变量也称间距变量,是取值具有“距离”特征的变量。统计学依据数据的计量尺度将数据分为四大类:
- 定距型 (interval scale): 数值变量,可以加减运算,但不能乘除;不存在基准 0 值,即当变量值为 0 时不是表示没有,如温度变量。
- 定序型 (ordinal scale): 类别型变量,如性别。
- 定类型 (nominal scale): 不可以做四则运算,如满意度(非常满意、满意、一般、不满意、非常不满意)。
- 定比型 (ratio scale): 数值变量,存在 0 值,比值有意义。
测试误差和训练误差
测试误差和期望测试误差
测试误差 (test error),也被称作 泛化误差 (generalization error),它是在独立的测试样本上的预测误差 \[ \text {Err}_{\cal T}=E[L(Y,\hat f(X))\mid {\cal T}]\tag{7.2} \]
其中 \(X\) 和 \(Y\) 都是随机从它们的(总体)联合分布中选取的.这里训练集 \(\cal T\) 是固定的,测试误差指的是对该特定训练集的误差.一个相关的量是 期望预测误差 (expected prediction error)(或者 期望测试误差 (expected test error))
\[ \text {Err} = E[L(Y,\hat f(X))]=\text {E}[\text {Err}_{\cal T}]\tag{7.3} \]
注意到这个期望平均的任何项都是随机的,包括产生 \(\hat f\) 的训练集的随机性.
训练误差
训练误差 (Training error) 是在训练样本上的平均损失,(注意:这里是平均值) \[ \overline{\text {err}}=\frac{1}{N}\sum\limits_{i=1}^NL(y_i,\hat f(x_i))\,.\tag{7.4} \]
我们想要知道估计模型 \(\hat f\) 的测试误差的期望值.当模型越来越复杂时,它使用更多的训练数据并且可以适应于更复杂的潜在结构.因此偏差会有降低而方差会有增大.一些中等程度的模型复杂度给出了最小的测试误差期望值.
不幸的是,正如我们在图 7.1 中看到的那样训练误差不是测试误差一个良好的估计.训练误差随着模型复杂度增大不断降低,一般地如果我们将模型复杂性增到充分大它会降为 0.然而,0 训练误差的模型对训练数据是过拟合的并且一般泛化性很差.
模型选择
重要的是要注意,事实上我们可能有两个单独的目标:
模型选择 (Model selection): 估计不同模型的表现来选择最好的那个
模型评估 (Model assessment): 已经选择好了最终模型,估计它在新数据上的预测误差(泛化误差)
如果我们处在有充足数据的情形中,对于这两个问题的最好的方式是将数据集随机地分成 3 个部分:训练集,验证集,以及测试集.训练集用来拟合模型;验证集用来估计预测误差来进行模型选择;测试集用来评估最终选择的模型的泛化误差.理想情形下,测试集应保存在“黑箱 (valut)”中,并且只在数据分析结束时才会显示出来.否则,假设我们重复采用测试集,选择具有最小测试误差的模型,则最终选择模型的测试误差会低估真实的测试误差,有时候偏差是相当大的.
在三个部分的每一个中如何选取观测的个数很难给出一个一般性的规则,因为这取决于数据的信噪比和训练样本的规模.一般的分割是 50% 用于训练,25% 用于验证,25% 用于测试:
本章中的方法是为了没有足够的数据来分成 3 部分的情形设计的.同样地,给出多少的训练数据是足够的一般规则太难了;此外,这取决于潜在函数的信噪比以及根据数据拟合出的模型的复杂度.
本章的方法有两类,第一类通过分析的手段 (AIC,BIC,MDL,SRM),第二类通过有效的样本重利用(交叉验证和自助法)来近似验证过程(验证过程即比较候选模型选出最优的模型).除了在模型选择使用它们,我们也检验了每个方法对最终选择的模型的测试误差的估计的可靠性程度.
在讨论这些之前,我们首先进一步探究测试误差的本质与 偏差-方差之间的权衡 (the bias-variance tradeoff).
偏差-方差分解
和 第 2 章 一样,如果我们假设 \(Y=f(X)+\varepsilon\),其中 \(\text {E}(\varepsilon)=0\),并且 \(\text {Var}(\epsilon)=\sigma_\varepsilon^2\),我们可以导出在使用平方误差损失的情形下,在输入点 \(X=x_0\) 处回归拟合值 \(\hat f(X)\) 的期望预测误差:(个人注:这里是对单独的点,而不是MSE) \[ \begin{align} \text {Err}(x_0)&=\text {E}[(Y-\hat f(x_0))^2\mid X=x_0]\notag\\ &=\sigma_\varepsilon^2+[\text {E}\hat f(x_0)-f(x_0)]^2+\text {E}[\hat f(x_0)-E\hat f(x_0)]^2\notag\\ &=\sigma_\varepsilon^2+\text {Bias}^2(\hat f(x_0))+\text {Var}(\hat f(x_0))\notag\\ &=\text{Irreducible Error} + \text{Bias}^2+\text{Variance}\tag{7.9} \end{align} \]
第一项是目标在真实均值 \(f(x_0)\) 处的方差,无论我们对 \(f(x_0)\)(个人注:观测的数据?) 的估计有多好,这是不可避免的,除非 \(\sigma_\varepsilon^2=0\),第二项是偏差的平方,是我们估计的均值与真实的均值间的偏差量;最后一项是方差,是估计的 \(\hat f(x_0)\) 在其均值处的平方偏差的期望值.一般地,我们建立的模型 \(\hat f\) 越复杂,(平方)偏差越低但是方差越大。
对于线性模型族比如岭回归,我们可以更精细地分解偏差。
接着我们可以将 偏差平方的平均 (average squared bias) 写成 \[ \begin{align} &\text {E}_{x_0}[f(x_0)-E\hat f_\alpha(x_0)]^2\notag\\ &=\text {E}_{x_0}[f(x_0)-x_0^T\beta_*]^2+\text {E}_{x_0}[x_0^T\beta_*-\text {E} x_0^T\hat\beta_\alpha]^2\notag\\ &=\text{Ave[Model Bias]}^2+\text{Ave[Estimation Bias]}^2\tag{7.14} \end{align} \]
右侧的第一项是 模型偏差 (model bias) 平方的平均,它是最优线性近似和真实函数之间的误差.第二项是 估计偏差 (estimation bias) 平方的平均,它是估计的平均值 \(\text {E}(x_0^T\hat\beta)\) 与最优线性近似之间的误差.
对于通过普通最小二乘拟合的线性模型,估计量的偏差为 0.对于约束的拟合,比如岭回归,它是正的,而且我们用减小方差的好处进行交易.模型偏差只可能通过将线性模型类扩大为更广的模型类才能降低,或者通过在模型中加入变量的交叉项以及变换项(通过变量的变换得到的)来降低。
详见原书图7.2!
偏差方差间的权衡在 0-1 损失的表现与在平方误差损失的表现不一样.反过来意味着调整参数的最优选择可能在两种设定下本质上不同.正如后面章节中描述的那样,我们应该将调整参数的选择建立于对预测误差的估计之上。
训练误差率的 optimism
训练误差 (training error)
\[ \overline{\text {err}} = \frac{1}{N}\sum\limits_{i=1}^NL(y_i,\hat f(x_i))\tag{7.17}\label{7.17} \]
会比真实误差 \(\text {Err}\_{\cal T}\) 小,因为数据被同时用来拟合方法并且评估误差(见练习 2.9).拟合方法一般适应于训练数据,因此 表面误差 (apparent error) 或训练误差 \(\overline{\text {err}}\) 是对泛化误差 \(\mathrm {Err}\_{\cal T}\)过度的乐观估计。
交叉验证
错误的方式: 考虑有许多预测变量的分类问题,举个例子,可能在基因与蛋白质的应用中.一般的分析技巧或许如下:
- 筛选预测变量:选择与类别有着相当强(单变量)相关性的“好”预测变量的一个子集
- 运用这个预测变量的子集,建立多维变量分类器.
- 采用交叉验证来估计未知调整参数并且估计最终模型的预测误差.
这是正确地应用交叉验证吗?
正确的方式: 下面是在这个例子中正确使用交叉验证的方式:
- 将样本随机分成 \(K\) 个交叉验证折(群).
- 对于每一折 \(k=1,2,\ldots,K\)
- 利用除了第 \(k\) 折的所有样本找到与类别标签有相对强(单变量)的相关性的“好”预测变量的一个子集.
- 利用除了第 \(k\) 折的所有样本仅仅运用找到的预测变量来建立多元分类器.
- 运用分类器来预测第 \(k\) 折中样本的类别.
**自助法
- 自助法我觉得是最“独立”,最“自强”的方法了。
- 所以这也是我最喜欢的统计方法了。
- 自助法是评价统计精确性的通用工具。
基本思想是从训练集中有放回地随机选取数据集,每个样本的大小与原始数据集相同.做 \(B\) 次(如 \(B=100\))选取的操作,得到 \(B\) 个自助训练集。接着我们对每个自助法数据集重新拟合模型,并且检验在 \(B\) 个复制集上拟合的表现.
我们的结论是,对于这些特定的问题和拟合方法,AIC 和交叉验证的最小化,或者自助法都得到相当接近最好的可行模型.注意到模型选择的目的,这些衡量方式可能都有偏差,但是这不会有影响,只要偏差不会改变这些方法的相对表现.举个例子,对所有的衡量方式都加上常数不会改变最终选择的模型.然而,对于许多自适应非线性技巧(比如树),估计参数的有效个数是非常困难的.这使得像 AIC 之类的方法不可行,只留下交叉验证和自助法供我们选择.
第八章 模型推断与平均化
本书的大部分章节中,对于回归而言,模型的拟合(学习)通过最小化平方和实现;或对于分类而言,通过最小化交叉熵实现.事实上,这两种最小化都是用极大似然来拟合的实例.
这章中,我们给出极大似然法的一个一般性的描述,以及用于推断的贝叶斯方法.在第7章中讨论的自助法在本章中也继续讨论,而且描述了它与极大似然和贝叶斯之间的联系.最后,我们提出模型平均和改善的相关技巧,包括 committee 方法、bagging、stacking 和 bumping.
自助法和最大似然法
- 自助法,通过从训练集中有放回地采样,称作非参自助法(nonparametric bootstrap),这实际上意味着这个方法是与模型无关的,因为它使用原始数据来得到新的数据集,而不是一个特定的含参数的模型.
- 本质上自助法是非参最大似然或者参数最大似然法的计算机实现.与最大似然法相比自助法的好处是允许我们在没有公式的情况下计算标准误差和其他一些量的最大似然估计. (详见原书的图8.2)
贝叶斯方法
- 贝叶斯方法与一般推断方法的不同之处在于,用先验分布来表达知道数据之前的这种不确定性,而且在知道数据之后允许不确定性继续存在,将它表示成后验分布.
- 最大似然方法会使用在最大概率估计那个点的密度来预测未来的数据.不同于贝叶斯方法的预测分布,它不能说明估计 \(\theta\) 的不确定性
个人注:推断中最大似然是预测某个最大的\(\theta\)值,贝叶斯方法是预测\(\theta\)的分布?
- 自助法分布表示我们参数的(近似的)非参、无信息后验分布.但是自助法分布可以很方便地得到——不需要正式地确定一个先验而且不需要从后验分布中取样.因此我们或许可以把自助法分布看成一个“穷人的”贝叶斯后验.通过扰动数据,自助法近似于扰动参数后的贝叶斯效应,而且一般实施起来更简单.
EM算法
EM 算法是简化复杂极大似然问题的一种很受欢迎的工具;
个人注:入门的视频见B站 博主“风中摇曳的小萝卜”的视频“EM算法 你到底是哪个班级的”
Bagging
简单来说,bagging 和随机森林都是针对 bootstrap 样本,且前者可以看成后者的特殊形式;而 boosting 是针对残差样本.
第九章 加性模型、树模型及相关方法
这章中我们开始对监督学习中一些特定的方法进行讨论.这里每个技巧都假设了未知回归函数(不同的)结构形式,而且通过这样处理巧妙地解决了维数灾难.当然,它们要为错误地确定模型类型付出可能的代价,所以在每种情形下都需要做出一个权衡.第 3-6 章留下的问题都将继续讨论.我们描述 5 个相关的技巧:广义可加模型 (generalized additive models),树 (trees),多元自适应回归样条 (MARS),耐心规则归纳法 (PRIM),以及 混合层次专家 (HME).
广义可加模型
在回归的设定中,广义可加模型有如下形式
\[ \text E(Y\mid X_1,X_2,\ldots,X_p) = \alpha+f_1(X_1)+f_2(X_2)+\cdots+f_p(X_p).\tag{9.1} \]
树模型
- 为什么二值分割? 与其在每一步对每个结点只分割成两个群体(如上面讨论的),我们或许可以考虑多重分割成多于两个群体.尽管这个在某些情况下是有用的,但不是一个好的一般策略.问题在于多重分割将数据分得太快,以至于在下一层次没有充分多的数据.因此我们仅仅当需要的时候采用这种分割.因为多重分割可以通过一系列的二值分割实现,所以后者更好一点.
- 树的不稳定性 树的一个主要问题是它们的高方差性.经常在数据中的一个小改动导致完全不同的分割点序列,使得解释不稳定.这种不稳定的主要原因是这个过程的层次性:上一个分割点的误差会传递到下面所有的分割点上.可以试图采取更加稳定的分离准则在某种程度上减轻这一影响,但是固有的不稳定性没有移除.这是从数据中估计一个简单的、基于树结构的代价.Bagging(8.7 节)对很多树进行平均来降低方差.
- 缺乏光滑性 树的另一个限制是预测表面缺乏光滑性,如在图 9.2 中的右下图中那样.在 0/1 损失的分类问题中,这不会有太大的损伤,因为类别概率估计的偏差的影响有限.然而,在回归问题中这会降低效果,正常情况下我们期望潜在的函数是光滑的.9.4 节介绍的 MARS 过程可以看出是为了减轻 CART 缺乏光滑性而做的改动.
ROC
在医学分类问题中,敏感度 (sensitivity) 和 特异度 (specificity) 经常用来衡量一个准则.它们按如下定义:
- 敏感度:给定真实状态为患病预测为患病的概率
- 特异度:给定真实状态为未患病预测为未患病的概率
受试者工作特征曲线 (receiver operating characteristic curve, ROC) 是用于评估敏感度和特异度之间折中的常用概述.当我们改变分类规则的参数便会得到敏感度关于特异度的图像. 越靠近东北角落的曲线表示越好的分类器. ROC 曲线下的面积有时被称作 \(c\) 统计量 (c-statistics).
专家的分层混合 (HME)
过程可以看成是基于树方法的变种.主要的差异是树的分割不是硬决定 (hard decision),而是软概率的决定 (soft probabilistic).在每个结点观测往左或者往右的概率取决于输入值.因为最后的参数优化问题是光滑的,所以有一些计算的优势,不像在基于树的方式中的离散分割点的搜索.软分割或许也可以帮助预测准确性,并且提供另外一种有用的数据描述方式.
第十章 提升方法与加性树模型
Boosting 是最近20年内提出的最有力的学习方法.最初是为了分类问题而设计的,但是我们将在这章中看到,它也可以很好地扩展到回归问题上.Boosting的动机是集合许多弱学习的结果来得到有用的“committee”.
弱分类器是误差率仅仅比随机猜测要好一点的分类器.Boosting 的目的是依次对反复修改的数据应用弱分类器算法,因此得到弱分类器序列 \(G_m(x),m=1,2,\ldots,M\) 根据它们得到的预测再通过一个加权来得到最终的预测
事实上,Breiman(NIPS Workshop,1996) 将树的 AdaBoost 称为“世界上最好的现成分类器”(best off-the-shelf classifier in the world). 有人认为决策树是 boosting 是数据挖掘应用中理想的基学习器.
数据挖掘的现货方法
个人注:“现货”(off-the-shelf) 方法.现货方法指的是可以直接应用到数据中而不需要大量时间进行数据预处理或者学习过程的精心调参.
预测学习 (predictive learning) 是数据挖掘中很重要的一部分.正如在这本书中看到的一样,已经提出了大量的方法对数据进行学习,然后预测.对于每个特定的方法,有些情形特别适用,但在其他情形表现得很差.我们已经试图在每个方法的讨论中明确合适的应用情形.然而,对于给定的问题,我们不会事先知道哪种方法表现得最好.表 10.1 总结了一些学习方法的特点.
工业和商业数据挖掘应用在学习过程的要求往往特别具有挑战性.数据集中观测值的个数以及每个观测值上衡量的变量个数往往都非常大.因此,需要注意计算的复杂度.并且,数据经常是混乱的 (messy):输入往往是定量,二值以及类别型变量的混合,而且类别型变量往往有很多层次.一般还会有许多缺失值,完整的观测值是很稀少的.预测变量和响应变量的分布经常是 长尾 (long-tailed) 并且 高偏的 (highly skewed).垃圾邮件的数据就是这种情形(9.1.2 节);当拟合一个广义可加模型,我们首先对每个预测变量进行对数变换以期得到合理的拟合.另外,它们通常会包含很大一部分的严重的误测量值(离群值).预测变量通常在差异很大的尺度下进行测量.
在数据挖掘应用中,通常只有大量预测变量中的一小部分真正与预测值相关的变量才被包含在分析中.另外,不同于很多应用的是,比如模式识别,很少有可信的专业知识来创建相关的特征,或者过滤掉不相关的, 这些不相关的特征显著降低了很多方法的效果.
另外,数据挖掘一般需要可解释性的模型.简单地得到预测值是不够的.提供定性 (qualitative) 理解输入变量和预测的响应变量之间的关系的信息是迫切的.因此,黑箱方法(black box),比如神经网络,在单纯的预测情形,比如模式识别中是很有用的,但在数据挖掘中不是很有用.
这些计算速度、可解释性的要求以及数据的混乱本性严重限制了许多学习过程作为数据挖掘的 “现货”(off-the-shelf) 方法.现货方法指的是可以直接应用到数据中而不需要大量时间进行数据预处理或者学习过程的精心调参.
在所有的有名的学习方法中,决策树最能达到数据挖掘的现货方法的要求.它们相对很快地构造出模型并且得到可解释的模型(如果树很小).如 9.2 节 中讨论的,它们自然地包含数值型和类别型预测变量以及缺失值的混合.它们在对单个预测变量的(严格单调)的变换中保持不变.结果是,尺寸变换和(或)更一般的变换不是问题,并且它们不受预测变量中的离群值的影响.它们将中间的特征选择作为算法过程的一部分.从而它们抑制(如果不是完全不受影响)包含许多不相关预测变量. 决策树的这些性质在很大程度上是它们成为数据挖掘中最受欢迎的学习方法的原因.
树的不准确性导致其无法作为预测学习的最理想的工具.它们很少达到那个将数据训练得最好的方法的准确性.正如在 10.1 节看到的,boosting 决策树提高了它们的准确性,经常是显著提高.同时它保留着数据挖掘中所需要的性质.一些树的优势被 boosting 牺牲的是计算速度、可解释性,以及对于 AdaBoost 而言,对重叠类的鲁棒性,特别是训练数据的误分类.gradient boosted model(GBM)是 tree boosting 的一般化,它试图减轻这些问题,以便为数据挖掘提供准确且有效的现货方法.
大小合适的boosting树
曾经,boosting 被认为是一种将模型结合起来(combing models)的技巧,在这里模型是树.同样地,生成树的算法可看成是产生用于 boosting 进行结合的模型的 原型(primitive).这种情形下,在生成树的时候以通常的方式分别估计每棵树的最优大小(9.2 节).首先诱导出非常大(过大的)的一棵树,接着应用自下而上的过程剪枝得到估计的最优终止结点个数的树.这种方式隐含地假设了每棵树是式 公式(10.28) 中的最后一棵.
- 解释性
单个决策树有着很高的解释性.整个模型可以用简单的二维图象(二叉树)完整地表示,其中二叉树也很容易可视化.树的线性组合 公式(10.28) 丢失了这条重要的特性,所以必须考虑用不同的方式来解释.
- 预测变量的相对重要性
在数据挖掘应用中,输入的预测变量与响应变量的相关程度很少是相等的.通常只有一小部分会对响应变量有显著的影响,而绝大部分的变量是不相关的,并且可以简单地不用包含进模型.研究每个输入变量在预测响应变量时的相关重要度或者贡献是很有用的.
第十一章 神经网络
这章中我们描述一类学习方法,它是基于在不同的领域(统计和人工智能)中独立发展起来但本质上相同的模型.中心思想是提取输入的线性组合作为导出特征 (derived features),然后将目标看成特征的非线性函数进行建模.这是一个很有效的学习方法,在许多领域都有广泛应用.我们首先讨论投影寻踪模型 (projection pursuit model),这是在半参统计和光滑化领域中发展出来的.本章的剩余部分集中讨论神经网络模型.
投影寻踪回归
Projection Pursuit Regression
在我们一般监督学习问题中,假设我们有 \(p\) 个组分的输入向量 \(X\),以及目标变量 \(Y\).令 \(\omega_m,m=1,2,\ldots, M\) 为未知参数的 \(p\) 维单位向量.投影寻踪回归 (PPR) 模型有如下形式: \[ f(X)=\sum\limits_{m=1}^Mg_m(\omega_m^TX)\tag{11.1}\label{11.1} \] 这是一个可加模型,但是是关于导出特征 \(V_m=\omega_m^TX\),而不是关于输入变量本身.函数 \(g_m\) 未定,而是用一些灵活的光滑化方法来估计及 \(\omega_m\) 的方向(见下).
函数 \(g_m(\omega_m^TX)\) 称为 \(\mathbb R^p\) 中的岭函数 (ridge function).仅仅在由向量 \(\omega_m\) 定义的方向上变化.标量变量 \(V_m=\omega_m^TX\) 是 \(X\) 在单位向量 \(\omega_m\) 上的投影,寻找使得模型拟合好的 \(\omega_m\),因此称为“投影寻踪”.图 11.1 显示了岭函数的一些例子。
个人注:详见原书图11.1
实际上,如果 \(M\) 任意大,选择合适的 \(g_m\),PPR 模型可以很好地近似 \(\mathbb R^p\) 中任意的连续函数.这样的模型类别称为 通用近似 (universal approximator).然而这种一般性需要付出代价.拟合模型的解释性通常很困难,因为每个输入变量都以复杂且多位面的方式进入模型中.结果使得 PPR 模型对于预测非常有用,但是对于产生一个可理解的模型不是很有用.\(M=1\) 模型是个例外,也是计量经济学中的 单指标模型 (single index model).这比线性回归模型更加一般,也提供了一个类似(线性回归模型)的解释.
然而,投影寻踪回归模型在统计领域并没有被广泛地使用,或许是因为在它的提出时间(1981),计算上的需求超出大多数已有计算机的能力.但是它确实代表着重要的智力进步,它是一个在神经网络领域的转世中发展起来的
拟合神经网络
神经网络模型中未知的参数,通常称为 权重 (weights),我们需要寻找它们的值使得模型很好地拟合训练数据.我们将参数的全集记为 \(\theta\)
对于回归,我们采用误差平方和用于衡量拟合的效果(误差函数) \[ R(\theta)=\sum\limits_{k=1}^K\sum\limits_{i=1}^N(y_{ik}-f_k(x_i))^2\tag{11.9} \]
对于分类,我们可以采用平方误差或者交叉熵(偏差):
\[ R(\theta)=-\sum\limits_{i=1}^N\sum\limits_{k=1}^Ky_{ik}\mathrm{log}\;f_k(x_i)\tag{11.10} \]
以及对应的分类器 \(G(x)=\mathrm{arg\; max}_kf_k(x)\).有了 softmax 激活函数和交叉熵误差函数,神经网络模型实际上是关于隐藏层的线性逻辑斯蒂回归模型,而且所有的参数通过极大似然来估计.
一般地,我们不想要 \(R(\theta)\) 的全局最小值,因为这可能会是一个过拟合解.而是需要一些正则化:这个可以通过惩罚项来直接实现,或者提前终止来间接实现.下一节中将给出详细的细节.
最小化 \(R(\theta)\) 的一般方法是通过梯度下降,在这种情形下称作 向后传播 (back-propagation).因为模型的组成成分,运用微分的链式法则可以很简单地得到梯度.这个可以通过对网络向前或向后遍历计算得到,仅跟踪每个单元的局部量.
向后传播的优点在于简单,局部自然.在向后传播算法中,每个隐藏层单元仅仅向(从)有其联系的单元传递(接收)信息.因此可以在并行架构的计算机上高效地实现.
批量学习 (batch learning),参数更新为所有训练情形的和.学习也可以 online 地进行——每次处理一个观测,每个训练情形过后更新梯度,然后对训练情形重复多次.在这种情形下,公式(11.13) 式的和可以替换成单个被加数.一个 训练时期 (training epoch) 指的是一次扫描整个训练集.在线训练 (online training) 允许网络处理非常大的训练集,而且当新观测加入时更新权重.
训练神经网络的一些问题
训练神经网络真的是一门艺术.模型一般会过参量化,而且优化问题非凸而且不稳定,除非遵循某确定的方式.在这节我们总结一些重要的问题.
- 初始值 注意如果权重接近 0,则 sigmoid(图 11.3)起作用的部分近似线性,因此神经网络退化成近似线性模型(练习 11.2).通常权重系数的初始值取为接近 0 的随机值.因此模型开始时近似线性,当系数增大时变成非线性.需要的时候局部化单个单元的方向并且引入非线性.恰巧为 0 的权重的使用导致 0 微分和完美的对称,而且算法将不会移动.而以较大的值开始经常带来不好的解. \(\sigma(sv)\) ,s是权重。
- 过拟合 通常神经网络有太多的权重而且在 \(R\) 的全局最小处过拟合数据.在神经网络的发展早期,无论是设计还是意外,采用提前终止的规则来避免过拟合.也就是训练一会儿模型,在达到全局最小前终止.因为权重以高正则化(线性)解开始,这有将最终模型收缩成线性模型的效果.验证集对于决定什么时候停止是很有用的,因为我们期望此时验证误差开始增长. 一个更明显的正则化方法是 权重衰减 (weight decay),类似用于线性模型的岭回归
- 输入的缩放 因为对输入的缩放决定了在底层中系数缩放的效率,所有它可以对最终解有很大的影响.最开始最好是对所有输入进行标准化使均值为 0,标准差为 1.这保证了在正则化过程中对所有输入公平对待,而且允许为随机的初始权重系数选择一个有意义的区间.有了标准化的输入,一般在 \([-0.7,+0.7]\) 范围内均匀随机选择权重系数.
- 隐藏单元和层的个数 一般来说,太多的隐藏单元比太少的隐藏单元要好.太少的隐藏单元,模型或许没有足够的灵活性来捕捉数据的非线性;太多的隐藏单元,如果使用了合适的正则化,额外的权重系数可以收缩到 0.一般地,隐藏单元的数量处于 5 到 100 的范围之内,而且随着输入个数、训练情形的种数的增加而增加.最常见的是放入相当大数量的单元并且进行正则化训练.一些研究者采用交叉验证来估计最优的数量,但是当交叉验证用来估计正则化系数这似乎是不必要的.隐藏层的选择由背景知识和经验来指导.每一层提取输入的特征用于回归或者分类.多重隐藏层的使用允许在不同的分解层次上构造层次特征.
- 多重最小点 误差函数 \(R(\theta)\) 为非凸,具有许多局部最小点.后果是最终得到的解取决于权重系数的初始值.至少需要尝试一系列随机的初始配置,然后选择给出最低(惩罚)误差的解.或许更好的方式是在对一系列网络的预测值进行平均作为最终的预测(Ripley,1996[^1]).这比平均权重系数更好,因为模型的非线性表明平均的解会很差.另一种方式是通过 bagging,它是对不同网络的预测值进行平均,这些网络是对随机扰动版本的训练数据进行训练得到的.
第十二章 支持向量机与灵活判别方法
核函数 所以 公式(12.19) 和 公式(12.20) 仅仅通过内积涉及 \(h(x)\).实际上,我们根本不需要明确变换关系 \(h(x)\),而仅仅要求知道在转换后的空间中计算内积的核函数 \[ K(x,x')=\langle h(x), h(x') \rangle\tag{12.21} \]
在 SVM 中有三种流行的 \(K\) 可以选择
\[ \begin{array}{rl} d\text{ 阶多项式:} & K(x,x')=(1+\langle x,x' \rangle)^d\\ \text{径向基:} & K(x, x')=\exp(-\gamma \Vert x-x'\Vert^2)\tag{12.22}\label{12.22}\\ \text{神经网络:} & K(x,x')=\tanh(\kappa_1\langle x,x' \rangle+\kappa_2)\\ \end{array} \]
考虑含有两个输入变量 \(X_1\) 和 \(X_2\) 的特征空间,以及 2 阶的多项式核.则
\[ \begin{array}{ll} K(x,x')&=(1+\langle X,X' \rangle)^2\\ &=(1+X_1X_1'+X_2X_2')^2\\ &=1+2X_1X_1'+2X_2X_2'+(X_1X_1')^2+(X_2X_2')^2+2X_1X_1'X_2X_2'\tag{12.23}\label{12.23} \end{array} \]
则 \(M=6\),而且如果我们选择 \(h_1(X)=1,h_2(X)=\sqrt{2}X_1,h_3(X)=\sqrt{2}X_2,h_4(X)=X_1^2,h_5(X)=X_2^2\),以及 \(h_6(X)=\sqrt{2}X_1X_2\),则\(K(X,X')=\langle h(X),h(X')\rangle\).
第十三章 原型方法与最近邻算法
不变量和切线距离 对于每张图像,我们画出了该图像旋转版本的曲线,称为 不变流形 (invariance manifolds).现在,不是用传统的欧氏距离,而是采用两条曲线间的最短距离.换句话说,两张图像间的距离取为第一张图像的任意旋转版本与第二张图像的任意旋转版本间的最短欧氏距离.这个距离称为 不变度量 (invariant metric).
原则上,可以采用这种不变度量来进行 1 最近邻分类.然而这里有两个问题.第一,对于真实图像很难进行计算.第二,允许大的变换,可能效果很差.举个例子,经过 180° 旋转后,“6” 可能看成是 “9”.我们需要限制为微小旋转.
切线距离 (tangent distance) 解决了这两个问题.如图 13.10 所示,我们可以用图像“3”在其原图像的切线来近似不变流形.这个切线可以通过从图像的微小旋转中来估计方向向量,或者通过更复杂的空间光滑方法(练习 13.4).对于较大的旋转,切线图像不再像“3”,所以大程度的旋转问题可以减轻.
想法是对每个训练图像计算不变切线.对于待分类的 查询图像 (query image),计算其不变切线,并且在训练集的直线中寻找最近的直线.对应最近的直线的类别(数字)是对查询图像类别的预测值.在图 13.11 中,两条切向直线相交,但也只是因为我们是在二维空间中表示 256 维的情形.在 \(\mathbb R^{256}\) 中,两条这样的直线相交的概率是 0.
自适应最近邻方法 最近邻分类的隐含假设是类别概率在邻域内近似为常值,因此简单的平均会得到不错的估计.然而,在这个例子中,只有水平方向上的类别概率会变化.如果我们提前知道这一点,可以将邻居拉伸为长方形区域.这会降低估计的偏差,同时保持方差不变.
一般地,这要求最近邻分类中采用自适应的度量,使得得到的邻域沿着类别不会改变太多的方向上拉伸.在高维特征空间中,类别概率可能仅仅只在一个低维的子空间中有所改变,因此自适应度量是很重要的优点.
判别自适应最近邻 (DANN) 方法进行了局部维度降低——也就是,在每个查询点单独降低维度.提出通过逐步剔除包含训练数据的盒子的边来自动寻找长方形邻域.这里我们介绍 Hastie and Tibshirani (1996a)[^2] 提出的 判别自适应最近邻 (discriminant adaptive nearest-neighbor) (DANN).在每个查询点,构造其大小为 50 个点的邻域,并且用这些点的类别分布来决定怎么对邻域进行变形——也就是,对度量进行更新.接着更新后的度量用在该查询点的最近邻规则中.因此每一个查询点都可能采用不同的度量.很明显邻域应当沿着垂直类别重心连线的方向拉伸.这个方向也与线性判别边界重合,而且是类别概率改变最少的方向.一般地,类别概率变化最大的方向不会与类别重心连线垂直
计算上的考虑
最近邻分类规则的一个缺点通常是它的计算负荷量,无论是寻找最近邻还是存储整个训练集合.
第十四章 无监督学习
流形(manifold):数学上,流形是一个拓扑空间,在每一点附近局部地近似欧式空间.更精确地,\(n\) 维流形的每个点与维度为 \(n\) 的欧式空间同态的邻域. 监督学习中,有一个明确的成功或不成功的量度,因此可用于判断特定情况下的充分性 (adequacy),并比较不同方法在各种情况下的有效性 (effectiveness).成功的损失直接用在联合分布 \(\Pr(X,Y)\) 上的期望损失来衡量.这个可以用各种方式来衡量,包括交叉验证.在非监督学习中,没有这些直接衡量成功的量度.从大部分非监督学习的算法的输出中评估推断的有效性是很难确定的.必须诉诸于启发式变量 (heuristic arguments),在监督学习也经常使用,这不仅可以激励 (motivating) 算法,而且为了评价结果的质量.因为有效性是主观问题,不能直接加以证实,这种不舒服 (unconfortable) 的情形导致提出的方法激增,
关联规则分析 (Association rule analysis) 已经成为挖掘贸易数据的流行工具.目标是寻找变量 \(X=(X_1,X_2,\ldots,X_p)\) 在数据中出现最频繁的联合值.在二值数据 \(X_j\in\{0,1\}\) 中应用最多,也称作“市场篮子”分析.这种情形下观测值为销售交易,比如出现在商店收银台的商品.变量表示所有在商店中出售的商品.对于观测 \(i\),每个变量 \(X_j\) 取值为 0 或 1;如果第 \(j\) 个商品作为该次交易购买的一部分则 \(x_{ij}=1\),而如果没有购买则 \(x_{ij}=0\).这些经常有联合值的变量表示物品经常被一起购买.这个信息对于货架、跨营销的促销活动、商品目录的设计,以及基于购买模式的消费者划分都是很有用的. 关联规则成为了在相关的市场篮子的设定下用于分析非常大的交易数据库的流行工具.这是当数据可以转换成多维邻接表的形式时.输出是以容易理解并且可解释的关联规则 公式(14.4)的形式展现的.Apriori 算法允许分析可以用到大的数据库中,更大的数据库适用于其他类型的分析.关联规则是数据挖掘最大的成功之一.
聚类分析
聚类分析的所有目标的核心是度量要聚类的单个点间相似(或不相似)的程度.聚类方法试图基于点间相似性的定义来将其分类.相似性的定义只能从关注的主题得到.某种程度上,这个情形与确定预测问题(监督学习)中的损失或花费函数相似.在预测问题中,损失函数与错误的预测有关,而错误的预测取决于数据之外的考虑. 简而言之,聚类方法中相似性的定义就如同监督学习问题中损失函数一样重要. 确定一个合适的不相似性的度量远比选择聚类算法来得重要.(涉及领域知识。)
主成分,主曲线和主曲面
流形学习(manifold learning)
是机器学习、模式识别中的一种方法,在维数约简方面具有广泛的应用。它的主要思想是将高维的数据映射到低维,使该低维的数据能够反映原高维数据的某些本质结构特征。流形学习的前提是有一种假设,即某些高维数据,实际是一种低维的流形结构嵌入在高维空间中。流形学习的目的是将其映射回低维空间中,揭示其本质。
个人注:关于流行学习知乎上一篇通熟易懂的文章 https://www.zhihu.com/question/24015486/answer/26524937 ,最常用的例子就是瑞士卷
投影是从一个向量空间到其自身的线性变换,并且投影矩阵满足\(\mathbf P^2=\mathbf P\).
个人注:应该是到子空间吧。不是所有从一个向量空间到自身的线性变换都是投影,但所有投影都是线性变换,而且满足 \(P^2 = P\)(即投影两次不变)。
主成分可以看成是主曲线的特殊情形。
第十五章 随机森林
在每次分割时,随机选择 \(m\le p\) 个输入变量作为候选变量用来分割
一般地,\(m\) 取为 \(\sqrt{p}\),或者甚至小到取 1.
Bagging 可以看成是特殊的随机森林,即 \(m=p\) 的随机森林.
另外,发明者给出下面两条推荐:
- 对于分类,\(m\) 的默认值为 \(\lfloor \sqrt p \rfloor\),且最小的结点数为 1.
- 对于回归,\(m\) 的默认值为 \(\lfloor p/3\rfloor\),且最小的结点数为 5.
实际中这些参数的最优值取决于具体问题,并且它们应当被视为 调整参数 (tunning parameters).在图 15.3 中,\(m=6\) 比默认值 \(\lfloor 8/3\rfloor =2\) 更好.
第十六章 集成学习
"Bet on Sparsity" 原则 \(L_1\) 的收缩能更好地适应稀疏的情形(在所有可能选择中,非零系数的基函数的个数很少). 当拟合系数时,我们应该使用 \(L_2\) 惩罚,而不是 \(L_1\) 惩罚.另一方面,如果这里只有少量的(比如,\(1000\))系数非零,则 lasso (\(L_1\) 惩罚)会表现得很好.我们将这个看成是 稀疏 (sparse) 的情形,而第一种情形(高斯系数)是 稠密 (dense) 的.注意到尽管在稠密情形下,\(L_2\) 惩罚是最好的,但没有方法能做得很好,因为数据太少,但却要从中估计大量的非零系数.这是维数的灾难造成的损失.稀疏设定中,我们可以用 \(L_1\) 惩罚做得很好,因为非零稀疏的个数很少.但 \(L_2\) 惩罚便不行.
换句话说,\(L_1\) 惩罚的使用遵循称作 “bet on sparsity” 的这一高维问题的准则:
采用在稀疏问题中表现得好的方法,因为没有方法能在稠密问题中表现得好.
第十七章 无向图模型
图 (Graph) 由顶点(结点)集,以及连接顶点对的边集构成.在图模型中,每个顶点表示一个随机变量,并且图给出了一种理解全体随机变量联合分布的可视化方式.对于监督学习和非监督学习它们都是很有用的.在 无向图 (undirected graph) 中,边是没有方向的.我们仅限于讨论无向图模型,也称作 马尔科夫随机域 (Markov random fields) 或者 马尔科夫网络 (Markov networks). - 在这些图中,两个顶点间缺失一条边有着特殊的含义:对应的随机变量在给定其它变量下是条件独立的.
图中的边用值 (value) 或者 势 (potential) 参量化,来表示在对应顶点上的随机变量间条件依赖性的强度大小.采用图模型的主要挑战是模型选择(选择图的结构)、根据数据来估计边的参数,并且从联合分布中计算边缘顶点的概率和期望.后两个任务在计算机科学中有时被称作 学习 (learning) 和 推断(inference).
关于 有向图 (directed graphical models) 或者 贝叶斯网络 (Bayesian networks) 有大量并且活跃的文献;这是边有方向箭头(但是没有有向环)的图模型.有向图模型表示可以分解成条件分布乘积的概率分布,并且有解释因果关系的潜力.
三种等价的 Markov 性质" pairwise Markov properties: 寻找缺失边,在给定其他结点的情况下,缺失边的两个顶点相互独立; global Markov properties: 寻找分离集,在给定分离集的情况下,被分离的子图相互独立;
连续变量的无向图模型
这里我们考虑所有变量都是连续变量的马尔科夫网络.这样的图模型几乎总是用到高斯分布,因为它有方便的分析性质.我们假设观测值服从均值为 \(\mu\),协方差为 \(\mathbf \Sigma\) 的多元高斯分布.因为高斯分布至多表示二阶的关系,所以它自动地编码了一个成对马尔科夫图.
!!! note "weiya 注:" 因为在高斯分布的密度函数中,指数项中关于随机变量的阶数最多是二次,所以说它至多能表示二阶的关系.
- 高斯分布有个性质是所有的条件分布也是高斯分布. 协方差矩阵的逆 \(\mathbf\Sigma^{-1}\) 包含变量之间的 偏协方差 (partial covariances) 信息;也就是,在给定其它变量的条件下,\(i\) 与 \(j\) 的协方差.特别地,如果 \(\mathbf {\Theta=\Sigma^{-1}}\) 的第 \(ij\) 个元素为 0,则变量 \(i\) 和 \(j\) 在给定其它变量情况下是条件独立的.
图结构的估计
大多数情况下,我们不知道哪些边要从图中去掉,因此想试图从数据本身找出.最近几年很多作者提出用于这个目的的 \(L_1\) (lasso) 正则化.
!!! note "weiya 注:" 省略图中的边,有点类似于做变量选择,而 lasso 正是应对变量选择的“绝世武功”!:joy:
为了实现这点,它们将每个变量看成响应变量而其它的变量作为预测变量进行拟合 lasso 回归
限制玻尔兹曼机
离散变量的无向马尔科夫网络是很流行的,而且特别地,二值变量的成对马尔科夫网络更普遍.在统计力学领域有时称为 Ising 模型,在机器学习领域称为 玻尔兹曼机 (Boltzmann machines),其中顶点称为“结点 (nodes)”或“单元 (units)”,取值为 0 或 1.
这节我们考虑受神经网络影响的一种特殊的图模型结构,该结构中,单元是按层进行组织的.限制玻尔兹曼机 (RBM) 包含一层可见单元和一层隐藏单元,单层之间没有联系.如果隐藏单元的连接被移除掉,计算条件期望变得很简单
个人注:虽然标准 RBM 使用二值神经元,但也存在许多变体,可以处理不同类型的输入:
变体类型 描述 Gaussian-Bernoulli RBM 可见层为连续实数(高斯分布),隐藏层仍是二值 Gaussian-Gaussian RBM 可见层和隐藏层都为连续变量 Softmax RBM 可见层或隐藏层是 one-hot 多类别状态 ReLU RBM 使用 ReLU 激活而非二值状态,用于更复杂的连续特征建模 这些变体适用于图像、音频、自然语言处理等不同类型的数据。