gpt4 book ai didi

java - 为简单的支持 vector 机计算拉格朗日乘数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:28:48 26 4
gpt4 key购买 nike

首先,我是支持 vector 机的初学者,所以如果我以错误的方式解决这个问题,我深表歉意。我正在尝试从头开始实现一个非常简单的 SVM,它使用身份核函数将线性可分数据分类为两个类之一。作为我将使用的数据类型的示例,请考虑下面在 this document 中看到的图表。 :

Plotted linearly separable data

使用点 (1,0)、(3, 1) 和 (3, -1) 作为支持 vector ,我们知道以下关于计算决策平面是正确的(来自同一文档的屏幕截图):

Lagrange Multipler Formula One当稍微调整和重新排列时,我们分别得到 -3.5、0.75 和 0.75 的拉格朗日乘数。

我理解这个代数在纸面上是如何工作的,但是我不确定在实现时的最佳方法。所以我的问题如下:SVM 的 Lagrange Multipliers 在实践中是如何计算的?是否有我缺少的算法能够确定任意线性可分支持 vector 的这些值?我应该使用标准数学库来求解线性方程(我正在用 java 实现 SVM)吗?这样的数学库对于大规模学习来说会很慢吗?请注意,这是一个学习练习,所以我不只是在寻找现成的 SVM 库。

任何其他建议将不胜感激!

编辑 1:LutzL 提出了一个很好的观点,即一半的问题实际上是确定将哪些点用作支持 vector ,因此为了简单起见,为了这个问题的目的假设他们已经计算过了。

最佳答案

独立于核函数,系数的确定导致具有线性正约束的二次优化问题。如果天真地测试所有边界组件,这将具有可怕的复杂性,因此您无法避免高级优化算法,如屏障或信任区域方法。

还有一些启发式方法试图通过搜索靠近分隔线的点集并消除最有可能远离它的点来将优化问题保持在低维度。

关于java - 为简单的支持 vector 机计算拉格朗日乘数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28483905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com