我需要实现 SVM 数字分类器的概念教授。它应该是我在画布上写的对输入进行分类的简单方法。但我需要从头开始实现它。语言无所谓。
任何人都可以向我提供逐步说明如何做到这一点。任何材料链接都会有所帮助。但我需要一些与实践相关的东西,而不是理论。因为我已经阅读了一些关于它的理论文章。并且有基本的想法,它应该如何工作,但仍然有一些麻烦如何将这些想法转化为现实生活中的例子。
非常感谢。
我需要实现 SVM 数字分类器的概念教授。它应该是我在画布上写的对输入进行分类的简单方法。但我需要从头开始实现它。语言无所谓。
任何人都可以向我提供逐步说明如何做到这一点。任何材料链接都会有所帮助。但我需要一些与实践相关的东西,而不是理论。因为我已经阅读了一些关于它的理论文章。并且有基本的想法,它应该如何工作,但仍然有一些麻烦如何将这些想法转化为现实生活中的例子。
非常感谢。
您不会找到编写 SVM 的分步说明。理解它们背后的理论和数学很重要,因为它们在算法中扮演着重要的角色,如果没有这些背景,算法就很难理解。
最好的起点是 John Platt 的顺序最小优化 (SMO)算法。我之前已经实现过这篇论文,但是 Platt 假设有大量的背景知识。一本很棒的入门书是 Lutz Hamel 的书Knowledge Discovery with Support Vector Machines。这本书激发了一切,所以如果你想理解 SVM,你不必知道或了解统计和优化理论。
如果你真的只想变得超级简单,那么从 UNT 的这个简化 SMO 算法开始 ,让你的脚湿透。这是没有任何优化的 SMO 算法。
Platt 的 SMO 算法目前还不是最先进的,但它是许多当前使用的算法的基础。LibSVM和SVMLight都可以在线获取源代码。它们基于 SMO 概念的两种不同优化。
如果您对更高级别没问题,您可以使用像CVX这样的凸优化包来实现 SVM ,它具有 MatLab 和其他语言的接口。在这种情况下,您只需在 SVM 的核心设置优化问题,并让求解器为您找到解决方案。我不建议尝试从头开始实施 QP 求解器。
如果您想使用现有库,并且当您说“从头开始”时,您指的是处理数据而不是 SVM 算法本身,您可以查看现有的实现,例如R中可用的实现。“R 中的支持向量机”讨论了如何做到这一点。Hamel 的书也使用了 R。
这是关于 SVM 的完美文章。他们提供了一些理论和分步指南 - 如何实施。