CH01 统计学方法概论

前言

章节目录

  1. 统计学习
  2. 监督学习
    1. 基本概念
    2. 问题的形式化
  3. 统计学习三要素
    1. 模型
    2. 策略
    3. 算法
  4. 模型评估与模型选择
    1. 训练误差与测试误差
    2. 过拟合与模型选择
  5. 正则化与交叉验证
    1. 正则化
    2. 交叉验证
  6. 泛化能力
    1. 泛化误差
    2. 泛化误差上界
  7. 生成模型与判别模型
  8. 分类问题
  9. 标注问题
  10. 回归问题

导读

  • 直接看目录结构,会感觉有点乱,就层级结构来讲感觉并不整齐。

  • 可以看本章概要部分,摘录几点,希望对本章内容编排的理解有帮助:

1. 统计学习三要素对理解统计学习方法起到提纲挈领的作用

2. 本书主要讨论监督学习

3. 分类问题、标注问题和回归问题都是监督学习的重要问题

4. 本书中介绍的统计学习方法包括...。这些方法是主要的分类、标注以及回归方法。他们又可归类为生成方法与判别方法。

  • 本章最后的三个部分,这三个问题可以对比着看,暂时没有概念,略过也可以,回头对各个算法有了感觉回头再看这里。 这三部分怎么对比,三部分都有个图来说明,仔细看下差异,本文后面会对此展开。

  • 关于损失函数,风险函数与目标函数注意体会差异

  • Losses, Metrics, 在Keras里面划分了两个模块, 解释是Losses是BP过程用到的, 而Metrics实际和损失函数类似, 用来评价模型的性能, 但是不参与反向传播. 从源码也能看到, Metrics里面import了很多Loss算法

1. 实现统计学习方法的步骤

统计学习方法三要素:模型,策略,算法.

1. 得到一个有限的训练数据集合

2. 确定包含所有可能的模型的假设空间, 即学习模型的集合.

3. 确定模型选择的准则, 即学习的策略

4. 实现求解最优模型的算法, 即学习的算法

5. 通过学习方法选择最优的模型

6. 利用学习的最优模型对新数据进行预测或分析.

2. 监督学习

  • 输入变量与输出变量均为连续变量的预测问题称为回归问题
  • 输出变量为有限个离散变量的预测问题称为分类问题
  • 输入变量与输出变量均为变量序列的预侧问题称为标注问题

监督学习假设输入与输出的随机变量X和Y遵循联合概率分布(X,Y)。

3. 统计学习方法三要素

3.1 模型

3.1.1 模型是什么?

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

注意书中的这部分描述,整理了一下到表格里:

  假设空间$\cal F$ 输入空间$\cal X$ 输出空间$\cal Y$ 参数空间
决策函数 $\cal F\it ={f | Y = f_{\theta}(X),\theta \in \bf R \it^n}$ $X$ $Y$ 变量
条件概率分布 $\cal F\it ={P | P_\theta(Y|X), \theta \in \bf R \it ^n}$ $X$ $Y$ 随机变量

书中描述的时候,有提到条件概率分布族,这个留一下,后面CH06有提到确认逻辑斯谛分布属于指数分布族。

3.2 策略

3.3.1损失函数与风险函数

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

  1. 损失函数(loss function)或代价函数(cost function) 损失函数定义为给定输入$X$的预测值$f(X)$和真实值$Y$之间的非负实值函数, 记作$L(Y,f(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) {\rm d}x{\rm d}y$ 模型$f(X)$关于联合分布$P(X,Y)$的平均意义下的损失(期望损失), 但是因为$P(X,Y)$是未知的, 所以前面的用词是期望, 以及平均意义下的.

    这个表示其实就是损失的均值, 反映了对整个数据的预测效果的好坏, $P(x,y)$转换成$\frac {\nu(X=x, Y=y)}{N}$更容易直观理解, 可以参考CH09, 6.2.2节的部分描述来理解, 但是真实的数据N是无穷的.

  3. 经验风险(empirical risk)或经验损失(empirical loss) $R_{emp}(f)=\frac{1}{N}\sum^{N}_{i=1}L(y_i,f(x_i))$ 是模型 $f$ 关于训练样本集的平均损失. 根据大数定律, 当样本容量N趋于无穷大时, 经验风险趋于期望风险.

  4. 结构风险(structural risk) $R_{srm}(f)=\frac{1}{N} \sum_{i=1}^{N} L(y_i,f(x_i))+\lambda J(f)$, $J(f)$为模型复杂度, $\lambda \geqslant 0$是系数, 用以权衡经验风险和模型复杂度.

3.2.2 常用损失函数

损失函数数值越小,模型就越好

$L(Y,f(X))$

  1. 0-1损失函数

    

  2. 平方损失函数

    

  3. 绝对损失函数

    

    4. 对数损失函数或对数似然损失函数

    

    这里$P(Y|X)\leqslant 1$,对应的对数是负值,所以对数损失中包含一个负号,为什么不是绝对值?因为肯定是负的。

3.2.3 ERM与SRM

经验风险最小化(ERM)与结构风险最小化(SRM)

  1. 极大似然估计是经验风险最小化的一个例子. 当模型是条件概率分布, 损失函数是对数损失函数时, 经验风险最小化等价于极大似然估计.
  2. 贝叶斯估计中的最大后验概率估计是结构风险最小化的一个例子. 当模型是条件概率分布, 损失函数是对数损失函数, 模型复杂度由模型的先验概率表示时, 结构风险最小化等价于最大后验概率估计.

3.3 算法

这章里面简单提了一下,具体可以参考CH12表格中关于学习算法的描述。

4. 模型选择

当选择的模型复杂度过大(多项式次数增加)时,会发生过拟合现象。

模型选择常用方法:

  1. 正则化 模型选择的典型方法是正则化

  2. 交叉验证 另一种常用的模型选择方法是交叉验证

    基本思想是重复地使用数据,把给定的数据进行切分,将切分的数据集组合为训练集与测试集,在此基础上反复地进行训练、测试以及模型选择.

    • 简单交叉验证:首先随机地将己给数据分为两部分,一部分作为训练集,另一部分作为测试集;然后用训练集在各种条件下(例如,不同的参数个数)训练模型,从而得到不同的模型;在测试集上评价各个模型的测试误差,选出测试误差最小的模型.
    • S折交叉验证:首先随机地将已给数据切分为S个互不相交的大小相同的子集;然后利用S-1个子集的数据训练模型,利用余下的子集测试模型;将这一过程对可能的S种选择重复进行;最后选出S次评测中平均侧试误差最小的模型.
    • 留一交叉验证:S折交叉验证的特殊情形是S=N,N是给定数据集的容量.

5. 泛化能力

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

  • 现实中采用最多的方法是通过测试误差来评价学习方法的泛化能力
  • 统计学习理论试图从理论上对学习方法的泛化能力进行分析

这本书里面讨论的不多,在CH08里面有讨论提升方法的误差分析。

注意泛化误差的定义,书中有说事实上,泛化误差就是所学习到的模型的期望风险

6. 生成模型与判别模型

监督学习方法又可以分为生成方法(generative approach)和判别方法(discriminative approach). 所学到的模型分别称为生成模型(geuemtive model)和判别模型(discriminative model).

6.1 生成方法

generative approach

由数据学习联合概率分布 $P(X,Y)$ ,然后求出条件概率分布 $P(Y|X)$ 作为预测的模型,即生成模型

这样的方法之所以称为生成方法,是因为模型表示了给定输入 $X$ 产生输出 $Y$ 的生成关系.典型的生成模型有:朴素贝叶斯法和隐马尔可夫模型。

  • 可以还原出联合概率分布$P(X,Y)$
  • 收敛速度快, 当样本容量增加时, 学到的模型可以更快收敛到真实模型
  • 当存在隐变量时仍可以用

6.2 判别方法

discriminative approach

由数据直接学习决策函数 $f(X)$ 或者条件概率分布 $P(Y|X)$ 作为预测的模型,即判别模型.判别方法关心的是对给定的输入 $X$ ,应该预测什么样的输出 $Y$ .典型的判别模型包括k近邻法、感知机、决策树、逻辑斯谛回归模型、最大嫡模型、支持向量机、提升方法和条件随机场等。

  • 直接学习条件概率$P(Y|X)$或者决策函数$f(X)$
  • 直接面对预测, 往往学习准确率更高
  • 可以对数据进行各种程度的抽象, 定义特征并使用特征, 可以简化学习问题

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

Classification, Tagging, Regression

  • 图1.4和图1.5除了分类系统和标注系统的差异外,没看到其他差异,但实际上这两幅图中对应的输入数据有差异,序列数据的$x_i = (x_i^{(1)},x_i^{(2)},\dots,x_i^{(n)})^T$对应了
  • 图1.5和图1.6,回归问题的产出为$Y=\hat f(X)$

李航《统计学习方法》CH01的更多相关文章

  1. 李航统计学习方法——算法2k近邻法

    2.4.1 构造kd树 给定一个二维空间数据集,T={(2,3),(5,4),(9,6)(4,7),(8,1),(7,2)} ,构造的kd树见下图 2.4.2 kd树最近邻搜索算法 三.实现算法 下面 ...

  2. 李航-统计学习方法-笔记-3:KNN

    KNN算法 基本模型:给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个实例.这k个实例的多数属于某个类,就把输入实例分为这个类. KNN没有显式的学习过程. KNN使用的模型 ...

  3. 李航统计学习方法(第二版)(六):k 近邻算法实现(kd树(kd tree)方法)

    1. kd树简介 构造kd树的方法如下:构造根结点,使根结点对应于k维空间中包含所有实例点的超矩形区域;通过下面的递归方法,不断地对k维空间进行切分,生成子结点.在超矩形区域(结点)上选择一个坐标轴和 ...

  4. 李航统计学习方法(第二版)(五):k 近邻算法简介

    1 简介 k近邻法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类.k近邻法假设给定一个训练数据集,其中的实例类别已定.分类时,对新的实例,根据其k个最近邻的训练实例的类别,通 ...

  5. 李航统计学习方法(第二版)(十):决策树CART算法

    1 简介 1.1 介绍 1.2 生成步骤 CART树算法由以下两步组成:(1)决策树生成:基于训练数据集生成决策树,生成的决策树要尽量大;(2)决策树剪枝:用验证数据集对己生成的树进行剪枝并选择最优子 ...

  6. Adaboost算法的一个简单实现——基于《统计学习方法(李航)》第八章

    最近阅读了李航的<统计学习方法(第二版)>,对AdaBoost算法进行了学习. 在第八章的8.1.3小节中,举了一个具体的算法计算实例.美中不足的是书上只给出了数值解,这里用代码将它实现一 ...

  7. 统计学习方法学习(四)--KNN及kd树的java实现

    K近邻法 1基本概念 K近邻法,是一种基本分类和回归规则.根据已有的训练数据集(含有标签),对于新的实例,根据其最近的k个近邻的类别,通过多数表决的方式进行预测. 2模型相关 2.1 距离的度量方式 ...

  8. 统计学习方法(李航)朴素贝叶斯python实现

    朴素贝叶斯法 首先训练朴素贝叶斯模型,对应算法4.1(1),分别计算先验概率及条件概率,分别存在字典priorP和condP中(初始化函数中定义).其中,计算一个向量各元素频率的操作反复出现,定义为c ...

  9. 【NLP】基于统计学习方法角度谈谈CRF(四)

    基于统计学习方法角度谈谈CRF 作者:白宁超 2016年8月2日13:59:46 [摘要]:条件随机场用于序列标注,数据分割等自然语言处理中,表现出很好的效果.在中文分词.中文人名识别和歧义消解等任务 ...

随机推荐

  1. javascript数组方法

    [声明一个数组]var a=[1,2,3]; [定义数组的长度]var a=new Array(2); [连接数组]数组1.concat(数组2,数组3) [将数组转换为字符串,可自定连接符]arr. ...

  2. Angular4中使用后台去数据,Swiper不能滑动的解决方法(一)

      Swiper是目前较为流行的移动端触摸滑动插件,因为其简单好用易上手,很受很多设计师的欢迎. 今天在使用Swiper的时候遇到这个问题: 使用angularjs动态循环生成swiper-slide ...

  3. (转)sql 违反了 PRIMARY KEY 约束,不能在对象 中插入重复键

    说明你的数据里面有重复记录 两种情况 1.已存在的表中和要导入数据之间的重复 这个时候可以通过在两个表之间建立关联,将主键级联找出重复记录 2.要导入的表中存在重复记录 可通过类似如下的语句将表中的重 ...

  4. 信步漫谈之Jenkins—集成自动化部署 SVN 项目

    一.环境准备 1)Jenkins 部署 WAR 包:jenkins.war(2.164.2 版本,WAR 包官方下载路径:https://jenkins.io/download/)2)Tomcat 服 ...

  5. C# 多笔数据导入DB

    6万笔数据瞬间导入进DB 命名空间 using NPOI.HSSF.UserModel; using NPOI.XSSF.UserModel; //Filename为文件路径 public JsonR ...

  6. linux使用vim打开乱码问题

    在windows中编辑好的汉字文本文档,上传到Linux下打开乱码. [root@localhost ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-36.el7.x ...

  7. Git随笔 -- 初始化远程仓库

    1. 新建文件夹(作为本地仓库与之远程仓库关联),进入文件夹空白处右键选择Git Bash(安装程序下载).[或者在开始菜单里找到Git Bash并打开,使用命令进入文件夹:cd 文件夹名称.] 2. ...

  8. 文件和IO流

    摘要:本文主要介绍了Java的文件处理以及常用的IO流操作. 文件操作 概念 File是数据源(保存数据的地方)的一种,可以表示一个文件,也可以表示一个文件目录. File类只能对文件和文件夹进行创建 ...

  9. SAP abap 语句、命令 语法查询备用

    语句:碰到一个写一个 COLLECT语句用法 用于报表数据的合并计算,如果非数据字段值相等,那么数值字段值相加 内表可以不用排序 LOOP AT gtd_test into gth_test. COL ...

  10. ajaxToolkit 异步加载报 错误500的解决方法

    设置IIS程序池的托管模式为经典