zoukankan      html  css  js  c++  java
  • 学习笔记——统计学习方法概论

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

    统计学习


    统计学习(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) ight })

    • 策略

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

      1. 损失函数

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

        • 0-1损失函数(0-1 loss function)$$L(Y,f(x))=left{egin{matrix}
          1, & Y eq f(X)
          0, & Y=f(X)
          end{matrix} ight$$

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

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

        • 对数损失函数(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} imes 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_{fin 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_{fin 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} imes 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 ight })时,对任意一个函数(fin 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+logfrac{1}{delta } ight )} ]

    不等式左端(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/) 关于作者:目前主要研究领域为机器学习与无线定位技术,欢迎讨论与指正!
  • 相关阅读:
    黄聪:VirtualBox 安装ghost版windows XP
    黄聪:Delphi 关键字详解[整理于 "橙子" 的帖子]
    黄聪:全局变量 HInstance 到底是在什么时候赋值的?
    黄聪:演示 Rect、Bounds 生成 TRect 的区别
    黄聪:C#操作合并多个Word文档
    黄聪:C# .Net三层架构[转]
    黄聪:遗传算法实现自动组卷、随机抽题
    黄聪:SQL转换日期字段的问题——SQL中CONVERT转化函数的用法[转]
    黄聪:System 提供的编译期函数
    黄聪:语言字符集
  • 原文地址:https://www.cnblogs.com/rubbninja/p/4661453.html
Copyright © 2011-2022 走看看