我正在使用Python为mnist数据实现SVM,目前我正在使用cvxopt来解决QP并获取回归系数。
但我的问题是如何高效地计算K-gram矩阵。我从仅有两类(数字6和0)开始,训练样本数量少于1000个,接下来是10000个。
为了更快地计算整个1k x 1k的矩阵,我正在使用Process,并给出不同的原始数据进行计算。但仍然需要大约2分钟,这是一个rbf - 高斯核函数。(10k的还在运行中!)
如果有人已经处理过或者是Python爱好者可以帮我解决这个问题那就太好了!
附:如果有人不知道如何计算格拉姆矩阵,这里有详细说明:
它很简单:
但我的问题是如何高效地计算K-gram矩阵。我从仅有两类(数字6和0)开始,训练样本数量少于1000个,接下来是10000个。
为了更快地计算整个1k x 1k的矩阵,我正在使用Process,并给出不同的原始数据进行计算。但仍然需要大约2分钟,这是一个rbf - 高斯核函数。(10k的还在运行中!)
如果有人已经处理过或者是Python爱好者可以帮我解决这个问题那就太好了!
附:如果有人不知道如何计算格拉姆矩阵,这里有详细说明:
它很简单:
for i in range(1k):
for j in range(1k):
for K[i,j] = some_fun(x[i], x[j])
其中 some_fun - 是点乘或花哨高斯。
我正在使用 Python 2.7、NumPy 和 Mac Air 4G RAM,128G 固态硬盘。
[编辑] 如果有人来到这里!是的,SVM确实需要更长时间...如果您正在进行多分类,那么您必须再次计算k-gram矩阵...所以它会花费很长时间,因此我建议实现算法并检查两次,让它在晚上运行!但你第二天肯定会看到好结果! :)