半监督学习概述

article/2025/3/15 21:02:12

1、半监督学习

今天在阅读一篇论文时了解了这个之前一直不太清晰的概念。下面是查阅了相关资料后对半监督学习的理解。如有错误,望更正。

半监督学习是一种介于监督学习和无监督学习之间的学习凡是,我们都知道,在监督学习中,样本的类比、类别标签都是已知的,学习的目的是找到样本的特征与类别标签之间的联系。一般来讲训练样本的数量越多,训练得到的分类器的分类精度也会越高。但是在很多现实问题当中,一方面是由于人工标记样本的成本很高,导致有标签的数据十分稀少。(如果是让算法工程师亲自去标记数据,会消耗相当大的时间和精力;也有很多公司采取雇佣一定数量的数据标记师,这种做法也无疑是耗费了大量金钱在数据标记上。)而另一方面,无标签的数据很容易被收集到,其数量往往是有标签样本的上百倍。因此,半监督学习(这里仅针对半监督分类),就是要利用大量的无标签样本和少量带有标签的样本来训练分类器,解决有标签样本不足的难题。

2、self-training

self-training可能是最早提出的半监督学习方法,最早可以追溯到1965.self-training相比于其他半监督学习方法的优势在于简单以及不需要任何假设。
在这里插入图片描述
上面是self-training的算法流程图,简单介绍一下:

  • 1、将初始化的有标签数据作为初始的训练集(Xtrain,ytrain)=(X_l,y_l),根据该训练集训练得到一个初始分类器 C i n t C_{int} Cint
  • 2、利用 C i n t C_{int} Cint对无标签数据集 X u X_u Xu进行分类,选出最有把握的样本 X c o n f , y c o n f X_{conf},y_{conf} Xconf,yconf(可以设定阈值来选择)
  • 3、从 X u X_u Xu中去掉 X c o n f , y c o n f X_{conf},y_{conf} Xconf,yconf
  • 4、将 X c o n f , y c o n f X_{conf},y_{conf} Xconf,yconf加入到有标签数据集中, ( X t r a i n , y t r a i n ) ← ( X l , y l ) ∪ ( X c o n f , y c o n f ) (Xtrain,ytrain)←(X_l,y_l)∪(X_{conf},y_{conf}) (Xtrain,ytrain)(Xl,yl)(Xconf,yconf)
  • 5,根据新的训练集训练新的分类器,重复步骤2到5直到满足停止条件(例如所有无标签样本都被标记完了)
    最后得到的分类器就是最终的分类器。

3、协同学习 (co-training)

和自我学习一样,协同学习的目的也是为了用现有的有标签的数据去标记其他数据。具体步骤如下:假设现在有数据集,每组数据有2个特征(feature): x1 和 x2。我们把其中有标签的那部分数据集称为L (表示为[x1,x2,y]),没有标签的数据集称为U (表示为[x1,x2])。

初始化数据,把L 分为L1 ([x1,y]) 和L2 ([x2,y])。这里注意,L 是一个数据集,里面包涵了很多数据,我就顺便提醒一下。
重复:a) 分别用L1和L2训练出一个模型 F1和F2
b) 分别用模型F1和F2去预测U (给U打标签),同样这里也是只选出最有把握的一些结果。

c) 把F1预测的结果放入L2,把F2预测的结果放入L1 (交叉放置)

d) 更新L 和 U

  1. 直到数据集不发生变化 (和自我学习一样)

4、参考资料

1)半监督学习之self-training
2)半监督分类的方式:self-training和co-training的算法简述


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

相关文章

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;解压…

VsCode字体颜色修改和背景图片修改 字体高亮

1.打开VS Code编辑器&#xff0c;在编辑器中设置。根据以下步骤&#xff0c;打开settin.json文件。 2.在json文件中若有代码覆盖即可没有代码直接添加下面代码。看注释可以自定义设置喜欢的颜色。 {//设置用户选中代码段的颜色"workbench.colorCustomizations": {/…

VScode字体超大怎么改回来?

VScode字体超大怎么改回来&#xff1f; 改背景图时不小心把字体设置的超大了&#xff0c;而且还是失去焦点自动保存了&#xff0c;难受… 网上一搜&#xff0c;真不好搜&#xff0c;答案有两种 借图一用&#xff08;本人比这个还严重&#xff0c;鼠标已经滚动不了了&#xff…

ubuntu系统下vscode字体显示异常(别扭)

修改办法 文件 》 首选项 》 设置 查找框中输入 Font 显示如下&#xff1a; 修改Font Family&#xff1a; 将&#xff1a;‘Droid Sans Mono’, ‘monospace’, Droid Sans Fallback’改为&#xff1a; monospace 如果windows和ubuntu是同一个账号&#xff0c;必须取消同步&…

vscode程序员推荐字体

今天推荐一款vscode字体:Anonymous-Pro 绝对的轻量 点击前往下载 GITHUB LIGHT Anonymous-Pro GITHUB LIGHT Anonymous-Pro GITHUB DARK Anonymous-Pro GITHUB DARK Anonymous-Pro 设置步骤: 1.打开vscode 2.依次到文件->首选项->设置 3.修改字体为 Anonymous P…

vscode字体/界面无意间变得超大,一招调回,完美解决

一、情况如下 在网上解决方法搜了半天&#xff0c;各种试都不顶事 &#xff0c;正准备卸载重载&#xff0c;又不甘心弄了几下&#xff0c;终于回来了&#xff0c;太好了&#xff01;&#xff01;&#xff01; 下面也将此方法分享给各位正在被这个问题困扰的家人们&#xff0c;希…

ubuntu vscode 换字体

1. 打开vscode 点击 首选项 - 设置 - 文本编辑器 - 字体 可以看到, Font Ligatures 配置字体连字或字体特性。可以是用于启用/禁用连字的布尔值&#xff0c;或用于设置 CSS "font-feature-settings" 属性值的字符串。 在 settings.json 中编辑 2. 点击编辑 json文…

vscode 字体颜色变得花里胡哨的

今天一开vscode 发现界面花花绿绿的 原本的括号颜色都变了&#xff0c;尝试重新装了&#xff0c;清空配置&#xff0c;更改主题&#xff0c;都没有效果&#xff0c;后来发现是 Bracket 惹的祸 在设置里 搜索 关掉之后&#xff0c;就恢复正常的配色了