问题描述
我正在使用 cpp
的 LIBSVM
接口。我正在使用以下函数生成内核:
template <>
double
jaccard_coeff(const std::vector<double>& x1,const std::vector<double>& x2) {
// R >= 0
assert(x1.size() == x2.size());
size_t min_vsize = std::min(x1.size(),x2.size());
assert(x1.size() == x2.size());
double min_sum{0},max_sum{0};
for (size_t i{0}; i < min_vsize; i++) {
min_sum += std::min(x1[i],x2[i]);
max_sum += std::max(x1[i],x2[i]);
}
assert(max_sum > 0);
return min_sum / max_sum;
}
并将结果保存为 LIBSVM
需要的格式。
使用位于 grid.py
的 tools
文件夹中的 LIBSVM
,我计算了数据集的最佳参数。该数据集由具有 17,766
特征的 357
行和 3
类组成。
使用 C
和 gamma
的默认参数(我不应该包括,因为我的内核没有使用 gamma
...)我有几个结果小时。
然而,当我为 RBF
中包含的 LIBSVM
内核尝试相同的参数时,它已经计算了 3 天。
我想知道为什么会发生这种情况,如何更快地提供我的内核矩阵。
生成我的内核矩阵不会超过 10 秒,所以我真的很好奇这个。 关于为什么会发生这种情况,我有两个可能的想法:
- 也许使用
min-max
内核有助于更快地收敛 - 也许内核的实现有点慢
谁能详细说明一下?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)