【人工智能】— 线性分类器、感知机、损失函数的选取、最小二乘法分类、模型复杂性和过度拟合、规范化

news2024/11/25 0:39:20

【人工智能】— 感知机、线性分类器、感知机、感知机、最小二乘法分类、模型复杂性和过度拟合、规范化

  • Linear predictions 线性预测
  • 分类
  • 线性分类器
  • 感知机
  • 感知机学习策略
  • 损失函数的选取
    • 距离的计算
  • 最小二乘法分类
  • 求解最小二乘分类
  • 矩阵解法
  • 一般线性分类
  • 模型复杂性和过度拟合
  • 训练误差
  • 测试误差
  • 泛化误差
  • 复杂度与过拟合
  • 规范化
  • 最小二乘分类小结

Linear predictions 线性预测

分类

从具有有限离散标签的数据中学习。机器学习中的主导问题

线性分类器

二元分类可以看作是在特征空间中分离类的任务(特征空间) 在这里插入图片描述

感知机

感知机是一种线性分类模型。它的决策边界是一个超平面,将特征空间分成了两个部分,分别对应于输出为 +1 和 -1 的两个类别。

感知机的线性分类模型可以表示为:

f ( x ) = sign ( w ⋅ x + b ) f(x) = \text{sign}(\boldsymbol{w} \cdot \boldsymbol{x} + b) f(x)=sign(wx+b)

其中 w \boldsymbol{w} w b \boldsymbol{b} b为感知机模型参数, w ∈ R n \boldsymbol{w}\in \textbf{R}^n wRn 是权重或者权值向量, x \boldsymbol{x} x 是输入的特征向量, b ∈ R b\in \textbf{R} bR 是偏置(bias), w ⋅ x w\cdot x wx 表示 w w w x x x的内积, sign ( ⋅ ) \text{sign}(\cdot) sign() 是符号函数。
sign ( x ) = { + 1 , x ≥ 0 − 1 , x < 0 \text{sign}(x)=\begin{cases} +1,\quad x \ge 0\\ -1,\quad x<0 \end{cases} sign(x)={+1,x01,x<0
感知机的训练目标是找到一个能够将训练集中的正负样本完全分开的超平面,即找到一个合适的权重向量 w \boldsymbol{w} w 和偏置项 b b b,使得对于任意训练样本 ( x i , y i ) (\boldsymbol{x}_i, y_i) (xi,yi),都有
y i ( w ⋅ x i + b ) > 0 y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i + b) > 0 yi(wxi+b)>0

这个式子表达了感知机模型的训练目标,即让感知机能够对训练集中的正负样本进行完全分开,使得每个样本都被正确分类。

对于一个训练样本 ( x i , y i ) (\boldsymbol{x}_i, y_i) (xi,yi) y i y_i yi 是其真实的标签, x i \boldsymbol{x}_i xi是其特征向量, w \boldsymbol{w} w 是感知机的权重向量, b b b 是偏置项。根据感知机模型的定义,当 w ⋅ x i + b > 0 \boldsymbol{w} \cdot \boldsymbol{x}_i + b > 0 wxi+b>0 时,模型的输出为 +1,否则输出为 -1。

因此,当 y i = + 1 y_i=+1 yi=+1 时,要求 w ⋅ x i + b > 0 \boldsymbol{w} \cdot \boldsymbol{x}_i + b > 0 wxi+b>0,即要求模型将正样本正确分类为 +1。同理,当 y i = − 1 y_i=-1 yi=1 时,要求 w ⋅ x i + b < 0 \boldsymbol{w} \cdot \boldsymbol{x}_i + b < 0 wxi+b<0,即要求模型将负样本正确分类为 -1。

综合以上两种情况,我们可以将训练目标表达为 y i ( w ⋅ x i + b ) > 0 y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i + b)>0 yi(wxi+b)>0,即要求每个训练样本都被正确分类,即对于任意训练样本 ( x i , y i ) (\boldsymbol{x}_i, y_i) (xi,yi),都有 y i ( w ⋅ x i + b ) > 0 y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i + b) > 0 yi(wxi+b)>0。如果存在任意一个训练样本不能被正确分类,那么就需要不断地更新权重向量和偏置项,直到训练集中的所有样本都能被正确分类。

感知机学习策略

  1. 数据集线性可分性
  2. 在二维平面中,可以用一条直线将+1类和-1类完美分开,那么这个样本空间就是线性可分的。下图中的样本就是线性不可分的,感知机就不能处理这种情况。因此,感知机都基于一个前提:问题空间线性可分在这里插入图片描述

损失函数的选取

  1. 损失函数的一个自然选择就是误分类点的总数,要找到决策边界,即分类超平面,使得分类误差最小,可以通过最小化期望的 0/1 损失函数来实现。对于一个样本 ( x , y ) (x, y) (x,y),0/1 损失函数定义为:

    L ( h ( x ) , y ) = { 0 , h ( x ) = y 1 , h ( x ) ≠ y L(h(\textbf{x}), y) = \begin{cases} 0, \quad h(\textbf{x}) = y\\ 1, \quad h(\textbf{x}) \neq y \end{cases} L(h(x),y)={0,h(x)=y1,h(x)=y
    其中, h ( x ) h(\textbf{x}) h(x) 是模型预测的输出, y y y 是样本的真实标签。但是这样的点不是参数 w , b w,b wb的连续可导函数,不易优化

  2. 损失函数的另一个选择就是误分类点到划分超平面 S ( w ⋅ x + b = 0 ) S(\textbf{w} \cdot \textbf{x}+b=0) S(wx+b=0)的总距离
    在这里插入图片描述

距离的计算

x 0 x_0 x0 到超平面 S : w T x + b = 0 S: w^Tx+b=0 S:wTx+b=0 的距离 d d d(注: x 0 , w , x x_0,w,x x0,w,x全为N维向量)可以通过以下步骤计算:

  1. 设点 x 0 x_0 x0 在平面 S S S 上的投影为 x 1 x_1 x1,则有 w T x 1 + b = 0 w^Tx_1+b=0 wTx1+b=0
  2. -在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

在这里插入图片描述

Lhinge(也称为 hinge 损失函数)是一种常用的分类器损失函数,通常用于支持向量机(SVM)和感知机等模型 中。它的形式如下:

L h i n g e ( w , b ; x , y ) = max ⁡ { 0 , 1 − y ( w T x + b ) } L_{hinge}(w,b;x,y) = \max\{0, 1 - y(w^Tx+b)\} Lhinge(w,b;x,y)=max{0,1y(wTx+b)}

其中, w w w b b b 是模型的参数 x x x 是输入样本, y y y 是样本的标签,取值为 + 1 +1 +1 − 1 -1 1,表示正类或负类。 h ( x ) = sign ( w T x + b ) h(x) = \text{sign}(w^Tx+b) h(x)=sign(wTx+b) 表示模型对样本 x x x 的预测输出。
当模型对样本 x x x 的预测结果正确时(即 y ( h ( x ) ) > 0 y(h(x))>0 y(h(x))>0),损失函数为 0 0 0;当模型对样本 x x x 的预测结果错误时(即 y ( h ( x ) ) ≤ 0 y(h(x))\leq 0 y(h(x))0),损失函数为 1 − y ( h ( x ) ) ( w T x + b ) 1-y(h(x))(w^Tx+b) 1y(h(x))(wTx+b)
这个损失函数的含义是,对于误分类的样本,我们希望让其距离超平面至少为 1 1 1,即 y ( w T x + b ) ≥ 1 y(w^Tx+b)\geq 1 y(wTx+b)1,如果距离小于 1 1 1,则损失函数为 1 − y ( w T x + b ) 1-y(w^Tx+b) 1y(wTx+b),表示分类错误的程度;如果距离大于等于 1 1 1,则损失函数为 0 0 0,表示分类正确。
Lhinge 损失函数是一个凸函数,但不是连续可导的,因为在 y ( w T x + b ) = 1 y(w^Tx+b)=1 y(wTx+b)=1
时,存在一个“拐点”,导致其导数不连续。因此,在使用梯度下降等优化算法时,需要使用次梯度(subgradient)来代替导数,使得算法可以收敛。同时,Lhinge
损失函数也可以通过一些优化算法(如 SMO 算法)来求解支持向量机模型的最优解。

最小二乘法分类

最小二乘损失函数在这里插入图片描述
目标:学习分类器在这里插入图片描述以最小化最小二乘损失在这里插入图片描述

求解最小二乘分类

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

矩阵解法

线性回归定义为:
h θ ( x 1 , x 2 , … x n − 1 ) = θ 0 + θ 1 x 1 + … + θ n − 1 x n − 1 h_{\theta}\left(x_{1}, x_{2}, \ldots x_{n-1}\right)=\theta_{0}+\theta_{1} x_{1}+\ldots+\theta_{n-1} x_{n-1} hθ(x1,x2,xn1)=θ0+θ1x1++θn1xn1
其中 θ \theta θ 为参数。假设现在有 m m m 个样本,每个样本有 n − 1 n-1 n1 维特征,将所有样本点代入模型中得:
h 1 = θ 0 + θ 1 x 1 , 1 + θ 2 x 1 , 2 + … + θ n − 1 x 1 , n − 1 h 2 = θ 0 + θ 1 x 2 , 1 + θ 2 x 2 , 2 + … + θ n − 1 x 2 , n − 1 ⋮ h m = θ 0 + θ 1 x m , 1 + θ 2 x m , 2 + … + θ n − 1 x m , n − 1 \begin{aligned} h_{1} &=\theta_{0}+\theta_{1} x_{1,1}+\theta_{2} x_{1,2}+\ldots+\theta_{n-1} x_{1, n-1} \\ h_{2} &=\theta_{0}+\theta_{1} x_{2,1}+\theta_{2} x_{2,2}+\ldots+\theta_{n-1} x_{2, n-1} \\ & \vdots \\ h_{m} &=\theta_{0}+\theta_{1} x_{m,1}+\theta_{2} x_{m,2}+\ldots+\theta_{n-1} x_{m, n-1} \end{aligned} h1h2hm=θ0+θ1x1,1+θ2x1,2++θn1x1,n1=θ0+θ1x2,1+θ2x2,2++θn1x2,n1=θ0+θ1xm,1+θ2xm,2++θn1xm,n1

为方便用矩阵表示,我们令 x 0 = 1 x_0=1 x0=1,于是上述方程可以用矩阵表示为: h = X θ \mathbf{h}=\mathbf{X} \theta h=Xθ
其中, h \mathbf{h} h m × 1 m \times 1 m×1 的向量,代表模型的理论值, θ \theta θ n × 1 n \times 1 n×1 的向量, X \mathbf{X} X m × n m \times n m×n 维的矩阵, m m m 代表样本的个数, n n n 代表样本的特征数。于是目标损失函数用矩阵表示为:
J ( θ ) = ∥ h − Y ∥ 2 = ∥ X θ − Y ∥ 2 = ( X θ − Y ) T ( X θ − Y ) J(\theta)=\|\mathbf{h}-\mathbf{Y}\|^2=\|\mathbf{X}\theta-\mathbf{Y}\|^2=(\mathbf{X} \theta-\mathbf{Y})^{T}(\mathbf{X} \theta-\mathbf{Y}) J(θ)=hY2=XθY2=(XθY)T(XθY)
其中 Y \mathbf{Y} Y 是样本的输出向量,维度为 m × 1 m \times 1 m×1

根据高数知识我们知道函数取得极值就是导数为0的地方,所以我们只需要对损失函数求导令其等于0就可以解出 θ \theta θ。矩阵求导属于矩阵微积分的内容,我们先介绍两个用到的公式:
∂ x T a ∂ x = ∂ a T x ∂ x = a \frac{\partial x^{T} a}{\partial x}=\frac{\partial a^{T} x}{\partial x}=a xxTa=xaTx=a
∂ x T A x ∂ x = A x + A T x \frac{\partial x^{T} A x}{\partial x}=Ax+A^{T} x xxTAx=Ax+ATx
如果矩阵 A A A 是对称的:
A x + A T x = 2 A x Ax+A^{T} x=2Ax Ax+ATx=2Ax
对目标函数化简:
J ( θ ) = θ T X T X θ − θ T X T Y − Y T X θ + Y T Y J(\theta)=\theta^{T} X^{T} X \theta-\theta^{T} X^{T}Y-Y^{T} X\theta+Y^{T} Y J(θ)=θTXTθTXTYYT+YTY
求导令其等于0:
∂ ∂ θ J ( θ ) = 2 X T X θ − 2 X T Y = 0 \frac{\partial}{\partial \theta} J(\theta)=2X^{T} X \theta-2X^TY=0 θJ(θ)=2XT2XTY=0
解得:
θ = ( X T X ) − 1 X T Y \theta=\left(X^{T}X\right)^{-1} X^{T}Y θ=(XTX)1XTY
经过推导我们得到了 θ \theta θ 的解析解,现在只要给了数据,我们就可以带入解析解中直接算出 θ \theta θ

一般线性分类

基函数(非线性)
在这里插入图片描述
其中 ϕ \phi ϕ为基函数,用于拟合非线性
在这里插入图片描述
在这里插入图片描述

模型复杂性和过度拟合

在这里插入图片描述

Ockham‘s razor(奥卡姆剃刀原则): maximize a combination of consistency and simplicity
优先选择与数据一致的最简单的假设

训练误差

训练误差(Training errors),也称为表观误差(Apparent errors),是指在训练数据集上用模型进行训练时所产生的误差。训练误差是模型在学习过程中不可避免的产物,通常我们希望训练误差越小越好,因为模型对训练数据的拟合程度越高,就越可能对未知数据产生良好的预测能力。但是,如果模型过于拟合训练数据,训练误差可能会变得非常小,但是这种模型可能会过度拟合,对于未知数据的预测性能将变得很差。

测试误差

测试误差(Test errors)是指在测试数据集上用模型进行测试时所产生的误差。测试误差用于评估模型的泛化能力,即模型是否具有对未知数据的预测能力。测试误差与训练误差之间的差异通常被称为泛化误差。

泛化误差

泛化误差(Generalization errors)是指模型在未知数据上的期望误差,即模型对于新数据的预测能力。泛化误差是机器学习中最为重要的概念之一,因为机器学习的目标是构建泛化能力强的模型,而不是仅仅在训练数据上表现良好的模型。泛化误差通常用测试误差来近似估计,但是测试误差只能提供模型的一种局部估计,因此为了更准确地估计模型的泛化误差,需要使用交叉验证等方法。

复杂度与过拟合

在这里插入图片描述
欠拟合:当模型过于简单时,训练和测试误差都很大
过拟合:当建模过于复杂时,训练误差很小,但测试误差很大

给定两个具有相似泛化误差的模型,人们应该更喜欢更简单的模型而不是更复杂的模型
复杂的模型更有可能因数据错误而意外拟合
因此,在评估模型时应包括模型复杂性

规范化

在这里插入图片描述
λ λ λ是惩罚权重
w w w的L2范数作为惩罚项,让系数的取值变得平均。对于关联特征,能够获得更相近的对应系数
L1范数,系数 w w w的L1范数作为惩罚项加到损失函数上,由于非零,迫使那些弱的特征所对应的系数变成0,达到特征选择
当𝜆 足够大,相当于:
在这里插入图片描述
不同q值的正则化项的等高线
在这里插入图片描述

最小二乘分类小结

  1. 不是进行分类的最佳方法
  2. 但是易于训练的封闭式解决方案(闭式解=解析解)
  3. 可以与许多经典学习原理联系起来

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

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

相关文章

重估端到端原则

评价技术迭代的旧的定势眼光来自于该技术诞生时。 1970/80/90 年代&#xff0c;相比传输带宽技术&#xff0c;处理器更强。网络协议倾向于字段多&#xff0c;字段小且紧凑&#xff0c;尽可能减少传输量&#xff0c;用 “算法技巧” 等价&#xff0c;如果 TCP 序列号 48 位&…

【iOS】消息传递和消息转发机制

消息传递机制 在OC语言中&#xff0c;调用对象的方法被叫做消息传递。消息有名称和选择子(selector)&#xff0c;可以接受参数&#xff0c;还可能有返回值。 在Objective-C中&#xff0c;如果向某对象传递消息&#xff0c;那就会使用动态绑定机制来决定需要调用的方法。在底层…

C++进阶 —— 范围for(C++11新特性)

目录 一&#xff0c;范围for介绍 二&#xff0c;范围for注意事项 一&#xff0c;范围for介绍 范围for&#xff08;range-based for loop&#xff09;是C11新引入的特性&#xff0c;可遍历各种序列结构的容器&#xff08;如数组、vector、list等&#xff09;&#xff1b;每次循…

【QT】Qt ApplicationManager Compositor源码分析

Qt ApplicationManager的Compositor功能分析 根据Qt ApplicationManager官网介绍&#xff0c;它基于Wayland协议实现了Compositor功能。下述为官网介绍。实际上&#xff0c;QtApplicationManager是使用了QtWayland模块来实现Compositor的。Wayland是一套旨在替代XWindow的 Com…

微机实验:第5章——存储器设计

存储器设计 将两片6116所有的存储单元都写入11H。 提示&#xff1a;6116的存储容量为2K*8b&#xff0c;片内地址为0000H-07FFH,两片一起构成F8000H-F8FFFH的内存空间。 仿真调试时可以看到&#xff1a;每片从0000H-07FFH的每个存储单元均显示11H。 CODE SEGMENTASSUME CS:C…

4-4 哈夫曼编码

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 1.什么是哈夫曼编码&#xff1f; 哈夫曼编码&#xff08;Huffman coding&#xff09;是一种用于数据压缩的无损编码方法。它是由David A. Huffman在1952…

STM32F4_软件模拟SPI

目录 1. 硬件连接 2. SPI通讯协议 3. W25Q64 简介 4. 程序详解 4.1 main.c 4.2 SPI.c 4.3 SPI.h 4.4 W25Q128.c 4.5 W25Q128.h 4.6 OLED.c 4.7 OLED.h 4.8 OLED_Font.h 5. 实验结果 我们都知道&#xff0c;SPI 和 IIC 一样&#xff0c;都可以通过硬件方式和软件方…

JSON基础(待补充)

一、JSON初识 1.1基础认识 JSON是一种轻量级的数据交换格式&#xff0c;它基于JavaScript语言的对象表示法&#xff0c;可以在多种语言之间进行数据交换。JSON的基本数据类型有数值、字符串、布尔值、数组、对象和空值。JSON的格式简洁易读&#xff0c;也易于解析和处理。JSON…

【数据结构】由完全二叉树引申出的堆的实现

【数据结构】由完全二叉树引申出的堆的实现 一、什么是堆二、目标三、实现1、初始化工作2、堆的插入(堆的创建)2.1、向上调整建堆2.1.1、向上调整算法原理解析2.1.2、代码实现 2.2、向下调整建堆2.2.1、向下调整算法原理解析2.2.2、代码实现 2.3、“向上”和“向下”复杂度的差…

初识网络安全

目录 HTML前置基础知识 1、id和class区别&#xff1a; 2、一些常用的属性&#xff1a; 3、HTML字符编码和实体编码 4、URL介绍 网址的组成部分&#xff1a; TTL值 DNS工作原理和资源记录及其种类&#xff1a; 5、正确区分“加密”和“签名” 6、状态码 1xx &#xf…

如何安装pycharm

PyCharm是JetBrains公司推出的一款Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;可以提供高效的Python代码编写、调试和测试。以下是一些PyCharm的主要功能&#xff1a; 代码智能提示和自动补全功能&#xff1b;支持调试和测试Python代码&#xff1b;完整的Pyth…

基于Springboot+Vue的幼儿园管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

汽车相关知识及术语

1 汽车构造与制造流程 1.1 汽车构造 汽车可以分为四大部分 车身&#xff1a; 骨架、车身钣金件以及座椅、仪表、天窗、车外后视镜等车身附件 动力系统&#xff1a; 发动机和变速器 底盘&#xff1a; 传动系统、悬架系统、转向系统、制动系统和车轮轮胎 电气电子系统&#…

《Apollo 智能驾驶进阶课程》三、无人车自定位技术

1. 什么是无人车自定位系统 相对一个坐标系来确定无人车的位置和姿态 定位的指标要求大概分为三个部分&#xff1a;精度、鲁棒性、场景 定位精度必须控制在10厘米以内&#xff0c;才能使行驶中的自动驾驶车辆避免出现碰撞/车道偏离的情况。鲁棒性一般情况下用最大值来衡量。…

Java IO流详细教程

目录 一、IO介绍 IO流体系 字节流 字节输出流&#xff1a;FileoutputStream 字节输入流FilelnputStream 字符流 字符输入流 字符输出流 缓冲流 字节缓冲流 字符缓冲流 序列化、反序列化流 序列化/对象操作输出流 反序列化/对象操作输入流 打印流 字节打印流 字…

firewalld与iptables练习

1、禁止一个IP访问 iptables -I INPUT -s $ip -j REJECT 2、清空默认的防火墙默认规则&#xff1a; iptables -F 3、保存清空后的防火墙规则表 service iptables save 4、firewall-cmd --list-all #查看防火墙规则&#xff08;只显示/etc/firewalld/zones/public.xml中防火墙…

投票活动链接创建微信链接视频投票线上免费投票链接

近些年来&#xff0c;第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放&#xff0c;更多人选择微信投票小程序平台&#xff0c;因为它有非常大的优势。 1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…

从零手写操作系统之RVOS协作式多任务切换实现-03

从零手写操作系统之RVOS协作式多任务切换实现-03 任务&#xff08;task&#xff09;多任务 &#xff08;Multitask&#xff09;任务上下文&#xff08;Context&#xff09;多任务系统的分类协作式多任务 创建和初始化第 1 号任务切换到第一号任务执行协作式多任务 - 调度初始化…

字典树算法(C/C++)

目录 一、字典树算法的概念介绍 二、字典树算法的实现 三、例题 &#xff08;注&#xff1a;借鉴蓝桥杯国赛特训营&#xff09; 一、字典树算法的概念介绍 首先我们看下字典的组织方式 Trie 的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效…

实训总结-----Scrapy爬虫

1.安装指令 pip install scrapy 2.创建 scrapy 项目 任意终端 进入到目录(用于存储我们的项目) scrapy startproject 项目名 会在目录下面 创建一个以 项目名 命名的文件夹 终端也会有提示 cd 项目名 scrapy genspider example example.com 3.运行爬虫指令 scrapy craw…