0

我有一个 PU 学习任务,我在这篇论文中发现了一个看起来像解决它的特殊算法:https ://www.cs.uic.edu/~liub/publications/ICDM-03.pdf

我希望实现第 5 部分中描述的“有偏”SVM 的非标准公式。

它使用两个参数 C+ 和 C- 来对正错误和负错误进行不同的加权。

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

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

谢谢您的帮助。

4

1 回答 1

2

LIBLINEAR 'train' 接受一个参数 -wi weight:“权重调整不同类的参数 C”。它的实际用途(它需要一个数组吗?)我仍然不清楚,即使在阅读了自述文件之后。但是Sklearn 的 LinearSVC 使用 LIBLINEAR 并提供了一个参数:

class_weight : {dict, 'balanced'}, optional 设置类 i 的参数 C 为 class_weight[i]*C 用于 SVC。如果没有给出,所有的类都应该有一个权重。“平衡”模式使用 y 的值自动调整权重,与输入数据中的类频率成反比,如 n_samples / (n_classes * np.bincount(y))

非常有用。

于 2016-02-17T18:15:23.573 回答