复现SMO算法:序列最小优化的启发式方法【三、算法原理揭秘-2】

2024-05-01 11:44

本文主要是介绍复现SMO算法:序列最小优化的启发式方法【三、算法原理揭秘-2】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接下来的内容将转向SMO算法的第二个核心组成部分——选择要优化的乘数的启发式方法。在这篇博客中,我们将探讨算法如何通过启发式选择策略高效地识别更新拉格朗日乘数。通过对比直接优化的分析方法和启发式方法的策略选择,我们能够更全面地理解SMO算法在解决支持向量机(SVM)优化问题中的独特优势。

二、选择要优化的乘数的启发式方法

SMO算法包含两个主要步骤:选择需要优化的拉格朗日乘数对和优化这些乘数。算法采用启发式方法选择乘数对,加快收敛速度并确保选择的对最可能迅速改善模型性能。

1.外层循环 - 选择 α 1 \alpha_1 α1

  • 遍历所有训练样本,识别违反KKT条件最严重的样本作为 α 1 \alpha_1 α1
  • 如果某个样本不满足以下条件之一,它就被认为违反了KKT条件:
    • 如果 α i = 0 \alpha_i = 0 αi=0,则要求 y i u i ≥ 1 y_i u_i \geq 1 yiui1
    • 如果 0 < α i < C 0 < \alpha_i < C 0<αi<C,则要求 y i u i = 1 y_i u_i = 1 yiui=1
    • 如果 α i = C \alpha_i = C αi=C,则要求 y i u i ≤ 1 y_i u_i \leq 1 yiui1
  • 如果所有在边界上的支持向量满足KKT条件,则扩展搜索至整个训练集。

2.内层循环 - 选择 α 2 \alpha_2 α2

  • 选择使得 ∣ E 1 − E 2 ∣ |E_1 - E_2| E1E2 最大的 α 2 \alpha_2 α2,其中 E i = u i − y i E_i = u_i - y_i Ei=uiyi 是样本 i i i 的预测误差,这有助于实现 α 2 \alpha_2 α2 的最大变化。

3. 计算和更新 α 1 \alpha_1 α1 α 2 \alpha_2 α2

推导过程,请见博客:复现SMO算法:深入探索序列最小优化的分析方法【三、算法原理揭秘-1】

在SMO算法中, α 1 \alpha_1 α1 α 2 \alpha_2 α2 的优化是算法的核心。这两个乘数的更新是通过解析方法完成的,目的是最大化SVM的目标函数。这一过程可以分为几个步骤:

  1. 计算误差差值
    E 1 = u 1 − y 1 , E 2 = u 2 − y 2 E_1 = u_1 - y_1, \quad E_2 = u_2 - y_2 E1=u1y1,E2=u2y2
    其中, u i u_i ui 是模型对第 i i i 个样本的预测输出, y i y_i yi 是实际标签。

  2. 计算二乘数的上下界
    为了满足约束条件 0 ≤ α i ≤ C 0 \leq \alpha_i \leq C 0αiC ∑ i = 1 N α i y i = 0 \sum_{i=1}^{N} \alpha_i y_i = 0 i=1Nαiyi=0,我们需要计算 α 2 \alpha_2 α2 的上下界(L 和 H)。

    • 如果 y 1 ≠ y 2 y_1 \neq y_2 y1=y2
      L = max ⁡ ( 0 , α 2 o l d − α 1 o l d ) , H = min ⁡ ( C , C + α 2 o l d − α 1 o l d ) L = \max(0, \alpha_2^{old} - \alpha_1^{old}), \quad H = \min(C, C + \alpha_2^{old} - \alpha_1^{old}) L=max(0,α2oldα1old),H=min(C,C+α2oldα1old)
    • 如果 y 1 = y 2 y_1 = y_2 y1=y2
      L = max ⁡ ( 0 , α 1 o l d + α 2 o l d − C ) , H = min ⁡ ( C , α 1 o l d + α 2 o l d ) L = \max(0, \alpha_1^{old} + \alpha_2^{old} - C), \quad H = \min(C, \alpha_1^{old} + \alpha_2^{old}) L=max(0,α1old+α2oldC),H=min(C,α1old+α2old)
  3. 计算 α 2 \alpha_2 α2 的新值
    α 2 \alpha_2 α2 的新值由下式给出:
    α 2 n e w = α 2 o l d + y 2 ( E 1 − E 2 ) η \alpha_2^{new} = \alpha_2^{old} + \frac{y_2 (E_1 - E_2)}{\eta} α2new=α2old+ηy2(E1E2)
    其中, η \eta η 是核函数 K ( x 1 , x 2 ) K(x_1, x_2) K(x1,x2) 的二阶导数,可以理解为对问题的“曲率”或调整步幅的影响因子。

  4. 剪辑 α 2 \alpha_2 α2
    α 2 n e w \alpha_2^{new} α2new 需要在其界限 L 和 H 之间被剪辑:
    α 2 n e w , c l i p p e d = min ⁡ ( max ⁡ ( α 2 n e w , L ) , H ) \alpha_2^{new, clipped} = \min(\max(\alpha_2^{new}, L), H) α2new,clipped=min(max(α2new,L),H)

  5. 更新 α 1 \alpha_1 α1
    根据 α 2 \alpha_2 α2 的变化更新 α 1 \alpha_1 α1
    α 1 n e w = α 1 o l d + y 1 y 2 ( α 2 o l d − α 2 n e w , c l i p p e d ) \alpha_1^{new} = \alpha_1^{old} + y_1 y_2 (\alpha_2^{old} - \alpha_2^{new, clipped}) α1new=α1old+y1y2(α2oldα2new,clipped)

更新偏置 b b b 和误差 E i E_i Ei

  • 根据新的乘数值重新计算偏置 b b b
    b n e w = b o l d − Δ b b_{new} = b_{old} - \Delta b bnew=boldΔb
  • Δ b \Delta b Δb 根据 α 1 \alpha_1 α1 α 2 \alpha_2 α2 的变化量及其对应样本的 y i y_i yi E i E_i Ei 值计算得出。
  • 重新计算所有样本的误差 E i E_i Ei
    E i = ( w T x i + b ) − y i E_i = (\mathbf{w}^T \mathbf{x}_i + b) - y_i Ei=(wTxi+b)yi
  • 更新权重向量 w \mathbf{w} w
    w = ∑ j = 1 m α j y j x j \mathbf{w} = \sum_{j=1}^m \alpha_j y_j \mathbf{x}_j w=j=1mαjyjxj

关键问题解析

问题一:如何判定违反KKT条件最严重?

违反KKT条件的程度是通过样本的乘数 α i \alpha_i αi 和它们的函数间隔 y i u i y_i u_i yiui 的关系来判定的。具体方法如下:

  • α i = 0 \alpha_i = 0 αi=0 的样本:理论上应满足 y i u i ≥ 1 y_i u_i \geq 1 yiui1。如果 y i u i < 1 − ϵ y_i u_i < 1 - \epsilon yiui<1ϵ,这种违反被视为严重。
  • 0 < α i < C 0 < \alpha_i < C 0<αi<C 的样本:应精确满足 y i u i = 1 y_i u_i = 1 yiui=1。偏

离1超过 ϵ \epsilon ϵ 的情况被认为违反严重。

  • α i = C \alpha_i = C αi=C 的样本:应满足 y i u i ≤ 1 y_i u_i \leq 1 yiui1。如果 y i u i > 1 + ϵ y_i u_i > 1 + \epsilon yiui>1+ϵ,同样视为严重违反。
问题二:计算 ∣ E 1 − E 2 ∣ |E_1 - E_2| E1E2 最大的 α 2 \alpha_2 α2
  • 误差 E i E_i Ei 的计算公式为:
    E i = ( ∑ j = 1 m α j y j K ( x j , x i ) + b ) − y i E_i = (\sum_{j=1}^m \alpha_j y_j K(x_j, x_i) + b) - y_i Ei=(j=1mαjyjK(xj,xi)+b)yi
  • 选择 α 2 \alpha_2 α2 通过寻找最大化 ∣ E 1 − E 2 ∣ |E_1 - E_2| E1E2 α j \alpha_j αj 实现,即:
    j = arg ⁡ max ⁡ j ∣ E 1 − E j ∣ j = \arg\max_j |E_1 - E_j| j=argjmaxE1Ej

伪代码实现

初始化所有乘数 alpha_i = 0
为所有 i 初始化误差 E_i
k = 0重复直至收敛:// 外部循环选择 alpha_1对每个样本 i:计算 u_i = sum(alpha_j * y_j * K(x_j, x_i)) + b检查KKT条件如果违反:alpha_1 = alpha_iE_1 = E_i// 内部循环选择 alpha_2找到最大化 |E_1 - E_j| 的 jalpha_2 = alpha_jE_2 = E_j// 优化 alpha_1 和 alpha_2更新 alpha_1 和 alpha_2更新 b 重新计算误差k += 1检查收敛条件

这篇关于复现SMO算法:序列最小优化的启发式方法【三、算法原理揭秘-2】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

揭秘世界上那些同时横跨两大洲的国家

我们在《世界人口过亿的一级行政区分布》盘点全球是那些人口过亿的一级行政区。 现在我们介绍五个横跨两州的国家,并整理七大洲和这些国家的KML矢量数据分析分享给大家,如果你需要这些数据,请在文末查看领取方式。 世界上横跨两大洲的国家 地球被分为七个大洲分别是亚洲、欧洲、北美洲、南美洲、非洲、大洋洲和南极洲。 七大洲示意图 其中,南极洲是无人居住的大陆,而其他六个大洲则孕育了众多国家和