zoukankan      html  css  js  c++  java
  • 第一节--统计学习概论

    第一节–统计学习概论

    首先介绍统计学习的定义,研究对象和方法;然后叙述监督学习;接着统计学习方法的三要素:模型,策略和算法;介绍模型选择,包括正则化,交叉验证和学习的泛化能力;介绍生成模型与判别模型;最后介绍监督学习方法的应用:分类,标注和回归

    一.统计学习

    1.统计学习的特点

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

    统计学习的主要特点是:

    1. 统计学习以计算机及网络平台,是建立在计算机及网络之上的
    2. 统计学习以数据为研究对象,是数据驱动的学科
    3. 统计学习的目的是对数据进行预测与分析
    4. 统计学习以方法为中心,统计学习方法构建模型并应用模型进行预测与分析
    5. 统计学习是概率论,统计学,信息论,计算机科学等多个领域的交叉学科

    2.统计学习的对象

    统计学习的对象是数据(data),它从数据出发,提取数据的特征,抽象出数据的模型,发现数据中的知识,又回到对数据的分析与预测中去.数据时多样的,包括存在于计算机及网络上的各种数字,文字,图像,视频,音频数据以及它们的组合

    3.统计学习的目的

    统计学习用于对数据进行预测与分析,特别是对未知新数据进行预测与分析,对数据的预测可以使计算机更加智能化

    统计学习的方法

    统计学习的方法是基于数据构建统计模型从而对数据进行预测与分析.统计学习方法包括模型的假设空间,模型选择的准则以及模型学习的算法,称其为统计学习方法的三要素,简称:模型(model),策略(strategy)算法(algorithm)

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

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

    二.监督学习

    监督学习(supervised learning)的任务是学习一个模型,使模型能够对任意给定的输入,对其相应的输出做出一个好的预测

    1.基本概念

    输入空间,特征空间与输出空间

    在监督学习中,将输入与输出所有可能取值的集合分别称为输入空间(input space)与输出空间(output space),输入与输出空间可以是有限元素的集合,也可以是整个欧式距离

    每个具体的输入是一个实例(instance),通常由特征向量(feature vector)表示,这时,所有特征向量存在的空间称为特征空间(feature space)

    向量均为列向量,输入实例x的特征向量记作:

    image.png表示x的第i个特征,请注意,image.pngimage.png不同,用image.png表示多个输入变量中的第i个,即:

    监督学习从训练数据(training data)集合中学习模型,对测试数据(test data)进行预测,训练数据的输入(或特征向量)与输出对组成,训练集通常表示为:

    2.问题的形式化

    监督学习利用训练数据集学习一个模型,再用模型对测试样本集进行预测(prediction)

    from IPython.display import Image
    Image(filename="./data/1_1.png",width=500)
    

    output_24_0.png

    三.统计学习三要素

    统计学习方法都是由模型,策略和算法构成的,即统计学习方法由三要素构成,可以简单地表示为:

    方法=模型+策略+算法

    1.模型

    在监督学习过程中,模型就是所要学习的条件概率分布或决策概率

    2.策略

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

    损失函数和风险函数

    监督学习问题是在假设空间Fmathcal{F}中选取模型f作为决策函数,对于给定的输入X,由f(X)给出相应的输出Y,这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度,损失函数是f(X)和Y的非负实值函数,记作:image.png

    统计学习常用的损失函数有以下几种:

    1. 0-1损失函数

    2. 平方损失函数

    3. 绝对损失函数

    4. 对数损失函数

    损失函数越小,模型就越好.由于模型的输入,输出(X,Y)是随机变量,遵循联合分布P(X,Y),所以损失函数的期望是:

    这是理论上模型f(X)关于联合分布P(X,Y)的平均意义下的损失,称为风险函数(risk function)或期望损失(expected loss)

    3.算法

    算法是指学习模型的具体计算方法,统计学习基于训练数据集,根据学习策略,从假设空间中选择最优模型,最后需要考虑用什么样的计算方法求解最优模型

    四.模型评估与模型选择

    1.训练误差与测试误差

    统计学习的目的是使学到的模型不仅对已知数据而且未知数据都能有很好的预测能力,不同的学习方法会给出不同的模型.当损失函数给定时,基于损失函数的模型的训练误差(training error)和模型的测试误差(test error)就自然成为学习方法评估的标准
    假设学习到的模型是image.png,训练误差是模型image.png关于训练数据集的平均损失:

    其中N是训练样本容量

    测试误差是模型image.png关于测试数据集的平均损失:

    其中image.png是测试样本容量

    例如,当损失函数是0-1损失时,测试误差就变成了常见的测试数据集上的误差率(error rate):

    这里I是指示函数(indicator function),即image.png时为1,否则为0

    相应地,常见的测试数据集上的准确率(accuracy)为:

    显然:image.png

    测试误差反映了学习方法对未知的测试数据集的预测能力.显然测试误差小的方法具有更好的预测能力,通常将学习方法对未知数据的预测能力称为泛化能力(generalization ability)

    2.过拟合与模型选择

    当假设空间含有不同复杂度的模型时,就要面临模型选择(model selection)的问题.具体来讲,所选择的模型要与真模型的参数个数相同,所选择的模型的参数向量与模型的参数向量相近

    如果一味追求提高对训练数据的预测能力,所选模型的复杂度则往往会比真模型更高,这种现象称为过拟合(over-fitting).过拟合是指学习是选择的模型所包含的参数过多,以至于出现这一模型对已知数据预测得很好,但对未知数据预测很差的现象,可以说模型选择旨在避免过拟合并提高模型的预测能力

    下面,以多项式函数拟合问题为例,说明过拟合与模型选择,这是一个回归问题:

    假设给定一个训练数据集:

    式中x是单变量输入,image.png是M+1个参数

    解决这个问题的方法可以是:首先确定模型的复杂度,即确定多项式的次数;然后在给定的模型复杂度下按照经验风险最小化的策略求解参数,即多项式的参数.具体地,求以下经验风险最下化:

    这是一个简单的最优化问题,将模型与训练数据代入上式:

    wj{w_{j}}求偏导数并令其为0,可得:

    于是求得拟合多项式系数:image.png

    %matplotlib inline
    import numpy as np
    import matplotlib.pyplot as plt
    import scipy as sp
    from scipy.optimize import leastsq
    
    def real_func(x):
        return np.sin(2*np.pi*x)
    
    def fit_func(p,x):
        f=np.poly1d(p)
        return f(x)
    
    def residuals_func(p,x,y):
        ret=fit_func(p,x)-y
        return ret
    
    x=np.linspace(0,1,10)
    x_points=np.linspace(0,1,1000)
    
    y_=real_func(x)
    y=[np.random.normal(0,0.1)+y1 for y1 in y_]
    
    def fitting(M=0):
        p_init=np.random.rand(M+1)
        
        p_lsq=leastsq(residuals_func,p_init,args=(x,y))
        print("Fitting Parameters:",p_lsq[0])
        
        plt.plot(x_points,real_func(x_points),label="real")
        plt.plot(x_points,fit_func(p_lsq[0],x_points),label="fitted curve")
        plt.plot(x,y,"bo",label="noise")
        plt.legend()
        return p_lsq
    
    p_lsq_0=fitting(M=0)
    
    Fitting Parameters: [0.00045968]
    

    output_56_1.png

    p_lsq_1=fitting(M=1)
    
    Fitting Parameters: [-1.31770047  0.65930992]
    

    output_57_1.png

    p_lsq_1=fitting(M=3)
    
    Fitting Parameters: [ 22.1088372  -32.88036488  10.98233944  -0.06303643]
    

    output_58_1.png

    p_lsq_1=fitting(M=9)
    
    Fitting Parameters: [-1.44212173e+04  6.23491084e+04 -1.12265979e+05  1.08933199e+05
     -6.15084724e+04  2.03467575e+04 -3.75406545e+03  3.24046465e+02
     -3.23017791e+00 -4.08582404e-04]
    

    output_59_1.png

    如果M=0,多项式曲线是一个常数,数据拟合效果很差;如果M=1,多项式曲线是一条直线,数据拟合效果也很差;相反如果M=9,多项式曲线通过每个数据点,训练误差为0,效果最好.但是因为训练数据本身存在噪声,这种拟合曲线对未知数据的预测能力往往并不是最好的,在实际学习中并不可取,这时过拟合现象就会发生

    from IPython.display import Image
    Image(filename="./data/1_2.png",width=500)
    

    output_61_0.png

    五.正则化与交叉验证

    1.正则化

    模型选择的典型方法是正则化(regulartion).正则化的结构风险最小化策略的实现.是在检验风险上加一个正则化项(regularizer)或罚项(penalty term).正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值就越大.比如正则化项可以是模型参数向量的范数

    正则化一般具有如下形式:

    其中:第1项是经验风险,第2项是正则化项,image.png≥0为调整两者之间关系的系数

    正则化项可以取不同的形式.例如回归问题中,损失函数是平方损失,正则化项可以是参数向量的L范数:

    这里,||w||表示参数向量w的L范数

    正则化项也可以是参数向量的L1{L_{1}}范数:

    这里,||w||_表示参数向量w的L_范数

    正则化的作用是选择经验风险与模型复杂度同时较小的模型

    2.交叉验证

    如果给定的样本数据充足,进行模型选择的一种简单方法是随机地将数据集切分成三部分,分别是训练集(train set),验证集(validation set)和测试集(test set).训练集用来训练模型,验证集用于模型的选择,而测试集用于最终对学习方法的评估,在学习到的不同复杂度的模型中,选择对验证集有最小预测误差的模型.由于验证集有足够的数据,用它对模型进行选择也是有效的

    简单交叉验证

    简单交叉验证方法是:首先随机地将已给数据分为两部分,一部分作为训练集,另一部分作为测试集;然后在测试集上评价各个模型的测试误差,选出测试吾侪最小的模型

    S折交叉验证

    应用最多的是S折交叉验证(S-fold cross validation),方法如下:首先随机地将已给数据切分为S个互不相交的大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程可能的S种选择重复进行;最后选出S次评测中平均测试误差最小的模型

    六.泛化能力

    1.泛化误差

    学习方法的泛化能力(generalization ability)是指由该方法学习到的模型对未知数据的预测能力,是学习方法本质上重要的性质

    首先给出泛化误差的定义,如果学到的模型是f^hat{f},那么用这个模型对未知数据预测的误差即为泛化误差(generalization error)

    泛化误差反映了学习方法的泛化能力,如果一种方法学习的模型比另一种方法学习的模型具有更小的泛化误差,那么这种方法就更有效

    七.分类问题

    对于二分类问题常用的评价指标是精确率(precision)与召回率(recall):

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

    精确率定义为:

    召回率定义为:

  • 相关阅读:
    Mandala Coloring Book Game ver 1.2
    Racing Game Starter Kit 1.1.0a
    Unity3D射击项目源码
    U3D第一人称解谜游戏完整项目工程源码
    uMMORPG Remastered v2.25
    U3D网球完整项目源码 v1.1
    Unity3D果汁店模拟经营完整项目工程源码
    3D坦克大战游戏项目源码
    周民强实变函数论第3版勘误14个
    竞赛2021年浙江省高等数学(微积分)竞赛数学类与工科类试题2页pdf
  • 原文地址:https://www.cnblogs.com/LQ6H/p/10713235.html
Copyright © 2011-2022 走看看