SVM学习笔记(五)——在Python下使用不同核函数进行训练

训练效果

对于非线性的情况,SVM的处理方法是选择一个核函数sklearn,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题,这部分在学习笔记(三)中已有过较详细的理论介绍。
而本次是想在具体的例子中来看看不同核函数的作用效果。
第一组数据的训练效果如下:
在这里插入图片描述
以上四幅图分别对应的核函数是:线性核函数、多项式核函数、径向基核函数(也称高斯核函数)、多层感知机(Sigmoid)核函数。这也是常用的几个核函数。实际上,从这些常用的核函数中,根据问题和数据的不同,选择不同的参数,也就得到不同的核函数。
第二组数据的训练效果如下:

处理方法和第一组完全一样,但我们发现仅径向基核函数较好地完成了分类任务。

程序

import numpy as np
from sklearn import svm
import matplotlib.pyplot as plt

# 加载数据(图2)
x1 = []
y1 = []
for i in range(0, 10):
    if (i <= 3 or i >= 8):
        x1.append([i, i])
        y1.append(0)
    else:
        x1.append([i, i])
        y1.append(1)

x = np.array(x1)
y = np.array(y1)

# 创建SVM
# 线性核函数
linear = svm.SVC(kernel='linear').fit(x, y)
# 多项式核函数
poly = svm.SVC(kernel='poly', degree=4).fit(x, y)
# 径向基核函数/高斯核函数
rbf = svm.SVC().fit(x, y)
# 多层感知机核函数
sigmoid = svm.SVC(kernel='sigmoid').fit(x, y)
a = 1
x21, x22 = np.meshgrid(np.arange(x[:, 0].min(), x[:, 0].max(), 0.01), np.arange(x[:, 1].min(), x[:, 0].max(), 0.01))
for i in [linear, poly, rbf, sigmoid]:
    rst = i.predict(npy.c_[x21.ravel(), x22.ravel()])
    plt.subplot(2, 2, a)
    # contourf 等高线
    plt.contourf(x21, x22, rst.reshape(x21.shape))
    for j in range(0, len(y1)):
        if (int(y1[j]) == 0):
            plt.plot(x[j:j + 1, 0], x[j:j + 1, 1], 'yo')
        else:
            plt.plot(x[j:j + 1, 0], x[j:j + 1, 1], 'ko')
    a += 1
plt.show()

如何选择合适的核函数

线性核函数

线性核是最简单的核函数,核函数的数学公式如下:
在这里插入图片描述
这实际上就是原始空间中的內积,这个核存在的主要目的是使“映射后空间中的问题”和“映射前空间中的问题”两者在形式上统一起来了。

多项式核函数

多项式核实一种非标准核函数,它非常适合于正交归一化后的数据,其具体形式如下:
在这里插入图片描述
这个核函数是比较好用的,就是参数比较多,但是还算稳定。虽然比较麻烦,而且没有必要,不过据说这个核所对应的映射实际上是可以写出来的,该空间的维度是原始空间的维度。

径向基核函数(高斯核)

高斯核函数是一种经典的鲁棒径向基核,鲁棒径向基核对于数据中的噪音有着较好的抗干扰能力,其参数决定了函数作用范围,超过了这个范围,数据的作用就“基本消失”。高斯核函数是这一族核函数的优秀代表,也是必须尝试的核函数,其数学形式如下:
在这里插入图片描述
它会将原始空间映射为无穷维空间,但经常会发生严重的过拟合问题。不过总的来说,通过调控参数,高斯核实际上具有相当高的灵活性,也是使用最广泛的核函数之一。

多层感知机核函数(Sigmoid)

Sigmoid 核来源于神经网络,现在已经大量应用于深度学习,是当今机器学习的宠儿,它是S型的,所以被用作于“激活函数”。
在这里插入图片描述
上面的例子中并未体现出该函数的功能,笔者对此函数也不太了解,先留个坑,之后填补。

发布了20 篇原创文章 · 获赞 14 · 访问量 867

猜你喜欢

转载自blog.csdn.net/weixin_43645790/article/details/103757286