我的同事和我正试图围绕逻辑回归和SVM之间的区别。显然,他们正在优化不同的目标函数。 SVM是否就像说它是一个简单优化铰链损失的判别分类器一样简单?还是比这更复杂?支持向量如何发挥作用?松弛变量怎么样?为什么你不能拥有深度SVM以及你有一个具有sigmoid激活函数的深度神经网络?
答案 0 :(得分:15)
我会及时回答一件事
SVM是否就像说它是一个简单优化铰链损失的判别分类器一样简单?
SVM只是一个线性分类器,通过L2正则化优化铰链损失。
还是比这更复杂?
不,它只是"只是"然而,有不同的方式来看这个模型导致复杂,有趣的结论。特别是,这种特定的损失函数选择导致非常有效的核化,这对于对数丢失(逻辑回归)和mse(线性回归)都不是这样。此外,您可以显示非常重要的理论属性,例如与Vapnik-Chervonenkis维数减少相关的属性,从而导致过度拟合的可能性较小。
直观地看待这三种常见的损失:
max(0, 1-py)
y log p
(p-y)^2
只有第一个具有属性,一旦正确分类 - 它有0罚款。即使它正确地对样本进行分类,所有剩余的仍然会惩罚您的线性模型。为什么?因为它们与回归比分类更相关,所以他们需要完美预测,而不仅仅是正确。
支持向量如何发挥作用?
支持向量只是放置在决策边界附近的样本(丢失地说)。对于线性情况,它没有太大变化,但由于SVM的大部分功能在于其核化 - 因此SV非常重要。一旦引入内核,由于铰链损失,可以有效获得SVM解决方案,并且支持向量是从训练集中记住的唯一样本,因此构建非线性决策边界与训练数据的子集。
松弛变量怎么样?
这只是铰链损耗的另一个定义,当您想要对解决方案进行内核化并显示凸性时更有用。
为什么你不能拥有深度SVM以及你有一个具有sigmoid激活功能的深层神经网络?
但是,由于SVM 不是概率模型,因此其训练可能有点棘手。此外,SVM的整体优势来自效率和全局解决方案,一旦您创建了深层网络,两者都将丢失。然而,有这样的模型,特别是SVM(具有平方铰链损耗)现在经常是最深层网络层的选择 - 因此整个优化实际上是深度SVM。在它们之间添加更多层与SVM或其他成本无关 - 它们完全由它们的激活定义,并且您可以例如使用RBF激活函数,只是它已被多次显示它导致弱模型(对于局部特征)被检测到。)
总结一下: