在机器学习领域,支持向量机(SVM)是一种被广泛使用的监督学习算法,它能够处理分类和回归问题。本文将带深入了解SVM的基本概念、核函数的重要性以及如何在实际问题中应用这些核函数。
SVM是一种监督学习算法,它需要一个标记好的数据集来进行回归或分类任务。如果熟悉逻辑回归的数学直觉,可能会对SVM中的超平面概念有所了解。SVM使用超平面来分类不同的类别,但它比逻辑回归更为先进,因为它引入了“间隔”的概念,这些间隔由支持向量来支持。支持向量是距离它们对立类别最近的点。间隔的主要目的是为模型提供一个缓冲区,以开发一个能够正确预测未见数据的泛化模型,从而消除过拟合模型的缺点。
已经讨论了SVM的基础知识,现在让讨论核函数。当拥有一个完全线性可分的数据集时,SVM分类器可以简单地绘制超平面来分类组件。但在现实世界中,很难获得一个完全可分的数据集。在这种情况下,当有围绕中心的径向数据点,或者那些不能轻易用单个超平面分离的数据点时,SVM核函数的作用就显现出来了。SVM核函数帮助将低维数据转换为高维数据,并引入一些额外的组件(特征),使其成为一个值得分离的径向数据集的技术。
有许多选项供选择SVM核函数,但主要有三个在大多数分析中占有更大的权重:多项式核、Sigmoid核和RBF核。本文将讨论多项式核的实现和直觉。
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
以上代码行展示了实际实现的开始,导入了所有必要的库:Numpy用于执行所有数学计算(例如,矩阵的转置)。Matplotlib用于以图表形式显示提供的数据点。Pandas用于将Numpy创建的数据点转换为结构化的DataFrame。SVC是用于分类的支持向量分类器。Accuracy Score用于检查模型表现如何。
x = np.linspace(-5.0, 5.0, 100)
y = np.sqrt(10**2 - x**2)
y=np.hstack([y,-y])
x=np.hstack([x,-x])
x1 = np.linspace(-5.0, 5.0, 100)
y1 = np.sqrt(5**2 - x1**2)
y1=np.hstack([y1,-y1])
x1=np.hstack([x1,-x1])
plt.scatter(y,x)
plt.scatter(y1,x1)
plt.show()