Kernel Method核方法—应用与理解

article/2025/9/25 18:36:31

前一篇主要梳理了几个基本概念以及相关关系,这一篇主要针对核方法的应用进行讨论,并理解核方法的思想,了解为什么要引入核方法。

核方法在机器学习中是一种灵活的技术,主要归结为两个方面:

  1. 非线性问题转换为高维线性问题;
  2. 只依赖于内积的问题。

具体来说,核方法可扩展支持向量机(SVM)、主成分分析(PCA)等算法,用于处理数据在低维空间不是线性可分的,通过核变换在高维空间就可以变成线性可分得以求解的问题,这样就有了非线性决策边界的核支持向量机(Kernel SVM)以及可以对非线性数据降维的核主成分分析(KPCA);此外,还可以用于扩展其他只依赖于样本点之间的内积的算法,例如核岭回归(Kernel ridge regression,KRR)等。下面利用最简单的二分类问题来理解核方法的理念。

例如下图从左到右分别对应了线性可分的情况、允许存在少量异常点进行线性可分的情况以及线性不可分的情况:
在这里插入图片描述
对于线性可分的问题(即存在一个超平面可以将不同类别的样本完全划分开),我们可以采用感知机(Perception)或者硬间隔支持向量机(Hard-margin SVM)。但如果存在少量异常点,可以采用口袋算法(Pocket Algorithm)或者软间隔分类器(Soft-margin SVM),但是图三这种明显是不能线性可分的,不能找到一条直线将样本很好的划分,为解决非线性可分问题,主要有一下两种方法:

  1. 从感知机出发,增加隐层数量,由万能逼近定理(Universal approximation theorem)可以用神经网络来逼近任意的连续函数,得到非线性的决策边界。
  2. 通过核方法,进行非线性变换,将非线性可分的问题转化为线性可分的问题。

因此,利用kernel就上述处理方法可以归结为:

线性可分问题允许存在少量异常点严格线性不可分
感知机学习算法(PLA)口袋算法(Pocket Algorithm)kernel+PLA
Hard-margin SVMSoft-margin SVMkernel+Hard-margin SVM(Kernel SVM)

非线性问题转换为高维线性问题

用最简单的异或问题来阐述
在这里插入图片描述

上述问题是线性不可分的,做如下变换:
x = ( x 1 , x 2 ) ⇓ z = ( x 1 , x 2 , ( x 1 − x 2 ) 2 ) \begin{aligned} x&=(x_1,x_2)\\ &\Downarrow\\ z&=(x_1,x_2,(x_1-x_2)^2) \end{aligned} xz=(x1,x2)=(x1,x2,(x1x2)2)
在这里插入图片描述

将二维的线性不可分问题通过核变换转化为三维中线性可分的问题,上图中任意一个(0,1)之间的灰色平面都可以将上述异或问题线性划分,由Cover定理可知,高维空间比低维空间更易线性可分。

Cover定理:将复杂的模式分类问题非线性地投射到高维空间将比投射到低维空间更可能是线性可分的。(来自百度百科)

只依赖于内积的问题

对于Hard-margin SVM,它的基本模型可写为:
min ⁡ ω , b 1 2 ∥ ω ∥ 2 s . t . y i ( ω T x i + b ) ⩾ 1 , i = 1 , 2 , … , m . \begin{aligned} &\min_{\omega,b}{1\over2}\|\omega\|^2\\ &s.t.\ y_i(\omega^Tx_i+b)\geqslant1,\ i=1,2,\dots,m. \end{aligned} ω,bmin21ω2s.t. yi(ωTxi+b)1, i=1,2,,m.
它的对偶问题可以写为:
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t . ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , … , m . \begin{aligned} &\max_{\alpha}\sum_{i=1}^m\alpha_i-{1\over2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jx_i^Tx_j\\ &s.t.\ \sum_{i=1}^m\alpha_iy_i=0,\ \alpha_i\geqslant0,\ i=1,2,\dots,m. \end{aligned} αmaxi=1mαi21i=1mj=1mαiαjyiyjxiTxjs.t. i=1mαiyi=0, αi0, i=1,2,,m.

正如上述讨论的那样,Hard-margin SVM是针对线性可分的问题求解,如果对于线性不可分的,还需要做一个非线性变换,将 x → ϕ ( x ) x\to\phi(x) xϕ(x),即将 x x x映射到它的特征空间,这样的话上述对偶问题中就变为 x i T x j x_i^Tx_j xiTxj之间的内积就变为计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)

由于特征空间维数可能很高,甚至可能是无穷维的,因此直接计算 ϕ ( x i ) T ϕ ( x j ) \phi(x_i)^T\phi(x_j) ϕ(xi)Tϕ(xj)通常是很困难的,为了避免直接计算高维空间中的内积,我们引入核函数
k ( x i , x j ) = ⟨ ϕ ( x i ) , ϕ ( x j ) ⟩ = ϕ ( x i ) T ϕ ( x j ) k(x_i,x_j)=\langle \phi(x_i),\phi(x_j)\rangle=\phi(x_i)^T\phi(x_j) k(xi,xj)=ϕ(xi),ϕ(xj)=ϕ(xi)Tϕ(xj)这样,它的对偶问题就可表示为
max ⁡ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j k ( x i , x j ) s . t . ∑ i = 1 m α i y i = 0 , α i ⩾ 0 , i = 1 , 2 , … , m . \begin{aligned} &\max_{\alpha}\sum_{i=1}^m\alpha_i-{1\over2}\sum_{i=1}^m\sum_{j=1}^m\alpha_i\alpha_jy_iy_jk(x_i,x_j)\\ &s.t.\ \sum_{i=1}^m\alpha_iy_i=0,\ \alpha_i\geqslant0,\ i=1,2,\dots,m. \end{aligned} αmaxi=1mαi21i=1mj=1mαiαjyiyjk(xi,xj)s.t. i=1mαiyi=0, αi0, i=1,2,,m.再和求解线性可分的SVM方法一样,利用拉格朗日乘数法,求导为零,得到分割超平面方程为:
f ( x ) = ω T ϕ ( x ) + b = ∑ i = 1 m α i y i ϕ ( x i ) T ϕ ( x ) + b = ∑ i = 1 m α i y i k ( x , x i ) + b \begin{aligned} f(x)&=\omega^T\phi(x)+b\\ &={\sum_{i=1}^m} \alpha_iy_i\phi(x_i)^T\phi(x)+b\\ &={\sum_{i=1}^m} \alpha_iy_ik(x,x_i)+b \end{aligned} f(x)=ωTϕ(x)+b=i=1mαiyiϕ(xi)Tϕ(x)+b=i=1mαiyik(x,xi)+b这里的 k ( ⋅ , ⋅ ) k(\cdot,\cdot) k(,)就是核函数。上式表明,分割超平面就是核函数的一些线性组合,即模型的最优解可以通过训练样本的核函数来得到。

总结

  • 正如前面一篇博客中讨论的那样,任何一个核函数都是再生核函数,对应都隐式的定义了一个RKHS,这个RKHS也是这个核函数的特征空间,但是是一个特殊的特征空间,因为具有再生性 k ( x , x ′ ) = &lt; k ( ⋅ , x ) , k ( ⋅ , x ′ ) &gt; k(x,x&#x27;) = &lt;k(\cdot, x), k(\cdot,x&#x27;)&gt; k(x,x)=<k(,x),k(,x)>;核函数的特征空间不唯一,甚至可以不是函数空间,而是其它类型的希尔伯特空间。
  • 一般说来特征空间是很高维的,也就是说,在核函数给定的情况下,可以把低维的输入空间通过一个非线性变换对应于一个特征空间,在这个高维空间中利用解线性可分问题的方法来求解非线性可分问题,这种学习是隐式地在特征空间中进行的,不需要显式地定义特征空间和映射函数,这样的方法就称为核方法(Kernel Method)
  • 我们所需要做的就是找到一个好的非线性变换,即选取一个好的核函数甚至会手动设计一个好的特征映射(例如计算机视觉方面)。
  • 在实际使用时不用管特征空间或者RKHS,但是如果想要做先验分析,也就是回答什么样的问题适合这个方法,则需要讨论RKHS。

参考资料:

机器学习,周志华
统计学习方法,李航
Foundations of Machine Learning,Mehryar Mohri
参考视频:白板推导系列(七)-核方法(Kernel Method)


http://chatgpt.dhexx.cn/article/VAcSmLQ8.shtml

相关文章

核方法学习

20201101 - 0. 引言 核方法&#xff08;kernel methods&#xff0c;核函数、核技巧&#xff09;是一种能够将在原始数据空间中的非线性数据转化到高维线性可分的方法。而最开始学习机器学习的时候&#xff0c;也是在SVM中接触到的。不过在那个时候之后&#xff0c;就很少从理…

核方法(kernel Method)

核方法 核方法定义 一种能够将在原始数据空间中的非线性数据映射到高维线性可分的方法。 核方法的用处 1、低维数据非线性&#xff0c;当其映射到高维空间&#xff08;feature space&#xff09;时&#xff0c;可以用线性方法对数据进行处理。 2、线性学习器相对于非线性学…

核方法概述----正定核以及核技巧(Gram矩阵推导正定核)

在再谈SVM&#xff08;hard-margin和soft-margin详细推导、KKT条件、核技巧&#xff09;中我们大致谈到了核函数以及为什么要用核函数&#xff0c;今天在这里更加详细的介绍一下。 核方法 1.核函数概述2.正定核2.1定义2.2证明 3.核技巧4.常见的核函数 1.核函数概述 从前面的学…

nginx编译器安装以及编译

一&#xff1a;nginx编译器安装 1&#xff1a;nginx编译器下载安装 http://nginx.org/download/nginx-1.23.1.tar.gz ----下载网址&#xff08;nginx-1.23.1.tar.gz-示例版本&#xff09; 2&#xff1a;将tar -zxvf nginx-1.23.1.tar.gz传入home目录下 mkdir /home/nginxchm…

mac编译安装Nginx

一、安装wget 使用homebrew安装wget brew install wget安装wget时报错 tar: Error opening archive: Failed to open /Users/xxx/Library/Caches/… 发现是install libunistring的时候失败报错&#xff1b; 单独安装此依赖; 安装成功&#xff0c;再继续安装wget&#xff1…

宝塔自定义html,宝塔面板Nginx编译安装添加自定义模块PageSpeed

我们在安装好宝塔的时候&#xff0c;首先要安装的都是nginx&#xff0c;PHP这些lnmp组合。估计很多童鞋选择的极速安装。确实&#xff0c;极速安装和编译安装在使用中&#xff0c;区别不大。但是&#xff0c;如果你想后期添加模块&#xff0c;极速安装就无法做到了&#xff0c;…

Linux中编译安装NGINX

1.去官网下载文件 nginx官网 nginx: downloadhttp://nginx.org/en/download.html?spma2c6h.12873639.0.0.222cda00jLs6QI 2.解决nginx安装中的各种依赖 GCC编译器:yum install gcc gcc-c正则表达式PCRE库:yum install -y pcre pcre-develzlib压缩库:yum install -y zlib z…

Centos7 编译安装Nginx

文章目录 前言一、编译安装nginx二、编译安装过程1.操作系统的选择&#xff0c;centos71.1关闭防火墙、selinux 2.安装编译开发环境2.1安装nginx所需的一些第三方系统库的支持 3.编译安装nginx3.1下载nginx源代码3.2解压缩nginx包&#xff0c;并进入该目录3.3开始编译安装3.4查…

Ubuntu 编译安装Nginx

文章目录 1. apt安装2. 编译安装2.1 启动Nginx 3. 防火墙问题 1. apt安装 # 默认版本安装 apt-get update apt-get install nginx# 选择版本安装 apt-get update apt-cache show nginx apt-get install nginx1.18.0-0ubuntu1.3# 启动 service nginx start# 重启 service nginx…

nginx 编译安装及增加模块

一&#xff0c;安装依赖 yum -y install gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel path二&#xff0c;下载nginx 通过nginx官网下载源码包&#xff1a;http://nginx.org/en/download.html 下载完后通过tar-zxf解压&#xff0c;并进入nginx 三&…

淘宝nginx编译安装

rootrancher:/opt/tnginx# ls -l -d -h * drwxrwxr-x 13 root root 4.0K 3月 29 2021 tengine-2.3.3 -rw-r--r-- 1 root root 2.8M 3月 21 10:03 tengine-2.3.3.tar.gz获取一个包&#xff0c;然后吧他解压 源代码内编辑脚本文件 编译安装需要用到的&#xff0c;编译工具 …

Nginx编译安装及配置文件详解

写在前面 Centos版本&#xff1a;Centos 7.6 - 64bit Nginx版本&#xff1a;1.20.2 一、什么是Nginx Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。 二、Nginx用在哪些地方 2.1 静态资源服务 动静…

3-1 Nginx编译安装

文章目录 Nginx服务一、Nginx服务基础1、Nginx简介2、简述Nginx和Apache的差异3、编译安装Nginx服务&#xff08;Nginx-1.12.2&#xff09;1&#xff09;环境准备&#xff1a;关闭防火墙&#xff0c;上传软件包2&#xff09;安装依赖环境3&#xff09;创建运行用户、组4&#x…

Nginx编译安装与配置

目录 引言 一、Nignx简介 二、简述Nginx和Apache的差异 三、编译安装Nginx服务 四、新版本升级 五、添加 Nginx 系统服务 六、基于域名的 Nginx 虚拟主机 七、基于IP 的 Nginx 虚拟主机 八、基于端口的 Nginx 虚拟主机 九、Nginx服务的主配置文件 &#xff08;1&am…

Nginx编译安装

1. 停止原有的web服务器&#xff1a;端口默认均是80 2. 添加普通用户账号运行nginx useradd -M -s /sbin/nologin nginx3. 解压并安装nginx tar xf nginx-1.8.1.tar.gzcd ngxin-1.8.1/./configure --prefix/usr/local/nginx --usernginx --groupnginx --with-http_stub_stat…

Nginx网站服务

文章目录 一.编译安装Nginx服务(一)认识Nginx服务的主配置文件(二)日志格式设定&#xff08;三&#xff09;访问状态统计配置(四)基于授权的访问控制(五)基于客户端的访问控制 二.域名主机的访问&#xff08;一&#xff09;基于域名的Nginx虚拟主机(二)基于IP的Nginx虚拟主机(三…

Nginx的安装---编译安装

编译安装 1、安装编译环境 yum -y install gcc gcc-c make ncurses ncurses-devel2、安装pcre软件包&#xff08;使nginx支持http rewrite模块&#xff09; yum install -y pcre pcre-devel3、安装openssl-devel&#xff08;使nginx支持ssl&#xff09; yum install -y ope…

2021年计算机保研面试题

准备计算机保研面试题 注意点 大家都是第一次~~~ 没有保研经验&#xff0c;所以担心会被问专业课知识相关的东西。但是结合博主自己的经历&#xff0c;本人双非保到某985&#xff0c;过程中问的最多的是项目相关问题&#xff0c;并不会设计太多专业课问题&#xff0c;问的话也…

linux 网络 sk_buff结构

一、简介 sk_buff的意思是socket buffer&#xff0c;这是Linux网络子系统中的核心数据结构。 定义在 <include/linux/skbuff.h> 中&#xff0c;它由许多变量组成&#xff0c;目标就是满足所有网络协议的需要。 sk_buff 在不同的网络层被使用&#xff08;MAC 或其他在 L…

梳理50道经典计算机网络面试题

我梳理了50道计算机网络面试题&#xff0c;每一道题目都特别经典&#xff0c;大厂也非常喜欢问。相信大家看完&#xff0c;会有新的收获滴~ 1. 说说HTTP常用的状态码及其含义&#xff1f; 思路: 这道面试题主要考察候选人&#xff0c;是否掌握HTTP状态码这个基础知识点。 不管是…