半监督SVM

article/2025/3/15 21:15:37

半监督SVM

  • 什么是半监督学习
  • 半监督SVM要做什么
  • TSVM

这里是阅读周志华的《机器学习》中关于半监督SVM(S3VM)的笔记。

什么是半监督学习

在数据的搜集中,获得标记数据的成本是高昂的,而获得未标记的数据则是低廉的,为此人们提出了半监督的学习方法,旨在利用少量的标记数据和大量的未标记数据进行学习,从而节约成本。这是可能做到的,比如有一些未被标记的数据和一个被标记的正样本数据非常相似,那么我们就可以将这些未被标记的样本视为正样本来学习。半监督学习有区别于主动学习,主动学习要利用未标记样本需要有一个外部的“专家”给出一个真实标记,而半监督学习则是自己预测。半监督学习具体还可以分为两类,即(纯)半监督学习和直推学习,前者假定训练数据中的未标记样本并非待预测的数据,模型用于预测样本之外的数据,而后者则假定学习过程中所考虑的未标记样本恰是待预测数据。

半监督SVM要做什么

S3VM是SVM在半监督学习上的推广。在不考虑未标记样本时,SVM 试图找到最大间隔划分超平面,而在考虑未标记样本后,S3VM试图找到能将两类有标记样本分开,且穿过数据低密度区域的划分超平面,如图所示。
在这里插入图片描述

TSVM

半监督SVM中最著名的是TSVM(Transductive Support Vector Machine)形式化说,给定 D l = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x l , y l ) } D_l = \{(x_1,y_1),(x_2,y_2),...,(x_l,y_l)\} Dl={(x1,y1),(x2,y2),...,(xl,yl)} D u = { x l + 1 , x l + 2 , . . . , x l + u } D_u = \{x_{l+1},x_{l+2},...,x_{l+u}\} Du={xl+1,xl+2,...,xl+u},其中 y i ∈ { − 1 , + 1 } y_i\in \{-1,+1\} yi{1,+1} l ≪ u l\ll u lu l + u = m l+u=m l+u=m。TSVM的学习目标是为 D u D_u Du中的样本给出预测标记 y ^ = ( y ^ l + 1 , y ^ l + 2 , . . . , y ^ l + u ) \hat y = (\hat y_{l+1},\hat y_{l+2},...,\hat y_{l+u}) y^=(y^l+1,y^l+2,...,y^l+u) y ^ i ∈ { − 1 , + 1 } \hat y_i \in \{-1, +1\} y^i{1,+1},使得
min ⁡ w , b , y ^ , ξ 1 2 ∥ w ∥ + C l ∑ i = 1 l ξ i + C u ∑ i = l + 1 m ξ i s . t . y i ( w T x i + b ) ≥ 1 − ξ i , i = 1 , 2 , . . . , l , y i ( w T x i + b ) ≥ 1 − ξ i , i = l + 1 , l + 2 , . . . , m , ξ i ≥ 0 , i = 1 , 2 , . . . , m . \min_{w,b,\hat y, \xi} \frac{1}{2}\|w\|+C_l\sum_{i=1}^l\xi_i+C_u\sum_{i=l+1}^m\xi_i\\ s.t. \quad y_i(w^Tx_i+b)\geq 1-\xi_i,i=1,2,...,l, \\ \quad \quad \quad \quad \quad \quad y_i(w^Tx_i+b)\geq 1-\xi_i,i=l+1,l+2,...,m,\\ \xi_i\geq 0, i=1,2,...,m. w,b,y^,ξmin21w+Cli=1lξi+Cui=l+1mξis.t.yi(wTxi+b)1ξi,i=1,2,...,l,yi(wTxi+b)1ξi,i=l+1,l+2,...,m,ξi0,i=1,2,...,m.
其中, ( w , b ) (w,b) (w,b)确定了一个超平面。具体来说,TSVM算法如下:首先用已标记的数据训练一个SVM,用这个SVM划分未标记的数据,进行”预标记“;将 C u C_u Cu定为一个较小的值,找出可能出错的指派标记对,这两个样本的预标记为一正一副,且对应的松弛变量都大于0且相加大于1,将这些标记点对的指派互换;增加 C u C_u Cu直到 C u = C l C_u=C_l Cu=Cl为止。下是TSVM 的伪代码。这里 C u C_u Cu 的作用在于一开始预测比较不准确,因此未标记数据的权重应该比较低,随着算法的进行,预测准确度上升, C u C_u Cu 的值也随之上升。
在这里插入图片描述
周志华教授还提到了一个防止TSVM划分不均匀的办法,那就是将预测正样本和预测负样本的参数 C u C_u Cu分隔开来,标为 C + C^+ C+ C − C^- C ,然后令两者的比值等于预测负样本数与预测正样本数的比值。这样做的思想是,当标记点不均匀时,相对较多的那一类目标函数中乘上的常数较小,每个点越界的惩罚就较小,场平面就会相对往点多的那一类的方向移动。


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

相关文章

半监督学习代码实战

sklearn官方例子——用半监督学习做数字识别 什么是半监督学习 半监督学习很重要,为什么呢?因为人工标注数据成本太高,现在大家参加比赛的数据都是标注好的了,那么如果老板给你一份没有标注的数据,而且有几百万条&am…

半监督学习综述

Chapter 7 Semi-supervised Learning 翻译不易,未经允许请勿转载! Author: Mohamed Farouk Abdel Hady and Friedhelm Schwenker Translator: Howard Wonanut 摘要 传统的监督学习方法需要使用有标签数据建立模型。然而,在现实世界中给训练…

半监督学习(一)

什么是半监督学习? 传统的机器学习技术分为两类,一类是无监督学习,一类是监督学习。 无监督学习只利用未标记的样本集,而监督学习则只利用标记的样本集进行学习。 但在很多实际问题中,只有少量的带有标记的数据,因为…

半监督学习简介

“我们预计从长远来看,无监督学习将变得更加重要。人类和动物的学习在很大程度上是不受监督的:我们通过观察来发现世界的结构,而不是通过被告知每个物体的名称。”——LeCun, Bengio, Hinton, Nature (2015)。 Semi-Supervised Learning 半监…

半监督学习

1. 介绍 1.1 什么是半监督学习 所给的数据有的是有标签的,而有的是没有标签的。常见的两种半监督的学习方式是直推学习(Transductive learning)和归纳学习(Inductive learning)。   直推学习(Transduct…

半监督学习(SEMI-Supervised Learning)

半监督学习的工作原理 想象一下,收集了大量未标记的数据,您想在这些数据上训练模型。手动标记所有这些信息可能会花费你一大笔钱,除了需要几个月的时间来完成注释。这时候半监督机器学习方法就派上用场了。工作原理很简单。无需将标签添加到…

半监督学习概述

1、半监督学习 今天在阅读一篇论文时了解了这个之前一直不太清晰的概念。下面是查阅了相关资料后对半监督学习的理解。如有错误,望更正。 半监督学习是一种介于监督学习和无监督学习之间的学习凡是,我们都知道,在监督学习中,样本…

JS中使数组倒序排列

使用reverse方法 注意:reverse方法会使得原数组发生变化

JS实现数组和数组对象倒序(reverse方法)

const arr1 [{a:1},{b:2},{c:3},{d:4}]; const arr2 [1,2,3,4,5,6,7]; console.log(倒序前,arr1,arr2); arr1.reverse(); arr2.reverse(); console.log(倒序后,arr1,arr2);

js实现数组翻转(倒序输出)

//倒序排列var arr[2,30,1,9,5,7];var brrarr.reverse();for(var i0;i<brr.length;i){document.write(brr[i]);}console.log(brr);//控制台也能看到数组的输出

js实现数组元素的倒序

模拟循环录入采集名单存储到数组中并编码实现数组元素的倒序查看名单 :例如数组原名单: A B C D E ,倒序后展示为: E D C B A 运行后的结果如下图所示&#xff1a;

JS数组对象的正序、倒序和根据中文首字母排序

//数组对象方法排序:升序 sortByKey(array,key){return array.sort(function(a,b){var xa[key];var yb[key];return ((x<y)?-1:((x>y)?1:0));}); },//数组对象方法排序:降序 sortDownByKey(array,key){return array.sort(function(a,b){var xa[key];var yb[key];return…

js中数组反向、排序reverse、sort

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; js系列教程1-数组操作全解 js中数组反向、排序 数组反向使用reverse函数&#xff0c;数组排序使用sort函数&#xff0c;排序函数可以传入比较函数&#xff0c;也可以修改数组圆形&#xff0c;自定义添加排序…

数组倒序排序

Array.reverse()&#xff0c;数组元素的排序排列 今天做项目的时候遇到了一个需求&#xff0c;把下单字段的时间倒序排列&#xff0c;也就是最新的时间显示在前面&#xff0c;像这样 因为这个字段是一个数组元素&#xff0c;所以就想到了让数组元素倒序排列&#xff0c;然后就…

js数组排序,数组按照某个字段正序倒序排序方法,sort()

话不多说直接看案例哈 比如后端返回了一个数组集合&#xff0c;需要吧默认选项放在第一条 let arr [{isDefault: 0},{isDefault: 0},{isDefault: 1},{isDefault: 0}]arr.sort((a,b)> a.isDefault-b.isDefault)console.log(arr,正序)输出结果&#xff1a;正序&#xff0c;从…

js-实现数组翻转(倒序)

源代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>翻转数组</title></head><body><script>var arr[1,2,3,4,5,6,7,8];var newArr [];console.log(arr);for(var iarr.length-1;…

js 数组倒序排列

1.使用reverse()函数&#xff1a; var array[我,喜,欢,你];array.reverse(); // 输出&#xff1a; ["你", "欢", "喜", "我"]2.循环遍历一一使其倒序&#xff1a; var array[我,喜,欢,你];var temp;for(let i0; i<array.length/2;…

重磅!超详细的 JS 数组方法整理出来了

作者&#xff1a;Yushia https://juejin.cn/post/6907109642917117965 数组是 js 中最常用到的数据集合&#xff0c;其内置的方法有很多&#xff0c;熟练掌握这些方法&#xff0c;可以有效的提高我们的工作效率&#xff0c;同时对我们的代码质量也是有很大影响。 一、创建数组 …

VS Code字体总是安装不上,vscode字体安装

VS Code字体安装&#xff0c;顽固版本 tmd&#xff0c;Vs Code老是把l看成i或者是1急死了首先要下载字体&#xff0c;下载好安装对应的字体&#xff0c;windows字体文件一般是ttf&#xff0c;安装好之后 这里有免费的供开发编程使用的字体 —》链接 下载好之后&#xff0c;解压…