使用 LIBLINEAR 或 LIBSVM 的自定义 SVM 优化

Custom SVM optimization using LIBLINEAR or LIBSVM

我有一个 PU 学习任务,我在这篇论文中找到了一个解决它的特殊算法:[​​=10=]

我希望实现第 5 部分中描述的 'biased' SVM 的非标准公式。

其中使用了两个 参数 C+ 和 C- 来加权正误差和 负面错误不同。

我想我会在这个问题上使用现有的 SVM 求解器,不仅可以加快跑腿速度,还可以确保最佳时间复杂度,因为我的特征 space 和样本数量都非常大(因此我希望使用 LIBLINEAR).

有没有办法像上面那样指定自定义损失函数?

感谢您的帮助。

LIBLINEAR 'train' 采用参数 -wi 权重:"weights adjust the parameter C of different classes"。它的实际用途(它需要一个数组吗?)我仍然不清楚,即使在阅读了 README 之后也是如此。 但是 Sklearn 的 LinearSVC 使用 LIBLINEAR 并提供了一个参数:

class_weight : {dict, ‘balanced’}, optional Set the parameter C of class i to class_weight[i]*C for SVC. If not given, all classes are supposed to have weight one. The “balanced” mode uses the values of y to automatically adjust weights inversely proportional to class frequencies in the input data as n_samples / (n_classes * np.bincount(y))

相当有用。