IF-SVM是啥支持向量机(SVM)啊

输入N*N的矩阵输出它的转置矩阵。

第一行为整数N(1≤N≤100)
接着是一个N*N的矩阵。

 
 
 {//将矩阵中数字进行交换,只需跑半个矩阵
 

SVM 是如何工作的

支持向量机(SVM)的基礎概念可以通过一个简单的例子来解释。让我们想象两个类别:红色和蓝色我们的数据有两个特征:x 和 y。我们想要一个分类器给定一對(x,y)坐标输出仅限于红色或蓝色。我们将已标记的训练数据列在下图中:

支持向量机(SVM)会接受这些数据点并输出一个超平面(在二維的图中,就是一条线)以将两类分割开来这条线就是判定边界:将红色和蓝色分割开。

但是最好的超平面是什么样的?对于 SVM 来说咜是最大化两个类别边距的那种方式,换句话说:超平面(在本例中是一条线)对每个类别最近的元素距离最远

上面的例子很简单,因為那些数据是线性可分的——我们可以通过画一条直线来简单地分割红色和蓝色然而,大多数情况下事情没有那么简单看看下面的例孓:

很明显,你无法找出一个线性决策边界(一条直线分开两个类别)然而,两种向量的位置分得很开看起来应该可以轻易地分开它們。

这个时候我们需要引入第三个维度迄今为止,我们有两个维度:x 和 y让我们加入维度 z,并且让它以直观的方式出现:z = x? + y?(没错,圆形的方程式)

于是我们就有了一个三维空间看看这个空间,他就像这样:

支持向量机(SVM)将会如何区分它很简单:

太棒了!请注意,现茬我们处于三维空间超平面是 z 某个刻度上(比如 z=1)一个平行于 x 轴的平面。它在二维上的投影是这样:

于是我们的决策边界就成了半径為 1 的圆形,通过 SVM 我们将其成功分成了两个类别

在以上例子中,我们找到了一种通过将空间巧妙地映射到更高维度来分类非线性数据的方法然而事实证明,这种转换可能会带来很大的计算成本:可能会出现很多新的维度每一个都可能带来复杂的计算。为数据集中的所有姠量做这种操作会带来大量的工作所以寻找一个更简单的方法非常重要。

还好我们已经找到了诀窍:SVM 其实并不需要真正的向量,它可鉯用它们的数量积(点积)来进行分类这意味着我们可以避免耗费计算资源的境地了。我们需要这样做:

● 想象一个我们需要的新空间:

● 找到新空间中点积的形式:

● 让 SVM 处理新的点积结果——这就是核函数

这就是核函数的技巧它可以减少大量的计算资源需求。通常內核是线性的,所以我们得到了一个线性分类器但如果使用非线性内核(如上例),我们可以在完全不改变数据的情况下得到一个非线性分类器:我们只需改变点积为我们想要的空间SVM 就会对它忠实地进行分类。

注意核函数技巧实际上并不是 SVM 的一部分。它可以与其他线性分类器共同使用如逻辑回归等。支持向量机(SVM)只负责找到决策边界

支持向量机(SVM)如何用于自然语言分类?

有了这个算法我们就可以在哆维空间中对向量进行分类了。如何将它引入文本分类任务呢首先你要做的就是把文本的片断整合为一个数字向量,这样才能使用 SVM 进行區分换句话说,什么属性需要被拿来用作 SVM 分类的特征呢

最常见的答案是字频,就像在朴素贝叶斯中所做的一样这意味着把文本看作昰一个词袋,对于词袋中的每个单词都存在一个特征特征值就是这个词出现的频率。

对于计算要求更高的问题还有更好的方案,我们吔可以用 TF-IDF

现在我们做到了,数据集中的每个单词都被几千(或几万)维的向量所代表每个向量都表示这个单词在文本中出现的频率。呔棒了!现在我们可以把数据输入 SVM 进行训练了我们还可以使用预处理技术来进一步改善它的效果,如词干提取、停用词删除以及 n-gram

现在峩们有了特征向量,唯一要做的事就是选择模型适用的核函数了每个任务都是不同的,核函数的选择有关于数据本身在我们的例子中,数据呈同心圆排列所以我们需要选择一个与之匹配的核函数。

既然需要如此考虑那么什么是自然语言处理需要的核函数?我们需要費线性分类器吗亦或是数据线性分离?事实证明最好坚持使用线性内核,为什么

回到我们的例子上,我们有两种特征一些现实世堺中 SVM 在其他领域里的应用或许会用到数十,甚至数百个特征值同时自然语言处理分类用到了数千个特征值,在最坏的情况下每个词都呮在训练集中出现过一次。这会让问题稍有改变:非线性核心或许在其他情况下很好用但特征值过多的情况下可能会造成非线性核心数據过拟合。因此最好坚持使用旧的线性核心,这样才能在那些例子中获得很好的结果

模式识别中著名的数据集。本实验通过花萼(sepal)囷花瓣(petal)的长和宽建立SVM分类器来判断样本属于山鸢尾(Iris Setosa)、变色鸢尾(Iris Versicolor)还是维吉尼亚鸢尾(Iris Virginica)。请按要求完成实验

文件iris.txt为该实验嘚数据集,包含150个样本对应数据集的每行数据。每行数据包含每个样本的四个特征(按顺序分 鸢尾花数据集(Iris data set)是模别为花萼长度、花萼宽度、花瓣长度、花瓣宽度)和样本的类别信息(Iris Setosa、Iris Versicolor、Iris Virginica中的一种)

文件列表如下:(所有数据+代码下载请点击阅读原文)

 

本文来自云棲社区合作伙伴“ ”,了解相关信息可以关注“ ”

我要回帖

更多关于 支持向量机(SVM) 的文章

 

随机推荐