三、学习分类 - 基于图像大小进行分类

天下一半剑仙是我友

谁家娘子不娇羞

我以醇酒洗我剑

谁人说我不风流

1 设置问题

根据图片的尺寸,把图片分为纵向图像和横向图像。这种把图像分成两种类别的问题,就是二分类问题

纵向图片示例:
 

 横向图片示例:

 这样就有了两个训练数据:

增加训练数据,并在图像中表示出来:

可以得到一条分隔两边的线,这次分类的目的就是找到这条线:

只要找到这条线,就可以根据点在线的哪一边来判断图像是横向的还是纵向的了

2 内积

上面图中的直线像学习回归时的一次函数一样,但是这次我们不是求斜率与截距了,而是找向量了。

图中的虚线,是使权重向量成为法线向量的直线

设权重向量为w ,那么那条直线的表达式就是这样的:

实向量空间的内积是各元素乘积的和,表达式也可以写成:

法线是与某条直线相垂直的向量。

和学习回归一样,使用假设法,现在我们假设权重向量w = (1,1),代入表达式中可得:

在图中表示:

然后再把权重向量加上:

回到刚开始,一开始并不存在画的那条虚线,我们要先通过训练找到权重向量,最后才能得到与这个向量垂直的直线,最后根据这条直线就可以对数据进行分类了

3 感知机

那么具体要怎么求出权重向量呢?

基本的做法和回归时相同,就是将权重向量用作参数,创建更新表达式来更新参数。

感知机模型(perceptron)

接受多个输入后将每个值与各自的权重相乘,最后输出总和的模型:

先准备一些训练数据。设表示宽的轴为x1,表示高的轴为x2,用y来表示图像是横向还是纵向的,横向的值为1,纵向的值为-1。

根据参数向量x来判断图像是横向还是纵向的函数,即返回1或者-1的函数fw(x)的定义如下:

这个被称为判别函数。

与权重向量w的内积为负的向量x是什么样的向量?

因为|w|和|x|必定为正数,所以决定内积符号的是cos θ。

cos θ的图:

在90◦<θ<270◦的时候cos θ为负。

在图中的体现:

积是衡量向量之间相似程度的指标。结果为正,说明二者相似;为0则二者垂直;为负则说明二者不相似。

根据上面的内容,可以推导出权重向量的更新表达式:

通过判别函数对宽和高的向量x进行分类的结果与实际的标签y是否相同:

判别结果准确,fw(x(i))=y(i),即分类成功,直接代入w。

判别结果失败,即分类失败,不能直接代入w。

更新示例:

先随意画一个权重向量:

在这个状态下,假设第一个训练数据是x(1)=(125,30):

w和x(1)之间的夹角θ的范围是90◦<θ<270◦,内积为负。也就是说,判别函数fw(x(1))的分类结果为-1,说明分类失败。

随后更新表达式:

这个w+x(1)就是下一个新的w,画一条与新的权重向量垂直的直线,相当于把原来的线旋转了一下:

刚才x(1)与权重向量分居直线两侧,现在它们在同一侧了:

这次θ<90◦,所以内积为正,判别函数fw(x)的分类结果为1。而且x(1)的标签也为1,说明分类成功了。

这就是更新参数的权重向量。

4 线性可分

因为感知机只是简单的模型,他有一个很大的缺点,就是它只能解决线性可分的问题

有下面这张图里的数据,其中圆点为1,叉号为-1,这样的图形无法用一条直线对这些数据进行分类。

这种感知机被称为简单感知机或单层感知机,实际上使用的神经网络是多层感知机。

5 逻辑回归

能应用于线性不可分问题的算法,这个算法与感知机的不同之处在于,它是把分类作为概率来考虑的。即图片为纵向的概率是,为横向的概率是,这里设横向的值为1、纵向的值为0。

需要能够将未知数据分类为某个类别的函数fθ(x):

这个函数的名字叫sigmoid函数

把未知数据x是横向图像的概率作为fθ(x),表达式为:

P中的竖线是条件概率。

阈值为0.5,从而分类横向或纵向:

表达式改写:

下面像学习感知机时那样,设横轴为图像的宽(x1)、纵轴为图像的高(x2)。

然后像学习回归时那样,先随便确定θ再具体地去考虑。比如当θ是这样的向量时,画一下θTx≥0的图像:

代入数据:

画出不等式对应的图:

也就是说,我们将θTx=0这条直线作为边界线,就可以把这条线两侧的数据分类为横向和纵向了。

这种用于数据分类的直线称为决策边界

实际应用时这个决策边界并不能正确地分类图像,是因为我们刚开始决定参数的时候太随意了。

为了求得正确的参数θ而定义目标函数,进行微分,然后求参数的更新表达式。这种算法就称为逻辑回归

6 似然函数

现在来求参数的更新表达式。

首先要明确,既然fθ(x)是x为横向时的概率,那么在y=1时fθ(x)=1, y=0时fθ(x)=0的关系就是理想的。

简单来说:

- y = 1的时候,我们希望概率P(y = 1 | x)是最大的。

- y = 0的时候,我们希望概率P(y = 0 | x)是最大的。

作用在训练数据上:

假定所有的训练数据都是互不影响、独立发生的,这种情况下整体的概率就可以用下面的连个概率来表示:

想一想扔2次骰子的情况。第1次的结果是1点,且第2次的结果是2点的概率是多少呢?首先1点出现的概率是1/6,接下来2点出现的概率是1/6,二者连续发生的概率就要使用乘法计算,其表达式是这样的:

同理,第1次的概率是P(y(1)=0|x(1)),第2次的概率是P(y(2)=0|x(2))……我们要计算的是连续发生6次的概率。

联合概率的表达式一般化:

 分开考虑,首先向指数y(i)代入1:

 再代入y(i)代入0:

这就是它的目标函数,接下来考虑的是使这个目标函数最大化的参数θ。

回归的时候处理的是误差,所以要最小化,而现在考虑的是联合概率,我们希望尽可能大。

这里的目标函数L(θ)也被称为似然,函数的名字L取自似然的英文单词Likelihood的首字母。

7 对数似然函数

下面就是对似然函数进行微分,求出参数θ。

但是,直接对似然函数进行微分有点困难,在此之前要把函数变形,取似然函数的对数,两边加上log即可,如下:

然后把对数似然函数进行变形:

 最后,逻辑回归就是将这个对数似然函数用作目标函数:

 接下来,对各个参数θj求微分:

 和回归的时候是一样的,我们把似然函数也换成这样的复合函数,然后依次求微分:

不过现在是以最大化为目标,所以必须按照与最小化时相反的方向移动参数:

为了与回归时的符号保持一致,也可以将表达式调整为下面这样:

8 线性不可分

逻辑回归应用于线性不可分问题。

下面的图像是线性不可分的:

对于这个问题,虽然直线不能分类,但是曲线可以分类:

我们可以像多项式回归一样,增加函数的次数:

 假设参数,代入试试:

在图中的表示:

之前的决策边界是直线,现在则是曲线了。参数θ是随便定的,所以数据完全没有被正确地分类。

之后通过随意地增加次数,就可以得到复杂形状的决策边界了。比如在x1*2之外再增加一个x2*2,就会有圆形的决策边界。

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

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

相关文章

jmeter列表数据断言

在jmeter接口请求中,通常需要根据接口data列表有无返回的数据断言是接口请求成功,如图1, 通常有这么几种方法: beanshell断言 json断言 响应断言 图1: 失败请求:{"code":0,"msg"…

Android自动化测试之Monkey

目录 一、Monkey与Android SDK之间的关系 二、环境配置 三、正式测试 四、报错分析 五、总结 本来是做Web后端的,来公司实习变成微信小程序前端了,到这周变成Android APP测试人员了,也是微醺啊。 由于对手工测试终究是有些抵触&#xff…

OpenCV 入门教程: Sobel算子和Scharr算子

OpenCV 入门教程: Sobel 算子和 Scharr 算子 导语一、Sobel 算子二、Scharr 算子三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 在图像处理和计算机视觉领域,边缘检测是一项重要的任务。 Sobel 算子和 Scharr 算子是两种常用的边缘检测算子&…

Pinia学习笔记 | 入门 - 映射辅助函数

文章目录 Pinia学习笔记简介Pinia是什么 代码分割机制案例1.挂载PiniaVue3Vue2:安装PiniaVuePlugin插件 2.定义store的两种方式options API 和 composition API使用options API模式定义使用composition API模式 2.业务组件对store的使用创建store实例解构访问Pinia容…

【Docker】快速入门,带你快速了解 Docker

文章底部有投票活动,赶快参与进来吧😃 相信大家在开发过程中都听说过 Docker 一词,至于 Docker 在开发中扮演的角色,估计好多人都说不上来,今天就让阿Q带大家一起揭开它神秘的面纱! 文章目录 什么是容器&a…

Ubuntu 的安装及其设置

文章目录 安装 Ubuntu屏幕分辨率设置修改软件源服务器锁屏时间设置设置 dash跨系统拖拽复制文件的设置 安装 Ubuntu 首先安装 VMware 虚拟机,虚拟机的安装比较简单,一步步点击Next即可完成安装。 安装完成后启动虚拟机,点击创建新的虚拟机。…

Spring @RequestMapping 工作原理

Spring RequestMapping 工作原理 配置基础启动类及Controller类 SpringBootApplication public class DemoServiceApplication {public static void main(String[] args) {SpringApplication.run(DemoServiceApplication.class, args);} }RestController public class HelloC…

yapi的部署和安装

安装Node.js环境 wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz 或者直接浏览器下载传输到服务器上。 https://nodejs.org/zh-cn/download/tar -xvf node-v14.15.4-linux-x64.tar.xz 太高版本不行,install会报错。16开头的。 配置环境…

FastAPI 初体验,效率杠杠滴

目录 前言: 1、官网信息 2、环境安装 3、写个demo 4、关注的几个技术点 4.1 路径参数数据接收 4.2 查询参数数据接收 4.3 post 数据接收 4.4 header数据接收 4.5 cookie数据接收 5、总结 5.1 没有使用门槛 5.2 开发效率 5.3 劣势 前言: 写…

Vue简单使用及整合elementui

创建vue工程 在vue工程目录下npm install vue 下载离线vue https://v2.vuejs.org/v2/guide/installation.html 引入工程中 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" c…

C# 参数传递(引用类型参数)

目录 一&#xff0c;引言 二&#xff0c;引用类型参数作为值参数传递 三&#xff0c;引用类型参数作为引用参数传递 一&#xff0c;引言 方法中参数的传递方式主要有值参数传递和引用参数传递&#xff08;ref&#xff0c;out&#xff09;&#xff0c;而参数有可以分为值类型…

构造稀疏矩阵例子

构造稀疏矩阵的目的是在处理具有大量零元素的大规模数据时&#xff0c;节省内存空间和计算资源&#xff0c;并提高计算效率。稀疏矩阵是一种特殊的矩阵&#xff0c;其中包含许多零元素和一些非零元素。 #include "pcl.h" #include "common.h" #include &qu…