使用 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))
相当有用。
我有一个 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))
相当有用。