From 李航《统计学习方法》Ver.2 例7.1

1:二次规划问题的标准形式

2:问题描述

3:按照线性可分支持向量机算法分析问题

3.1:SMO算法

3.2:根据三个实例构造约束最优化问题

min ⁡ w , b 1 / 2 ( w 1 2 + w 2 2 ) s . t . 3 w 1 + 3 w 2 + b ≥ 1 4 w 1 + 3 w 2 + b ≥ 1 − 1 w 1 − 1 w 2 − b ≥ 1 \min\limits_{w, b} \quad1/2(w_1^2 + w_2^2)\\ s.t. \quad 3w_1 + 3w_2 + b \geq 1\\ \quad 4w_1 + 3w_2 + b \geq 1\\ \quad -1w_1 – 1w_2 – b \geq 1\\ w,bmin1/2(w12+w22)s.t.3w1+3w2+b14w1+3w2+b11w11w2b1

3.:3:写成矩阵乘法的形式有

min ⁡ w , b 1 2 ( w 1 w 2 b ) T ( 1 0 0 0 1 0 0 0 0 ) ( w 1 w 2 b ) \min \limits_{w, b} \quad \frac{1}{2} \left(\begin{array}{cccc} w_1 \\ w_2 \\ b \\ \end{array} \right) ^T \left(\begin{array}{cccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \\ \end{array} \right) \left(\begin{array}{cccc} w_1 \\ w_2 \\ b \\ \end{array} \right) w,bmin21w1w2bT100010000w1w2b
s . t . ( − 3 − 3 − 1 − 4 − 3 − 1 1 1 1 ) ( w 1 w 2 b ) ≤ ( − 1 − 1 − 1 ) s.t. \quad \left(\begin{array}{cccc} -3 & -3 & -1 \\ -4 & -3 & -1 \\ 1 & 1 & 1 \\ \end{array} \right) \left(\begin{array}{cccc} w_1 \\ w_2 \\ b \\ \end{array} \right) \leq \left(\begin{array}{cccc} -1 \\ -1 \\ -1 \\ \end{array} \right) s.t.341331111w1w2b111

4:代码分析

''' Objects : 对SVM支持向量机基本型的算法,用现成的优化计算包求解二次规则(Convex Quadratic Programming)问题 举例,将形式转换为二次规划的标准形式 调用优化函数:solvers.qp(P,q,G,h,A,b) Version : V1.0 Name : 7.1.py Author : Haoger Date : 2020/12/12 Location : Long Room '''
from cvxopt import solvers, matrix

# matrix里区分int和double,所以数字后面都需要加小数点
# 注意录入数据时,以列向量的形式录入
P = matrix([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 0.0]])
q = matrix([0.0, 0.0, 0.0])
G = matrix([[-3.0, -4.0, 1.0], [-3.0, -3.0, 1.0], [-1.0, -1.0, 1.0]])
h = matrix([-1.0, -1.0, -1.0])
sol = solvers.qp(P,q,G,h)

print(sol['x'])

5:结果分析

     pcost       dcost       gap    pres   dres
 0:  1.4507e-01  7.1106e-01  4e+00  1e+00  8e+00
 1:  5.9278e-01  1.4232e-01  5e-01  3e-16  2e-15
 2:  2.7513e-01  2.3773e-01  4e-02  0e+00  4e-16
 3:  2.5037e-01  2.4959e-01  8e-04  4e-16  4e-16
 4:  2.5000e-01  2.5000e-01  8e-06  4e-16  4e-16
 5:  2.5000e-01  2.5000e-01  8e-08  0e+00  2e-15
Optimal solution found.
[ 5.00e-01]
[ 5.00e-01]
[-2.00e+00]

即所求方程为: 1 / 2 x 1 + 1 / 2 x 2 − 2 = 0 1/2x_1 + 1/2x_2 -2 = 0 1/2x1+1/2x22=0

本文地址:https://blog.csdn.net/whaoger/article/details/111084045