Python机器学习支持向量机,SVM是一种用于分类的监督学习方法。通过将数据映射到高维特征空间,并找到一个超平面来分隔不同类别的数据点,SVM可以实现对新样本的高精度分类。核函数是将数据映射到高维空间的数学函数,可以根据具体情况选择不同类型的核函数。优化过程通过最大化超平面与支持向量之间的间隔来学习优化的分隔器。SVM适用于图像分析、文本挖掘、基因表达数据分类等机器学习问题。然而,SVM在特征数量远大于样本数量、不提供概率估计和处理大型数据集时存在一定的缺点。

假设您已经获得了一个数据集,其中包含数千个人类细胞样本的特征,这些样本来自被认为有患癌症风险的患者。通过对原始数据的分析,我们发现良性和恶性样本之间的许多特征有显著差异。我们可以利用这些细胞特征的值来对其他患者的样本进行分类,以提前指示新样本是良性还是恶性。为了实现这一目标,我们可以使用支持向量机(SVM)作为分类器来训练模型,以了解数据中可能显示良性或恶性细胞的模式。

一旦模型经过训练,就可以以相当高的精度预测新的或未知的样本。现在,让我给你一个SVM的形式化定义。支持向量机是一种监督算法,它通过找到分隔器来对案例进行分类。SVM的工作原理是首先将数据映射到高维特征空间,以便可以对数据点进行分类,即使数据在其他方面不是线性可分的。然后,为数据估计分隔器。数据应以这样一种方式进行转换,即分隔器可以绘制为超平面。

例如,考虑下图,该图仅基于单元大小和块厚度显示了一小组单元的分布。如您所见,数据点分为两个不同的类别。它表示线性不可分数据集。这两个类别可以用曲线分开,但不能用直线分开。也就是说,它表示线性不可分数据集,这是大多数真实世界数据集的情况。我们可以将这些数据传输到更高维的空间,例如,将其映射到三维空间。变换后,两类之间的边界可以由超平面定义。由于我们现在处于三维空间中,分隔器显示为平面。该平面可用于对新的或未知的情况进行分类。因此,SVM算法输出对新示例进行分类的最优超平面。

现在,有两个具有挑战性的问题需要考虑。首先,我们如何以分隔器可以绘制为超平面的方式传输数据?第二,如何在变换后找到最佳或优化的超平面分隔器?让我们首先看一下转换数据,看看它是如何工作的。为了简单起见,假设我们的数据集是一维数据。这意味着我们只有一个特征x。正如你所看到的,它不是线性可分的。那么我们在这里能做什么呢?我们可以把它转移到二维空间。例如,通过使用一个函数,该函数具有输出x和x平方,将x映射到新空间来增加数据的维数。现在数据是线性可分的,对吗?注意,当我们在二维空间中时,超平面是一条将平面划分为两部分的线,其中每个类都位于两侧。现在,我们可以使用这条线来对新案例进行分类。基本上,将数据映射到更高维的空间被称为核函数。用于转换的数学函数称为核函数,并且可以是不同的类型,例如线性、多项式、径向基函数或RBF和S形。这些函数中的每一个都有自己的特点、优点和缺点,以及它的等式。但好消息是,您不需要知道它们,因为它们中的大多数已经在数据科学编程语言库中实现。

此外,由于没有简单的方法知道哪个函数对任何给定的数据集执行得最好,我们通常依次选择不同的函数并比较结果。现在我们来问另一个问题。具体来说,我们如何在转换后找到正确的或优化的分隔器?基本上,SVM基于找到一个超平面的思想,该超平面可以将数据集最好地划分为两个类,如下所示。当我们在二维空间中时,可以将超平面想象为一条直线,将蓝色点与红色点线性分开。作为最佳超平面的一个合理选择是表示两个类之间的最大间隔或边距的超平面。因此,目标是选择一个具有尽可能大的边界的超平面。最接近超平面的示例是支持向量。直觉上,只有支持向量对实现我们的目标至关重要。因此,可以忽略其他趋势示例。我们试图以这样一种方式来找到超平面,即它与支持向量的距离最大。请注意,超平面和边界决策线有自己的方程。因此,找到优化的超平面可以使用一个涉及更多数学的方程来形式化,所以我不打算在这里详细讨论它。也就是说,使用最大化裕度的优化过程从训练数据中学习超平面。和许多其他问题一样,这个优化问题也可以通过梯度下降来解决,这超出了本视频的范围。因此,算法的输出是直线的值w和b。您可以使用此估计行进行分类。将输入值插入直线方程就足够了。然后,可以计算未知点是在直线上方还是下方。如果方程返回大于0的值,则该点属于直线上方的第一个类,反之亦然。

支持向量机的两个主要优点是它们在高维空间中是精确的。它们在决策函数中使用训练点的子集,称为支持向量,因此它也很节省内存。支持向量机的缺点包括,如果特征数量远远大于样本数量,则该算法容易过度拟合。此外,SVM不直接提供概率估计,这在大多数分类问题中是需要的。最后,如果数据集非常大,例如当您有1000多行时,SVM在计算上不是非常有效。

现在我们的最后一个问题是,在什么情况下应该使用SVM?嗯,SVM很适合于图像分析任务,例如图像分类和手写数字识别。此外,SVM在文本挖掘任务中非常有效,特别是由于它在处理高维数据方面的有效性。例如,它用于检测垃圾邮件、文本类别分配和情感分析。SVM的另一个应用是在基因表达数据分类中,这也是因为它在高维数据分类中的强大功能。SVM也可以用于其他类型的机器学习问题,如回归、离群点检测和聚类。关于这些特定的问题,我将让您进行更多的探索。

Python机器学习支持向量机 推荐

领券有优惠