学习笔记——统计学习方法概论

这是对《统计学习方法》第一章的一个总结,记录一些基础的概念、定义和术语,理清统计学习方法的各个方面,开始系统地学习这个领域。

统计学习


统计学习(statistical learning)是关于计算机基于数据构建概率统计模型,并运用模型对数据进行预测与分析的一门学科。统计学习也称为统计机器学习。统计学习用于对数据进行预测和分析。由监督学习(supervised learning)、非监督学习(unsupervised learning)、半监督学习(semi-supervised learning)和强化学习(reinforcement learning)等组成。监督学习方法简单概括为:使用训练数据(training data)(数据是独立同分布产生的),假设要学习的模型属于某个函数的集合,称为假设空间(hypothesis space),应用某个评价准则(evaluation criterion),选择最优的模型,使得训练数据和测试数据(test data)在给定的准则下最优。

统计学习方法的三要素:

  • 模型(model)
  • 策略(strategy)
  • 算法(algorithm)

步骤:

  • 得到一个有限的训练数据集合
  • 确定包含所有可能的模型的假设空间(学习模型的集合)
  • 确定模型选择的准则(学习的策略)
  • 实现求解最优模型的算法(学习的算法)
  • 通过学习方法选择最优模型
  • 利用学习的最优模型对新数据进行预测和分析

监督学习


基本概念

  • 输入空间(input space)/输出空间(output space)——分别指输入与输出所有可能取值的空间
  • 每个具体的输入是一个实例(instance),通常由特征向量表示(feature vector),对应的空间称为特征空间(feature space)
  • 输入输出对称为样本(sample)
  • 回归问题(输入输出均为连续变量);分类问题(输出为有限个离散变量);标注问题(输入输出均为变量序列)
  • 监督学习假设输入输出的随机变量X和Y遵循一个联合概率分布(即输入输出是有个规则的)
  • 监督学习的目的在于学习一个由输入到输出的映射。
    • 条件概率分布:\(P(Y|X)\)
    • 决策函数(decision function):\(Y=f(X)\)

统计学习的三要素

方法=模型+策略+算法

  • 模型

    假设空间用\(\mathcal{F}\)表示,是一个决策函数的集合:\(\mathcal{F}= \left \{ f\ |\ Y=f(X) \right \}\)

  • 策略

    引入损失函数与风险函数的概念。损失函数度量模型一次预测的好坏,风险函数度量平均意义下模型预测的好坏。

    1. 损失函数

      损失函数(loss function)或者代价函数(cost function)度量预测错误的程度,记作\(L(Y,f(X))\)。有以下几种:

      • 0-1损失函数(0-1 loss function)$$L(Y,f(x))=\left{\begin{matrix}
        1, & Y\neq f(X)\
        0, & Y=f(X)
        \end{matrix}\right$$

      • 平方损失函数(quadratic loss function) $$L(Y,f(x))=(Y-f(X))^2$$

      • 绝对损失函数(absolute loss function) $$L(Y,f(x))=\left |Y-f(X) \right |$$

      • 对数损失函数(logarithmic loss function)或者对数似然损失函数(log-likelihood loss function)

        \[L(Y,P(Y|X)))=-\log P(Y|X) \]

    2. 风险函数

      损失函数的期望称为风险函数(risk function)或者期望损失(expected loss),即平均意义下的损失:

\[R_{exp}(f)=E_p[L(Y,f(X))]=\int_{\mathcal{X}\times \mathcal{Y}}L(y,f(x))P(x,y)dxdy \]

    实际上联合分布$P(X,Y)$是未知的,不能直接算出$P(Y|X)$,所有才需要学习。这样一来,一方面根据期望风险最小学习模型要用到联合分布,另一方面联合分布又是未知的,所以监督学习就成为了一个病态问题(ill-formed problem)。

    但是训练数据集是已知的,模型$f(x)$关于训练数据集的平均损失称为经验风险(empirical risk)或经验损失(empirical loss),记作$R_{exp}(f)$: $$R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))$$根据大数定理,样本容量$N$趋近无穷时,经验风险趋近于期望风险:$R_{emp}(f)\approx R_{exp}(f)$。这样以来,就又可能利用经验风险来估计期望风险,但是由于实际中训练样本数有限,效果不理想,要对经验风险进行一定的矫正——关系到监督学习的两个基本策略:经验风险最小化和结构风险最小化。

3. 经验风险最小化

    经验风险最小化(empirical ridk minimization,ERM)的策略认为经验风险最小的模型就是最优模型:$$\min_{f\in \mathcal{F}}\: \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))$$这种策略在样本容量足够大的时候很好,但是当样本容量很小的时候,效果未必好,会出现“过拟合”现象。

    比如:极大似然估计(maximum likelihood estimation)

4. 结构风险最小化

    结构风险最小化(structural risk minimization,SRM)是为防止过拟合而提出的策略,其实等价于正则化(regularization)。结构风险在经验风险上加上表示模型复杂度的正则化项(regularizer)或罚项(penalty term):$$R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$$其中$J(f)$为模型的复杂度,模型$f$越复杂,$J(f)$越大,在这里对模型的惩罚也越大。所以,结构风险同时对经验风险和模型复杂度进行权衡,这样往往对训练数据和未知的测试数据都有较好的预测。

    比如:贝叶斯估计中的最大后验概率估计(maximum posterior probability estimation,MAP)
  • 算法

    考虑用什么样的计算方法求解最优模型,最优化问题。有解析解的话最好了,但是常常没有,就需要数值计算的方法来求解。如何保证找到最优解,并使求解过程十分高效,成为一个重要问题。

模型评估与模型选择

训练误差(training error)和测试误差(test error)作为学习方法评估的标准,实际上测试误差较小的方法具有更好的预测能力,是更有效的方法,这种能力称为泛化能力(generalization ability)

进行模型选择(model selection)时,有些很复杂的模型常常在训练数据中比真实模型看上去误差更小,这种现象称为过拟合(over-fitting),这些复杂的模型在测试数据中没有任何优势。

比如多项式的拟合,如果训练数据量不是足够多,复杂的模型(高阶多项式)可以拟合的很好,比真实的模型还好(因为数据存在噪声),但它的泛化能力太弱,没法很好地预测未知数据。

所以不能让模型的复杂度太高,为防止过拟合,有两种常用的模型选择方法:正则化和交叉验证。

正则化与交叉验证


正则化是结构风险最小化策略的的实现.

正则化(regularization)一般具有如下形式:$$\min_{f\in \mathcal{F}}: =\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f)$$正则化项随着模型复杂度的增加而变大,回归问题中,损失函数是平方损失,正则化项可以是参数向量的\(L_2\)范数。这个正则化项也可以是其他的形式。

另一种常用的模型选择方法是交叉验证(cross validation)。

一种简单的方法:数据量比较充足的时候,随机地将数据集分成三个部分:训练集(training set)、验证集(validation set)、测试集(test set),分别用来进行模型的训练、选择、最终评估。但是实际中数据没那么充足,可以采用交叉验证的方法(基本思想是重复使用数据)。

  • 简单交叉验证

    比如70%数据作为训练,30%数据作为测试集,在训练集上训练完,得到各种模型,然后使用测试集进行测试,选出测试误差最小的模型。

  • \(S\)折交叉验证

    \(S\)折交叉验证(S-fold cross validation)应用最多:将数据分出\(S\)个互不相交的大小相同的子集,利用其中\(S-1\)个子集训练,剩下的自己进行测试。有\(S\)种不同的划分,分别进行,选出平均误差最小的模型。

  • 留一交叉验证

    算是上面的\(S\)折交叉验证的特使情况,但\(S=N\),每个子集仅一个数据,往往在数据缺乏的情况下使用。

上面的几种交叉验证方法,在整个学习的过程中使用了所谓的测试集,实际上它这里所说的测试集应该看作是验证集吧,测试集应该完全不被使用,仅仅在最后用来评估选出的模型的效果。

泛化能力


泛化能力(generalization ability)是指对未知数据的预测能力。泛化误差(generalization error):$$R_{exp}(\hat{f})=E_p[L(Y,\hat{f}(X))]=\int_{\mathcal{X}\times \mathcal{Y}}L(y,\hat{f}(x))P(x,y)dxdy$$实际上,泛化误差就是学习到的模型的期望风险。

一般通过比较两种学习方法的泛化误差上界(generalization error bound)来比较它们的优劣。泛化误差上界的性质:

  • 样本容量越大,泛化误差上界越小。
  • 假设空间容量(capacity)越大,泛化误差上界越大。

泛化误差上界:

对二分类问题,当假设空间是有限个函数集合\(\mathcal F=\left \{ f_1,f_2,\cdot \cdot \cdot ,f_d \right \}\)时,对任意一个函数\(f\in \mathcal F\),至少以概率\(1- \sigma\),以下不等式成立:

\[R(f)\leqslant \hat{R}(f)+\varepsilon (d,N,\delta ) \]

其中,

\[\varepsilon (d,N,\delta )=\sqrt{\frac{1}{2N}\left ( \log d+\log\frac{1}{\delta } \right )} \]

不等式左端\(R(f)\)是泛化误差,右端为泛化误差上界。泛化误差上界中,第一项是训练误差,训练误差越小,泛化误差也越小。第二项\(\varepsilon (d,N,\delta )\)\(N\)越大,值越小,假设空间\(\mathcal F\) 包含的函数越多,值越大。
上述定理可通过Hoeffding不等式来证明。

生成模型与判别模型


  • 生成方法——生成模型(generation model),可还原出联合概率分布\(P(X,Y)\),比如朴素贝叶斯法、隐马尔科夫模型。
  • 判别方法——判别模型(discriminative model),直接面对预测,比如K近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法、条件随机场等。

(注:本文为读书笔记与总结,侧重算法原理,来源为[《统计学习方法》](http://book.douban.com/subject/10590856/)一书第一章)
作者:[rubbninja](http://www.cnblogs.com/rubbninja/) 出处:[http://www.cnblogs.com/rubbninja/](http://www.cnblogs.com/rubbninja/) 关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正!
posted @ 2015-07-20 16:11  rubbninja  阅读(931)  评论(0编辑  收藏  举报