【问题标题】:Adding an affine term to linear SVM / logistic regression objective function向线性支持向量机/逻辑回归目标函数添加仿射项
【发布时间】:2012-03-01 00:10:57
【问题描述】:

我目前正在研究一个问题,我必须解决 L2 正则化逻辑回归或 L2-reg 线性 SVM 问题,其中我有一个附加的仿射项。

所以我的问题例如是:

min_ w {C*sum_i max(1-w*x_i*y_i,0) + 0.5*||w||^2_2 + w * v }

其中 v 是一个常数向量。

当然这是一个凸问题,可以用通常的方法解决,但是我要解决很多这种类型的大问题,所以我很想用一个标准库比如liblinear em>。

我的问题是,有没有办法转换数据 x、标签 y 或权重因子 C(可能为每个实例转换为不同的 C_i),这样这个问题就相当于标准的铰链损失SVM 还是逻辑回归问题?

【问题讨论】:

    标签: machine-learning classification mathematical-optimization svm convex-optimization


    【解决方案1】:

    我想不出办法把它变成可以被 liblinear 之类的东西处理的东西。但是,您可以使用通用切割平面优化库之一轻松解决此优化问题。您所要做的就是编写代码来计算次梯度的元素(在您的情况下只是 w + v - Csum_i x_iy_i)和目标的值。然后一个切割平面程序可以找到最佳的w。

    Shogun 中有一个 CPA 优化器,dlib 中也有一个。我没有用过Shogun的版本,但是我用dlib中的那个解决了很多问题(我也是dlib的作者)。

    【讨论】:

      【解决方案2】:

      如果您的现成训练算法允许您对每个数据点的铰链损失或逻辑回归进行偏差,那么这是可能的。方法如下。

      完成最后两项的正方形:

        0.5 ||w||^2 + w'v 
      = 0.5 ||w+v/2||^2 - v'v/2
      

      然后引入变量的变化

      u = w+v/2
      

      你的优化相当于

      min_u C*sum_i max(1-(u-v/2)*x_i*y_i,0) + 0.5*||u||^2_2
      

      其中,b_i = 1+v'x_i*y_i/2,等价于

      min_u   C*sum_i max(b_i - u*x_i*y_i ,0) + 0.5*||u||^2_2
      

      因此,如果您的训练算法允许您将 1 替换为您为每个数据点选择的 b_i,则可以解决此问题。

      几乎每个包都会以一种或另一种方式容纳 b_i。比如上面的等价于

      min_u   C*sum_i b_i  max(1 - u*x_i*y_i/b_i ,0) + 0.5*||u||^2_2
      

      (假设 b_i>0)所以如果您的包裹允许您对每个点进行不同的加权,则可以解决上述问题。

      【讨论】:

        猜你喜欢
        • 2016-04-21
        • 2015-01-09
        • 2019-06-07
        • 2020-01-18
        • 2014-07-03
        • 2013-08-21
        • 2019-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多