【问题标题】:python svm function with huber loss带有huber loss的python svm函数
【发布时间】:2018-01-23 16:30:24
【问题描述】:

我需要一个带有 huber 损失函数的 python 支持向量机分类器。但它的默认损失函数是铰链损失。你知道如何为 python svm 分配损失函数吗?

svc = svm.SVC(kernel='linear', C=1, gamma=1).fit(data, label)

【问题讨论】:

  • 这是来自哪个库? scikit 学习?如果不知道您实际使用的是什么软件,就很难弄清楚问题出在哪里。
  • 它来自 sklearn。
  • 嗯,一个问题是 svm.SVC() 根本没有损失参数。 svm.LinearSVC 可以,但文档指定只有铰链和方形铰链可用。所以你想要的损失函数在你使用的软件中是不可用的。如果您必须专门具有该损失函数,则必须自己编写。
  • 在 sklearn 中,svm 功能被委托给 liblinear 和 libsvm 库 C 库,所以我不认为你可以在不显着实现自己的情况下做到这一点。寻找其他替代方案。也许SGDClassifier() 有用。

标签: python classification svm loss


【解决方案1】:

实际上并没有“带有 Huber 损失的 SVM”这样的东西,因为 SVM 实际上是一个用铰链损失训练的线性(或核化)模型。如果你改变损失 - 它不再是 SVM。因此库没有损失参数,因为更改它不适用于 SVM 概念。

如果您想训练 a 模型 具有 huber 损失,您可以使用 sklearn 的 SGDClassiifier,它将训练具有这种(和许多其他)损失的线性模型。

如果你想做一些更复杂的事情,比如带有这种惩罚的非线性模型——那么 sklearn 不是一个好的选择,你应该看看更多的“低级”库,比如我们 TF、Keras 等.

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 2015-06-26
    • 1970-01-01
    • 2020-06-02
    • 2020-12-19
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 2018-06-04
    相关资源
    最近更新 更多