S4VM解析

2018年08月03日 15:20:59 stringlife 阅读数 1233
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

1、S3VM

传统半监督支持向量机通过探索未标记数据来规范。调整决策边界,寻找最有的大间隔、低密度的超平面,比如S3VMs、TSVM等半监督SVM算法,如图所示,S3VM试图找到一个超平面,将有标记样本能够正确划分,且穿过特征空间中密度最低的区域;右图即是S3VM寻找的理想超平面。

S3VM的目标函数如下, 其中损失函数是hinge loss,限制条件是保证未标注样本的分布于标注样本分布一致。

因为给定少量的有标注点和大量无标注的点,可能存在不止一个间隔较大的低密度分界线,如果只考虑一个,可能会造成较大的损失。

2、S4VM:

不同于S3VM,S4VM关注多个可能存在的低密度分界,使用多个超平面,是一种集成学习方法。

起目标函数如上:其中正则项用来保证不同超平面之间具有一定的差异性,如果两个超平面差异性越大,则预测相同的数目越小,则函数值越小,M为惩罚系数,M越大,则要求超平面的差异性越大。

3、实现方式

因为S4VM的目标函数是非凸的,因此可能存在多个局部最优解,如果使用梯度下降求解,则容易求解出局部最优解而非全局最优,基于词,论文提出两种求解全局最优的实现方式。

1、全局模拟退火算法

模拟退火算法的主要思想是,在求解过程中,每次随机出一个新的x_new ,计算f(x_new)是否优于f(x),如果f(x_new)优于f(x),则接受x_new, 否则将以一定概率接受当前解,此概率设置为与全局变量T(温度)有关,温度越高,则概率越大,在迭代过程中,温度逐渐下降,接受的概率也逐渐降低。在求解全局最小值的时候,接受的概率p=exp(-dE / T),其中dE = f(x_new) - f(x)。

使用全局模拟退火算法求解S4VM的伪代码如下:

首先是随机出T个超平面,即给出T个超平面对未标注样本的预测值,在Localsearch中,根据预测值,即可以使用传统SVM学习到每个超平面的参数,对于每个超平面,在固定参数下,调整每个未标注样本的标签,使得目标函数最终收敛,则一次Localsearch完成,其他部分与模拟退火算法一致。

2、使用采样方式

随机选择出N个超平面,其中N > T

对于每个超平面,使用S3VM进行求解,得到N个S3VM超平面,每个超平面对未标记样本具有预测值,然后对所有样本进行聚类,聚类数目为T,在每个簇中,选择使得目标函数最小的一个超平面,这样会最终选出T个超平面。

S4VM解析的更多相关文章

  1. 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新

    本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...

  2. .NET Core中的认证管理解析

    .NET Core中的认证管理解析 0x00 问题来源 在新建.NET Core的Web项目时选择“使用个人用户账户”就可以创建一个带有用户和权限管理的项目,已经准备好了用户注册.登录等很多页面,也可 ...

  3. Html Agility Pack 解析Html

    Hello 好久不见 哈哈,今天给大家分享一个解析Html的类库 Html Agility Pack.这个适用于想获取某网页里面的部分内容.今天就拿我的Csdn的博客列表来举例. 打开页面  用Fir ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  5. 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新

    上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...

  6. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  7. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  8. 【知识必备】内存泄漏全解析,从此拒绝ANR,让OOM远离你的身边,跟内存泄漏say byebye

    一.写在前面 对于C++来说,内存泄漏就是new出来的对象没有delete,俗称野指针:而对于java来说,就是new出来的Object放在Heap上无法被GC回收:而这里就把我之前的一篇内存泄漏的总 ...

  9. SQL Server 数据加密功能解析

    SQL Server 数据加密功能解析 转载自: 腾云阁 https://www.qcloud.com/community/article/194 数据加密是数据库被破解.物理介质被盗.备份被窃取的最 ...

随机推荐

  1. ZR#956 集合

    ZR#956 集合 解法: 维护一个异或操作的懒标记,并对应的处理插入.删除和异或操作.接下来考虑如何整体加一. 考虑一个数字 $ x $ 变为 $ (x+1) \pmod {2^{30}} $ 的过 ...

  2. Docker安装redis3.2

    1.拉取redis3.2镜像 2.使用docker images查看拉去下来的镜像 3.运行容器,命令如下 docker run -p : -v $PWD/data:/data -d redis:3. ...

  3. 响应式css样式

    <div class="a"> 123 </div> @media(orientation:portrait) and (max-width:600px){ ...

  4. SQL-W3School-基础:SQL SELECT 语句

    ylbtech-SQL-W3School-基础:SQL SELECT 语句 1.返回顶部 1. 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于 ...

  5. java使用jconsole查看java程序运行(jmx原理)

    在JVM启动参数上加上     java -Dcom.sun.management.jmxremote.port=8999     -Dcom.sun.management.jmxremote.aut ...

  6. 阶段5 3.微服务项目【学成在线】_day05 消息中间件RabbitMQ_10.RabbitMQ研究-工作模式-路由工作模式介绍

    队列在绑定交换机的时候可以指定routingKey, 路由模式: 1.每个消费者监听自己的队列,并且设置routingkey. 2.生产者将消息发给交换机,由交换机根据routingkey来转发消息到 ...

  7. javascript两个数组内容合并

    需求: ,,]; ,,]; 最终结果: [,,,,,] 代码: Array.prototype.addAll= function(arr) { this.push.apply(this, arr); ...

  8. Python——使用Notepad++运行

    安装 安装python,安装完后找到python.exe,记录绝对路径,我的是:E:\log\python-3.7.4\python.exe 设置 用Notepad++打开python脚本,按F5会弹 ...

  9. 一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)

    导言:原文的作者是著名的Ghost和Spectre 这两个协议的创始团队的领队Aviv Zohar.原文作者说他的这篇原文又是引用了以下这两篇学术论文: How to Explain Zero Kno ...

  10. pycharm建立第一个django工程-----windows中

    pycharm建立第一个django工程 系统:win764 ip: 192.168.0.100 安装django pip install django 左上角建立一个名为Firstdjango工程 ...