技术改变命运,技术成就未来

(机器学习)统计学习方法

首先,老规矩:

未经允许禁止转载(防止某些人乱转,转着转着就到蛮牛之类的地方去了)

B站:Heskey0


李航《统计学习方法》自学笔记

BiliBili:Heskey0

#机器学习4 5 6 7 13 14 17 18 20-34 36 37 47-52讲

//TODO: 决策树预剪枝/后剪枝

Machine Learning: 十大机器学习算法 - 简书 (jianshu.com)

机器学习十大算法:

  • 线性回归算法 Linear Regression
  • 支持向量机算法 (Support Vector Machine,SVM)
  • 最近邻居/k-近邻算法 (K-Nearest Neighbors,KNN)
  • 逻辑回归算法 Logistic Regression
  • 决策树算法 Decision Tree
  • k-平均算法 K-Means
  • 随机森林算法 Random Forest
  • 朴素贝叶斯算法 Naive Bayes
  • 降维算法 Dimensional Reduction
  • 梯度增强算法 Gradient Boosting

Chapter 1. 介绍

1.1 分类

基本分类:

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

按技巧分类:

  • 贝叶斯学习

  • 核方法

算法角度:

  • 在线学习
  • 批量学习

1.2 基本分类

(1) 监督学习

监督学习的基本假设:X和Y具有联合概率分布 P(X,Y)

监督学习的目的:学习一个输入到输出的映射,这一映射以模型表示

模型的形式:条件概率分布 P(Y|X)决策函数 Y=f(X) (概率用于分类,决策描述连续)

输入空间

  • 输入空间(Input Space):输入的所有可能取值的集合;
  • 实例(Instance):每一个具体的输入,通常由特征向量(Feature Vector)表示;
  • 特征空间(Feature Space):所有特征向量存在的空间

大多时候,输入空间和特征空间是相同的。

输出空间

  • 输出空间(Output Space):输出的所有可能取值的集合

根据变量的不同类型,要解决的问题可以分为回归问题、分类问题和标注问题。

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

example: 预测连续就是回归。预测属于猫狗就是分类。给一个句子标注主语谓语宾语就是序列标注

设输入变量X,输出变量Y

监督学习的基本假设:X和Y具有

(2) 无监督学习

无监督:无标注

无监督学习的目的:研究数据中的潜在结构内容,所以无监督学习对应的不是输出空间,而是隐式结构空间

  • 输入空间:X

  • 隐式结构空间Z

  • 模型:函数 z=g(x) ,条件概率分部 P(z|x) 或条件概率分布 P(x|z)

  • 训练集:U={x1,x2,...,xN}

(3) 强化学习

强化学习其实要强调一个互动,互动是指的是智能系统与环境之间的一个连续互动,通过这个互动,学习一个最优的行为策略

1.3 模型选择方法

过拟合:如果参数过多,甚至超出训练数据集中样本点的个数,这时候模型结构会十分复杂,虽然对已知数据有一个很好的预测效果,但对未知数据预测效果很差

欠拟合:训练误差高,测试误差低

监督学习中两种常用的模型选择方法

  • 正则化
  • 交叉验证

监督学习的两种基本策略:经验风险最小化(ERM)和结构风险最小化(SRM)

  • 风险最小化就是认为,经验/结构风险最小的模型是最优的模型

  • 经验风险最小化的例子:极大似然估计(maximum likelihood estimation)

  • 结构风险最小化的例子:贝叶斯最大后验概率估计

(1) 正则化

机器学习,评估——风险函数

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

损失函数:

L(yi,f(xi))

风险函数有两种:

  • 经验风险

  • 结构风险:考虑过拟合问题,增加正则项

经验风险 (Empirical Risk):

1Ni=1NL(yi,f(xi))

结构风险 (Structural Risk)=经验风险+正则化项

1Ni=1NL(yi,f(xi))+λJ(f)

其中 J(f) 度量模型的复杂度,系数 λ 用以调整经验风险和模型复杂度之间的关系

一般,模型参数越多,模型越复杂J(f)越大

常用正则化项:

L1 范数:||w||1=j|wj| ,即参数绝对值之和

L2 范数:||w||22=jwj2 ,即参数的平方和

(2) 交叉验证

在样本的数据量足够充足的情况下,通常可以将数据集随机地分为:

  • 训练集(Training Set):用以训练模型
  • 验证集(Validation Set):用以选择模型
  • 测试集(Test Set):用以最终对学习方法的评估

交叉验证的基本思想就是,重复使用数据,以解决数据不足的这种问题。

(2.1) 简单交叉验证

将数据集随机的分为:

  • 训练集
  • 测试集

通过训练集得到不同的学习模型,将学习训练得到的不同模型放到测试集上,计算测试误差,测试误差最小的模型则是最优模型

(2.2) S折交叉验证

随机将数据分为 S 个互不相交、大小相同的子集,其中以 S-1 个子集作为训练集,余下的子集作为测试集

(2.3) 留一交叉验证

每次用N-1个样本训练模型,余下的那个样本测试模型。这是在数据非常缺乏的情况下才使用的方法。

1.3 泛化能力

泛化能力:指的是通过某一学习方法训练所得模型,对未知数据的预测能力

测试误差:计算测试误差所使用的样本为测试集

1Ni=1NL(yi,f^(xi))

(1) 泛化误差

泛化误差:是基于整个样本空间

Rexp(f^)=Ep[L(Y,f^(X))]=X×YL(y,f^(x))P(x,y)dxdy

  • 泛化误差是度量对未知数据预测能力的理论值,测试误差则是经验值

  • 在训练集上的误差成为“训练误差”(训练)。在新样本上的误差称为“泛化误差”(实战)

(2) 泛化误差上界

泛化误差上界:泛化误差的概率上界。

在理论上比较两种学习方法所得模型的优劣时,可通过比较两者的泛化误差上界来进行

泛化误差上界的两条性质:

  • 样本容量的函数:当样本容量增加时,泛化误差上界趋于 0。
  • 假设空间容量的函数:假设空间容量越大,模型就越难学,泛化误差上界就越大。

1.4 生成模型与判别模型

(1) 生成模型

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

P(Y|X)=P(X,Y)P(X)

  • 每给定一个输入变量X,就可以根据分布函数生成一个输出变量Y

  • 生成模型中的输入变量和输出变量,都为随机变量

典型的生成模型有朴素贝叶斯法,还有隐马可夫模型

(2) 判别模型

判别模型:由数据直接学习决策函数 f(X) 或者条件概率分布 P(Y|X) 作为预测模型,即判别模型(Discriminative Model)

  • 不需要考虑X和Y的联合分布

  • 判别方法是有针对性的,研究的是对于特定的输入,应该预测得到一个什么样的输出

典型的判别模型有 k 近邻法感知机,还有决策树

(3) 差异

从样本量上来比较:

  1. 生成模型所需要的数据量较大,因为只有在大数据量的情况下,才能够更好地估计联合概率分布,也就是所有变量的一个全概率模型;
  2. 判别模型,是针对性地学习,只需要得到条件概率分布或者决策函数即可,所以不需要像生成模型的那样,必须配备足够多的样本,因此判别模型所需的样本量要少于生成模型。

从目的来比较:

  1. 生成模型可以还原联合概率分布,借此可以计算出边际分布和条件概率分布,所以可以提供更多的信息;
  2. 判别模型的目的就是预测,所以准确率往往比生成模型会更高一些。

从过程来比较:

  1. 对生成模型而言,样本容量越多,学习到的模型就能够更快地收敛到真实模型上,所以生成模型的收敛速度,较之判别模型更快;
  2. 判别模型,是直接学习的过程,所以不需要面面俱到,因此可以简化学习问题。

从反映数据特征来比较:

  1. 生成模型学习到的模型更接近于真实模型,所以能够反映同类数据本身的相似度;
  2. 判别模型,并不考虑数据的各项特征,所以并不能像生成模型那样反映数据本身的特性。

最后一条是关于隐变量的,生成模型,可以很好地应对具有隐变量的情况,比如混合高斯模型

Chapter 2. 模型

2.1 KNN

KNN (K-Nearest-Neighbour)可以说是机器学习中最简单的是一种「分类回归方法」

KNN是一种Lazy Learning,也就是一种不具有显性表达式的方法

(1) 算法介绍

(1.1) 主要思想

主要思想:给定一个训练数据集,其中实例标签已定,当输入新的实例时,可以根据其最近 k 个训练实例的标签,预测新实例对应的标注信息。

当给定一个新的实例 x 时,我们就可以在训练数据集 T 里面寻找与 x 最近的 k 个实例,然后根据这 k 个实例的标签来决定新实例的 y 值。

(1.2) 具体算法

输入:训练集 T={(x1,y1),(x2,y2),...,(xN,yN)} 其中 y=c1,c2,...cK

输出:实例 x 所属类别 y

步骤:

  • 给出距离度量的方式,计算新的 x 与训练集 T 中每个点的距离

  • 找出与 x 最相近的 k 个点,将覆盖这 k 个点的 x 的领域记作 Nk(x)

  • 根据分类决策规则来决定 x 所属的类别 y,即

y=maxcjxiNk(x)I(yi=cj),i=1,2,...,N;j=1,2,...,K

其中,I(yi=cj) 是一个示性函数,yi=cj 时,函数值为1

0-1损失函数

L(Y,f(X))={1,Yf(X)0,Y=f(X)

(2) 三要素

  • 距离度量
  • k个邻居
  • 分类决策规则
(2.1) 距离度量

Lp 距离:

Lp(xi,xj)=(l=1n|xi(l)xj(l)|p)1p

其中,x(l) 代表第 l 个特征

image

如图:

  • 横坐标是第一个特征 (身高),纵坐标是第二个特征 (体重)
  • ×代表男,· 代表女
  • 根据红点与周围点的距离判定类别

example:

假设我想让你帮我区分一个人是好人还是坏人。我就给你2个纬度的信息: 1.你的手机过去一个月内平均每天的通话时长,2.你过去一个月每个月的收入金额。 你帮我用knn建模。训练集10000个样本,里面有5000好人,5000坏人。现在每个训练集在这2个维度上就有个分布情况。比如横轴是 通话 纵轴是 收入。然后新来一个样本点,第10001个,这个样本点就可以用之前的10000个做knn了,找第10001样本周围欧式距离最近的k个样本计算

knn不用训练什么参数,k就是唯一要考虑的

(2.2) k值的选择
特点 值较小 值较大
近似误差
估计误差
敏感性
模型 复杂 简单
拟合程度 过拟合 欠拟合

k 可通过交叉验证选择

(2.3) 分类决策规则

多数表决规则:由输入实例的 k 个邻近的训练实例中的多数类决定输入实例的类别

(3) kd树

讲义(十四):kd 树的构造和搜索

从根本上来看,是一个二叉树结构,每个结点代表 k 维超矩形区域

(3.1) 构建

输入:k 维空间数据集:

T={x1,x2,...,xN}

其中 xi=(xi(1),xi(2),...xi(k))xi(l) 的上标代表第 l 个特征的值

输出:kd 树

构建过程:见 讲义(十四):kd 树的构造和搜索

(3.2) 搜索

输入:kd树,目标点是 x

输出:x 的最近邻

搜索过程

  • 寻找“当前最近点”:从根结点出发,递归访问 kd 树,找出包含 x 的叶结点,以此叶结点为“当前最近点”

  • 回溯:以目标点和"当前最近点"的距离沿树根部进行回溯和迭代,当前最近点一定存在于该结点一个子结点对应的区域,检查子结点的父结点的另一子结点对应的区域是否有更近的点。当回退到根结点时,搜索结束,最后的“当前最近点”即为 的最近邻点。

2.2 感知机

感知机是一个二分类的线性分类模型,之所以说是线性,是因为它的模型是线性形式的

(1) 模型

输入:x=(x(1),x(2),...,x(n))T ,即 n 维特征向量

输出:y=+1,1

感知机:

f(x)=sign(wx+b)={+1,wx+b01,wx+b<0

其中 w=(w(1),w(2),...,w(n))T 称为权值,b 为Bias,wx 为内积

在几何中,如果环境空间是 n 维的,那么它所对应的超平面其实就是一个 n1 维的子空间。换句话说,超平面是比他所处的环境空间小一个维度的子空间

感知机

image

(2) 学习策略

感知机模型,有一个比较严苛的条件,就是要求数据集必须是线性可分的 (存在超平面划分)

特征空间中,任意一点到超平面的距离:

1||w|||wx0+b|

x0 是正确分类点,则:

1||w|||wx0+b|={wx0+b||w||,y0=+1wx0+b||w||,y0=1

x0 是错误分类点,则:

1||w|||wx0+b|={wx0+b||w||,y0=+1wx0+b||w||,y0=1=y0(wx0+b)||w||

如果是错误分类点,通过分类器所得到的类别 f0(x0) 与 真实的类别 y0, 应该符号相反

如果用 M 代表所有误分类点的集合,则所有误分类点到超平面 S 的距离总和为:

1||w||xiMyi(wxi+b)

所以最小化距离等价于最小化损失函数:

L(w,b)=xiMyi(wxi+b)

  • ||w|| 不会影响距离和的符号,即不影响正值还是负值的判断。
  • ||w|| 不会影响感知器算法的最终结果。算法终止条件,是不存在误分类点。这时候 M 为空集,那么误分类点的距离和是否为 0 取决于分子,而不是分母,因此与 ||w|| 的大小无关。

2.3 决策树

决策树是一棵多叉树

(1) 概念

决策树的根本其实还是一个条件概率模型,条件概率分布就相当于对特征空间的划分

如图

  • 对于特征 x(1)x(2) 而言,他们的取值空间为 [0,1] 区间
  • 每个区域标 1+1 就是对应的类别

image


例如:

特征:xi(1)=年收入,xi(2)=房产,xi(3)=婚姻状况

类别:y1=可以偿还,y2=无法偿还

构建决策树:

image


非叶子结点代表特征,叶子结点代表类别

(2) 构建

  1. 构建根节点:训练数据集,包含 N 个样本

  2. 选择最优特征:选择最优特征来分割训练数据集

  3. 判断是否产生了叶节点:若子集被正确分类,构建叶子结点,否则,重新选择新的最优特征

  4. 重复2, 3

(2.1) 如何选择最优特征

ID3算法:用信息增益选择最优特征,侧重于选择数量较多的某一特征

  1. 计算经验熵
  2. 计算经验条件熵
  3. 计算信息增益
  4. 信息增益比最大值确认最优特征

C4.5算法:用信息增比选择最优特征,侧重于某一特征单位数量的选择

(2.2) 信息增益

经验熵

H(D)=k=1K|Ck||D|log2|Ck||D|

其中:

  • 训练数据集 D,其样本容量 |D| (样本个数)
  • 设有 K 个类别 Ckk=1,2,...,K|Ck| 为属于类 Ck 的样本个数

k=1K|Ck|=|D|

在特征 A 下每个子集所占的权重为

wi=|Di||D|

经验条件熵

H(D|A)=i=1n|Di||D|H(Di)

信息增益

g(D,A)=H(D)H(D|A)

物理意义:

得知特征 A 而使类 Y 的 信息的不确定性 减少的程度

(3) 预剪枝

好的模型,树的深度小,叶子结点少。

剪枝的目的:解决过拟合的问题

分类:

  • 预剪枝:生成过程中,对每个结点划分前进行估计,若当前结点的划分不能提升泛化能力,则停止划分,记当前结点为叶结点
  • 后剪枝:生成一棵完整的决策树后,从底部向上对内部结点进行考察,如果将内部结点变成叶结点,可以提升泛化能力,那么就进行交换。

(4) 后剪枝

REP,PEP,MEP,EBP,CCP

2.4 朴素贝叶斯

朴素贝叶斯算法(Naive Bayes)基于概率论的贝叶斯定理,应用非常广泛,从文本分类、垃圾邮件过滤器、医疗诊断等等。朴素贝叶斯适用于特征之间的相互独立的场景,例如利用花瓣的长度和宽度来预测花的类型。“朴素”的内涵可以理解为特征和特征之间独立性强。

Chapter 3. CART,SVM

3.1 CART

3.2 逻辑回归

Logistic函数:

p(t)=exp(α+βt)1+exp(α+βt)

其中,令 x=α+βt,那么就形成一个 Sigmoid function:

F(x)=ex1+ex

可以理解为 多个逻辑回归一个个嵌套起来 成为早期的神经网络

3.3 SVM

SVM (Support-Vector Machine) 支持向量机,是一种用于分类回归的方法。发表于1995年。

image

红框点,对于某个超平面,“最小间隔的点(几何间隔 γi )” 最大的时候,类别分的最开

那些被最终选中的点,因为在代数空间中,我们也可以用向量表示,所以称为支持向量机,有了它们的支持就可以找到唯一分离的超平面

(1) 算法

SVM的分类决策可以写成:

f(x)=sign(wx+b)

与感知机类似

几何间隔 γi 正是实例点 xi 到超平面 ωx+b=0 的距离:

|ωxi+b|||ω||

同时,为了去掉绝对值符号,引入分类标签 yi,即 xi 对应的类别:

γi=yi(ωxi+b)||ω||=yi(ωxi||ω||+b||ω||)

其中 ||ω|| 代表欧式距离,ωn 维向量

间隔的最小值记作:

γ=miniγi

那么优化问题可以写成:

maxω,bγs.t.yi(ωxi||ω||+b||ω||)γ

为了解决模型的不可识别性,即 3x(1)+4x(2)+1=06x(1)+8x(2)+2=0 表示同一个超平面,引入归一化思想:令 ||ω||=1 ,再给 γ 加个约束 γ=1 (SVM中约定俗成的是定为1),也就是距离超平面最近的点距离都是 1

优化问题变为:

minω,b||ω||s.t.yi(ωxi+b)1

也就是将约束条件 γ=1 隐藏在优化问题中,而不是单独列出来

线性可分SVM的最优解是唯一解

(2) 最大间隔算法

输入:训练数据集

T=(x1,y1),...,(xN,yN)

输出:最大间隔分离超平面与决策函数

【十分钟 机器学习 系列课程】 讲义(43):SVM支持向量机-线性可分支持向量机的对偶问题



Appendix

激活函数对比

sigmoid缺点:

  • 激活函数的计算量较大,在反向传播中,当求误差梯度时,求导涉及除法;
  • 在反向传播中,容易就会出现梯度消失,无法完成深层网络的训练;
  • 函数的敏感区间较短,(-1,1)之间较为敏感,超过区间,则处于饱和状态,

relu对比于sigmoid:

  • sigmoid的导数,只有在0附近,具有较好的激活性,而在正负饱和区的梯度都接近于0,会造成梯度弥散;而relu的导数,在大于0时,梯度为常数,不会导致梯度弥散。
  • relu函数在负半区的导数为0 ,当神经元激活值进入负半区,梯度就会为0,也就是说,这个神经元不会被训练,即稀疏性;
  • relu函数的导数计算更快,程序实现就是一个if-else语句;而sigmoid函数要进行浮点四则运算,涉及到除法;

relu的缺点:

在训练的时候,ReLU单元比较脆弱并且可能“死掉”。举例来说,当一个很大的梯度,流过ReLU的神经元的时候,可能会导致梯度更新到一种特别的状态,在这种状态下神经元将无法被其他任何数据点再次激活。如果这种情况发生,那么从此所以流过这个神经元的梯度将都变成0。也就是说,这个ReLU单元在训练中将不可逆转的死亡,因为这导致了数据多样化的丢失。

posted @   Heskey0  阅读(245)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

本站勉强运行 1188 天 18 小时 13 分 36 秒

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示