【机器学习基础】判别函数

2024-04-05 04:38

本文主要是介绍【机器学习基础】判别函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本系列为《模式识别与机器学习》的读书笔记。

一,分类线性模型概述

分类的⽬标是将输⼊变量 x \boldsymbol{x} x 分到 K K K 个离散的类别 C k \mathcal{C}_k Ck 中的某⼀类。 最常见的情况是, 类别互相不相交, 因此每个输⼊被分到唯⼀的⼀个类别中。因此输⼊空间被划分为不同的决策区域decision region),它的边界被称为决策边界decision boundary)或者决策⾯decision surface)。

分类线性模型是指决策⾯是输⼊向量 x \boldsymbol{x} x 的线性函数,因此被定义为 D D D 维输⼊空间中的 ( D − 1 ) (D − 1) (D1) 维超平⾯。如果数据集可以被线性决策⾯精确地分类,那么我们说这个数据集是线性可分的(linearly separable)。

在线性回归模型中,使⽤⾮线性函数 f ( ⋅ ) f(·) f() w \boldsymbol{w} w 的线性函数进⾏变换,即
y ( x ) = f ( w T x + w 0 ) (4.1) y(\boldsymbol{x})=f(\boldsymbol{w}^{T}\boldsymbol{x}+w_0)\tag{4.1} y(x)=f(wTx+w0)(4.1)
在机器学习的⽂献中, f ( ⋅ ) f(·) f() 被称为激活函数activation function),⽽它的反函数在统计学的⽂献中被称为链接函数link function)。决策⾯对应于 y ( x ) = 常 数 y(\boldsymbol{x}) = 常数 y(x)=,即 w T x + w 0 = 常 数 \boldsymbol{w}^{T}\boldsymbol{x} + w_0 = 常数 wTx+w0=,因此决策⾯是 x \boldsymbol{x} x 的线性函数,即使函数 f ( ⋅ ) f(·) f() 是⾮线性函数也是如此。因此,由公式(4.1)描述的⼀类模型被称为推⼴的线性模型generalized linear model)(McCullagh and Nelder, 1989)。

如图4.1,⼆维线性判别函数的⼏何表⽰。决策⾯(红⾊)垂直于 w \boldsymbol{w} w ,它距离原点的偏移量由偏置参数 w 0 w_0 w0 控制。
⼆维线性判别函数的⼏何表⽰

二,判别函数

判别函数是⼀个以向量 x \boldsymbol{x} x 为输⼊,把它分配到 K K K 个类别中的某⼀个类别(记作 C k \mathcal{C}_k Ck )的函数。

1,⼆分类

线性判别函数的最简单的形式是输⼊向量的线性函数,即
y ( x ) = w T x + w 0 (4.2) y(\boldsymbol{x})=\boldsymbol{w}^{T}\boldsymbol{x}+w_0\tag{4.2} y(x)=wTx+w0(4.2)
其中 w \boldsymbol{w} w 被称为权向量weight vector), w 0 w_0 w0 被称为偏置bias)。偏置的相反数有时被称为阈值threshold)。

考虑两个点 x A \boldsymbol{x}_A xA x B \boldsymbol{x}_B xB ,两个点都位于决策⾯上。 由于 y ( x A ) = y ( x B ) = 0 y(\boldsymbol{x}_A)=y(\boldsymbol{x}_B)=0 y(xA)=y(xB)=0,我们有 w T ( x A − x B ) = 0 \boldsymbol{w}^{T}(\boldsymbol{x}_A-\boldsymbol{x}_B) = 0 wT(xAxB)=0,因此向量 w \boldsymbol{w} w 与决策⾯内的任何向量都正交,从⽽ w \boldsymbol{w} w 确定了决策⾯的⽅向。类似地,如果 x \boldsymbol{x} x 是决策⾯内的⼀个点,那么 y ( x ) = 0 y(\boldsymbol{x}) = 0 y(x)=0 ,因此从原点到决策⾯的垂直距离为
w T x ∥ w ∥ = − w 0 ∥ x ∥ (4.3) \frac{\boldsymbol{w}^{T}\boldsymbol{x}}{\|\boldsymbol{w}\|}=-\frac{w_0}{\|\boldsymbol{x}\|}\tag{4.3} wwTx=xw0(4.3)
其中,偏置参数 w 0 \boldsymbol{w}_0 w0 确定了决策⾯的位置。

记任意⼀点 x \boldsymbol{x} x 到决策⾯的垂直距离 r r r ,在决策⾯上的投影 x ⊥ \boldsymbol{x}_{\perp} x ,则有
x = x ⊥ + r w ∥ w ∥ (4.4) \boldsymbol{x}=\boldsymbol{x}_{\perp}+r \frac{\boldsymbol{w}}{\|\boldsymbol{w}\|}\tag{4.4} x=x+rww(4.4)
利用已知公式和 y ( x ⊥ ) = 0 y(\boldsymbol{x}_{\perp})=0 y(x)=0 可得
r = y ( x ) ∥ w ∥ (4.5) r=\frac{y(\boldsymbol{x})}{\|w\|}\tag{4.5} r=wy(x)(4.5)
为方便简洁,引⼊“虚”输⼊ x 0 = 1 x_0=1 x0=1 ,并且定义 w ~ = ( w 0 , w ) \tilde{\boldsymbol{w}} = (w_0,\boldsymbol{w}) w~=(w0,w) 以及 x ~ = ( x 0 , x ) \tilde{\boldsymbol{x}} = (x_0,\boldsymbol{x}) x~=(x0,x) ,从⽽
y ( x ) = w ~ T x ~ (4.6) y(\boldsymbol{x})=\tilde{\boldsymbol{w}}^{T}\tilde{\boldsymbol{x}}\tag{4.6} y(x)=w~Tx~(4.6)
在这种情况下, 决策⾯是⼀个 D D D 维超平⾯, 并且这个超平⾯会穿过 D + 1 D+1 D+1 维扩展输⼊空间的原点。

2,多分类

考虑把线性判别函数推⼴到 K > 2 K>2 K>2 个类别。

方法一,使⽤ K − 1 K − 1 K1 个分类器,每个分类器⽤来解决⼀个⼆分类问题,把属于类别 C k \mathcal{C}_k Ck 和不属于那个类别的点分开。这被称为“1对其他”(one-versus-the-rest分类器。此方法的缺点在于产⽣了输⼊空间中⽆法分类的区域。

方法二,引⼊ K ( K − 1 ) 2 \frac{K(K−1)}{2} 2K(K1) 个⼆元判别函数, 对每⼀对类别都设置⼀个判别函数。 这被称为“1对1”(one-versus-one分类器。每个点的类别根据这些判别函数中的⼤多数输出类别确定,但是,这也会造成输⼊空间中的⽆法分类的区域。

如图4.2,尝试从⼀组两类的判别准则中构建出⼀个 K K K 类的判别准则会导致具有奇异性的区域, ⽤绿⾊表⽰。
判别准则
方法三,通过引⼊⼀个 K K K 类判别函数,可以避免上述问题。这个 K K K 类判别函数由 K K K 个线性函数组成,形式为
y k ( x ) = w k T x + w k 0 (4.7) y_{k}(\boldsymbol{x})=\boldsymbol{w}_{k}^{T}\boldsymbol{x}+w_{k0}\tag{4.7} yk(x)=wkTx+wk0(4.7)
对于点 x \boldsymbol{x} x ,如果对于所有的 j ≠ k j \ne k j=k 都 有 y k ( x ) > y j ( x ) y_{k}(\boldsymbol{x})\gt y_{j}(\boldsymbol{x}) yk(x)>yj(x) ,那么就把它分到 C k \mathcal{C}_k Ck 。 于是类别 C k \mathcal{C}_k Ck C j \mathcal{C}_j Cj 之间的决策⾯为 y k ( x ) = y j ( x ) y_{k}(\boldsymbol{x})=y_{j}(\boldsymbol{x}) yk(x)=yj(x),并且对应于⼀个 ( D − 1 ) (D − 1) (D1) 维超平⾯,形式为
( w k − w j ) T x + ( w k 0 − w j 0 ) = 0 (4.8) (\boldsymbol{w}_{k}-\boldsymbol{w}_{j})^{T}\boldsymbol{x}+(w_{k0}-w_{j0})=0\tag{4.8} (wkwj)Tx+(wk0wj0)=0(4.8)
考虑两个点 x A \boldsymbol{x}_A xA x B \boldsymbol{x}_B xB ,两个点都位于决策区域 R k \mathcal{R}_k Rk 中, 任何位于连接 x A \boldsymbol{x}_A xA x B \boldsymbol{x}_B xB 的线段上的点都可以表⽰成下⾯的形式
x ^ = λ x A + ( 1 − λ ) x B (4.9) \hat{\boldsymbol{x}}=\lambda \boldsymbol{x}_{A}+(1-\lambda)\boldsymbol{x}_{B}\tag{4.9} x^=λxA+(1λ)xB(4.9)
其中, 0 ≤ λ ≤ 1 0\le\lambda\le1 0λ1 。根据判别函数的线性性质,有
y k ( x ^ ) = λ y k ( x A ) + ( 1 − λ ) y k ( x B ) (4.10) y_{k}(\hat{\boldsymbol{x}})=\lambda y_{k}(\boldsymbol{x}_{A})+(1-\lambda)y_{k}(\boldsymbol{x}_{B})\tag{4.10}

这篇关于【机器学习基础】判别函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/877648

相关文章

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Linux基础命令@grep、wc、管道符的使用详解

《Linux基础命令@grep、wc、管道符的使用详解》:本文主要介绍Linux基础命令@grep、wc、管道符的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录grep概念语法作用演示一演示二演示三,带选项 -nwc概念语法作用wc,不带选项-c,统计字节数-

python操作redis基础

《python操作redis基础》Redis(RemoteDictionaryServer)是一个开源的、基于内存的键值对(Key-Value)存储系统,它通常用作数据库、缓存和消息代理,这篇文章... 目录1. Redis 简介2. 前提条件3. 安装 python Redis 客户端库4. 连接到 Re

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

Spring Boot集成Logback终极指南之从基础到高级配置实战指南

《SpringBoot集成Logback终极指南之从基础到高级配置实战指南》Logback是一个可靠、通用且快速的Java日志框架,作为Log4j的继承者,由Log4j创始人设计,:本文主要介绍... 目录一、Logback简介与Spring Boot集成基础1.1 Logback是什么?1.2 Sprin

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示