【发布时间】:2015-04-13 13:38:43
【问题描述】:
首先,我是支持向量机的初学者,所以如果我以错误的方式解决这个问题,我很抱歉。我正在尝试从头开始实现一个非常简单的 SVM,它使用恒等核函数将线性可分数据分类为两个类之一。作为我将使用的数据类型的示例,请考虑在this document 中看到的下图:
使用点 (1,0), (3, 1) 和 (3, -1) 作为支持向量,我们知道以下关于计算决策平面的情况是正确的(来自同一文档的屏幕截图):
当稍微调整和重新排列时,我们分别得到了 -3.5、0.75 和 0.75 的拉格朗日乘数。
我了解这个代数在纸面上是如何工作的,但是我不确定在实现方面的最佳方法。所以我的问题如下:在实践中如何计算 SVM 的拉格朗日乘数?是否有我缺少的算法能够确定 任意 线性可分支持向量的这些值?我应该使用标准数学库来求解线性方程(我在 java 中实现 SVM)吗?这样的数学库对于大规模学习来说会很慢吗?请注意,这是一个学习练习,所以我不只是在寻找现成的 SVM 库。
任何其他建议将不胜感激!
编辑 1:LutzL 提出了一个很好的观点,即一半的问题实际上是确定哪些点将用作支持向量,所以为了简单起见,假设为了这个问题,他们已经计算过了。
【问题讨论】:
标签: java math machine-learning svm linear-algebra