chap1:统计学习方法概论

第1章 统计学习方法概论

文章目录

  • 第1章 统计学习方法概论
    • 前言
      • 章节目录
      • 导读
    • 实现统计学习方法的步骤
    • 统计学习分类
      • 基本分类
        • 监督学习
        • 无监督学习
        • 强化学习
      • 按模型分类
        • 概率模型与非概率模型
      • 按算法分类
      • 按技巧分类
        • 贝叶斯学习
        • 核方法
    • 统计学习方法三要素
      • 模型
        • 模型是什么?
      • 策略
        • 损失函数与风险函数
        • 常用损失函数
        • ERM与SRM
      • 算法
    • 模型评估与模型选择
      • 过拟合与模型选择
    • 正则化与交叉验证
        • 正则化
        • 交叉验证
    • 泛化能力
    • 生成模型与判别模型
      • 生成方法
      • 判别方法
    • 分类问题、标注问题、回归问题
    • 习题解答参考
    • 参考学习路径:

前言

章节目录

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

导读

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

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

  • 后面插点从深度学习角度拿到的点

    • 关于机器学习三要素, 复旦大学邱锡鹏教授也有解读: 模型, 学习准则, 优化算法. 这个定义比较接近代码. 以Tensorflow为例. 通常会定义一个网络(模型), 定义Loss(学习准则), 定义优化算法(Optimizer), 然后开Session, 不停的把数据带入用Opitmizer去最小化Loss.
    • Losses, Metrics, 在Keras里面划分了两个模块, 解释是Losses是BP过程用到的, 而Metrics实际和损失函数类似, 用来评价模型的性能, 但是不参与反向传播. 从源码也能看到, Metrics里面import了很多Loss算法
  • 书中例子1.1可以参考PRML中对应的表述, 更详细些。

  • 在监督学习中输入和输出对称为样本,在无监督学习中输入是样本

  • 注意在介绍输入空间,输出空间等概念的时候,以及这一章的很多部分都会有个帽子,监督学习中, 书中也明确了本书主要讨论监督学习的问题,最后的概要总结部分对监督学习有这样的描述:监督学习可以概括如下:从给定有限的训练数据出发,假设数据是独立同分布的,而且假设模型属于某个假设空间,应用某一评价准则,从假设空间中选取一个最优的模型,使它对已给的训练数据以及未知测试数据在给定评价标准意义下有最准确的预测。,理解下这里的假设。
    几个假设,即数据独立同分布、模型属于假设空间等
    在这里插入图片描述

  • 在贝叶斯学习部分,提到将模型、为观测要素及其参数用变量表示,使用模型的先验分布是贝叶斯学习的特点。注意这里面先验是模型的先验分布。

  • 在泛化误差部分,用了 f ^ \hat f f^表示最优估计,这个有时候也会用 f ∗ f^* f表示意思差不多。有时候表示向量又要表示估计值,用 ∗ * 可能好看一点,比如 x ⃗ ∗ \vec x^* x ,但是通常每本书都有自己的符号体系,向量可以通过字体表示,具体可以从书中的符号表部分了解。关于这一点,在第二版第一章就有所体现,监督和无监督学习中,模型用hat表示,在强化学习中,最优解用*表示。

实现统计学习方法的步骤

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

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

统计学习分类

基本分类

这部分内容新增了无监督学习和强化学习。值得注意的一个点,之前因为只写了监督学习,样本表示(x, y)对,在无监督学习里面,样本就是x。

监督学习
无监督学习
强化学习

按模型分类

概率模型与非概率模型

在监督学习中,概率模型是生成模型,非概率模型是判别模型。

按算法分类

在线学习和批量学习,在线学习通常比批量学习更难。

按技巧分类

贝叶斯学习
核方法

统计学习方法三要素

模型

模型是什么?

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

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

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

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

策略

损失函数与风险函数

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

  1. 损失函数(loss function)或代价函数(cost function)
    损失函数定义为给定输入 X X X预测值 f ( X ) f(X) f(X)真实值 Y Y Y之间的非负实值函数,记作 L ( Y , f ( X ) ) L(Y,f(X)) L(Y,f(X))

  2. 风险函数(risk function)或期望损失(expected loss)
    这个和模型的泛化误差的形式是一样的
    R e x p ( f ) = E p [ L ( Y , f ( X ) ) ] = ∫ X × Y L ( y , f ( x ) ) P ( x , y ) d x d y 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 Rexp(f)=Ep[L(Y,f(X))]=X×YL(y,f(x))P(x,y)dxdy
    模型 f ( X ) f(X) f(X)关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)平均意义下的损失(期望损失),但是因为 P ( X , Y ) P(X,Y) P(X,Y)是未知的,所以前面的用词是期望,以及平均意义下的

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

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

  4. 结构风险(structural risk)
    R s r m ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) Rsrm(f)=N1i=1NL(yi,f(xi))+λJ(f)
    J ( f ) J(f) J(f)为模型复杂度, λ ⩾ 0 \lambda \geqslant 0 λ0是系数,用以权衡经验风险和模型复杂度。

常用损失函数

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

  1. 0-1损失
    L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y,f(X))=\begin{cases}1, Y \neq f(X) \\0, Y=f(X) \end{cases} L(Y,f(X))={1,Y=f(X)0,Y=f(X)

  2. 平方损失
    L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X))=(Y-f(X))^2 L(Y,f(X))=(Yf(X))2

  3. 绝对损失
    L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=Yf(X)

  4. 对数损失
    这里 P ( Y ∣ X ) ⩽ 1 P(Y|X)\leqslant 1 P(YX)1,对应的对数是负值,所以对数损失中包含一个负号,为什么不是绝对值?因为肯定是负的。
    L ( Y , P ( Y ∣ X ) ) = − log ⁡ P ( Y ∣ X ) L(Y,P(Y|X))=-\log P(Y|X) L(Y,P(YX))=logP(YX)
    在这里插入图片描述

ERM与SRM

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

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

算法

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

模型评估与模型选择

训练误差和测试误差是模型关于数据集的平均损失。

提到一句, 统计学习方法具体采用的损失函数未必是评估时使用的损失函数,这句理解下。参考下在数据科学比赛中给出的评分标准,与实际学习采用的损失函数之间的关系。

过拟合与模型选择

这部分讲到了最小二乘法,给了PRML中的一个例子。

这个问题中训练数据 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\{(x_1, y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}

模型

f M ( x , w ) = w 0 + w 1 x + w 2 x 2 + ⋯ + w M x M = ∑ j = 0 M w j x j f_M(x,w)=w_0+w_1x+w_2x^2+\cdots+w_Mx^M=\sum\limits_{j=0}^Mw_jx^j fM(x,w)=w0+w1x+w2x2++wMxM=j=0Mwjxj

经验风险最小化策略下

L ( w ) = 1 N ∑ i = 1 N ( f ( x i , w ) − y i ) 2 L(w)=\frac{1}{N}\sum\limits_{i=1}^N(f(x_i,w)-y_i)^2 L(w)=N1i=1N(f(xi,w)yi)2

将模型和训练数据带入到上式得到

L ( w ) = 1 N ∑ i = 1 N ( ∑ j = 0 M w j x i j − y i ) 2 = 1 N ∑ i = 1 N ( w ⋅ x i − y i ) 2 L(w)=\frac{1}{N}\sum\limits_{i=1}^N\left(\sum\limits_{j=0}^Mw_jx_i^j-y_i\right)^2=\frac{1}{N}\sum\limits_{i=1}^N(w\cdot x_i-y_i)^2 L(w)=N1i=1N(j=0Mwjxijyi)2=N1i=1N(wxiyi)2

这个问题要求 w = ( w 0 ∗ , w 1 ∗ , ⋯ , w M ∗ ) w=(w_0^*,w_1^*,\cdots,w_M^*) w=(w0,w1,,wM)

w w w求偏导令其为零,得到一系列方程,求解可以用梯度下降或者矩阵分解。

求解线性方程组 A x = b Ax=b Ax=b,可以表示为 x = A / b x=A/b x=A/b,问题展开之后可以涉及到矩阵分解

正则化与交叉验证

正则化

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

交叉验证

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

  • 简单:例如7+3比例划分
  • S折(K折, K-Fold)
  • 留一法

关于交叉验证,这里补充一点。

数据集的划分这个问题,书中有提到数据充足的情况下,将数据划分为三个部分,训练集,验证集和测试集。看到这里,不知道大家会不会有一样的问题:验证集和测试集有什么区别?

注意这里,在算法学习的过程中,测试集可能是固定的,但是验证集和训练集可能是变化的。比如K折交叉验证的情况下,分成K折之后,其中的K-1折作为训练集,1折作为验证集,这样针对每一个模型操作K次,计算平均测试误差,最后选择平均测试误差最小的模型。这个过程中用来验证模型效果的那一折数据就是验证集。交叉验证,就是这样一个使用验证集测试模型好坏的过程。他允许我们在模型选择的过程中,使用一部分数据(验证集)“偷窥”一下模型的效果。

泛化能力

  • 现实中采用最多的方法是通过测试误差来评价学习方法的泛化能力

  • 统计学习理论试图从理论上对学习方法的泛化能力进行分析

  • 学习方法的泛化能力往往是通过研究泛化误差的概率上界进行的, 简称为泛化误差上界(generalization error bound)

    这本书里面讨论的不多,在chap8里面有讨论提升方法的误差分析, 提到 A d a B o o s t AdaBoost AdaBoost不需要知道下界 γ \gamma γ。在chap2中讨论算法的收敛性的时候有提到误分类次数的上界.

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

生成模型与判别模型

监督学习方法可分为生成方法(generative approach)与判别方法(discriminative approach)

生成方法

generative approach

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

判别方法

discriminative approach

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

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

Classification, Tagging, Regression

  • 图1.10和图1.11除了分类系统和标注系统的差异外,没看到其他差异,但实际上这两幅图中对应的输入数据有差异,序列数据的 x i = ( x i ( 1 ) , x i ( 2 ) , … , x i ( n ) ) T x_i = (x_i^{(1)},x_i^{(2)},\dots,x_i^{(n)})^T xi=(xi(1),xi(2),,xi(n))T对应

在这里插入图片描述

  • 回归问题的产出为 Y = f ^ ( X ) Y=\hat f(X) Y=f^(X)
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

习题解答参考

参考:https://datawhalechina.github.io/statistical-learning-method-solutions-manual/#/chapter01/ch01

在这里插入图片描述
在这里插入图片描述

1,Python代码实现:
参考:Statistical-learning-method/tree/main/chap1_统计学习方法概论

2,R代码实现:
参考:https://github.com/xlite-dev/statistic-learning-R-note?tab=readme-ov-file
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考学习路径:

1,先自己过一遍书
2,带着问题+网课整体梳理一遍
https://www.bilibili.com/video/BV1No4y1o7ac
https://www.bilibili.com/video/BV1W7411N7Ag
笔记整理https://github.com/SmirkCao/Lihang
3,刷题/教材code实现:
(1)Python:
https://github.com/fengdu78/lihang-code
手推算法实现:https://github.com/Dod-o/Statistical-Learning-Method_Code?tab=readme-ov-file
(2)R:
https://github.com/xlite-dev/statistic-learning-R-note?tab=readme-ov-file
4,输出:
刷题html+ipynb在github,推文导出html整理

===>

参考:https://github.com/SmirkCao/Lihang

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬虫案例-爬取某站视频

文章目录 1、下载FFmpeg2、爬取代码3、效果图 1、下载FFmpeg FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。 点击下载: ffmpeg 安装并配置 FFmpeg 步骤: 1.下载 FFmpeg: 2.访问 FFmpeg 官网。 3.选择 Wi…

车载以太网网络测试-22【传输层-DOIP协议-5】

目录 1 摘要2 DoIP时间参数2.1 ISO 13400定义的时间参数2.2 参数示例 3 DoIP节点内部状态机4 UDSonIP概述5 总结 1 摘要 本文继续对DOIP协议进行介绍,主要是DOIP相关的时间参数、时间参数定义以及流程示例。推荐大家对上文专题进行回顾,有利于系统性学习…

(论文总结)思维链激发LLM推理能力

研究背景&动机 背景:扩大模型规模已被证实具有提升模型性能和模型效率的功效,但是LLM对于完成推理、算术任务仍有较大不足。 动机:从之前的应用和研究中得知,可以用生成自然语言解释、使用神经符号等形式语言的方法来提高大模型的算术推理能力&…

前后端开发概述:架构、技术栈与未来趋势

一、前后端开发的基本概念 1.1 什么是前后端开发? 前后端开发是 Web 开发的两个核心部分,各自承担不同的职责: 前端(Frontend) 负责网页的用户界面(UI)和用户体验(UX)…

anythingLLM结合searXNG实现联网搜索

1、docker-compose 部署searXNG GitHub - searxng/searxng-docker: The docker-compose files for setting up a SearXNG instance with docker. cd /usr/local git clone https://github.com/searxng/searxng-docker.git cd searxng-docker 2、修改 .env文件 # By default…

人形机器人科普

人形机器人(Humanoid Robot)是一种模仿人类外形和行为的机器人,通常具有头部、躯干、双臂和双腿等结构。它们的设计目标是与人类环境无缝交互,执行复杂的任务,甚至在某些领域替代人类工作。 1. 人形机器人的定义与特点…

【CICD】Ansible知识库

一、主机清单配置 1. 配置文件路径 默认路径 /etc/ansible/hosts 这是 Ansible 的全局默认库存文件路径,但许多用户可能不会直接使用它。项目目录或自定义路径 用户通常会为不同项目创建独立的库存文件,例如: 当前目录下的 hosts、inventor…

ArkUI-List组件

列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。 List的基本使用方法 List组件的构建声明是这个样子的 List(value?: {space?:number | string, initial…

Ubuntu实时读取音乐软件的音频流

文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的,我需要在Ubuntu中,实时读取正在播放音乐的音频流,然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现,好处是可以直接利用Helvum…

【yolo】YOLO训练参数输入之模型输入尺寸

模型输入尺寸是YOLO训练和推理过程中非常重要的参数之一。YOLO要求输入图像的尺寸是固定的,通常为正方形(如416416、640640等)。这个尺寸直接影响模型的性能和速度。以下是对模型输入尺寸的详细介绍: 1. 模型输入尺寸的作用 统一…

【TI MSPM0】Timer学习

一、计数器 加法计数器:每进入一个脉冲,就加一减法计算器:每进入一个脉冲,就减一 当计数器减到0,触发中断 1.最短计时时间 当时钟周期为1khz时,最短计时时间为1ms,最长计时时间为65535ms 当时…

从WebRTC到嵌入式:EasyRTC如何借助大模型提升音视频通信体验

随着人工智能技术的快速发展,WebRTC与大模型的结合正在为音视频通信领域带来革命性的变革。WebRTC作为一种开源实时通信技术,以其低延迟、跨平台兼容性和强大的音视频处理能力,成为智能硬件和物联网设备的重要技术支撑。 而EasyRTC作为基于W…

使用brower use AI 代理自动控制浏览器完成任务

第一步:终端运行命令下载 brower use pip install browser-use 第二步: 终端运行命令下载playwright playwright install 第三步:新建test.py代码,粘贴复制以下代码 import asyncio import osfrom dotenv import load_doten…

自由学习记录(45)

顶点片元着色器(important) 1.需要在Pass渲染通道中编写着色器逻辑 2.可以使用cG或HLSL两种shader语言去编写Shader逻辑 3.代码量较多,灵活性较强,性能消耗更可控,可以实现更多渲染细节 4.适用于光照处理较少&#xf…

Quartus + VScode 实现模块化流水灯

文章目录 一、通过VScode编写Verilog代码二、模块化编程三、代码示例 一、通过VScode编写Verilog代码 1、下载Vscode 2、下载相关插件 搜索Verilog就会弹出有如图所示的插件,下载并安装 3、创建Quartus项目 4、创建完成后点击Tools,选择Options 然后在…

tryhackme——The Lay of the Land

文章目录 一、网络基础设施1.1 内网1.2 DMZ区1.3 网络枚举(Network Enumeration) 二、域环境三、用户和组管理四、安全解决方案4.1 基于主机的安全解决方案4.1.1 防病毒软件4.1.2 Microsoft Windows Defender4.1.3 主机防火墙4.1.4 安全事件记录与监控4.…

STM32---FreeRTOS消息队列

一、简介 1、队列简介: 队列:是任务到任务,任务到中断、中断到任务数据交流的一种机制(消息传递)。 FreeRTOS基于队列,实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量…

2025年了,5G还有三个新变化

最近舆论开始讨论5G为什么不火了?5G是不是停滞发展了。 实际上,5G不仅在发展,还迎来了它的升级版5G-A。 在今年西班牙举行的世界移动通信大会上,5G-A就是焦点之一。 被誉为全球通信领域风向标的MWC,汇聚了华为、中兴通…

SQLMesh SCD-2 时间维度实战:餐饮菜单价格演化追踪

场景背景:动态菜单价格管理 考虑某连锁餐厅的菜单管理系统,需要记录食品价格的历史变更轨迹。业务需求包括: 记录每次价格调整的时间点支持历史价格查询(如"2020年1月2日汉堡多少钱")维护当前有效价格清单…

失物招领|校园失物招领系统|基于Springboot的校园失物招领系统设计与实现(源码+数据库+文档)

校园失物招领系统目录 目录 基于Springboot的校园失物招领系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、 管理员功能实现 (1) 失物招领管理 (2) 寻物启事管理 (3) 公告管理 (4) 公告类型管理 2、用户功能实现 (1) 失物招领 (2) 寻物启事 (3) 公告 …