附 第七章作业
作业1
题目
给定如下训练数据集
通过求解SVM的对偶问题来求解最大间隔的分类超平面
解
首先,对偶问题为:
并求的其最优解
则得到原问题的最优解:
进而可以得到分离超平面:
对于给定的训练数据集,有:
则有:
目标函数为:
约束条件为:
代码实现
使用scipy求解最优化
import numpy as np
from scipy.optimize import minimize
X = np.array([[3, 3], [4, 3], [1, 1]])
y = np.array([1, 1, -1])
k = np.dot(X, X.T)
def objective(alpha):
return -np.sum(alpha) + 0.5 * np.sum(np.outer(y, y) * np.outer(alpha, alpha) * k)
def constraint1(alpha):
return alpha
def constraint2(alpha):
return np.dot(alpha, y)
N = X.shape[0]
bounds = [(0, None)] * N
constraints = [{'type': 'ineq', 'fun': constraint1}, {'type': 'eq', 'fun': constraint2}]
alpha_initial = np.zeros(N)
result = minimize(objective, alpha_initial, bounds=bounds, constraints=constraints)
alphas = result.x
print(f'Optimal alphas:[{alphas[0]},{alphas[1]},{alphas[2]}]')
w = np.dot(alphas * y, X)
print(w)
b_index = np.argmax(alphas)
b = y[b_index] - np.sum(alphas * y * np.dot(X, X[b_index]))
print(b)
输出结果为:
w=[0.49999996 0.49999996] b=-1.999999927629584
使用sklearn中的SVM模块求解
import numpy as np
from sklearn.svm import SVC
X = np.array([[3, 3], [4, 3], [1, 1]])
y = np.array([1, 1, -1])
svm = SVC(kernel='linear')
svm.fit(X, y)
w = svm.coef_[0]
b = svm.intercept_[0]
print(w)
print(b)
输出结果为:
w = [0.5 0.5] b = -2.0
作业2
题目
高斯核有以下形式:
请证明高斯核函数可以表示为一个无穷维特征向量的内积
提示:利用以下展开式,将中间的因子展开为幂级数
证明
首先,有:
记为式(1)
由于函数的幂级数展开式为:
因此,可以有:
将其带回(1)式,有:
其中,
因此,高斯核函数可以表示为一个无穷维特征向量的内积
最后更新于
这有帮助吗?