什么是支持向量机 (SVM)?SVM 是一种神经网络,意味着它有节点和权重等吗?它最适合用来做什么?
我在哪里可以找到有关这些的信息?
什么是支持向量机 (SVM)?SVM 是一种神经网络,意味着它有节点和权重等吗?它最适合用来做什么?
我在哪里可以找到有关这些的信息?
我发现Russell 和 Norvig关于机器学习的章节是一个很好的开始 SVM 的地方。我想这是第18章?
理解 SVM 的一种方法是作为一种神经网络,但这对于初学者来说通常不是一种直观的方法(除非你的 NN 知识已经相当好)。
理解 SVM 的更好方法是将三个简单的想法整合到一个算法中。不过,这是一个“For Dummies”答案的尝试:
最大保证金分类。支持向量机通常用于在一组数据中查找模式。通常,数据允许无限组可能的模式,这些模式都具有相同的描述性。例如,关系可能是“居住在海岸 5 英里范围内 -> 收入高”。很容易想象,这种模式与“住在离海岸 5.0001 英里以内 -> 高收入”或“住在离海岸 4.999 英里以内 -> 高收入”一样好。实际上可能比数据中的更多(例如 3 英里也可能有效)。如果所有这些都同样好,那么最大边距的想法就是你应该选择数据“中间”的那个。所以也许 5.5 和 4.8 之间的所有值都一样好。在这种情况下,我们可能会选择 5.15(在中间)。这个例子非常简单。现实世界的数据会有更多的变量,“中间”的想法最终会稍微复杂一些,但这就是直觉。事实证明,当模式是,找到最大边距模式很容易线性的。也就是说,当它们可以通过在数据集的图中绘制直线来表示时。
投影到更高维度。这需要一些数学来可视化。考虑一个由圆形模式组成的数据集(例如,该模式可能是在城市中心发现更高的收入)。没有线性捕捉这种模式的关系。也就是说,你不能在数据中画出一条直线,并对一侧或另一侧的所有值说一些有意义的事情。但是,如果您在数据中添加一个新特征,即原始坐标的平方,则很容易找到这样的模式。基本上,如果你预先计算原始数据的“循环”函数,你可以将它们添加到数据集中,然后找到一个模式,它是这个新特征的线性函数。这个想法概括了:如果您计算原始数据的足够复杂的函数,然后应用最大边距的想法,您可以学习任何您喜欢的模式。问题是它很慢:添加更多功能会使找到所需模式的时间更长。
内核技巧。使 SVM 有用的是内核技巧:找到最大边距不依赖于任何东西,除了各个点坐标的乘积。事实证明,可以先计算这个乘积,然后运行某些函数以产生一个问题,该问题与您首先添加额外特征然后进行乘法得到的问题相同。但是,以这种方式计算问题不需要添加任何新功能!这使得支持向量机成为第一个可靠的、易于理解的、快速的在数据中寻找非线性模式的方法。
希望提供一个起点。考虑阅读 Russell 和 Norvig 作为下一个起点,或者如果您想更深入地阅读Bishop 。
如果这仍然与您相关,我可以在 Jupyter 笔记本中分享我的 SVM 教程和 Python 实现:
本教程假设有一些数学和编程背景知识。SVM 代码不使用外部机器学习包,并试图教读者自己构建 SVM 模型。
我希望它对你有帮助!
支持向量机是具有相关学习算法的监督学习模型,用于分析数据并用于分类和回归分析。
这是一个链接,您可以从介绍级别了解更多信息:“支持向量机 - 机器学习算法简介”(中)