在 sklearn 中,具有线性内核的 SVM 模型和具有 loss=hinge 的 SGD 分类器有啥区别
Posted
技术标签:
【中文标题】在 sklearn 中,具有线性内核的 SVM 模型和具有 loss=hinge 的 SGD 分类器有啥区别【英文标题】:In sklearn what is the difference between a SVM model with linear kernel and a SGD classifier with loss=hinge在 sklearn 中,具有线性内核的 SVM 模型和具有 loss=hinge 的 SGD 分类器有什么区别 【发布时间】:2015-06-24 14:26:26 【问题描述】:我看到,在 scikit-learn 中,我可以通过最后 3 种不同的方式构建具有线性内核的 SVM 分类器:
LinearSVC SVC 带有 kernel='linear' 参数 Stochastic Gradient Descent 带有 loss='hinge' 参数现在,我看到前两个分类器之间的区别在于,前者是根据 liblinear 实现的,而后者是根据 libsvm 实现的。
前两个分类器与第三个分类器有何不同?
【问题讨论】:
【参考方案1】:前两个始终使用完整数据并针对这些数据点解决凸优化问题。
后者可以批量处理数据并执行梯度下降,旨在最小化样本分布的预期损失,假设样本是该分布的独立同分布样本。
后者通常在样本数量很大或没有结束时使用。请注意,您可以调用 partial_fit
函数并向其提供数据块。
希望这有帮助吗?
【讨论】:
一个问题是,如果我们使用 Hinge Loss 进行 SDG,它会提供一个基本的性能基准,例如仅使用线性内核的 SVC,其性能类似于使用 logloss 的 Logistic 回归。但是逻辑回归的规模比 LinearSVC 快一点。所以没有必要使用 SVC @MayukhSarkar 这可能适用于您的数据,但并非总是如此。最好保持安全并通过不同的分类器进行测试。以上是关于在 sklearn 中,具有线性内核的 SVM 模型和具有 loss=hinge 的 SGD 分类器有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
在 sklearn 或任何 python 库中确定对非线性 SVM 回归贡献最大的特征
Scikit-learn 的带有线性内核 svm 的 GridSearchCV 耗时太长