以下文章转载自http://blog.sina.com.cn/s/blog_7103b28a0102w9tr.html

如有侵权,请留言,立即删除。

1 VC维的描述和理解

给定一个集合S={x1,x2,...xd},如果一个假设类H(hypothesis hH)能够实现集合S中所有元素的任意一种标记方式,则称H能够打散S。有了打散的定义,就得到VC维的定义:H的VC维表示能够被H打散的最大集合的大小。若H能分散任意大小的集合,那么VC(H)为无穷大。

​VC维反应的是hypothesis space的容量,容量度量的是空间的复杂度,表达能力,方程集合的灵活性,这种度量是通过评估hypothesis space中成员的wiggly程度实现的。

以二维线性分类器​为例进行说明,其VC维就等于3,即最多能够将三个样本的集合打散,无法将四个样本的集合打散。

对于三个样本点:对其​进行二分类标记,有2^3=8种方式,分别是:

{A→-1,BC→+1},{A→+1,BC→-1}

{B→-1,AC→+1},{B→+1,BC→-1}

{C→-1,AB→+1},{C→+1,BC→-1}

{ABC→-1},{ABC→+1}

用图片表示,情况如下:

对于四个点的情况:二维分类器就无法实现打散。四个点时,有2^4=16种分法,一堆一个点另一堆三个点(1,3);两两均分(2,2);一堆四个另一堆没有(0,4)三种情况。

第一种情况,有如下八种分法:​

​{A→-1,BCD→+1},{A→+1,BCD→-1}

{B→-1,ACD→+1},{B→+1,ACD→-1}

{C→-1,ABD→+1},{C→+1,ABD→-1}

{D→-1,ABC→+1},{D→+1,ABC→-1}

第三种情况,有两种分法:

{ABCD→-1}

{ABCD→+1}

对第二种情况,没有办法实现对所有可能的情况进行分类,可以实现的情况有四种:

​{AB→-1,CD→+1},{AB→+1,CD→-1}

{AC→-1,BD→+1},{AC→+1,BD→-1}

但是无法实现AD一堆,BC一堆的分类。所以总共可以实现14种分法,不满足16种,二维平面上找不到四个点可以被线性分类器被打散。

但是注意,二维平面中并不是只有线性分类器一种模型,例如,以下图为例说明,与坐标平行的矩形可以打散四个点,所以二维空间中与坐标平行的矩形假设空间的VC维是4。​


2 结构风险最小化

2.1 经验风险最小化

​预测与问题真实解之间的误差,就叫做风险(更严格的说,误差的累积叫做风险)。选择了一个假设之后(更直观点说,得到了一个分类器以后),真实误差无从得知,但可以用某些可以掌握的量来逼近它。最直观的想法就是使用分类器在样本数据上的分类的结果与真实结果(因为样本是已经标注过的数据,是准确的数据)之间的差值来表示。这个差值叫做经验风险Remp(w)。

以前的机器学习方法都把经验风险最小化作为努力的目标,但后来发现很多分类函数能够在样本集上轻易达到100%的正确率,在真实分类时却一塌糊涂(即所谓的推广能力差,或泛化能力差)。此时的情况便是选择了一个足够复杂的分类函数(它的VC维很高),能够精确的记住每一个样本,但对样本之外的数据效果很差。

此原则适用的大前提是经验风险要确实能够逼近真实风险才行,但实际上能逼近么?答案是不能,因为样本数相对于现实世界要分类的文本数来说简直九牛一毛,经验风险最小化原则只在这占很小比例的样本上做到没有误差,当然不能保证在更大比例的真实文本上也没有误差。​

2.2 结构风险最小化

​为了解决经验风险最小化中存在的问题,引入泛化误差界的概念。

该思想认为,真实风险​应该由两部分内容刻画,一是经验风险,代表了分类器在给定样本上的误差;二是置信风险,代表了在多大程度上可以信任分类器在未知文本上分类的结果。很显然,第二部分是没有办法精确计算的,因此只能给出一个估计的区间,也使得整个误差只能计算上界,而无法计算准确的值(所以叫做泛化误差界,而不叫泛化误差)。

其中,​置信风险与两个量有关,一是样本数量,显然给定的样本数量越大,学习结果越有可能正确,此时置信风险越小;二是分类函数的VC维,显然VC维越大,推广能力越差,置信风险会变大。

泛化误差界的公式为:

R(w)≤Remp(w)+Ф(n/h)​

​公式中R(w)就是真实风险,Remp(w)就是经验风险,Ф(n/h)就是置信风险。统计学习的目标从经验风险最小化变为了寻求经验风险与置信风险的和最小,即结构风险最小。

我的理解是,关于置信风险,样本数量增多,​会降低置信风险,但同时为了保证准确率,会是VC维升高,不利于置信风险的降低;降低VC维,模型就会相对简单,不能保证在样本数量较多的时候的正确率。所以这两种之间需要权衡,找到平衡点。

此外,结构风险中包含的经验风险和置信风险,我觉得也可以理解成训练误差和模型复杂度的问题。经验风险是模型在已有样本上的误差,置信风险中利用VC维对模型的复杂度进行度量,并希望能够尽量降低复杂度,增加模型的泛化能力,使得模型的测试误差降低。

【转载】VC维,结构风险最小化的更多相关文章

  1. 文本分类学习 (七)支持向量机SVM 的前奏 结构风险最小化和VC维度理论

    前言: 经历过文本的特征提取,使用LibSvm工具包进行了测试,Svm算法的效果还是很好的.于是开始逐一的去了解SVM的原理. SVM 是在建立在结构风险最小化和VC维理论的基础上.所以这篇只介绍关于 ...

  2. 机器学习理论基础学习4--- SVM(基于结构风险最小化)

    一.什么是SVM? SVM(Support Vector Machine)又称为支持向量机,是一种二分类的模型.当然如果进行修改之后也是可以用于多类别问题的分类.支持向量机可以分为线性和非线性两大类. ...

  3. 【转载】VC维的来龙去脉

    本文转载自 火光摇曳 原文链接:VC维的来龙去脉 目录: 说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effective Number o ...

  4. VC维的来龙去脉——转载

    VC维的来龙去脉——转载自“火光摇曳” 在研究VC维的过程中,发现一篇写的很不错的VC维的来龙去脉的文章,以此转载进行学习. 原文链接,有兴趣的可以参考原文进行研究学习 目录: 说说历史 Hoeffd ...

  5. 机器学习 之 SVM VC维度、样本数目与经验风险最小化的关系

    VC维在有限的训练样本情况下,当样本数 n 固定时.此时学习机器的 VC 维越高学习机器的复杂性越高. VC 维反映了函数集的学习能力,VC 维越大则学习机器越复杂(容量越大). 所谓的结构风险最小化 ...

  6. vc维的解释

    在做svm的时候我们碰到了结构风险最小化的问题,结构风险等于经验风险+vc置信范围,当中的vc置信范围又跟样本的数量和模型的vc维有关,所以我们看一下什么是vc维 首先看一下vc维的定义:对一个指标函 ...

  7. VC维的来龙去脉(转)

    本文转自VC维的来龙去脉 本文为直接复制原文内容,建议阅读原文,原文排版更清晰,且原网站有很多有意思的文章. 阅读总结: 文章几乎为台大林老师网课“机器学习可行性”部分串联总结,是一个很好的总结. H ...

  8. VC维与DNN的Boundary

    原文链接:解读机器学习基础概念:VC维来去 作者:vincentyao 目录: 说说历史 Hoeffding不等式 Connection to Learning 学习可行的两个核心条件 Effecti ...

  9. 机器学习理论基础学习3.3--- Linear classification 线性分类之logistic regression(基于经验风险最小化)

    一.逻辑回归是什么? 1.逻辑回归 逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的. logistic回归也称为逻辑回归,与线性回归这样输出 ...

随机推荐

  1. 我的git笔记

    转眼间加入git的阵营已经快两年了,结识git,缘起github,2年前在寻找代码托管网站,当时还是用svn,起初使用google code,可是google的服务虽好,在天朝你懂得,后来发现了git ...

  2. JavaScript_原型和继承(2017-03-15)

    一.函数创建过程 在了解原型链之前我们先来看看一个函数在创建过程中做了哪些事情,举一个空函数的例子: function A() {}; 当我们在代码里面声明这么一个空函数,js解析的本质是(肤浅理解有 ...

  3. redis 在 php 中的应用(Server[ 服务器] 篇)

    本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: Server(服务器) BGREWRITEAOF BGSA ...

  4. 8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)

    题目链接:http://pat.zju.edu.cn/contests/ds/8-06 某地区经过对城镇交通状况的调查.得到现有城镇间高速道路的统计数据,并提出"畅通project" ...

  5. UITransitionView and UILayoutContainerView

    What is UITransitionView? What is UILayoutContainerView? Will I get in trouble for adding subviews t ...

  6. Java高编译低运行错误(ConcurrentHashMap.keySet)

    Java高编译低运行错误(ConcurrentHashMap.keySet) 调了一天: https://www.jianshu.com/p/f4996b1ccf2f

  7. 微信支付WxpayAPI_php_v3 错误修改

    微信sdk:WxpayAPI_php_v3 这是下载压缩包的目录结构. https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1 ce ...

  8. ubuntu crontab 在时间段内随机执行一次

    crontab 在linux下做定时任务的命令, 1. 基本格式 * * * * * cmd 第一个表示:分钟 1-59, 每分钟用 */1 第二个表示:小时 023 第三个表示:日期1-31 第四个 ...

  9. postgresql ltree类型

    最近一个月使用Postgresql的时候,经常遇到ltree的数据,感觉有些别扭,可是有绕不过去.今天决心整理一下,以后使用方便一些. 一.简介 ltree是Postgresql的一个扩展类型,由两位 ...

  10. Visitor模式和Observer观察者模式

    所谓访问者模式,就是不同服务提供者对同一种服务提供的服务内容不同. Typedef   std::vector<Ivisitable>   VisitbleArray; Typedef  ...