我正在使用以下功能:
kernel = @(X,Y,sigma) exp((-pdist2(X,Y,'euclidean').^2)./(2*sigma^2));
通过以下方式计算一系列内核:
K = [(1:size(featureVectors,1))', kernel(featureVectors,featureVectors, sigma)];
然而,由于featureVectors
是一个巨大的矩阵(例如 10000x10000),计算内核需要很长时间(例如,K
)。
是否有可能以某种方式加快计算速度?
编辑:上下文
libsvm
正如您可能已经从变量名和语义中注意到的那样,我正在使用带有高斯内核的分类器。
我现在正在使用(或多或少)#terms~=10000
和#docs~=10000
. 这个#terms 是在停用词删除和词干提取之后产生的。本课程表明拥有10000
功能是有意义的。
不幸的是,libsvm
不会自动实现高斯内核。因此,需要手动计算。我从这里得到了这个想法,但是内核计算(正如引用的问题所建议的那样)真的很慢。