LIBLINEAR の Java バージョンには、関数を最適化したい損失関数のタイプを選択できる「SolverType」と呼ばれるクラスがあります。たとえば、「SolverType.L2LOSS_SVM_DUAL」です。ユーザー定義の損失関数を定義する方法はありますか?
2 に答える
0
SVM は QP 問題として定式化されます。
minimize ||w|| w.r.t
y * (w'x) >= 1 for all (x, y) in the training dataset
これは問題の双対形式であり、目的はL2
重みのノルムを最小化することw
です。
目的を変更した場合 ||w|| その場合、それはもはや SVM ではありません。ただし、トレーニング例の重みは変更できます。ここでチュートリアルを見つけることができます:
http://scikit-learn.org/stable/modules/svm.html#unbalanced-problems
于 2015-01-20T03:46:05.677 に答える
0
短い答えはノーです。
「損失関数」は最適化問題を定義します。実際、このパラメーターは (特に) このモデルを次のように変更します。
- 線形回帰
- ロジスティック回帰
- サポート ベクター マシン
最初の 2 つは非常に似ていますが、3 番目はそれを解決するためにまったく異なる機械が必要で、はるかに複雑な方法が必要です。特に、解けない(非常に複雑な手法で解ける)「線形モデル」のカテゴリに分類される、非常に恣意的な関数を定義できます。
一方、関数が非常に単純な場合、つまり. それは境界のない微分可能な関数です(最適化はパラメータ空間全体で実行されます)そして(導関数の分析形式を知っていると仮定して)それを任意の最急降下アルゴリズムの実装にプラグインできます(そのようなソルバーが利用可能です) .
于 2014-01-19T08:34:20.200 に答える