精华内容
下载资源
问答
  • VC 函数表达式计算源码实例及测试截图,德国老外的程序,可以计算各种不同的函数、四则运算,还可以处理括号,计算正余弦等,值得借鉴的一款函数表达式计算工具。
  • VC实现的数学公式解析器源码

    热门讨论 2011-09-13 15:09:55
    分享用VC实现的数学公式解析器源码项目,功能强劲, 以MFC的CString类等编写专门的解析类, 支持三角函数、指数函数等的解析及多变量定制输入, 在VS2005下编译通过。
  • VC2005写的公式计算算法,可以支持+,-,*,/及括号运算,稍微修改后还可以支持未知数替换等等,希望对于寻找此方面资料的人有所帮助!!
  • 公式编辑器

    2012-09-01 13:02:21
    一个非常小,补充了word等编辑的缺陷,让你的文档更有魅力
  • 本文档介绍了通过最小二乘法拟合圆公式推导及vc实现
  • int Calculate(string formula) 函数功能:输入一个字符串公式string formula,允许四则混合运算,然后输入公式中对应变量的取值,最后返回int类型计算结果。 变量的格式:必须由1位字母加1位数字组成,如a1、b2等...
  • 由于在读取Excel文件过程中,往往遇到读取出来的时间是数字。因为excel是按照1900年1月1日开始计算至今天数。因此需要进行转换。不过特别注意,0表示1900年1月0日。
  • VC维(VC dimension)

    万次阅读 热门讨论 2015-08-05 18:52:46
    ,将出现一大波繁杂的公式,不想看可调至 最后结果 : 表示的是:含有 个数据的训练集,假设空间 中有效模型的个数,所以对于给定的假设空间: 进一步的: ...

    参考文献:learning from data——Yaser S. Abu-Monstafa/ Malik Magdon-Ismail / Hsuan-Tien Lin

    题外话:哈哈哈,太开心~没想到我这么快就能填坑了,勤劳的不像我吐舌头,可能是因为喜欢的男生分享相关资料害羞,羞羞。


    在看下面的内容前需要知道的内容:

    经验损失、期望损失、假设空间、监督学习中 的假设,这些概念可参见: 统计学习三要素



    统计学习的目标

    在统计学习中,我们可以用两个式子来描述学习的目标。对于我们所学习的模型 ,希望存在一个很小的正数 ,满足下面式子:

    其中, 是我们学习的模型, 是模型的期望损失, 是模型的经验损失。
    这两个式子所表示的意思:
    1.第一个式子反映了平均意义下,我们所训练的模型预测的好坏,趋于0就代表模型预测的效果越好。
    2.就像博客: 统计学习三要素所说, 不可计算,所以我们希望 尽可能的接近
    3.如果 接近,并且 很小,那么我们所学习的模型 就与真实的 很接近。
    这篇文章主要是从第二个式子来讨论问题,就是主要分析模型的泛化能力,推导模型的复杂程度和泛化能力之间的关系(也就是表征系统复杂度的vc维和泛化误差之间的关系)。


    Hoeffding不等式

    对于上面的第二个式子,只是这样定性的描述我们的目标,其实并没有什么卵用吐舌头,于是,有人想到了Hoeffding不等式:

    若:

    1.若服从参数为伯努利分布的随机变量。

    2.是从母体中取的子样。

    那么:


    其中:

    有了Hoeffding不等式,上面的第二个式子就可以写为:


    其中为计算训练集中数据的个数。

    这时,上面的第二个式子就是一个上界可以用数学来表示的量了。我们只需要尽量的减小上界,那么就可以实现:





    Hoeffding不等式的“放大”

    既然我们现在得到了这个式子:


    现在应该考虑的就是怎么样去减小上界。自然而然的,首先想到的是尽量的让值很大。但是这里有两个问题:

    1.训练集的数据是有限的,并且训练也是有成本的,所以不能让无限制的增大。并且对于一次统计学习来说,训练集的大小已经是固定的了。

    2.并且,训练集数据的个数并不是一个反应模型复杂程度的量。

    所以,这样来看,在上述式子中只有 这个参数,对于分析模型复杂度和泛化能力的关系并没有什么卵用 难过
    于是 可怜,有人决定把这个式子进行放大,对于一个假设空间 来讨论这个问题,那么上面的式子就可以写成:
    这样放大以后多了一个参数 ,这对于统计学习的讨论是很有意义的,因为 的引入把整个假设空间都拉进了这个式子里,我们在此基础上再想办法引入变量来描述假设空间里模型的复杂程度,不就可以向目标靠近了吗?




    有效的

    怎么取描述假设空间里面模型的复杂程度呢?
    或许我们可以对上式的 来做文章,用一个叫“ 有效”的概念在一定程度上表示假设空间里模型的复杂度。
    怎么理解有效呢?
    假设现在讨论的是一个二分问题,现在一共有 个数据。那么可以知道,对于整个训练集,最多的分类可能性有 个。
    1. 如果我们不限制模型的种类,那么,对于这个训练集来说,一个假设空间 ,不管 取的有多大,它的有效的模型个数只有 个。因为在大于 个的假设空间里,一定会有两个模型的分类结果是一模一样的。
    2.(这一个不看也不会影响后面vc维的推导) 如果我们限制了模型的种类,比如说,如果现在规定了模型必须只能是直线,那么对于刚刚所说的 个可能性,它并不总是可分的。比如对于下图,当 为4时,模型为直线时,此时这四个点就是可分的。

    所以当考虑到这种情况,一个假设空间 ,不管 取的有多大,实际上它的有效的模型应该是小于 的。那么当假设空间 并不是无限大的时候,我们也可以相应的推出,对于一个训练集 来说,这个假设空间也只有小于等于 个有效模型的个数。

    我们将对于含有个数据的训练集,假设空间中有效模型的个数记作。从上面的讨论可以看出,它是一个与、假设空间、还有假设空间里模型的种类有关的量。(其实在这里我们可以换一种说法来描述“模型的种类”——模型的复杂度,从上面可以看出,模型越复杂的时候,可能越大)所以现在我们可以说:是一个与、假设空间、还有假设空间里模型复杂度有关的量。

    我们这里定性的讨论了是一个小于等于,小于等于的量。在VC维的来龙去脉这篇文章中,定性的给出了的上界,并且说明了对于给定的假设空间,当从一开始慢慢变大时,是以多项式的速度增长的,感兴趣可以去看一下。




    vc bound


    得到这个有效模型个数有什么用呢,可以把它直接用来替换下式中的 吗?

    好像是不行的哦。那么我们把等式在左边缩小一下呢,对于假设空间 中的任意一个 ,都有:

    由于 是大于等于一的数,所以上式是成立的。经过证明(证明过程可参见 training versus testing),得到了下面的式子:

    它被称为VC bound。
    现在来看这个式子:
    1.式子的右边里面有一项 ,如前面所说,它是一个随 以多项式的速度增大的,而后面的 是随 的增大以指数的速度在减小的。所以随 的增大,右边是越来越小的。
    2.这个式子还告诉我们,当足够大的时候,对于假设空间里面的任意一个模型,它的经验风险都是非常接近的。


    VC dimension(VC 维)

    正如前面所说, 是一个与 、假设空间、还有假设空间里模型复杂度有关的量。我们的主要目的是讨论模型复杂度对泛化能力的影响,所以要想办法剔除掉训练集大小 对于泛化能力的影响,所以在这里引入了vc维。
    终于,在我自己都快把自己绕晕的时候,终于进入正题了。 哭

    定义VC维为:

    它所表示的意思是,对于一个假设空间 ,它的有效模型个数刚好能把含有 个数据的训练集中所有的可能性( )穷尽的最大 。根据定义可以看出来,VC维是一个只与假设空间和模型复杂度有关的量。

    前方 高能预警,将出现一大波繁杂的公式,不想看可调至 最后结果
    表示的是:含有 个数据的训练集,假设空间 中有效模型的个数,所以对于给定的假设空间:

    进一步的:

    再更进一步:

    那么,之前的式子:

    我们现在可以进一步放大为:

    现在令:


    可以反解出:
    我就是最后结果)由此,结合前面红色加粗的结论,可以得到,当 很大的时候,有很大的概率出现:

    上面这个式子就是 模型的评估与选择这篇文章中提到的泛化误差上界。( 哭喜极而泣,大费周章,终于把这个坑给填了)
    vc维在这里面起到了一个惩罚项的作用,它所表征的是模型的复杂程度,当模型越复杂的时候,vc维越大,泛化能力就越差;当模型越简单的时候,vc维越小,经验损失函数 和期望损失函数 越接近,泛化能力越好。




    写在后面的话:

    上面 有一些观点是我自己开的脑洞吐舌头,比如说为什么要在假设集上来讨论Hoeffding不等式,还有高能预警的推导,如果您有别的看法,欢迎讨论。

    我自己学这一段的时候也有一些疑问,如果您有什么想法,跪求解答:
    1.它的推导过程是针对的二分问题,如果是高维的话,还work吗?
    2.好,就算是二分问题,那么对于二分问题来说,假设的 就一定是服从伯努利分布的吗?不是的话,就不能用Hoeffding不等式呀,那后面的讨论有什么意义呢?
    3.我个人觉得用vc维来描述模型的复杂程度有点麻烦了,难道就不能用别的更为简单和直观的变量来表征模型复杂度吗?对于高能预警的那一片推导中有 ,我有很大疑问,为什么一定要用vc维?应该还是存在别的更简单更直观的描述模型复杂度的量吧。




    展开全文
  • 【AI数学】VC维的定义

    千次阅读 2018-10-08 13:18:36
    VC维是机器学习中经常可见的概念,要理解VC维,首先要知道VC维是用来干嘛的。 用途 度量模型的学习能力的指标,从一般意义上来说,VC维越大,其学习能力越强。比如,常见的神经网络模型,一个更深参数量越多的模型...

    VC维是机器学习中经常可见的概念,要理解VC维,首先要知道VC维是用来干嘛的。


    用途
    度量模型的学习能力的指标,从一般意义上来说,VC维越大,其学习能力越强。比如,常见的神经网络模型,一个更深参数量越多的模型的VC维一定大于更轻量的模型。


    定义

    假定我们有一个数据集,包含N个点。这N个点可以用 2 N 2^N 2N种方法标记为正例和负例。因此,N个数据点可以定义 2 N 2^N 2N种不同的学习问题。如果对于这些问题中的任何一个,我们都能够找到一个假设h∈ H H H将正例和负例分开,那么我们就称 H H H散列(shatter)N个点。也就是说,可以用N个点定义的任何的学习问题都能够用一个从中抽取的假设无误差地学习。可以被散列的点的最大数量称为 H H H V C VC VC维(Vapnik- Chervonenkis dimension),记为 V C VC VC( H H H),它度量假设类 H H H的学习能力(capacity)。

    引用自 http://book.51cto.com/art/200906/130574.htm
    解释一下这个定义:如果我们要对N个物体进行二分类,这N个物体分别有自己的属性集,每个物体的类别可以是正例也可以是负例。我们用一个适合的模型对这N个物体进行分类,如果每个物体的label可以随便设定,那么一共有 2 N 2^N 2N种设定方法,咱的模型是否能cover所有的设定呢?
    咱可以看个例子:
    在这里插入图片描述
    图片引自:https://blog.csdn.net/keith0812/article/details/8901113

    用一根直线(假设这是我们的模型),对三个物体(即三个点)进行二分类。三个物体呈散列状,不考虑三点一线的情况。那么一共有 2 3 2^3 23=8种情况,我们的模型能对8种情况下的3个物体都能进行精准分类。可见,我们的模型至少可以cover掉3个物体的二分类的各种情况。对4个物体的情况下,是否还能分类呢,随便举个反例就可以了,四个点分别呈列在矩形的4个顶点,对角线的2个点分别为1类,我们的直线还能分类它们吗,这个自行想象。(答案是不能)

    从上面的例子,我们可以得出二维线性分类器只能cover到3个物体,则这个模型的VC维等于3。我们可以推广到支持向量机(SVM),这个算法的基本思想就是用一个超平面来分割当前维度线性不可分的对象。这一做法,就是扩大线性分类器的VC维,从而获得更强的分类能力。

    同样,我们可以类比到神经网络,对于神经网络这种强VC维的boss来说,其VC维的近似计算有公式可寻:(引自《VC维的来龙去脉》)
    d V C = O ( V D ) d_{VC}=O(VD) dVC=O(VD)
    上述公式可以做神经网络VC维的估算。V表示神经网络中神经元的个数,D表示weight的个数,也就是神经元之间连接的数目。举例来说,一个普通的三层全连接神经网络:input layer是1000维,hidden layer有1000个nodes,output layer为1个node,则它的VC维大约为 O O O(1000x1000x1000)。


    总结
    VC维是一个指标,衡量模型容量(capacity)的指标。模型容量并不是越大越好,通常来讲,模型容量讲究够用即可。当数据量不足的情况下,丢一个很大的模型,往往效果会很差,容易形成过拟合。事实上,目前很多基于深度学习的算法都面临一个VC维冗余的问题,虽然在足够数据量的支撑下,有一个很好的performance。但模型庞大,导致计算很费时间,在实时性和功耗方面都达不到较理想的程度。现在一方面的研究也在偏向神经网络压缩,轻量级神经网络等等。

    展开全文
  • VC GridView表格控件附实例源码,从功能上来说优于CGridCtrl和UGGridCtrl,只有8000行代码。  //算法描述:  寻找依赖于它的单元格公式backCellFormulas  寻找它依赖的单元格公式frontCellFormulas  更新...
  • 用VC++开发的类似WORD的一个文字编辑软件,唯一不同的是,在文本编辑器中输入了的一些系统定义的关键字可以亮显,在文本中输入有公式时,遇到等号时编辑器自动会得到计算结果。
  • 最小二乘法拟合圆公式推导及vc实现

    千次阅读 2014-04-11 09:44:01
    最小二乘法(least squares analysis)是一种 数学 优化 技术,它通过 最小化 误差 的平方和找到一组数据的最佳 函数 匹配。...这里有 拟合圆曲线 的公式推导过程 和 vc实现。 VC
     最小二乘法(least squares analysis)是一种 数学 优化 技术,它通过 最小化 误差 的平方和找到一组数据的最佳 函数 匹配。 最小二乘法是用最简的方法求得一些绝对不可知的真值,而令误差平方之和为最小。 最小二乘法通常用于 曲线拟合 (least squares fitting) 。这里有 拟合圆曲线 的公式推导过程 和 vc实现。
    








    VC实现的代码:
    void  CViewActionImageTool::LeastSquaresFitting()
    {
        
    if (m_nNum<3)
        
    {
            
    return;
        }


        
    int i=0;

        
    double X1=0;
        
    double Y1=0;
        
    double X2=0;
        
    double Y2=0;
        
    double X3=0;
        
    double Y3=0;
        
    double X1Y1=0;
        
    double X1Y2=0;
        
    double X2Y1=0;

        
    for (i=0;i<m_nNum;i++)
        
    {
            X1 
    = X1 + m_points[i].x;
            Y1 
    = Y1 + m_points[i].y;
            X2 
    = X2 + m_points[i].x*m_points[i].x;
            Y2 
    = Y2 + m_points[i].y*m_points[i].y;
            X3 
    = X3 + m_points[i].x*m_points[i].x*m_points[i].x;
            Y3 
    = Y3 + m_points[i].y*m_points[i].y*m_points[i].y;
            X1Y1 
    = X1Y1 + m_points[i].x*m_points[i].y;
            X1Y2 
    = X1Y2 + m_points[i].x*m_points[i].y*m_points[i].y;
            X2Y1 
    = X2Y1 + m_points[i].x*m_points[i].x*m_points[i].y;
        }


        
    double C,D,E,G,H,N;
        
    double a,b,c;
        N 
    = m_nNum;
        C 
    = N*X2 - X1*X1;
        D 
    = N*X1Y1 - X1*Y1;
        E 
    = N*X3 + N*X1Y2 - (X2+Y2)*X1;
        G 
    = N*Y2 - Y1*Y1;
        H 
    = N*X2Y1 + N*Y3 - (X2+Y2)*Y1;
        a 
    = (H*D-E*G)/(C*G-D*D);
        b 
    = (H*C-E*D)/(D*D-G*C);
        c 
    = -(a*X1 + b*Y1 + X2 + Y2)/N;

        
    double A,B,R;
        A 
    = a/(-2);
        B 
    = b/(-2);
        R 
    = sqrt(a*a+b*b-4*c)/2;

        m_fCenterX 
    = A;
        m_fCenterY 
    = B;
        m_fRadius 
    = R;

        
    return;
    }


    工程下载

    编译运行后随便打开一个图片,当然最好是全白的图片,然后就点吧,大于三个点后就会开始拟合。红线画的圆为拟合的圆,深蓝的点为鼠标点击设置的样本点。单击鼠标右键清空样本集。

    转自:http://www.cnblogs.com/dotLive/archive/2007/04/06/524633.html


    看了下面的评论很有启发:贴上来,可以仔细研读下

    #2楼   2007-04-05 09:53 |  路不平[未注册用户]
    公式错误! 

    最小二乘法的意义是距离差值的平方(di-R)^2,不是距离平方差的平方(di^2-R^2)^2 

    两者是不同的!事实上 

    (di^2-R^2)=(di-R)(di+R) 

    因此,以上结果将使圆半径“趋小”! 
      
    #3楼 [ 楼主2007-04-05 13:37 |  .Live   
    @路不平 
    其实是一样的。 

    最小化 误差 的平方和,将距离平方差认为是 误差,可以表征和真实值得误差大小,使之最小也可以得到一个相对较优的拟合值。同时简化公式的推导。 

    如果使用距离的平方差,则平方和中会出现开根号,公式就很难推导了。
      
    #4楼   2007-04-06 09:18 |  路不平[未注册用户]
    回:dotLive 

    我编制过关于圆最小二乘的程序。起先我以为两者是一样的,就是:评价(di-R)^2与评价(di^2-R^2)^2是一样的。 
    但正如你所说,后者是把R^2作为真值进行考虑的。当然如果散点恰能构成一个圆,两者是一样的。因为: 
    (a^2-b^2)=(a+b)(a-b)=0 
    但我实际编程后(采用最速下降法)发现,后者的半径偏小(散点越不接近于圆越明显)!为什么呢?因为,最小二乘的几何原理考察的是“距离”的误差(di-R)。那么变成平方差 (di^2-R^2)后,事实上是给(di-R)乘上了一个(di+R约=2R)的权重,最终实际的结果,当然是半径偏小。 
    事实上,你可以通过编程发现两者的差异! 
    当然上述推导依然是有价值的,因为这个结果作为迭代法的初值是再合适不过了! 
    实际的推导是不“可解”的,否则,《数学手册》就会出现相应的方法,就象线性回归和抛物线回归一样! 


      
    #5楼 [ 楼主2007-04-06 10:30 |  .Live   
    @路不平 
    你的分析是对的,对我很有启发。我没有考虑到偏差的程度是如何变化的。你的分析应该说验证了这个推导在整体圆检测算法中的可行性。 
    事实上这个拟合公式确实迭代检测圆的一个步骤,我采取的方法是每次迭代删除方差大于某个阈值的点,认为它们是非圆上的点。 
    要使用这个迭代拟合的方法,还需要前面粗检测来限定范围,以保证进行拟合的点在圆周的一个特定范围内;最后删除点的迭代次数,也就是迭代停止条件也需要考虑和分析。最后我们希望是可以得到全部都是圆上的点,或者都是离真实边缘很接近的点,那么拟合的圆稍微有所偏差也是可以接受的。 
    还有一点是,这个检测的算法是假设在很高的分辨率下进行的,因此需要采用一些牺牲少量精度,大量降低计算量的方法,检测精度已经由高分辨的采集装置保证了一部分。


    展开全文
  • 郁金香驱动 vc驱动过保护教程1-51全集,外挂教程。课程目录: 一、基础篇--简单驱动模型 1.1 DDK及VC6.0/7.0/9.0的安装 1.1.1安装VC++6.0-1课 1.1.2安装VS2003-VC++7.0-2课 1.1.2安装VS2008-VC++9.0-3课 1.1.3安装VC...
  • Normal07.8 磅02falsefalsefalseEN-USZH-CNX-NONEMicrosoftInternetExplorer4<w:LatentSt
  • 由于可能在整理时把花式公式弄错,所以可能出现并不美观的图案,这些会在可能存在的后续版本中更正。  1>尚未实现类似于2D版本的抄写功能。可以在2D中抄写,然后再本版本中打开。  2>尚未实现用鼠标拖动来变换...
  • 对于恒流充放电的常用公式:⊿Vc=I*⊿t/C,其出自公式Vc=Q/C=I*t/C。 举例来说:设C=1000uF,I为1A电流幅度的恒流源(即:其输出幅度不随输出电压变化)给电容充电或放电,根据公式可看出,电容电压随时间线性增加...
  • 有了此程序,可以自己写加密算法来保护自己的vc应用程序,因为在插入U盘和移动硬盘后,读取的不是硬盘ID,所以自己加个判断语句就可以了。 我程序用的加密公式在HardDiskIDDlg.cpp里,自己下载看,可以改。
  • 上节中公式里的W称为自由度,自由度如同旋钮一样可以进行调节,就可以有无限种hypothesis(每个旋钮都有无限种可能性),VC Dimesion的物理意义就是hypothesis set在二元分类中的有效自由度。 VC Dimension...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    测试开发笔记 第一章 测试基础 7 什么是软件测试: 7 ★软件测试的目的、意义:(怎么做好软件测试) 7 3.软件生命周期: 7 第二章 测试过程 8 1.测试模型 8 H模型: 8 V模型 9 2.内部测试 10 ...
  • C语言 贪吃蛇

    万次阅读 多人点赞 2018-09-16 14:55:01
    //设置随机数种子 flag: while(1)//由于food的x坐标必须为偶数,所以设置循环判断是否为偶数 { //rand()%num产生 0~num-1 //rand产生范围数公式rand()%(m+1-n)+n;有效范围在 [n,m] foody=rand()%(DOWN_WALL-1+1-1)+1...
  • VC MFC操作Excel 20个 源代码合集 有从SQL导出到Execl, 也有从 Execl 导入到 SQL当中,有设置Execl公式的.. 内容比较丰富
  • 详解机器学习中的VC

    万次阅读 热门讨论 2015-04-03 16:10:03
    机器学习中的经典算法SVM(支持向量机)最初是由前苏联数学家Vladimir Vapnik 和 Alexey Chervonenkis 在 1963...二人合作完成的另外一个之于机器学习的重要贡献就是所谓的VC维,本文主要解释机器学习中的VC维这个概念
  • 表示,公式如下所示:   其中: 分别表示车辆早于和晚于时间窗 将货物卸下而带来的损失成本。 为车辆到达客户 j 的时刻, 为车辆在客户 j 处等待的时间。 3 问题求解 蚁群算法( Ant Colony ...
  • VC画正弦曲线

    2011-12-07 08:27:22
    VC画正弦曲线,有画线的数学公式,比较基础,适合学习!
  • 利用VC调用MATLAB实现欧拉公式运算,具有很好的实践,操作能力
  • 爱尔兰b公式计算器

    热门讨论 2012-04-29 16:57:29
    爱尔兰B公式计算器,用VC编的,有MFC界面

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,558
精华内容 5,423
关键字:

vc公式