zoukankan      html  css  js  c++  java
  • 统计学习方法(一)

    统计学习

    统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科。统计学习也称为统计机器学习(statical machine learning)。

    统计学习的方法是基于数据构建统计模型从而对数据进行预测和分析。统计学习由监督学习、非监督学习、半监督学习和强化学习等组成。

    统计学习方法包括假设空间、模型选择的准则、模型学习的算法,这些统称为统计学习方法的三要素:模型(Model)、策略(Strategy)、算法(Algorithm)。

    实现统计学习方法的步骤如下:

    1. 得到有限的训练数据集合
    2. 确定包含所有可能的模型的假设空间,即学习模型的集合
    3. 确定模型选择的准则(什么是最优模型的标准),即学习的策略
    4. 实现求解最优模型的算法(如何获取最优模型),即学习的算法
    5. 通过学习方法选择最优模型
    6. 利用学习到的最优模型对新数据进行预测和分析

    监督学习

    监督学习是学习一个模型,使模型能够对任意的输入,对其相应的输出做出一个好的预测。

    基本概念

    训练数据(training data):一个给定的、有限的、用于学习的数据。

    输入空间(input space):输入的可能取值的集合;

    特征空间(feature space):每个具体的输入是一个实例,通常由特征向量表示。特征向量存在的空间称为特征空间。(有时输入空间和特征空间为相同空间,有时则不同,则需将实例从输入空间映射到特征空间),模型是定义在特征空间的。

    输出空间(output space):输出的可能取值的集合;

    训练集:输入(或特征向量)与输出对组成。

    输入与输出对又称为样本。

    联合概率分布:监督学习假设输入和输出的随机变量X和Y遵循联合概率分布P(X,Y),P(X,Y)表示分布函数或分布密度函数。 训练数据和测试数据是依据P(X,Y)独立同分布产生的。X 和 Y 具有联合分布的假设是监督学习关于数据的基本假设。

    假设空间(hypothesis space):模型属于输入空间到输出空间的映射的集合,这个集合就是假设空间。模型可以是概率模型也可以使非概率模型。由P(Y|X)或决策函数 Y = f(X)表示。具体的用小写字母表示。

    (PS.输入、输出变量用大写字母表示,输入输出变量所取得的值用小写字母表示。)

    问题形式化

    监督学习分为学习和预测两个过程,由学习系统与预测系统组成,如下图:

    监督学习问题
    监督学习问题

    统计学习三要素

    模型

    在监督学习过程中,模型就是索要学习的条件概率或者决策函数。模型的假设空间(hypothesis space)包含所有可能的太哦见概率或决策函数。假设空间用F表示

    策略

    有了模型的假设空间之后,需要考虑用什么样的准则来学习或者选择最优的模型。
    统计学习常用的损失函数有:

    算法

    算法是指学习模型中的具体计算方法。

    模型评估与模型选择

    训练误差与测试误差

    训练误差是模型Y=f(x)关于训练数据集的平均损失:

    过拟合与模型选择

    下图描述了训练误差和测试误差与模型的复杂度之间的关系:

    当模型的复杂度增大时,训练误差会逐渐减小并趋向于0,而测试误差会先减少,达到最小值后又增大。模型选择的典型方法是正则化与交叉验证。

    正则化与交叉验证

    正则化

    模型选择的典型方法是正则化,正则化的一般形式如下:

    其中,第一项是经验风险,第二项是正则化项,正则化项可以取不同的形式,例如,正则化项可以是模型参数向量的范数。回归问题中,损失函数是平方损失,正则化项可以是参数向量的L2范数:

    交叉验证

    给定样本充足情况下,进行模型选择的简单方法是随机将数据分为三部分:训练集、验证集、测试集,训练集用来训练模型,验证集用于模型的选择,测试集用于最终对学习方法的评估。

    当数据不充足的情况下, 模型选择的另一种方法是交叉验证。基本思想是重复使用数据。常见的有简单交叉验证、S折交叉验证和留一交叉验证。

    • 简单交叉验证:将数据分为两部分,一部分为训练集、另一部分为测试集(如 70% 为训练集, 30% 为测试集);然后用训练集在各种条件下训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型。
    • S折交叉验证:将数据随机分为S个互不相交的大小相同的子集,然后利用S-1 个子集作为训练集,剩下1个作为测试集来训练和测试模型;将这个过程对S种可能重复进行,选择S次测评中测试误差最小的模型。
    • 留一交叉验证:S=N的S折交叉验证(N 为给定数据集的容量),往往在数据缺乏情况下使用。

    泛化能力

    泛化误差

    学习方法的泛化能力(generalization ability)指该方法学习到的模型对未知数据的预测能力。往往采用通过测试误差来评价学习方法的泛化能力,问题是过于依赖测试集,并且测试集是有限的,不是很可靠,所以定义泛化误差来表示泛化能力。

    泛化误差(generalization error),即模型的期望风险

    泛化误差上界

    学习方法的泛化能力分析往往是通过研究泛化误差的概率上界进行的,简称为泛化误差上界(generalization error bound)。通过比较两种学习方法的泛化误差上界的大小来比较它们的优劣。

    泛化误差上界的性质:

    • 样本容量增加,泛化上界趋于0;
    • 假设空间容量越大,模型越难学,泛化误差上界也越大。

    生成模型与判别模型

    监督学习方法可以分为生成方法(generative approach)和判别方法(discriminative approach)。对应的模型的即为生成模型和判别模型。

    生成模型是指由数据学习联合概率分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测模型,如:朴素贝叶斯和隐马尔可夫模型等。优点是可以得到联合概率分布,收敛速度更快,当存在隐变量时,仍可以使用。

    判别模型是指由数据直接学习决策函数f(X)或条件概率分布P(Y|X)作为预测模型,如:KNN,感知机,决策树,逻辑回归,支持向量等。优点是学习准确率比较高,便于对数据进行抽象,可以简化学习问题。

    判别模型与生成模型的最重要的不同是,训练时的目标不同,判别模型主要优化条件概率分布,使得x,y更加对应,在分类中就是更可分。而生成模型主要是优化训练数据的联合分布概率。而同时,生成模型可以通过贝叶斯得到判别模型,但判别模型无法得到生成模型。

    分类问题、标注问题、回归问题

    输入变量和输出变量均为连续变量的预测问题称为回归问题,如函数拟合;输出变量为有限个离散变量的预测问题称为分类问题,学习出的分类模型或分类决策函数称为分类器(classifier);输入变量与输出变量均为变量序列的预测问题称为标注问题,如词性标注,输入词序列,输出是(词,词性)的标记序列。

    对于二分类问题,常用的评价指标是精确率和召回率。通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,4中情况出现的总数分别记为:

    • TP——将正类预测为正类数;
    • FN——将正类预测为负类数;
    • FP——将负类预测为正类数;
    • TN——将负类预测为负类数。

    则,精确率定义为:

    参考

      1. 《统计学习方法》——李航著
      2. http://www.cnblogs.com/fxjwind/p/3601119.html
      3. http://blog.csdn.net/qll125596718/article/details/8351337
  • 相关阅读:
    ExcelManager基于.Net的Excel读写管理类库(二)
    ExcelManager基于.Net的Excel读写管理类库(一)
    NHibernate初探!
    也谈软件工程!
    本人初学WCF ,请教一个问题
    初来咋到,今天终于在这里建起了一个家!
    c#中委托和直接函数调用用什么区别,好处和目的在哪?
    CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别
    C++线程同步
    C++中using的作用
  • 原文地址:https://www.cnblogs.com/findwg/p/4491436.html
Copyright © 2011-2022 走看看