jytan 发表于 2007-11-22 15:18

请问如何计算现在这个问题

应该是个二次规划问题吧。

见附件吧

无水1324 发表于 2007-11-22 17:13

回复 #1 jytan 的帖子

公式最好直接用图片的形式上传。

jytan 发表于 2007-11-23 11:02

接受楼上的意见,
现在帖个图。
应该是可以用matlab的qp命令求解,
但约束条件不知道该如何表达了。。
请教各位。

[ 本帖最后由 jytan 于 2007-11-23 11:04 编辑 ]

jytan 发表于 2007-11-23 11:09

n- 表示所有负例样本的个数。也就是y=-1的个数。
(xi,yi)表示一个训练样本。

jytan 发表于 2007-11-28 15:20

我的解法,请大家指教

以下算法是matlab写的:
    for i=1:n
       for j=1:n
          H(i,j) = Y(i)*Y(j)*svkernel(ker,X(i,:),X(j,:));
       end
    end
   H = H+1e-10*eye(size(H));
    f=zeros(n,1);%%因为quadprog解的是问题:min 0.5*x'*H*x + f'*x。此处只有前一部分,因此f设为0
    Aeq=zeros(1,n);
    for i=1:n
      Aeq(i)=(Y(i)==1);   %%%当yi=-1的时候,alphai=1;
    end
    beq=n_minus;%%Aeq*x=beq.完成最后一个约束。它和倒数第二个约束是重复的。
    vlb = zeros(n,1);      % Set the bounds: alphas >= 0
    vub =ones(n,1);    %               alphas <= 1   
       A = [];
       b = [];
%      Aeq=Y';
%      beq=0;
    alpha=quadprog(H,f,A,b,Aeq,beq,vlb,vub);

出现错误如下:
Warning: Large-scale method does not currently solve this problem formulation,
using medium-scale method instead.
> In quadprog at 264
In main_svcpath at 57
Maximum number of iterations exceeded; increase options.MaxIter.
To continue solving the problem with the current solution as the
starting point, set x0 = x before calling quadprog.

octopussheng 发表于 2007-11-28 20:46

错误提示你说你用的解法不适合求解你的问题,建议你使用中等规模的求解方法

二次规划问题我没有接触过,不好意思帮不了你!
页: [1]
查看完整版本: 请问如何计算现在这个问题