zoukankan      html  css  js  c++  java
  • 支持向量机(Support Vector Machine)

    • KTT条件

    如果是在等式约束条件下求解最优问题时,我们可以使用拉格朗日拉格朗日数乘法,但是如果是不等式的优化问题,我们该怎么做呢,这个时候就要使用KTT条件。

    设目标函数f(x),不等式约束为g(x)。此时的约束优化问题描述如下:

     

    则我们定义不等式约束下的拉格朗日函数L,则L表达式为:

     其中f(x)是原目标函数,hj(x)是第j个等式约束条件,λj是对应的约束系数,gk是不等式约束,uk是对应的约束系数。0

          此时若要求解上述优化问题,必须满足下述条件(也是我们的求解条件):

    这些求解条件就是KKT条件。(1)是对拉格朗日函数取极值时候带来的一个必要条件,(2)是拉格朗日系数约束(同等式情况),(3)是不等式约束情况,(4)是互补松弛条件,(5)、(6)是原约束条件。

          对于一般的任意问题而言,KKT条件是使一组解成为最优解的必要条件,当原问题是凸问题的时候,KKT条件也是充分条件。

           关于条件(3):我们构造L(x,λ,u)函数,是希望L(x,λ,u)<=f(x)的(min表示求最小值)。在L(x,λ,u)表达式中第二项为0,若使得第三项小于等于0就必须使得系数u>=0,这也就是条件(3)。

           关于条件(4),直观的解释可以这么看:要求得L(x,λ,u)的最小值一定是三个公式项中取得最小值,此时第三项最小就是等于0值的时候。稍微正式一点的解释,是由松弛变量推导而来。

    总结:同时包含等式和不等式约束的一般优化问题

    [egin{array}{l}
min {
m{  }}f({f{x}})\
s.t.{
m{   }}{g_j}({f{x}}) le 0(j = 1,2, cdots ,m)\
{
m{       }}{h_k}({f{x}}) = 0(k = 1,2, cdots ,l)
end{array}]

    KKT条件([{{f{x}}^*}]是最优解的必要条件)为


    [left{ egin{array}{l}
frac{{partial f}}{{partial {x_i}}} + sumlimits_{j = 1}^m {{mu _j}} frac{{partial {g_j}}}{{partial {x_i}}} + sumlimits_{k = 1}^l {{lambda _k}frac{{partial {h_k}}}{{partial {x_i}}}}  = 0,{
m{ }}left( {i = 1,2,...,n} 
ight)\
{h_k}left( {f{x}} 
ight) = 0,{
m{ (}}k = 1,2, cdots ,l)\
{mu _j}{g_j}left( {f{x}} 
ight) = 0,{
m{ (}}j = 1,2, cdots ,m)\
{mu _j} ge 0.
end{array} 
ight.]

    • 核函数

    将核函数形式化定义,如果原始特征内积是clip_image014[4],映射后为clip_image016[6],那么定义核函数(Kernel)为

    clip_image018[8]

    由于计算的是内积,我们可以想到IR中的余弦相似度,如果x和z向量夹角越小,那么核函数值越大,反之,越小。因此,核函数值是clip_image020[11]clip_image041[4]的相似度。

    再看另外一个核函数

    clip_image042[6]

    这时,如果x和z很相近(clip_image044[6]),那么核函数值为1,如果x和z相差很大(clip_image046[6]),那么核函数值约等于0。由于这个函数类似于高斯分布,因此称为高斯核函数,也叫做径向基函数(Radial Basis Function 简称RBF)。它能够把原始特征映射到无穷维。

    下面有张图说明在低维线性不可分时,映射到高维后就可分了,使用高斯核函数。

    注意,使用核函数后,怎么分类新来的样本呢?线性的时候我们使用SVM学习出w和b,新来样本x的话,我们使用clip_image050[8]来判断,如果值大于等于1,那么是正类,小于等于是负类。在两者之间,认为无法确定。如果使用了核函数后,clip_image050[9]就变成了clip_image052[6],是否先要找到clip_image054[8],然后再预测?答案肯定不是了,找clip_image054[9]很麻烦,回想我们之前说过的

    clip_image055[4]

    只需将clip_image057[4]替换成clip_image059[6],然后值的判断同上。

  • 相关阅读:
    个人项目(零)
    个人项目
    H5页面键盘弹出,遮挡输入框问题(转文)
    UEditor 使用setContent()遇到的奇葩问题
    限制textarea每行输入N个字符串
    权限管理简易实现
    使用git上传github遇到的问题
    跟随鼠标移动的遮罩层
    Web字体大揭秘
    @media的使用
  • 原文地址:https://www.cnblogs.com/CuteyThyme/p/10896507.html
Copyright © 2011-2022 走看看