返回介绍

5.4 支持向量机

发布于 2024-01-26 22:17:32 字数 1707 浏览 0 评论 0 收藏 0

我们将在本章中使用一个新的分类器,即线性支持向量机。支持向量机的算法使用“最大边缘超平面”,试图对数据点进行线性分离并归类。这是口头上的描述,下面让我们来看看这究竟是什么意思。

假设有两类数据,而我们想用一条线来分隔它们(这里只处理两个特征或维度)。放置这条线最有效的方法是什么?如图5-14所示。

图5-14

在图5-14中,线H1不能有效地区分两个类,所以我们可以不考虑这条。线H2能够清楚地区分它们,但是H3确保了最大的空余边缘。这意味着该线在两个类间最近点的当中,而这些点被称为支持向量。它们也可以看作是图5-15中的虚线。

图5-15

但是,如果数据不能被如此清晰地分到各个类中,那又该怎么办?如果点之间有重叠呢?在这种情况下也有办法。一种是使用所谓的softmargin SVM。这个公式仍然使边缘最大化,但是有一个权衡的策略:如果点错误地落在边缘的某一侧,那么对这样的点进行惩罚。另一种是使用所谓的kernel技巧。这种方法将数据转换到更高维度的空间,让这些数据可以被线性的分割。

如图5-16所示,其中有两个类,不能用单线性平面分开。

图5-16

不过,内核的某种实现可以将图5-16的图像映射到更高维度,如图5-17所示。这允许数据被线性分割。

我们已经将一维特征空间映射到二维特征空间。该映射简单地取每个x值并将其映射到xx2。这个变换允许我们添加线性分割的平面。

介绍完这些,现在让我们将tf-idf矩阵传送给SVM模型。

from sklearn.svm import LinearSVC 
clf = LinearSVC() 
model = clf.fit(tv, df['wanted'])

这个tv参数是我们的矩阵,而df ['wanted']是我们的标签列表。记住标签是'y'或'n',表示我们是否对文章感兴趣。一旦运行完成,模型就训练完毕了。

图5-17

本章中尚未进行的一个步骤就是正式地评估我们的模型。你总是应该保留一份数据来评估模型,但由于我们需要不断更新模型,并且每天评估它,在这一章我们将跳过这一步。记得这通常是一个糟糕的想法[6]

现在让我们继续建立每日的新闻源。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文