我需要实现SVM数字分类器的概念。它应该是我在画布中写入的分类输入的简单。但我需要从头开始实施。语言并不重要。
任何人都可以一步一步地指导我如何做到这一点。任何材料链接都会有所帮助。但我需要一些与实践相关的东西而不是理论。因为我已经阅读了一些关于它的理论文章。并且有基本的想法它应该如何工作,但仍然有一些麻烦如何将这些想法转换为现实生活中的例子。
非常感谢。
答案 0 :(得分:5)
您不会找到编写SVM的分步说明。理解它们背后的理论和数学很重要,因为它们在算法中发挥着重要作用,如果没有这种背景,算法很难理解。
最好的起点是John Platt的Sequential Minimal Optimization (SMO)算法。我之前已经实现了这篇论文,但普拉特承担了大量的背景知识。一本很棒的入门书是Lutz Hamel的书Knowledge Discovery with Support Vector Machines。本书激发了所有内容,因此如果您想了解SVM,就不必了解或了解统计和优化理论。
如果你真的只想变得非常简单,那么从UNT的这个Simplified SMO algorithm开始,让你的脚湿透。这是没有任何优化的SMO算法。
Platt的SMO算法在这一点上不是最先进的,但它是许多当前使用的算法的基础。 LibSVM和SVMLight都有在线提供的源代码。它们基于SMO概念的两种不同优化。如果你可以使用更高级别,你可以使用像CVX这样的Convex优化包来实现SVM,它包含MatLab和其他语言的接口。在这种情况下,您只需在SVM的核心设置优化问题,让解算器为您找到解决方案。从头开始实施QP求解器不是我建议尝试的。
如果你想使用现有的库,当你说“从头开始”你指的是处理数据而不是SVM算法本身时,你可以查看现有的实现,如R中提供的实现。 "Support Vector Machines in R"说明了如何做到这一点。哈默尔的书也使用了R。
手写数字识别数据集已在众多SVM papers中使用,并用于classifier comparisons。
答案 1 :(得分:0)
This是关于SVM的完美文章。它们提供了一些理论和分步指南 - 如何实现它。