【OR】YALMIP 指数锥规划

Exponential cone programming

指数锥规划定义为 ( y exp ⁡ ( x / y ) ≤ z , y > 0 ) (y\exp(x/y)\leq z, y>0) (yexp(x/y)z,y>0),等效于相对熵规划,YALMIP不一定会检测到指数锥,可以使用persepective expoential.

Logistic regression example

LR问题的凸规划方程为
∑ log ⁡ ( 1 + exp ⁡ − y i ( a T x i + b ) ) \sum \log(1+\exp^{-y_i(a^Tx_i+b)}) log(1+expyi(aTxi+b))
可以使用logsumexp直接求解,也可以进行分解后等效转换
{ log ⁡ ( 1 + e z ) = log ⁡ ( e 0 + e z ) log ⁡ ( e 0 + e − y i ( a T x i + b ) ) ≤ t i → e 0 + e − y i ( a T x i + b ) ≤ e t i \begin{cases} \log(1+e^z)=\log(e^0+e^z)\\ \log(e^0+e^{-y_i(a^Tx_i+b)})\leq t_i\to e^0+e^{-y_i(a^Tx_i+b)}\leq e^{t_i} \end{cases} {log(1+ez)=log(e0+ez)log(e0+eyi(aTxi+b))tie0+eyi(aTxi+b)eti

{ e − t i ≤ z i e − y i ( a T x i + b ) − t i ≤ u i \begin{cases} e^{-t_i}\leq z_i\\ e^{-y_i(a^Tx_i+b)-t_i}\leq u_i \end{cases} {etizieyi(aTxi+b)tiui
约束转化为
z i + u i ≤ 1 z_i+u_i\leq 1 zi+ui1
目标函数为
min ⁡ ∑ t i \min \sum t_i minti

%% 产生两种数据点
N = 50;
blues = randn(2,N/2);  
reds = randn(2,N/2)+2;
clf
hold on
plot(reds(1,:),reds(2,:),'r*');
plot(blues(1,:),blues(2,:),'b*')
hold off

dist

使用logsumexp算子求解

%% logsumexp (需要使用mosek 9)进行求解
% blue = 1, red=-1
x = [blues reds];
y = [ones(1, length(blues)) repmat(-1, 1, length(reds))];

a = sdpvar(2, 1);
b = sdpvar(1);
J = sum(logsumexp([zeros(length(y), 1) (-y.*(a'*x+b))']'));
optimize([], J)

统计分类结果

%% count 
class = sign(value(a'*x+b)); % 进行分类
classB = find(class==1); % 蓝色点
classR = find(class==-1); % 红色点

hold on;
plot(x(1, classB), x(2, classB), 'bo')
plot(x(1, classR), x(2, classR), 'ro')
hold off;

nnz(sign(value(a'*x+b))-y) % 计算出非零点的数量,即分类错误点的数量

cls

References

relative entropy optimization and its applications
Exponential cone programming

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quant0xff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值