【问题标题】:Custom SVM optimization using LIBLINEAR or LIBSVM使用 LIBLINEAR 或 LIBSVM 进行自定义 SVM 优化
【发布时间】:2016-05-28 12:10:17
【问题描述】:
我有一个 PU 学习任务,我在这篇论文中发现了一个看起来像解决它的特殊算法:https://www.cs.uic.edu/~liub/publications/ICDM-03.pdf
我希望实现第 5 部分中描述的“有偏”SVM 的非标准公式。
使用两个
参数 C+ 和 C- 来加权正错误和
不同的负错误。
我想我会使用现有的 SVM 求解器来解决这个问题,不仅可以加快跑腿工作,还可以确保最佳时间复杂度,因为我的特征空间和样本数量都非常大(因此我希望使用 LIBLINEAR)。
有没有办法像上面那样指定自定义损失函数?
感谢您的帮助。
【问题讨论】:
标签:
python
svm
libsvm
liblinear
quadratic-programming
【解决方案1】:
LIBLINEAR 'train' 接受参数 -wi weight:“权重调整不同类别的参数 C”。它的实际用途(它需要一个数组吗?)我仍然不清楚,即使在阅读了自述文件之后。 但是 Sklearn 的 LinearSVC 使用 LIBLINEAR 并提供了一个参数:
class_weight : {dict, ‘balanced’}, 可选
对于 SVC,将第 i 类的参数 C 设置为 class_weight[i]*C。如果没有给出,所有的类都应该有一个权重。 “平衡”模式使用 y 的值自动调整权重,与输入数据中的类频率成反比,如 n_samples / (n_classes * np.bincount(y))
这相当很有用。