【CV-Learning】线性分类器(SVM基础)

数据集介绍(本文所用)

CIFAR10数据集

包含5w张训练样本、1w张测试样本,分为飞机、汽车、鸟、猫、鹿、狗、蛙、马、船、卡车十个类别,图像均为彩色图像,其大小为32*32。

图像类型(像素表示)

  1. 二进制(0/1)

  2. 灰度图像
    一个像素由一个比特(Byte)表示,取值为0-255。
    颜色程度:黑(0)---->----->---->白(255)

  3. 彩色图像
    一张图像有红、绿、蓝三个深度,即三个通道。每个通道的一个像素都是由一个比特(Byte)表示,取值为0-255。三个深度的图像结合起来才能表示一张彩色图像。比如:图像的像素为500500,则需要500500*3的矩阵才能表示。
    颜色程度:黑(0)---->----->---->红(255)

    Ps:大多数分类算法都要求输入向量,将图像矩阵转换成向量。
    在这里插入图片描述
    故本文所用数据集的每张图片转换为向量是3072(32323)维列向量。

线性分类器

定义:线性分类器是一种线性映射,将输入的图像特征映射为类别分数
特点:形式简单,易于理解
拓展:通过层级结构(神经网络)或者高维映射(支撑向量机)可以形成功能强大的非线性模型。在小型样本情况下,常用支撑向量机;在大型样本情况下,常用神经网络。

线性分类器的决策

决策规则:
在这里插入图片描述
决策步骤:

  1. 图像表示成向量
  2. 计算当前图片每个类别的分数
  3. 按类别得分判定当前图像
    分类器的矩阵表示:
    在这里插入图片描述

线性分类器的权值向量

在这里插入图片描述

线性分类器的决策边界

在这里插入图片描述

损失函数

为了找到最优的分类模型,还需要损失函数与优化算法的帮忙。损失函数搭建了模型性能与模型参数(W,b)之间的桥梁,指导模型参数优化。

损失函数定义

损失函数是一个函数,用于度量给定分类器的预测值与真实值的不一致程度,其输出通常是一个非负实值
其输出的非负实值可以作为反馈信号来对分类器参数进行调整,以降低当前示例对应的损失值,提升分类器的分类效果。
损失值就是模型性能的描述。
在这里插入图片描述

多类支撑向量机损失

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

Ps:限制条件中**+1**是为了减小边界附近噪声的影响
L函数举例说明
在这里插入图片描述
计算出多个L后要求取平均值!

问题解答

  1. 多类支撑向量机损失Li的最大/最小值会是多少?
    答:最大值为无穷,最小值为0
  2. 如果初始化时w和b很小,损失L是多少?
    答:此时,Sij和Syi都很小且Sij-Syi约为0。Li和L均等于样本数量减一。该情况可以用于检测算法的正确性。
  3. 考虑所有类别(包括j=yi), 损失L,对最优参数的选择是否有影响?
    答:无影响。
  4. 在总损失L计算时,如果用求和代替平均,对最优参数的选择是否有影响?
    答:无影响。
  5. 假设存在一个W使损失函数L=0,这个W是唯一的吗?
    答:不唯一。

正则项与超参数

什么是正则项损失

防止模型在训练集上学习得太好(过拟合),可以在L上加上一个正则损失,正则项让模型有了偏好,可以在多个损失函数为0的模型参数中选出最优的模型参数,所以损失函数L可以唯一。
在这里插入图片描述

L2正则项

在这里插入图片描述

什么是超参数

开始学习过程之前设置值的参数,而不是学习得到。
超参数一般都会对模型性能有着重要的影响。
在这里插入图片描述

常用的正则项损失

在这里插入图片描述

优化算法

利用损失函数的输出值作为反馈信号来调整分类器参数,以提升分类器对训练样本的预测性能。优化目标是找到使损失函数L达到最优的那组参数W。

梯度下降算法

一种简单高效的迭代优化算法。
在这里插入图片描述

  1. 数值法
    计算量大,得到近似值,不准确。
    在这里插入图片描述
  2. 解析法
    精确值,速度快,但是导数推导容易出错。
    在这里插入图片描述
    问:数值梯度有什么作用?
    求梯度时一般使用解析梯度,而数值梯度主要用于解析梯度的正确性校验(梯度检查)。
计算效率
  1. 梯度下降
    在这里插入图片描述
    当N很大时,每次计算权值梯度的计算量很大,耗时长,效率低下。
  2. 随机梯度下降
    在这里插入图片描述
    单个样本的训练可能会带来很多噪声,虽然不是每次迭代都朝着整体最优方向,但是大量迭代体现规律会使整体向最优方向走。
  3. 小批量梯度下降
    在这里插入图片描述
    在论文中,一般用epoch描述迭代样本情况。
    1个epoch需要N/m次迭代,N是样本总数,m是批量大小。

训练过程

数据集划分

数据集=训练集+验证集+测试集
训练集:用于给定的超参数时分类器参数的学习。
验证集:用于选择超参数。
测试集:评估泛化能力。
问:当数据很少,那么可能的验证集包含的样本就很少,从而无法在统计意义上代表数据。此时我们可以提出使用交叉验证的方法。

K折交叉验证

在这里插入图片描述
为了使随机性更好,我们可以在每次分折的时候进行数据打乱,这样得到的最终平均分更好,这种方法叫做带有打乱数据的重复K折验证

数据预处理

  1. 去均值
    x=x-均值;可以减小数据的浮动范围,突出相对差别。
  2. 归一化
    x=(x-均值)/方差;去除量纲的影响。
    在这里插入图片描述
  3. 去相关性
    有时候要只单独讨论x或只单独讨论y,就需要去掉x,y的相关性,x变化,y不会随着变化;让数据独立出来,达到降维的效果。
  4. 白化
    在去相关性的基础上进行归一化操作。
    在这里插入图片描述
    北京邮电大学–鲁鹏–计算机视觉与深度学习
  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我会为您提供一个 Python 代码示例,使用 scikit-learn 中的线性 SVM 对 iris 数据集进行二分类。首先,我们需要导入所需的库和数据集: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.svm import LinearSVC from sklearn.metrics import accuracy_score iris = load_iris() X = iris.data[:, :2] y = iris.target ``` 在这里,我们只选择了 iris 数据集的前两个特征,因为我们希望将其可视化。接下来,我们将数据分为训练集和测试集: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 然后,我们可以使用 LinearSVC 模型拟合数据: ```python clf = LinearSVC(random_state=42) clf.fit(X_train, y_train) ``` 最后,我们可以使用测试集评估模型的表现: ```python y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 完整代码如下: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.svm import LinearSVC from sklearn.metrics import accuracy_score iris = load_iris() X = iris.data[:, :2] y = iris.target X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) clf = LinearSVC(random_state=42) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) accuracy = accuracy_score(y_test, y_pred) print('Accuracy:', accuracy) ``` 运行代码后,您将得到一个准确率。希望这个示例能够帮助您理解如何使用线性 SVM 对 iris 数据集进行二分类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值