径向基/RBF/高斯核 都是这种形式
为了感性理解,模拟一下。。。过程
高斯核本质
l1 l2 两个地标
显然这样就线性可分了
我们只去了地标点l1 l2
高斯核去了len(x)个地标点
本质是将原本数据,映射到一个无穷维空间(样本理论上有无穷多个) 计算开销特别大~~~~~~ 有些应用适合 初始样本数据样本维度高 数量却不多 m < n 通常 就是自然语言处理领域 构建高维特征空间,然而样本的数量不多。
遗留问题
γ作用是什么?
通过代码直观理解
#直观理解高斯核函数
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-4,5,1)
x
array([-4, -3, -2, -1, 0, 1, 2, 3, 4])
y = np.array((x >= -2) & (x <= 2),dtype= 'int')
y
array([0, 0, 1, 1, 1, 1, 1, 0, 0])
x > -2
array([False, False, False, True, True, True, True, True, True])
x < 2
array([ True, True, True, True, True, True, False, False, False])
plt.scatter(x[y == 0],[0] * len(x[y == 0]))
plt.scatter(x[y == 1],[0] * len(x[y == 1]))
使用高斯核函数将数据映射到二维
#使用高斯核函数将数据映射到二维
def gaussian(x,l):
gamma = 1.0
return np.exp(-gamma * (x - l ) ** 2)
l1, l2 = -1,1
X_new = np.empty((len(x),2))
for i,data in enumerate(x):
X_new[i , 0] = gaussian(data , l1)
X_new[i , 1] = gaussian(data , l2)
print(X_new)
[[1.23409804e-04 1.38879439e-11]
[1.83156389e-02 1.12535175e-07]
[3.67879441e-01 1.23409804e-04]
[1.00000000e+00 1.83156389e-02]
[3.67879441e-01 3.67879441e-01]
[1.83156389e-02 1.00000000e+00]
[1.23409804e-04 3.67879441e-01]
[1.12535175e-07 1.83156389e-02]
[1.38879439e-11 1.23409804e-04]]
plt.scatter(X_new[y == 0,0],X_new[y == 0,1])
plt.scatter(X_new[y == 1,0],X_new[y == 1,1])